diff --git a/externals/tz/CMakeLists.txt b/externals/tz/CMakeLists.txt index eacd3be..a1503c3 100644 --- a/externals/tz/CMakeLists.txt +++ b/externals/tz/CMakeLists.txt @@ -1,4 +1,4 @@ -set(TZ_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tz") +set(TZ_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tz" CACHE PATH "Time zone source directory") set(TZ_DIR "${CMAKE_CURRENT_BINARY_DIR}/tz") set(TZ_ZONEINFO_DIR "${TZ_DIR}/usr/share/zoneinfo" CACHE PATH "Time zone info data directory") set(TZIF_LIST_FILE "${CMAKE_CURRENT_BINARY_DIR}/tzif_list.txt" CACHE PATH "List of zone info files") diff --git a/src/tzdb/CMakeLists.txt b/src/tzdb/CMakeLists.txt index b91ed63..1b63da2 100644 --- a/src/tzdb/CMakeLists.txt +++ b/src/tzdb/CMakeLists.txt @@ -1,8 +1,36 @@ +find_program(GIT_PROGRAM git) +if ("${GIT_PROGRAM}" STREQUAL "GIT_PROGRAM-NOTFOUND") + message(FATAL_ERROR "git program not found") +endif() + +find_program(GNU_DATE date) +if ("${GNU_DATE}" STREQUAL "GNU_DATE-NOTFOUND") + message(FATAL_ERROR "date program not found") +endif() + set(NX_TZDB_DIR "${CMAKE_CURRENT_BINARY_DIR}/nx" CACHE PATH "Path to Switch-style time zone data") set(NX_ZONEINFO_DIR "${NX_TZDB_DIR}/zoneinfo") -set(TZDB_VERSION_FILE ${TZDB_LOCATION}/version) -file(TIMESTAMP ${TZDB_VERSION_FILE} TZDB_VERSION "%y%m%d" UTC) +set(TZDB_VERSION_FILE ${TZ_SOURCE_DIR}/NEWS) + +execute_process( + COMMAND + ${GIT_PROGRAM} log --pretty=%at -n1 NEWS + OUTPUT_VARIABLE + TZ_COMMIT_TIME + WORKING_DIRECTORY + ${TZ_SOURCE_DIR} + COMMAND_ERROR_IS_FATAL ANY) + +string(REPLACE "\n" "" TZ_COMMIT_TIME "${TZ_COMMIT_TIME}") + +execute_process( + COMMAND + ${GNU_DATE} +%y%m%d --date=@${TZ_COMMIT_TIME} + OUTPUT_VARIABLE + TZDB_VERSION + COMMAND_ERROR_IS_FATAL ANY) + set(NX_VERSION_FILE ${NX_TZDB_DIR}/version.txt) file(WRITE ${NX_VERSION_FILE} "${TZDB_VERSION}")