From 2ccfa2d568ddb9c4c0dffb722cfc7b76a0db0932 Mon Sep 17 00:00:00 2001 From: Mathis Logemann Date: Wed, 4 Nov 2020 05:51:18 +0100 Subject: [comms] Add new ports (#14195) --- ports/comms/portfile.cmake | 24 ++++++++++++++ ports/comms/vcpkg.json | 7 ++++ ports/commsdsl/fix-libxml2.patch | 64 ++++++++++++++++++++++++++++++++++++ ports/commsdsl/portfile.cmake | 37 +++++++++++++++++++++ ports/commsdsl/use-FindPackage.patch | 21 ++++++++++++ ports/commsdsl/vcpkg.json | 13 ++++++++ 6 files changed, 166 insertions(+) create mode 100644 ports/comms/portfile.cmake create mode 100644 ports/comms/vcpkg.json create mode 100644 ports/commsdsl/fix-libxml2.patch create mode 100644 ports/commsdsl/portfile.cmake create mode 100644 ports/commsdsl/use-FindPackage.patch create mode 100644 ports/commsdsl/vcpkg.json diff --git a/ports/comms/portfile.cmake b/ports/comms/portfile.cmake new file mode 100644 index 000000000..bca5f8524 --- /dev/null +++ b/ports/comms/portfile.cmake @@ -0,0 +1,24 @@ +#header-only library + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO mathisloge/comms_champion + REF v3.1.1 + SHA512 167838aec1d42ce60e373aaa1c3b3f0093735e54b80c12229624fa5617b713462609b46585dbe9a1637404e88bd051eda2e619d21bff60056693e79dd9e53878 + HEAD_REF master +) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -DCC_COMMS_LIB_ONLY=ON + -DCC_NO_UNIT_TESTS=ON +) +vcpkg_install_cmake() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") + +# Handle copyright +file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) \ No newline at end of file diff --git a/ports/comms/vcpkg.json b/ports/comms/vcpkg.json new file mode 100644 index 000000000..6c3668de0 --- /dev/null +++ b/ports/comms/vcpkg.json @@ -0,0 +1,7 @@ +{ + "name": "comms", + "version-string": "3.1.1", + "description": "COMMS is the C++(11) headers only, platform independent library, which makes the implementation of a communication protocol to be an easy and relatively quick process.", + "homepage": "https://commschamp.github.io/", + "documentation": "https://github.com/commschamp/comms_champion" +} diff --git a/ports/commsdsl/fix-libxml2.patch b/ports/commsdsl/fix-libxml2.patch new file mode 100644 index 000000000..426f0ac9f --- /dev/null +++ b/ports/commsdsl/fix-libxml2.patch @@ -0,0 +1,64 @@ +diff --git a/lib/src/CMakeLists.txt b/lib/src/CMakeLists.txt +index 9fb4718..fec7712 100644 +--- a/lib/src/CMakeLists.txt ++++ b/lib/src/CMakeLists.txt +@@ -1,57 +1,6 @@ + set (INTERNAL_LIBXML_TGT) +-while (TRUE) +- if (UNIX) +- # Use libxml2 from system repositories +- break() +- endif () +- +- if ((NOT "${LIBXML2_INCLUDE_DIR}" STREQUAL "") AND (NOT "${LIBXML2_LIBRARIES}" STREQUAL "")) +- # External build of libxml2 is provided +- break() +- endif () +- +- if (NOT MSVC) +- message (FATAL_ERROR "At this moment only MSVC compiler is supported for windows builds") +- endif () +- +- set (INTERNAL_LIBXML_TGT "libxml2_tgt") +- set (LIBXML2_DIR "${CMAKE_CURRENT_BINARY_DIR}/libxml2") +- set (LIBXML2_SRC_DIR "${LIBXML2_DIR}/src") +- set (LIBXML2_BIN_DIR "${LIBXML2_SRC_DIR}/win32") +- +- set (LIBXML2_CRUNTIME) +- if (("${CMAKE_BUILD_TYPE}" STREQUAL "") OR ("${CMAKE_BUILD_TYPE}" STREQUAL "None") OR ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")) +- set (LIBXML2_CRUNTIME "cruntime=/MDd") +- endif () +- +- include(ExternalProject) +- ExternalProject_Add( +- ${INTERNAL_LIBXML_TGT} +- PREFIX "${LIBXML2_DIR}" +- STAMP_DIR "${LIBXML2_DIR}/stamp" +- GIT_REPOSITORY "https://github.com/GNOME/libxml2.git" +- GIT_TAG "v2.9.7" +- UPDATE_DISCONNECTED 1 +- CONFIGURE_COMMAND +- cscript ${LIBXML2_BIN_DIR}/configure.js ftp=no html=no iconv=no compiler=msvc static=yes ${LIBXML2_CRUNTIME} bindir=install\\bin incdir=install\\include libdir=install\\lib sodir=install\\bin +- SOURCE_DIR "${LIBXML2_SRC_DIR}" +- BINARY_DIR "${LIBXML2_BIN_DIR}" +- BUILD_COMMAND +- nmake /f Makefile.msvc +- INSTALL_COMMAND +- nmake /f Makefile.msvc install +- ) +- +- set (LIBXML2_FOUND TRUE) +- set (LIBXML2_INCLUDE_DIR "${LIBXML2_BIN_DIR}/install/include/libxml2") +- set (LIBXML2_LIBRARIES "${LIBXML2_BIN_DIR}/install/lib/libxml2_a.lib") +- set (LIBXML2_DEFINITIONS "/DLIBXML_STATIC") +- break() +-endwhile () +- +-if (NOT LIBXML2_FOUND) +- find_package(LibXml2 REQUIRED) +-endif () ++ ++find_package(LibXml2 REQUIRED) + + set ( + src diff --git a/ports/commsdsl/portfile.cmake b/ports/commsdsl/portfile.cmake new file mode 100644 index 000000000..db5fee1c5 --- /dev/null +++ b/ports/commsdsl/portfile.cmake @@ -0,0 +1,37 @@ +vcpkg_fail_port_install(ON_TARGET "uwp") + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO commschamp/commsdsl + REF v3.5.2 + SHA512 cc763420e84faa7f0c6bf6c7e89e21cbf4e61eeed9916273a5117786a4d54ccc58356904266b6f8e1643fdb7715deabcea868e6a7af574a44ca0363574602aa2 + HEAD_REF master + PATCHES + "use-FindPackage.patch" + "fix-libxml2.patch" +) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -DCOMMSDSL_TEST_BUILD_CC_PLUGIN=OFF + -DCOMMSDSL_NO_TESTS=ON + -DBUILD_TESTING=OFF + -DCOMMSDSL_NO_WARN_AS_ERR=ON # remove on next version or on next version of boost +) +vcpkg_install_cmake() + +vcpkg_copy_tools( + TOOL_NAMES commsdsl2comms + SEARCH_DIR ${CURRENT_PACKAGES_DIR}/bin + AUTO_CLEAN +) + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") +endif() +# Handle copyright +file(INSTALL ${SOURCE_PATH}/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) diff --git a/ports/commsdsl/use-FindPackage.patch b/ports/commsdsl/use-FindPackage.patch new file mode 100644 index 000000000..f062bf956 --- /dev/null +++ b/ports/commsdsl/use-FindPackage.patch @@ -0,0 +1,21 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index d6608b5..f545a00 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -29,14 +29,8 @@ if (NOT COMMSDSL_EXTERNALS_DIR) + set (COMMSDSL_EXTERNALS_DIR "${PROJECT_SOURCE_DIR}/externals") + endif () + +-if (COMMS_INSTALL_DIR) +- set (CC_CMAKE_DIR ${COMMS_INSTALL_DIR}/lib/LibComms/cmake) +-else () +- set (CC_SRC_DIR "${COMMSDSL_EXTERNALS_DIR}/comms_champion") +- include (${CMAKE_SCIPTS_DIR}/CC_Prefetch.cmake) +- cc_prefetch(SRC_DIR ${CC_SRC_DIR} TAG ${CC_TAG}) +- set (CC_CMAKE_DIR ${CC_SRC_DIR}/cmake) +-endif () ++find_package(LibComms CONFIG REQUIRED) ++set(CC_CMAKE_DIR ${LibComms_DIR}) + + ################################################ + # Compiler options diff --git a/ports/commsdsl/vcpkg.json b/ports/commsdsl/vcpkg.json new file mode 100644 index 000000000..a7f2e15fe --- /dev/null +++ b/ports/commsdsl/vcpkg.json @@ -0,0 +1,13 @@ +{ + "name": "commsdsl", + "version-string": "3.5.2", + "description": "DSL schemas parser and code generator for CommsChampion Ecosystem", + "homepage": "https://commschamp.github.io/", + "documentation": "https://github.com/commschamp/commsdsl", + "supports": "!uwp", + "dependencies": [ + "boost", + "comms", + "libxml2" + ] +} -- cgit v1.2.3