mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-08 20:32:56 +03:00
66e7ac1954
We have seen some cases where the build fails for folks, and they are missing unzip/tar/gzip etc. We can catch some of these in CMake itself, so lets make sure to handle that uniformly across the build system. The REQUIRED flag to `find_program` was only added on in CMake 3.18 and above, so we can't rely on that to actually halt the program execution.
93 lines
3.8 KiB
CMake
93 lines
3.8 KiB
CMake
include(${CMAKE_CURRENT_LIST_DIR}/utils.cmake)
|
|
|
|
set(TZDB_PATH "${CMAKE_BINARY_DIR}/TZDB" CACHE PATH "Download location for TZDB files")
|
|
|
|
set(TZDB_VERSION 2022a)
|
|
set(TZDB_VERSION_FILE "${TZDB_PATH}/version.txt")
|
|
|
|
set(TZDB_ZIP_URL "https://data.iana.org/time-zones/releases/tzdata${TZDB_VERSION}.tar.gz")
|
|
set(TZDB_ZIP_PATH "${TZDB_PATH}/tzdb.tar.gz")
|
|
|
|
set(TZDB_AFRICA_SOURCE africa)
|
|
set(TZDB_AFRICA_PATH "${TZDB_PATH}/${TZDB_AFRICA_SOURCE}")
|
|
|
|
set(TZDB_ANTARCTICA_SOURCE antarctica)
|
|
set(TZDB_ANTARCTICA_PATH "${TZDB_PATH}/${TZDB_ANTARCTICA_SOURCE}")
|
|
|
|
set(TZDB_ASIA_SOURCE asia)
|
|
set(TZDB_ASIA_PATH "${TZDB_PATH}/${TZDB_ASIA_SOURCE}")
|
|
|
|
set(TZDB_AUSTRALASIA_SOURCE australasia)
|
|
set(TZDB_AUSTRALASIA_PATH "${TZDB_PATH}/${TZDB_AUSTRALASIA_SOURCE}")
|
|
|
|
set(TZDB_BACKWARD_SOURCE backward)
|
|
set(TZDB_BACKWARD_PATH "${TZDB_PATH}/${TZDB_BACKWARD_SOURCE}")
|
|
|
|
set(TZDB_ETCETERA_SOURCE etcetera)
|
|
set(TZDB_ETCETERA_PATH "${TZDB_PATH}/${TZDB_ETCETERA_SOURCE}")
|
|
|
|
set(TZDB_EUROPE_SOURCE europe)
|
|
set(TZDB_EUROPE_PATH "${TZDB_PATH}/${TZDB_EUROPE_SOURCE}")
|
|
|
|
set(TZDB_NORTH_AMERICA_SOURCE northamerica)
|
|
set(TZDB_NORTH_AMERICA_PATH "${TZDB_PATH}/${TZDB_NORTH_AMERICA_SOURCE}")
|
|
|
|
set(TZDB_SOUTH_AMERICA_SOURCE southamerica)
|
|
set(TZDB_SOUTH_AMERICA_PATH "${TZDB_PATH}/${TZDB_SOUTH_AMERICA_SOURCE}")
|
|
|
|
set(TZDB_ZONE_1970_SOURCE zone1970.tab)
|
|
set(TZDB_ZONE_1970_PATH "${TZDB_PATH}/${TZDB_ZONE_1970_SOURCE}")
|
|
|
|
function(extract_tzdb_file source path)
|
|
if(EXISTS "${TZDB_ZIP_PATH}" AND NOT EXISTS "${path}")
|
|
message(STATUS "Extracting TZDB ${source} from ${TZDB_ZIP_PATH}...")
|
|
execute_process(COMMAND "${TAR_TOOL}" -C "${TZDB_PATH}" -xf "${TZDB_ZIP_PATH}" "${source}" RESULT_VARIABLE tar_result)
|
|
if (NOT tar_result EQUAL 0)
|
|
message(FATAL_ERROR "Failed to unzip ${source} from ${TZDB_ZIP_PATH} with status ${tar_result}")
|
|
endif()
|
|
endif()
|
|
endfunction()
|
|
|
|
if (ENABLE_TIME_ZONE_DATABASE_DOWNLOAD)
|
|
remove_path_if_version_changed("${TZDB_VERSION}" "${TZDB_VERSION_FILE}" "${TZDB_PATH}")
|
|
|
|
download_file("${TZDB_ZIP_URL}" "${TZDB_ZIP_PATH}")
|
|
extract_tzdb_file("${TZDB_AFRICA_SOURCE}" "${TZDB_AFRICA_PATH}")
|
|
extract_tzdb_file("${TZDB_ANTARCTICA_SOURCE}" "${TZDB_ANTARCTICA_PATH}")
|
|
extract_tzdb_file("${TZDB_ASIA_SOURCE}" "${TZDB_ASIA_PATH}")
|
|
extract_tzdb_file("${TZDB_AUSTRALASIA_SOURCE}" "${TZDB_AUSTRALASIA_PATH}")
|
|
extract_tzdb_file("${TZDB_BACKWARD_SOURCE}" "${TZDB_BACKWARD_PATH}")
|
|
extract_tzdb_file("${TZDB_ETCETERA_SOURCE}" "${TZDB_ETCETERA_PATH}")
|
|
extract_tzdb_file("${TZDB_EUROPE_SOURCE}" "${TZDB_EUROPE_PATH}")
|
|
extract_tzdb_file("${TZDB_NORTH_AMERICA_SOURCE}" "${TZDB_NORTH_AMERICA_PATH}")
|
|
extract_tzdb_file("${TZDB_SOUTH_AMERICA_SOURCE}" "${TZDB_SOUTH_AMERICA_PATH}")
|
|
extract_tzdb_file("${TZDB_ZONE_1970_SOURCE}" "${TZDB_ZONE_1970_PATH}")
|
|
|
|
set(TIME_ZONE_DATA_HEADER LibTimeZone/TimeZoneData.h)
|
|
set(TIME_ZONE_DATA_IMPLEMENTATION LibTimeZone/TimeZoneData.cpp)
|
|
|
|
set(TIME_ZONE_META_TARGET_PREFIX LibTimeZone_)
|
|
|
|
if (CMAKE_CURRENT_BINARY_DIR MATCHES ".*/LibTimeZone") # Serenity build.
|
|
set(TIME_ZONE_DATA_HEADER TimeZoneData.h)
|
|
set(TIME_ZONE_DATA_IMPLEMENTATION TimeZoneData.cpp)
|
|
|
|
set(TIME_ZONE_META_TARGET_PREFIX "")
|
|
endif()
|
|
|
|
invoke_generator(
|
|
"TimeZoneData"
|
|
Lagom::GenerateTimeZoneData
|
|
"${TZDB_VERSION_FILE}"
|
|
"${TIME_ZONE_META_TARGET_PREFIX}"
|
|
"${TIME_ZONE_DATA_HEADER}"
|
|
"${TIME_ZONE_DATA_IMPLEMENTATION}"
|
|
arguments -z "${TZDB_ZONE_1970_PATH}" "${TZDB_AFRICA_PATH}" "${TZDB_ANTARCTICA_PATH}" "${TZDB_ASIA_PATH}" "${TZDB_AUSTRALASIA_PATH}" "${TZDB_BACKWARD_PATH}" "${TZDB_ETCETERA_PATH}" "${TZDB_EUROPE_PATH}" "${TZDB_NORTH_AMERICA_PATH}" "${TZDB_SOUTH_AMERICA_PATH}"
|
|
)
|
|
|
|
set(TIME_ZONE_DATA_SOURCES
|
|
${TIME_ZONE_DATA_HEADER}
|
|
${TIME_ZONE_DATA_IMPLEMENTATION}
|
|
)
|
|
endif()
|