From 37d5cfb31eb768e70ed45f6e68e2f7ecf2f5a1bf Mon Sep 17 00:00:00 2001 From: Thomas Arcila Date: Sat, 9 Mar 2019 19:49:34 -0500 Subject: [PATCH] Add Capnproto package --- ...capnpc-extension-handling-on-Windows.patch | 39 +++++++++++++++++ ports/capnproto/CONTROL | 4 ++ ports/capnproto/portfile.cmake | 42 +++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 ports/capnproto/0001-fix-capnpc-extension-handling-on-Windows.patch create mode 100644 ports/capnproto/CONTROL create mode 100644 ports/capnproto/portfile.cmake diff --git a/ports/capnproto/0001-fix-capnpc-extension-handling-on-Windows.patch b/ports/capnproto/0001-fix-capnpc-extension-handling-on-Windows.patch new file mode 100644 index 0000000000..d0544c625b --- /dev/null +++ b/ports/capnproto/0001-fix-capnpc-extension-handling-on-Windows.patch @@ -0,0 +1,39 @@ +From 6e142f270524d78689a119737660050561cf853e Mon Sep 17 00:00:00 2001 +From: Thomas Arcila +Date: Sat, 9 Mar 2019 19:00:24 -0500 +Subject: [PATCH] fix capnpc extension handling on Windows + +--- + c++/src/capnp/CMakeLists.txt | 2 +- + c++/src/capnp/compiler/capnp.c++ | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/c++/src/capnp/CMakeLists.txt b/c++/src/capnp/CMakeLists.txt +index 11cbf5af..20b99ed3 100644 +--- a/c++/src/capnp/CMakeLists.txt ++++ b/c++/src/capnp/CMakeLists.txt +@@ -182,7 +182,7 @@ if(NOT CAPNP_LITE) + install(TARGETS capnp_tool capnpc_cpp capnpc_capnp ${INSTALL_TARGETS_DEFAULT_ARGS}) + + # Symlink capnpc -> capnp +- install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E create_symlink capnp \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_BINDIR}/capnpc\")") ++ install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E create_symlink capnp${CMAKE_EXECUTABLE_SUFFIX} \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_BINDIR}/capnpc${CMAKE_EXECUTABLE_SUFFIX}\")") + endif() # NOT CAPNP_LITE + + # Tests ======================================================================== +diff --git a/c++/src/capnp/compiler/capnp.c++ b/c++/src/capnp/compiler/capnp.c++ +index 8e8c459b..d252fb12 100644 +--- a/c++/src/capnp/compiler/capnp.c++ ++++ b/c++/src/capnp/compiler/capnp.c++ +@@ -78,7 +78,7 @@ public: + : context(context), disk(kj::newDiskFilesystem()), loader(*this) {} + + kj::MainFunc getMain() { +- if (context.getProgramName().endsWith("capnpc")) { ++ if (context.getProgramName().endsWith("capnpc") || context.getProgramName().endsWith("capnpc.exe")) { + kj::MainBuilder builder(context, VERSION_STRING, + "Compiles Cap'n Proto schema files and generates corresponding source code in one or " + "more languages."); +-- +2.19.1 + diff --git a/ports/capnproto/CONTROL b/ports/capnproto/CONTROL new file mode 100644 index 0000000000..e020026562 --- /dev/null +++ b/ports/capnproto/CONTROL @@ -0,0 +1,4 @@ +Source: capnproto +Version: 0.7.0 +Description: Data interchange format and capability-based RPC system https://capnproto.org/ +Build-Depends: zlib diff --git a/ports/capnproto/portfile.cmake b/ports/capnproto/portfile.cmake new file mode 100644 index 0000000000..8b661e357f --- /dev/null +++ b/ports/capnproto/portfile.cmake @@ -0,0 +1,42 @@ +if (VCPKG_CMAKE_SYSTEM_NAME STREQUAL WindowsStore) + message(FATAL_ERROR "Error: UWP build is not supported.") +endif() + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + message("Building DLLs not supported. Building static instead.") + set(VCPKG_LIBRARY_LINKAGE static) +endif() + +include(vcpkg_common_functions) +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO capnproto/capnproto + REF v0.7.0 + SHA512 a3ea278ded6a866759c0517d16b99bd38ffea1c163ce63a3604b752d8bdaafbc38a600de94afe12db35e7f7f06e29cc94c911dc2e0ecec6fe1185452df2a2bd3 + HEAD_REF master +) + +vcpkg_apply_patches( + SOURCE_PATH ${SOURCE_PATH} + PATCHES "${CMAKE_CURRENT_LIST_DIR}/0001-fix-capnpc-extension-handling-on-Windows.patch" +) + +vcpkg_configure_cmake(SOURCE_PATH ${SOURCE_PATH}) + +vcpkg_install_cmake() + +vcpkg_fixup_cmake_targets(CONFIG_PATH "lib/cmake/CapnProto") + +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools") +file(RENAME "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/tools/CapnProto") +vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/capnproto) + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) + +# Handle copyright +file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/capnproto) +file(RENAME ${CURRENT_PACKAGES_DIR}/share/capnproto/LICENSE ${CURRENT_PACKAGES_DIR}/share/capnproto/copyright) +