diff --git a/overlays/thrift/correct-paths.patch b/overlays/thrift/correct-paths.patch new file mode 100644 index 00000000000000..26c21dd02418e1 --- /dev/null +++ b/overlays/thrift/correct-paths.patch @@ -0,0 +1,15 @@ +diff --git a/build/cmake/GenerateConfigModule.cmake b/build/cmake/GenerateConfigModule.cmake +index 9533c82..d074a1b 100644 +--- a/build/cmake/GenerateConfigModule.cmake ++++ b/build/cmake/GenerateConfigModule.cmake +@@ -19,8 +19,8 @@ + + include(CMakePackageConfigHelpers) + set(PACKAGE_INCLUDE_INSTALL_DIR "${includedir}/thrift") +-set(PACKAGE_CMAKE_INSTALL_DIR "${cmakedir}/thrift") +-set(PACKAGE_BIN_INSTALL_DIR "${exec_prefix}") ++set(PACKAGE_CMAKE_INSTALL_DIR "${prefix}/share/thrift") ++set(PACKAGE_BIN_INSTALL_DIR "${prefix}/tools/thrift") + + # In CYGWIN enviroment below commands does not work properly + if (NOT CYGWIN) diff --git a/overlays/thrift/pc-suffix.patch b/overlays/thrift/pc-suffix.patch new file mode 100644 index 00000000000000..8fb0dc6daf0eeb --- /dev/null +++ b/overlays/thrift/pc-suffix.patch @@ -0,0 +1,44 @@ +diff --git a/lib/cpp/thrift-nb.pc.in b/lib/cpp/thrift-nb.pc.in +index 2c6a96973..e99eff2bc 100644 +--- a/lib/cpp/thrift-nb.pc.in ++++ b/lib/cpp/thrift-nb.pc.in +@@ -26,5 +26,5 @@ Name: Thrift + Description: Thrift Nonblocking API + Version: @VERSION@ + Requires: thrift = @VERSION@ +-Libs: -L${libdir} -lthriftnb ++Libs: -L${libdir} -lthriftnb@THRIFT_RUNTIME_POSTFIX@ + Cflags: -I${includedir} +diff --git a/lib/cpp/thrift-qt5.pc.in b/lib/cpp/thrift-qt5.pc.in +index a8b16663e..2720bea79 100644 +--- a/lib/cpp/thrift-qt5.pc.in ++++ b/lib/cpp/thrift-qt5.pc.in +@@ -26,5 +26,5 @@ Name: Thrift + Description: Thrift Qt5 API + Version: @VERSION@ + Requires: thrift = @VERSION@ +-Libs: -L${libdir} -lthriftqt5 ++Libs: -L${libdir} -lthriftqt5@THRIFT_RUNTIME_POSTFIX@ + Cflags: -I${includedir} +diff --git a/lib/cpp/thrift-z.pc.in b/lib/cpp/thrift-z.pc.in +index 467d2e11c..cde44158a 100644 +--- a/lib/cpp/thrift-z.pc.in ++++ b/lib/cpp/thrift-z.pc.in +@@ -26,5 +26,5 @@ Name: Thrift + Description: Thrift Zlib API + Version: @VERSION@ + Requires: thrift = @VERSION@ +-Libs: -L${libdir} -lthriftz ++Libs: -L${libdir} -lthriftz@THRIFT_RUNTIME_POSTFIX@ + Cflags: -I${includedir} +diff --git a/lib/cpp/thrift.pc.in b/lib/cpp/thrift.pc.in +index d11e6db29..77da61c3e 100644 +--- a/lib/cpp/thrift.pc.in ++++ b/lib/cpp/thrift.pc.in +@@ -25,5 +25,5 @@ includedir=@includedir@ + Name: Thrift + Description: Thrift C++ API + Version: @VERSION@ +-Libs: -L${libdir} -lthrift ++Libs: -L${libdir} -lthrift@THRIFT_RUNTIME_POSTFIX@ + Cflags: -I${includedir} diff --git a/overlays/thrift/portfile.cmake b/overlays/thrift/portfile.cmake new file mode 100644 index 00000000000000..71d21478d0eb47 --- /dev/null +++ b/overlays/thrift/portfile.cmake @@ -0,0 +1,93 @@ +# We currently insist on static only because: +# - Thrift doesn't yet support building as a DLL on Windows, +# - x64-linux only builds static anyway. +# From https://github.com/apache/thrift/blob/master/CHANGES.md +if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +endif() + +vcpkg_find_acquire_program(FLEX) +vcpkg_find_acquire_program(BISON) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO apache/thrift + REF "v${VERSION}" + SHA512 5e4ee9870b30fe5ba484d39781c435716f7f3903793dc8aae96594ca813b1a5a73363b84719038ca8fa3ab8ef0a419a28410d936ff7b3bbadf36fc085a6883ae + HEAD_REF master + PATCHES + "correct-paths.patch" + "pc-suffix.patch" +) + +if (VCPKG_TARGET_IS_OSX) + message(WARNING "${PORT} requires bison version greater than 2.5,\n\ +please use command \`brew install bison\` to install bison") +endif() + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" shared_lib) +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" static_lib) + +# note we specify values for WITH_STATIC_LIB and WITH_SHARED_LIB because even though +# they're marked as deprecated, Thrift incorrectly hard-codes a value for BUILD_SHARED_LIBS. +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + NO_CHARSET_FLAG + OPTIONS + --trace-expand + -DLIB_INSTALL_DIR:PATH=lib + -DWITH_SHARED_LIB=${shared_lib} + -DWITH_STATIC_LIB=${static_lib} + -DBUILD_TESTING=OFF + -DBUILD_JAVA=OFF + -DWITH_C_GLIB=OFF + -DBUILD_C_GLIB=OFF + -DCMAKE_DISABLE_FIND_PACKAGE_GLIB=TRUE + -DBUILD_PYTHON=OFF + -DBUILD_CPP=ON + -DWITH_CPP=ON + -DWITH_ZLIB=ON + -DCMAKE_REQUIRE_FIND_PACKAGE_ZLIB=TRUE + -DWITH_LIBEVENT=ON + -DCMAKE_REQUIRE_FIND_PACKAGE_Libevent=TRUE + -DWITH_OPENSSL=ON + -DCMAKE_REQUIRE_FIND_PACKAGE_OpenSSL=TRUE + -DBUILD_TUTORIALS=OFF + -DFLEX_EXECUTABLE=${FLEX} + -DWITH_QT5=OFF + -DCMAKE_DISABLE_FIND_PACKAGE_Qt5=TRUE + -DCMAKE_DISABLE_FIND_PACKAGE_Gradle=TRUE + -DCMAKE_DISABLE_FIND_PACKAGE_Java=TRUE + -DBUILD_JAVASCRIPT=OFF + -DBUILD_NODEJS=OFF + -DBISON_EXECUTABLE=${BISON} + MAYBE_UNUSED_VARIABLES + CMAKE_DISABLE_FIND_PACKAGE_GLIB + CMAKE_DISABLE_FIND_PACKAGE_Gradle + CMAKE_REQUIRE_FIND_PACKAGE_Libevent + CMAKE_REQUIRE_FIND_PACKAGE_OpenSSL + CMAKE_REQUIRE_FIND_PACKAGE_ZLIB + +) + +vcpkg_cmake_install() + +vcpkg_copy_pdbs() + +# Move CMake config files to the right place +vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/${PORT}") +vcpkg_fixup_pkgconfig() + +file(GLOB COMPILER "${CURRENT_PACKAGES_DIR}/bin/thrift" "${CURRENT_PACKAGES_DIR}/bin/thrift.exe") +if(COMPILER) + vcpkg_copy_tools(TOOL_NAMES thrift AUTO_CLEAN) +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share") + +if ("${VCPKG_LIBRARY_LINKAGE}" STREQUAL "static") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/bin") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin") +endif() + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/overlays/thrift/vcpkg.json b/overlays/thrift/vcpkg.json new file mode 100644 index 00000000000000..165711f5b87489 --- /dev/null +++ b/overlays/thrift/vcpkg.json @@ -0,0 +1,26 @@ +{ + "name": "thrift", + "version": "0.20.0", + "port-version": 1, + "description": "Apache Thrift is a software project spanning a variety of programming languages and use cases. Our goal is to make reliable, performant communication and data serialization across languages as efficient and seamless as possible.", + "homepage": "https://github.com/apache/thrift", + "license": "Apache-2.0", + "dependencies": [ + "boost-date-time", + "boost-locale", + "boost-range", + "boost-scope-exit", + "boost-smart-ptr", + "libevent", + "openssl", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + "zlib" + ] +} \ No newline at end of file