diff --git a/externals/tz/CMakeLists.txt b/externals/tz/CMakeLists.txt index 68d70fd..38e6525 100644 --- a/externals/tz/CMakeLists.txt +++ b/externals/tz/CMakeLists.txt @@ -28,7 +28,23 @@ if (NOT EXISTS "${TZ_DIR}" OR NOT EXISTS "${TZIF_LIST_FILE}") execute_process( COMMAND - sh "${CMAKE_CURRENT_SOURCE_DIR}/find_tzif.sh" "${TZ_ZONEINFO_DIR}" "${TZIF_LIST_FILE}" - COMMAND_ERROR_IS_FATAL ANY + ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_SOURCE_DIR}/list_directory.cmake" + WORKING_DIRECTORY + "${TZ_ZONEINFO_DIR}" + OUTPUT_VARIABLE + TZIF_SCAN ) + + set(TZIF_LIST "") + foreach(CANDIDATE ${TZIF_SCAN}) + if (CANDIDATE STREQUAL "\n") + continue() + endif() + set(TZIF_FILE "${TZ_ZONEINFO_DIR}/${CANDIDATE}") + file(READ "${TZIF_FILE}" HEADER LIMIT 4) + string(SUBSTRING "${HEADER}" 0 4 HEADER) # Remove trailing newline + if (HEADER STREQUAL "TZif") + file(APPEND "${TZIF_LIST_FILE}" "${TZIF_FILE}\n") + endif() + endforeach() endif() diff --git a/externals/tz/find_tzif.sh b/externals/tz/find_tzif.sh deleted file mode 100644 index 6664440..0000000 --- a/externals/tz/find_tzif.sh +++ /dev/null @@ -1,14 +0,0 @@ -#/bin/sh -set -e -directory=$1 -tzif_list=$2 - -truncate -s 0 $tzif_list - -for i in `find $directory -type f`; do - header=`head -c 4 $i` - if [ "$header" = "TZif" ]; then - echo "$i" >> $tzif_list - fi -done - diff --git a/externals/tz/list_directory.cmake b/externals/tz/list_directory.cmake new file mode 100644 index 0000000..858de59 --- /dev/null +++ b/externals/tz/list_directory.cmake @@ -0,0 +1,2 @@ +file(GLOB_RECURSE FILE_LIST LIST_DIRECTORIES false RELATIVE ${CMAKE_SOURCE_DIR} "*") +execute_process(COMMAND ${CMAKE_COMMAND} -E echo "${FILE_LIST};") \ No newline at end of file