build: Firmware-Version bei jedem Build neu erzeugen
NINLIGHT_FW_VERSION kam bisher aus einer configure-Zeit-Variable, die nur bei erneutem CMake-Lauf aktualisiert wurde - nach einem Commit ohne Re-Konfiguration zeigte Banner/system/info also eine veraltete Git-Version. cmake/write_version.cmake schreibt build/generated/nl_version.h bei jedem Build frisch (add_custom_target ALL), app_main.c/nl_app_api.c/nl_mdns.c inkludieren das Makro jetzt von dort statt aus target_compile_definitions.
This commit is contained in:
+3
-2
@@ -87,12 +87,13 @@ add_executable(${NL_FW} ${NL_SDK_BOOT_SOURCES} ${NL_FW_SOURCES} ${NL_SDK_OBJECTS
|
|||||||
set_target_properties(${NL_FW} PROPERTIES SUFFIX ".elf")
|
set_target_properties(${NL_FW} PROPERTIES SUFFIX ".elf")
|
||||||
target_compile_definitions(${NL_FW} PRIVATE
|
target_compile_definitions(${NL_FW} PRIVATE
|
||||||
NINLIGHT_DEVICE_ID="${NINLIGHT_DEVICE}"
|
NINLIGHT_DEVICE_ID="${NINLIGHT_DEVICE}"
|
||||||
NINLIGHT_FW_VERSION="${NINLIGHT_FW_VERSION}"
|
|
||||||
NINLIGHT_BUILD_DATE="${NINLIGHT_BUILD_DATE}"
|
NINLIGHT_BUILD_DATE="${NINLIGHT_BUILD_DATE}"
|
||||||
NINLIGHT_TOKEN_DEFAULT="${NINLIGHT_TOKEN}"
|
NINLIGHT_TOKEN_DEFAULT="${NINLIGHT_TOKEN}"
|
||||||
NINLIGHT_WIFI_SSID="${NINLIGHT_WIFI_SSID}"
|
NINLIGHT_WIFI_SSID="${NINLIGHT_WIFI_SSID}"
|
||||||
NINLIGHT_WIFI_PASSWORD="${NINLIGHT_WIFI_PASSWORD}"
|
NINLIGHT_WIFI_PASSWORD="${NINLIGHT_WIFI_PASSWORD}"
|
||||||
NINLIGHT_AP_PASSWORD="${NINLIGHT_AP_PASSWORD}")
|
NINLIGHT_AP_PASSWORD="${NINLIGHT_AP_PASSWORD}")
|
||||||
|
target_include_directories(${NL_FW} PRIVATE ${CMAKE_BINARY_DIR}/generated)
|
||||||
|
add_dependencies(${NL_FW} nl_version)
|
||||||
target_link_options(${NL_FW} PRIVATE
|
target_link_options(${NL_FW} PRIVATE
|
||||||
-static -nostartfiles -T${SDK_DIR}/ld/link_w600_2m.ld
|
-static -nostartfiles -T${SDK_DIR}/ld/link_w600_2m.ld
|
||||||
-Wl,-Map=${CMAKE_BINARY_DIR}/${NL_FW}.map)
|
-Wl,-Map=${CMAKE_BINARY_DIR}/${NL_FW}.map)
|
||||||
@@ -100,4 +101,4 @@ target_link_libraries(${NL_FW} PRIVATE
|
|||||||
-Wl,--whole-archive ${SDK_DIR}/Lib/GNU/libwlan.a -Wl,--no-whole-archive m)
|
-Wl,--whole-archive ${SDK_DIR}/Lib/GNU/libwlan.a -Wl,--no-whole-archive m)
|
||||||
nl_add_images(${NL_FW})
|
nl_add_images(${NL_FW})
|
||||||
|
|
||||||
message(STATUS "ninlight ${NINLIGHT_FW_VERSION} for ${NINLIGHT_DEVICE}")
|
message(STATUS "ninlight for ${NINLIGHT_DEVICE} (version regenerated at every build, see ${NL_VERSION_HEADER})")
|
||||||
|
|||||||
+7
-11
@@ -1,12 +1,8 @@
|
|||||||
execute_process(
|
# The version is regenerated on every build so the OTA trailer and system/info match the binary.
|
||||||
COMMAND git describe --tags --always --dirty
|
set(NL_VERSION_HEADER ${CMAKE_BINARY_DIR}/generated/nl_version.h)
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
add_custom_target(nl_version ALL
|
||||||
OUTPUT_VARIABLE NINLIGHT_FW_VERSION
|
BYPRODUCTS ${NL_VERSION_HEADER}
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
COMMAND ${CMAKE_COMMAND} -DOUT=${NL_VERSION_HEADER} -DSRC=${CMAKE_SOURCE_DIR}
|
||||||
if(NOT NINLIGHT_FW_VERSION)
|
-P ${CMAKE_SOURCE_DIR}/cmake/write_version.cmake
|
||||||
set(NINLIGHT_FW_VERSION "0.0.0-dev")
|
COMMENT "Updating nl_version.h")
|
||||||
endif()
|
|
||||||
string(REGEX REPLACE "^v" "" NINLIGHT_FW_VERSION "${NINLIGHT_FW_VERSION}")
|
|
||||||
# The OTA trailer reserves 16 bytes incl. terminator for the version.
|
|
||||||
string(SUBSTRING "${NINLIGHT_FW_VERSION}" 0 15 NINLIGHT_FW_VERSION)
|
|
||||||
string(TIMESTAMP NINLIGHT_BUILD_DATE "%Y-%m-%d")
|
string(TIMESTAMP NINLIGHT_BUILD_DATE "%Y-%m-%d")
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
execute_process(COMMAND git describe --tags --always --dirty WORKING_DIRECTORY ${SRC}
|
||||||
|
OUTPUT_VARIABLE V OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||||
|
if(NOT V)
|
||||||
|
set(V "0.0.0-dev")
|
||||||
|
endif()
|
||||||
|
string(REGEX REPLACE "^v" "" V "${V}")
|
||||||
|
string(SUBSTRING "${V}" 0 15 V)
|
||||||
|
set(CONTENT "#define NINLIGHT_FW_VERSION \"${V}\"\n")
|
||||||
|
if(EXISTS ${OUT})
|
||||||
|
file(READ ${OUT} OLD)
|
||||||
|
else()
|
||||||
|
set(OLD "")
|
||||||
|
endif()
|
||||||
|
if(NOT OLD STREQUAL CONTENT)
|
||||||
|
file(WRITE ${OUT} "${CONTENT}")
|
||||||
|
endif()
|
||||||
@@ -21,6 +21,8 @@
|
|||||||
#include "sys/nl_app_api.h"
|
#include "sys/nl_app_api.h"
|
||||||
#include "sys/nl_console.h"
|
#include "sys/nl_console.h"
|
||||||
|
|
||||||
|
#include "nl_version.h"
|
||||||
|
|
||||||
#define NL_LIGHT_PRIO 30
|
#define NL_LIGHT_PRIO 30
|
||||||
#define NL_APP_PRIO 40
|
#define NL_APP_PRIO 40
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
#include "net/nl_names.h"
|
#include "net/nl_names.h"
|
||||||
#include "net/nl_wifi.h"
|
#include "net/nl_wifi.h"
|
||||||
|
|
||||||
|
#include "nl_version.h"
|
||||||
|
|
||||||
#define NL_MDNS_TTL 120
|
#define NL_MDNS_TTL 120
|
||||||
|
|
||||||
static bool s_inited;
|
static bool s_inited;
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
#include "sys/nl_app.h"
|
#include "sys/nl_app.h"
|
||||||
#include "sys/nl_app_api.h"
|
#include "sys/nl_app_api.h"
|
||||||
|
|
||||||
|
#include "nl_version.h"
|
||||||
|
|
||||||
static void *json_alloc(size_t n) { return tls_mem_alloc(n); }
|
static void *json_alloc(size_t n) { return tls_mem_alloc(n); }
|
||||||
static void json_free(void *p) { tls_mem_free(p); }
|
static void json_free(void *p) { tls_mem_free(p); }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user