aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Marks <807580+SamuelMarks@users.noreply.github.com>2020-03-11 06:20:42 +1100
committerGitHub <noreply@github.com>2020-03-10 12:20:42 -0700
commitd1b89575bd2945e5a4fc54dca484a6f86112d33e (patch)
tree56a1ca21787086369dfbd1401b19364239efef85
parent7ffa425e1db8b0c3edf9c50f2f3a0f25a324541d (diff)
downloadvcpkg-d1b89575bd2945e5a4fc54dca484a6f86112d33e.tar.gz
vcpkg-d1b89575bd2945e5a4fc54dca484a6f86112d33e.zip
[zkpp] Add new port (#7001)
* [zkpp] Add new port * [zkpp] Change name of underlying library * [zookeeper] Fix interface include directories * [zkpp] Sanity * Fix patch * Correctly expose include directories * Bump version * Explicitly fail on Windows Co-authored-by: Raed Romanov <raid_r@mail.ru>
-rw-r--r--ports/zkpp/CMakeLists.txt111
-rw-r--r--ports/zkpp/CONTROL5
-rw-r--r--ports/zkpp/portfile.cmake28
-rw-r--r--ports/zookeeper/CONTROL2
-rw-r--r--ports/zookeeper/cmake.patch124
-rw-r--r--scripts/ci.baseline.txt6
6 files changed, 225 insertions, 51 deletions
diff --git a/ports/zkpp/CMakeLists.txt b/ports/zkpp/CMakeLists.txt
new file mode 100644
index 000000000..9705c580d
--- /dev/null
+++ b/ports/zkpp/CMakeLists.txt
@@ -0,0 +1,111 @@
+#
+# This file is based on https://github.com/tgockel/zookeeper-cpp/blob/a8d5f905e01893256299d5532b1836f64c89b5b9/CMakeLists.txt
+# Which is licensed under Apache License 2.0
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+
+cmake_minimum_required(VERSION 3.5)
+
+file(READ src/zk/config.hpp CONFIG_HPP_STR)
+string(REGEX REPLACE ".*# *define +ZKPP_VERSION_MAJOR +([0-9]+).*" "\\1" ZKPP_VERSION_MAJOR "${CONFIG_HPP_STR}")
+string(REGEX REPLACE ".*# *define +ZKPP_VERSION_MINOR +([0-9]+).*" "\\1" ZKPP_VERSION_MINOR "${CONFIG_HPP_STR}")
+string(REGEX REPLACE ".*# *define +ZKPP_VERSION_PATCH +([0-9]+).*" "\\1" ZKPP_VERSION_PATCH "${CONFIG_HPP_STR}")
+
+set(ZKPP_VERSION "${ZKPP_VERSION_MAJOR}.${ZKPP_VERSION_MINOR}.${ZKPP_VERSION_PATCH}")
+project(zookeeper-cpp
+ LANGUAGES CXX
+ VERSION "${ZKPP_VERSION}"
+ )
+set(PROJECT_SO_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
+message(STATUS "Software Version: ${ZKPP_VERSION}")
+
+################################################################################
+# CMake #
+################################################################################
+
+cmake_policy(VERSION 3.5)
+cmake_policy(SET CMP0037 OLD) # allow generation of "test" target
+set(CMAKE_REQUIRED_QUIET YES) # tell check_include_file_cxx to keep quiet
+
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/")
+
+include(BuildFunctions)
+include(CheckIncludeFileCXX)
+include(ConfigurationSetting)
+include(ListSplit)
+include(GNUInstallDirs)
+
+################################################################################
+# Build Configuration #
+################################################################################
+
+find_package(Threads REQUIRED)
+
+if (NOT CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE "Debug")
+ message(STATUS "No build type selected, default to ${CMAKE_BUILD_TYPE}")
+endif()
+
+set(VALID_BUILD_TYPES Debug Release)
+if(NOT ${CMAKE_BUILD_TYPE} IN_LIST VALID_BUILD_TYPES)
+ message(FATAL_ERROR "Invalid CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}\nValid build types are: ${VALID_BUILD_TYPES}")
+endif()
+message(STATUS "Configuration: ${CMAKE_BUILD_TYPE}")
+
+message(STATUS "Features:")
+build_option(NAME CODE_COVERAGE
+ DOC "Enable code coverage (turns on the test-coverage target)"
+ DEFAULT OFF
+ CONFIGS_ON Debug
+ )
+
+configuration_setting(NAME BUFFER
+ DOC "Type to use for zk::buffer"
+ DEFAULT STD_VECTOR
+ OPTIONS
+ STD_VECTOR
+ CUSTOM
+ )
+
+configuration_setting(NAME FUTURE
+ DOC "Type to use for zk::future<T> and zk::promise<T>"
+ DEFAULT STD
+ OPTIONS
+ STD
+ STD_EXPERIMENTAL
+ CUSTOM
+ )
+
+set(CXX_STANDARD c++17
+ CACHE STRING "The language standard to target for C++."
+ )
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=${CXX_STANDARD}")
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DZKPP_DEBUG=1")
+set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
+
+################################################################################
+# External Libraries #
+################################################################################
+
+find_package(zookeeper REQUIRED)
+
+
+build_module(NAME zkpp
+ PATH src/zk
+ NO_RECURSE
+ )
+
+target_include_directories(zkpp PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>)
+target_link_libraries(zkpp PRIVATE zookeeper::zookeeper)
+
+install(TARGETS zkpp
+ EXPORT zkpp
+ RUNTIME DESTINATION bin
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+)
+
+install(FILES ${zkpp_LIBRARY_HEADERS} DESTINATION include/zk/)
+
+install(EXPORT zkpp DESTINATION share/zkpp/ FILE zkppConfig.cmake)
diff --git a/ports/zkpp/CONTROL b/ports/zkpp/CONTROL
new file mode 100644
index 000000000..5b8aab427
--- /dev/null
+++ b/ports/zkpp/CONTROL
@@ -0,0 +1,5 @@
+Source: zkpp
+Version: 0.2.3
+Homepage: https://github.com/tgockel/zookeeper-cpp
+Description: A ZooKeeper client for C++.
+Build-Depends: zookeeper
diff --git a/ports/zkpp/portfile.cmake b/ports/zkpp/portfile.cmake
new file mode 100644
index 000000000..5ec1e78af
--- /dev/null
+++ b/ports/zkpp/portfile.cmake
@@ -0,0 +1,28 @@
+vcpkg_fail_port_install(ON_TARGET "Windows")
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO tgockel/zookeeper-cpp
+ REF v0.2.3
+ SHA512 086f31d4ca53f5a585fd8640caf9f2f21c90cf46d9cfe6c0e8e5b8c620e73265bb8aebec62ea4328f3f098a9b3000280582569966c0d3401627ab8c3edc31ca8
+ HEAD_REF master
+)
+
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
+file(GLOB_RECURSE test_files LIST_DIRECTORIES false "${SOURCE_PATH}/src/zk/*_tests.cpp")
+if (NOT "${test_files}" STREQUAL "")
+ file(REMOVE ${test_files})
+endif()
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+)
+
+vcpkg_install_cmake()
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
+
+vcpkg_fixup_cmake_targets()
+vcpkg_copy_pdbs()
diff --git a/ports/zookeeper/CONTROL b/ports/zookeeper/CONTROL
index d10b1683a..43c5407ff 100644
--- a/ports/zookeeper/CONTROL
+++ b/ports/zookeeper/CONTROL
@@ -1,5 +1,5 @@
Source: zookeeper
-Version: 3.5.5
+Version: 3.5.5-1
Description: ZooKeeper C bindings
Default-Features: sync
diff --git a/ports/zookeeper/cmake.patch b/ports/zookeeper/cmake.patch
index 4dd8ef93b..f47d4697e 100644
--- a/ports/zookeeper/cmake.patch
+++ b/ports/zookeeper/cmake.patch
@@ -1,50 +1,74 @@
-diff --git a/zookeeper-client/zookeeper-client-c/CMakeLists.txt b/zookeeper-client/zookeeper-client-c/CMakeLists.txt
-index 24a5a1b..1b0ce4a 100644
---- a/zookeeper-client/zookeeper-client-c/CMakeLists.txt
-+++ b/zookeeper-client/zookeeper-client-c/CMakeLists.txt
-@@ -153,7 +153,7 @@ configure_file(cmake_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/config.h)
- # hashtable library
- set(hashtable_sources src/hashtable/hashtable_itr.c src/hashtable/hashtable.c)
- add_library(hashtable STATIC ${hashtable_sources})
--target_include_directories(hashtable PUBLIC include)
-+target_include_directories(hashtable PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
- target_link_libraries(hashtable PUBLIC $<$<OR:$<PLATFORM_ID:Linux>,$<PLATFORM_ID:FreeBSD>>:m>)
-
- # zookeeper library
-@@ -176,7 +176,10 @@ if(WIN32)
- endif()
-
- add_library(zookeeper STATIC ${zookeeper_sources})
--target_include_directories(zookeeper PUBLIC include ${CMAKE_CURRENT_BINARY_DIR}/include generated)
-+target_include_directories(zookeeper PUBLIC
-+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
-+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_BINARY_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/generated>)
-+
- target_link_libraries(zookeeper PUBLIC
- hashtable
- $<$<PLATFORM_ID:Linux>:rt> # clock_gettime
-@@ -247,3 +250,23 @@ if(WANT_CPPUNIT)
- "ZKROOT=${CMAKE_CURRENT_SOURCE_DIR}/../.."
- "CLASSPATH=$CLASSPATH:$CLOVER_HOME/lib/clover*.jar")
- endif()
-+
-+
-+target_compile_definitions(zookeeper PRIVATE _CRT_SECURE_NO_WARNINGS _WINSOCK_DEPRECATED_NO_WARNINGS _CRT_NONSTDC_NO_DEPRECATE)
-+target_compile_definitions(cli PRIVATE _CRT_SECURE_NO_WARNINGS)
-+
-+file(GLOB ZOOKEEPER_HEADERS include/*.h)
-+
-+install(FILES ${ZOOKEEPER_HEADERS} generated/zookeeper.jute.h DESTINATION include/zookeeper)
-+
-+install(TARGETS zookeeper hashtable
-+ EXPORT zookeeperConfig
-+ RUNTIME DESTINATION bin
-+ ARCHIVE DESTINATION lib
-+ LIBRARY DESTINATION lib
-+)
-+install(EXPORT zookeeperConfig
-+ FILE zookeeperConfig.cmake
-+ NAMESPACE zookeeper::
-+ DESTINATION "${CMAKE_INSTALL_PREFIX}/share/zookeeper"
-+)
-\ No newline at end of file
+diff --git a/zookeeper-client/zookeeper-client-c/CMakeLists.txt b/zookeeper-client/zookeeper-client-c/CMakeLists.txt
+index 24a5a1b..40fa67e 100644
+--- a/zookeeper-client/zookeeper-client-c/CMakeLists.txt
++++ b/zookeeper-client/zookeeper-client-c/CMakeLists.txt
+@@ -147,13 +147,15 @@ endforeach()
+ include(CheckStructHasMember)
+ check_struct_has_member("struct sockaddr_in6" sin6_addr "netinet/in.h" ZOO_IPV6_ENABLED)
+
++include(GNUInstallDirs)
++
+ # configure
+ configure_file(cmake_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/config.h)
+
+ # hashtable library
+ set(hashtable_sources src/hashtable/hashtable_itr.c src/hashtable/hashtable.c)
+ add_library(hashtable STATIC ${hashtable_sources})
+-target_include_directories(hashtable PUBLIC include)
++target_include_directories(hashtable PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
+ target_link_libraries(hashtable PUBLIC $<$<OR:$<PLATFORM_ID:Linux>,$<PLATFORM_ID:FreeBSD>>:m>)
+
+ # zookeeper library
+@@ -176,11 +178,16 @@ if(WIN32)
+ endif()
+
+ add_library(zookeeper STATIC ${zookeeper_sources})
+-target_include_directories(zookeeper PUBLIC include ${CMAKE_CURRENT_BINARY_DIR}/include generated)
++target_include_directories(zookeeper PUBLIC
++ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
++ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/generated>)
++
+ target_link_libraries(zookeeper PUBLIC
+- hashtable
+ $<$<PLATFORM_ID:Linux>:rt> # clock_gettime
+- $<$<PLATFORM_ID:Windows>:ws2_32>) # Winsock 2.0
++ $<$<PLATFORM_ID:Windows>:ws2_32> # Winsock 2.0
++ PRIVATE hashtable)
+
+ if(WANT_SYNCAPI AND NOT WIN32)
+ find_package(Threads REQUIRED)
+@@ -189,7 +196,7 @@ endif()
+
+ # cli executable
+ add_executable(cli src/cli.c)
+-target_link_libraries(cli zookeeper)
++target_link_libraries(cli PRIVATE zookeeper)
+
+ # load_gen executable
+ if(WANT_SYNCAPI AND NOT WIN32)
+@@ -247,3 +254,23 @@ if(WANT_CPPUNIT)
+ "ZKROOT=${CMAKE_CURRENT_SOURCE_DIR}/../.."
+ "CLASSPATH=$CLASSPATH:$CLOVER_HOME/lib/clover*.jar")
+ endif()
++
++
++target_compile_definitions(zookeeper PRIVATE _CRT_SECURE_NO_WARNINGS _WINSOCK_DEPRECATED_NO_WARNINGS _CRT_NONSTDC_NO_DEPRECATE)
++target_compile_definitions(cli PRIVATE _CRT_SECURE_NO_WARNINGS)
++
++file(GLOB ZOOKEEPER_HEADERS include/*.h)
++
++install(FILES ${ZOOKEEPER_HEADERS} generated/zookeeper.jute.h DESTINATION include/zookeeper)
++
++install(TARGETS zookeeper hashtable
++ EXPORT zookeeperConfig
++ RUNTIME DESTINATION bin
++ ARCHIVE DESTINATION lib
++ LIBRARY DESTINATION lib
++)
++install(EXPORT zookeeperConfig
++ FILE zookeeperConfig.cmake
++ NAMESPACE zookeeper::
++ DESTINATION "${CMAKE_INSTALL_PREFIX}/share/zookeeper"
++)
diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt
index 0834ee62a..035d0ac22 100644
--- a/scripts/ci.baseline.txt
+++ b/scripts/ci.baseline.txt
@@ -1896,3 +1896,9 @@ z3:x64-uwp=fail
zeromq:arm64-windows=fail
zeromq:arm-uwp=fail
zeromq:x64-uwp=fail
+zkpp:x86-windows=fail
+zkpp:x64-windows=fail
+zkpp:x64-windows-static=fail
+zkpp:arm64-windows=fail
+zkpp:x64-uwp=fail
+zkpp:arm-uwp=fail