Make CMake the source of truth for versioning
parent
39caece714
commit
fc5e8a6ae0
|
|
@ -3,4 +3,4 @@ set(HEX_PREFIX "\; device = mm-control\n\n")
|
||||||
file(READ ${WORK_DIR}/firmware.hex HEX)
|
file(READ ${WORK_DIR}/firmware.hex HEX)
|
||||||
file(WRITE ${WORK_DIR}/${HEX_NAME} ${HEX_PREFIX})
|
file(WRITE ${WORK_DIR}/${HEX_NAME} ${HEX_PREFIX})
|
||||||
file(APPEND ${WORK_DIR}/${HEX_NAME} ${HEX})
|
file(APPEND ${WORK_DIR}/${HEX_NAME} ${HEX})
|
||||||
message(status "Successfully built ${HEX_NAME}!")
|
message(STATUS "Successfully built ${HEX_NAME}!")
|
||||||
|
|
|
||||||
|
|
@ -13,13 +13,9 @@
|
||||||
#
|
#
|
||||||
# ~~~
|
# ~~~
|
||||||
|
|
||||||
# PROJECT_VERSION
|
include(${CMAKE_SOURCE_DIR}/version.cmake)
|
||||||
file(READ "${CMAKE_SOURCE_DIR}/version.txt" content)
|
|
||||||
string(REGEX MATCH "([0-9]+)\.([0-9]+)\.([0-9]+)" result "${content}")
|
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_REV}")
|
||||||
if(NOT result)
|
|
||||||
message(FATAL_ERROR "Failed to read version info from ${version_file}")
|
|
||||||
endif()
|
|
||||||
set(PROJECT_VERSION ${CMAKE_MATCH_0})
|
|
||||||
|
|
||||||
function(resolve_version_variables)
|
function(resolve_version_variables)
|
||||||
# BUILD_NUMBER
|
# BUILD_NUMBER
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,19 @@
|
||||||
target_sources(firmware PRIVATE application.cpp debug.cpp main.cpp registers.cpp version.c)
|
target_sources(firmware PRIVATE application.cpp debug.cpp main.cpp registers.cpp version.hpp)
|
||||||
|
|
||||||
target_link_libraries(firmware LUFA)
|
target_link_libraries(firmware LUFA)
|
||||||
|
|
||||||
set_property(
|
target_compile_definitions(
|
||||||
SOURCE src/version.c
|
firmware
|
||||||
APPEND
|
PRIVATE
|
||||||
PROPERTY COMPILE_DEFINITIONS
|
PROJECT_VERSION_MAJOR=${PROJECT_VERSION_MAJOR}
|
||||||
FW_BUILD_NUMBER=${BUILD_NUMBER}
|
PROJECT_VERSION_MINOR=${PROJECT_VERSION_MINOR}
|
||||||
FW_VERSION_FULL=${PROJECT_VERSION_FULL}
|
PROJECT_VERSION_REV=${PROJECT_VERSION_REV}
|
||||||
FW_VERSION=${PROJECT_VERSION}
|
PROJECT_BUILD_NUMBER=${BUILD_NUMBER}
|
||||||
FW_VERSION_SUFFIX=${PROJECT_VERSION_SUFFIX}
|
FW_VERSION_FULL_STR="${PROJECT_VERSION_FULL}"
|
||||||
FW_VERSION_SUFFIX_SHORT=${PROJECT_VERSION_SUFFIX_SHORT}
|
FW_VERSION_STR="${PROJECT_VERSION}"
|
||||||
|
FW_VERSION_SUFFIX_STR="${PROJECT_VERSION_SUFFIX}"
|
||||||
|
FW_VERSION_SUFFIX_SHORT_STR="${PROJECT_VERSION_SUFFIX_SHORT}"
|
||||||
)
|
)
|
||||||
|
|
||||||
add_subdirectory(hal)
|
add_subdirectory(hal)
|
||||||
add_subdirectory(logic)
|
add_subdirectory(logic)
|
||||||
add_subdirectory(modules)
|
add_subdirectory(modules)
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
#include "logic/tool_change.h"
|
#include "logic/tool_change.h"
|
||||||
#include "logic/unload_filament.h"
|
#include "logic/unload_filament.h"
|
||||||
|
|
||||||
#include "version.h"
|
#include "version.hpp"
|
||||||
|
|
||||||
#include "panic.h"
|
#include "panic.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#include "registers.h"
|
#include "registers.h"
|
||||||
#include "application.h"
|
#include "application.h"
|
||||||
#include "version.h"
|
#include "version.hpp"
|
||||||
|
|
||||||
#include "modules/finda.h"
|
#include "modules/finda.h"
|
||||||
#include "modules/fsensor.h"
|
#include "modules/fsensor.h"
|
||||||
|
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
/// @file version.c
|
|
||||||
#include "version.h"
|
|
||||||
|
|
||||||
#define _STR(x) #x
|
|
||||||
#define STR(x) _STR(x)
|
|
||||||
|
|
||||||
const char project_version[] = STR(FW_VERSION);
|
|
||||||
|
|
||||||
const char project_version_full[] = STR(FW_VERSION_FULL);
|
|
||||||
|
|
||||||
const char project_version_suffix[] = STR(FW_VERSION_SUFFIX);
|
|
||||||
|
|
||||||
const char project_version_suffix_short[] = STR(FW_VERSION_SUFFIX_SHORT);
|
|
||||||
|
|
||||||
const uint8_t project_major = project_version_major;
|
|
||||||
const uint8_t project_minor = project_version_minor;
|
|
||||||
const uint16_t project_revision = project_version_revision;
|
|
||||||
const uint16_t project_build_number = project_version_build;
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
/// @file version.h
|
|
||||||
#pragma once
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif //__cplusplus
|
|
||||||
|
|
||||||
#define project_version_major 2
|
|
||||||
#define project_version_minor 1
|
|
||||||
#define project_version_revision 1
|
|
||||||
#define project_version_build 634
|
|
||||||
#define FW_BUILD_NUMBER 0
|
|
||||||
|
|
||||||
/// Project's version (2.0.0)
|
|
||||||
extern const char project_version[];
|
|
||||||
|
|
||||||
/// Full project's version (2.0.0-BETA+1035.PR111.B4)
|
|
||||||
extern const char project_version_full[];
|
|
||||||
|
|
||||||
/// Project's version suffix (-BETA+1035.PR111.B4)
|
|
||||||
extern const char project_version_suffix[];
|
|
||||||
|
|
||||||
/// Project's short version suffix (+1035)
|
|
||||||
extern const char project_version_suffix_short[];
|
|
||||||
|
|
||||||
/// Project's major version
|
|
||||||
extern const uint8_t project_major;
|
|
||||||
|
|
||||||
/// Project's minor version
|
|
||||||
extern const uint8_t project_minor;
|
|
||||||
|
|
||||||
/// Project's revision number
|
|
||||||
extern const uint16_t project_revision;
|
|
||||||
|
|
||||||
/// Project's build number (number of commits in a branch)
|
|
||||||
extern const uint16_t project_build_number;
|
|
||||||
|
|
||||||
/// Firmware name
|
|
||||||
extern const char project_firmware_name[];
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif //__cplusplus
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
/// @file version.h
|
||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/// Project's version (2.0.0)
|
||||||
|
static constexpr char project_version[] = FW_VERSION_STR;
|
||||||
|
|
||||||
|
/// Full project's version (2.0.0-BETA+1035.PR111.B4)
|
||||||
|
static constexpr char project_version_full[] = FW_VERSION_FULL_STR;
|
||||||
|
|
||||||
|
/// Project's version suffix (-BETA+1035.PR111.B4)
|
||||||
|
static constexpr char project_version_suffix[] = FW_VERSION_SUFFIX_STR;
|
||||||
|
|
||||||
|
/// Project's short version suffix (+1035)
|
||||||
|
static constexpr char project_version_suffix_short[] = FW_VERSION_SUFFIX_SHORT_STR;
|
||||||
|
|
||||||
|
/// Project's major version
|
||||||
|
static constexpr uint8_t project_major = PROJECT_VERSION_MAJOR;
|
||||||
|
|
||||||
|
/// Project's minor version
|
||||||
|
static constexpr uint8_t project_minor = PROJECT_VERSION_MINOR;
|
||||||
|
|
||||||
|
/// Project's revision number
|
||||||
|
static constexpr uint16_t project_revision = PROJECT_VERSION_REV;
|
||||||
|
|
||||||
|
/// Project's build number (number of commits in a branch)
|
||||||
|
static constexpr uint16_t project_build_number = PROJECT_BUILD_NUMBER;
|
||||||
|
|
||||||
|
static_assert(PROJECT_VERSION_MAJOR <= UINT8_MAX);
|
||||||
|
static_assert(PROJECT_VERSION_MINOR <= UINT8_MAX);
|
||||||
|
static_assert(PROJECT_VERSION_REV <= UINT8_MAX);
|
||||||
|
static_assert(PROJECT_BUILD_NUMBER <= UINT16_MAX);
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
# The project's version definition/source of truth. It could have been just pasted at the top of
|
||||||
|
# ProjectVersion.cmake but that makes it a bit harder to locate...
|
||||||
|
|
||||||
|
set(PROJECT_VERSION_MAJOR
|
||||||
|
2
|
||||||
|
CACHE STRING "Project major version" FORCE
|
||||||
|
)
|
||||||
|
set(PROJECT_VERSION_MINOR
|
||||||
|
1
|
||||||
|
CACHE STRING "Project minor version" FORCE
|
||||||
|
)
|
||||||
|
set(PROJECT_VERSION_REV
|
||||||
|
1
|
||||||
|
CACHE STRING "Project revision" FORCE
|
||||||
|
)
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
2.0.19
|
|
||||||
Loading…
Reference in New Issue