diff --git a/ports/date/CMakeLists.txt b/ports/date/CMakeLists.txt index 4c38e4a87..292c1758a 100644 --- a/ports/date/CMakeLists.txt +++ b/ports/date/CMakeLists.txt @@ -1,28 +1,44 @@ cmake_minimum_required(VERSION 3.5.1) project(tz CXX) +set(CMAKE_CXX_STANDARD 11) if(MSVC) add_compile_options(/W3 /wd4005 /wd4996 /wd4018 -D_CRT_SECURE_NO_WARNINGS) endif() -add_definitions(-DNOMINMAX) +option(HAS_REMOTE_API "" 0) +add_definitions(-DNOMINMAX -DHAS_REMOTE_API=${HAS_REMOTE_API}) -include_directories("./include") +add_library(date INTERFACE) +target_include_directories(date INTERFACE $) add_library(tz src/tz.cpp) +target_include_directories(tz PUBLIC $ $) + +if(HAS_REMOTE_API) + find_package(CURL REQUIRED) + target_link_libraries(tz PUBLIC $) + target_include_directories(tz PUBLIC $) +endif() if(BUILD_SHARED_LIBS) target_compile_definitions(tz PRIVATE -DDATE_BUILD_DLL) endif() install( - TARGETS tz + TARGETS tz date + EXPORT tz RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/unofficial-date-config.cmake" "include(\${CMAKE_CURRENT_LIST_DIR}/unofficial-date-targets.cmake)\n") + +install(EXPORT tz FILE unofficial-date-targets.cmake NAMESPACE unofficial::date:: DESTINATION share/unofficial-date) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unofficial-date-config.cmake DESTINATION share/unofficial-date) + if(NOT DISABLE_INSTALL_HEADERS) install(FILES include/date/date.h include/date/tz.h include/date/julian.h include/date/iso_week.h include/date/islamic.h DESTINATION include/date) endif() diff --git a/ports/date/CONTROL b/ports/date/CONTROL index 8c1797072..bf3095ac6 100644 --- a/ports/date/CONTROL +++ b/ports/date/CONTROL @@ -1,3 +1,7 @@ Source: date Version: 2.4 Description: A date and time library based on the C++11/14/17 header + +Feature: remote-api +Description: support automatic download of tz data +Build-Depends: curl diff --git a/ports/date/portfile.cmake b/ports/date/portfile.cmake index c60a7bcb0..3b36a19fc 100644 --- a/ports/date/portfile.cmake +++ b/ports/date/portfile.cmake @@ -1,9 +1,11 @@ include(vcpkg_common_functions) -message(WARNING - "You will need to also install http://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml into your install location" - "See https://howardhinnant.github.io/date/tz.html" -) +if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + message(WARNING + "You will need to also install http://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml into your install location.\n" + "See https://howardhinnant.github.io/date/tz.html" + ) +endif() vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH @@ -20,18 +22,27 @@ vcpkg_apply_patches( file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) +set(HAS_REMOTE_API 0) +if("remote-api" IN_LIST FEATURES) + set(HAS_REMOTE_API 1) +endif() + vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA + OPTIONS -DHAS_REMOTE_API=${HAS_REMOTE_API} OPTIONS_DEBUG -DDISABLE_INSTALL_HEADERS=ON ) vcpkg_install_cmake() +vcpkg_fixup_cmake_targets(CONFIG_PATH share/unofficial-date TARGET_PATH share/unofficial-date) + vcpkg_copy_pdbs() set(HEADER "${CURRENT_PACKAGES_DIR}/include/date/tz.h") file(READ "${HEADER}" _contents) +string(REPLACE "#define TZ_H" "#define TZ_H\n#undef HAS_REMOTE_API\n#define HAS_REMOTE_API ${HAS_REMOTE_API}" _contents "${_contents}") if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) string(REPLACE "ifdef DATE_BUILD_DLL" "if 1" _contents "${_contents}") endif()