Initial round of changes to address some cmake features

This commit is contained in:
VintagePC 2023-09-07 18:46:47 -04:00
parent 7cdd175cb8
commit 916d02824e
5 changed files with 44 additions and 9 deletions

View File

@ -36,9 +36,27 @@ set(CUSTOM_COMPILE_OPTIONS
set(FN_PREFIX "FW${PROJECT_VERSION}+${PROJECT_VERSION_SUFFIX}")
# Inform user about the resolved settings
message(STATUS "Project version ...........: ${PROJECT_VERSION}")
message(STATUS "Project version suffix ....: ${PROJECT_VERSION_SUFFIX}")
message(STATUS "Project version description: ${PROJECT_VERSION_FULL}")
message(STATUS "Project version (Configuration.h): ${PROJECT_VERSION}")
message(STATUS "Project version suffix ..........: ${PROJECT_VERSION_SUFFIX}")
message(STATUS "Project version description......: ${PROJECT_VERSION_FULL}")
message(STATUS "PROJECT() VERSION argument.......: ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_REV}")
string(REGEX MATCH "v([0-9]+)\.([0-9]+)\.([0-9]+)" TAG_VERSION "${FW_COMMIT_DSC}")
if(NOT ${CMAKE_MATCH_1} STREQUAL ${PROJECT_VERSION_MAJOR})
message(FATAL_ERROR "Major version of current tag disagrees with Configuration.h ${CMAKE_MATCH_1}!=${PROJECT_VERSION_MAJOR}")
endif()
if(NOT ${CMAKE_MATCH_2} STREQUAL ${PROJECT_VERSION_MINOR})
message(FATAL_ERROR "Minor version of current tag disagrees with Configuration.h ${CMAKE_MATCH_2}!=${PROJECT_VERSION_MINOR}")
endif()
if(NOT ${CMAKE_MATCH_3} STREQUAL ${PROJECT_VERSION_REV})
message(FATAL_ERROR "Rev version of current tag disagrees with Configuration.h ${CMAKE_MATCH_3}!=${PROJECT_VERSION_REV}")
endif()
MESSAGE(STATUS "Configuration.h and tag match: OK (${PROJECT_VERSION}/${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3})")
# Language configuration
set(MAIN_LANGUAGES
@ -58,7 +76,7 @@ set(COMMUNITY_LANGUAGES
set(SELECTED_LANGUAGES ${MAIN_LANGUAGES} ${COMMUNITY_LANGUAGES})
get_dependency_directory(prusa3dboards PRUSA_BOARDS_DIR)
project(Prusa-Firmware)
project(Prusa-Firmware VERSION ${PROJECT_VERSION})
add_subdirectory(lib)
# Get LANG_MAX_SIZE from sources
@ -314,6 +332,9 @@ function(add_base_binary variant_name)
${variant_name}
PRIVATE CMAKE_CONTROL FW_REPOSITORY="${PROJECT_REPOSITORY}"
FW_VERSION_FULL="${PROJECT_VERSION_FULL}" FW_COMMIT_HASH=0x${FW_COMMIT_HASH}
FW_MAJOR=${PROJECT_VERSION_MAJOR}
FW_MINOR=${PROJECT_VERSION_MINOR}
FW_REVISION=${PROJECT_VERSION_REV}
)
endfunction()
@ -500,7 +521,7 @@ if(CMAKE_CROSSCOMPILING)
set(DIR_NAME ${THIS_VAR})
file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build_gen/${DIR_NAME})
file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/build_gen/${DIR_NAME}/CMakeLists.txt
"project(${DIR_NAME})\nfw_add_variant(${THIS_VAR})"
"project(${DIR_NAME} VERSION ${PROJECT_VERSION})\nfw_add_variant(${THIS_VAR})"
)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/build_gen/${DIR_NAME})
endforeach(THIS_VAR IN LISTS FW_VARIANTS)

View File

@ -12,12 +12,20 @@ extern const char _sPrinterName[] PROGMEM;
extern const uint16_t _nPrinterMmuType;
extern const char _sPrinterMmuName[] PROGMEM;
// Firmware version
// Firmware version.
// NOTE: These are ONLY used if you are not building via cmake and/or not in a git repository.
// Otherwise the repository information takes precedence.
#ifndef CMAKE_CONTROL
#define FW_MAJOR 3
#define FW_MINOR 13
#define FW_REVISION 1
#define FW_REVISION 0
#warning "** Not sure why I had to touch this, but it seems like v3.13.1 is not in the linear history of this branch yet?"
#endif
#define FW_FLAVOR RC //uncomment if DEBUG, DEVEL, ALPHA, BETA or RC
#define FW_FLAVERSION 1 //uncomment if FW_FLAVOR is defined and versioning is needed. Limited to max 8.
#warning "^^^These are temporary and need to be provided by cmake"
#ifndef FW_FLAVOR
#define FW_VERSION STR(FW_MAJOR) "." STR(FW_MINOR) "." STR(FW_REVISION)
#else

View File

@ -15,8 +15,11 @@ const uint16_t FW_VERSION_NR[4] PROGMEM = {
FW_MINOR,
FW_REVISION,
(uint16_t)(FW_COMMIT_HASH) // explicitly truncate the hash to fit
#warning "^^^ this is wrong and needs fixing. Should it be build nr or the flavour?"
};
const uint32_t FW_VERSION_HASH PROGMEM = FW_COMMIT_HASH;
const char* FW_VERSION_STR_P()
{
return FW_VERSION_STR;

View File

@ -4,6 +4,9 @@
extern const uint16_t FW_VERSION_NR[4];
extern const char* FW_VERSION_STR_P();
extern const uint32_t FW_VERSION_HASH PROGMEM;
static inline uint32_t FW_VERSION_HASH_P() { return (uint32_t)pgm_read_dword(&FW_VERSION_HASH); }
// Definition of a firmware flavor numerical values.
// To keep it short as possible
// DEVs/ALPHAs/BETAs limited to max 8 flavor versions

View File

@ -189,7 +189,7 @@ function(git_describe _var)
endif()
if(NOT hash)
set(${_var}
"HEAD-HASH-NOTFOUND"
"0" # This is an integer in the code...
PARENT_SCOPE)
return()
endif()