[date] Fix Linux&OSX, add unofficial targets

This commit is contained in:
Robert Schumacher 2018-04-10 05:46:46 -07:00
parent dc207a2c89
commit 600f7fdf30
3 changed files with 38 additions and 7 deletions

View File

@ -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 $<INSTALL_INTERFACE:include>)
add_library(tz src/tz.cpp)
target_include_directories(tz PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include>)
if(HAS_REMOTE_API)
find_package(CURL REQUIRED)
target_link_libraries(tz PUBLIC $<BUILD_INTERFACE:${CURL_LIBRARIES}>)
target_include_directories(tz PUBLIC $<BUILD_INTERFACE:${CURL_INCLUDE_DIRS}>)
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()

View File

@ -1,3 +1,7 @@
Source: date
Version: 2.4
Description: A date and time library based on the C++11/14/17 <chrono> header
Feature: remote-api
Description: support automatic download of tz data
Build-Depends: curl

View File

@ -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()