aboutsummaryrefslogtreecommitdiff
path: root/ports/libmodman
diff options
context:
space:
mode:
authorJackBoosY <yuzaiyang@beyondsoft.com>2020-01-13 23:55:59 -0800
committerJackBoosY <yuzaiyang@beyondsoft.com>2020-01-13 23:55:59 -0800
commit2514481b42ebdeec28649582fc666955cf206c84 (patch)
tree60c9809a5c3c8adbad240a40b1088a6f8e42c019 /ports/libmodman
parentb751326c91c9a307aaf5e340b61ab9f2d1ad45a4 (diff)
parent28eee51adb36f2165be846e77ef7b3ee5b3f8789 (diff)
downloadvcpkg-2514481b42ebdeec28649582fc666955cf206c84.tar.gz
vcpkg-2514481b42ebdeec28649582fc666955cf206c84.zip
Merge branch 'master' of https://github.com/Microsoft/vcpkg into dev/jack/upgrade_libi
Diffstat (limited to 'ports/libmodman')
-rw-r--r--ports/libmodman/CONTROL8
-rw-r--r--ports/libmodman/fix-install-path.patch39
-rw-r--r--ports/libmodman/fix-undefined-typeid.patch12
-rw-r--r--ports/libmodman/portfile.cmake43
-rw-r--r--ports/libmodman/usage5
-rw-r--r--ports/libmodman/vcpkg-cmake-wrapper.cmake8
6 files changed, 115 insertions, 0 deletions
diff --git a/ports/libmodman/CONTROL b/ports/libmodman/CONTROL
new file mode 100644
index 000000000..c1fd4cd49
--- /dev/null
+++ b/ports/libmodman/CONTROL
@@ -0,0 +1,8 @@
+Source: libmodman
+Version: 2.0.1-1
+Homepage: https://code.google.com/p/libmodman
+Description: a simple library for managing modules
+
+Feature: tests
+Description: Build libmodman tests
+Build-Depends: zlib
diff --git a/ports/libmodman/fix-install-path.patch b/ports/libmodman/fix-install-path.patch
new file mode 100644
index 000000000..066813b40
--- /dev/null
+++ b/ports/libmodman/fix-install-path.patch
@@ -0,0 +1,39 @@
+diff --git a/libmodman/CMakeLists.txt b/libmodman/CMakeLists.txt
+index 0aff593..9e419ce 100644
+--- a/libmodman/CMakeLists.txt
++++ b/libmodman/CMakeLists.txt
+@@ -30,15 +30,15 @@ if(NOT WIN32 AND NOT APPLE)
+ configure_file(libmodman-2.0.pc.in
+ ${CMAKE_CURRENT_BINARY_DIR}/libmodman-2.0.pc @ONLY)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libmodman-2.0.pc
+- DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
++ DESTINATION lib/pkgconfig)
+ endif()
+
+ # CMake Find helper
+-if (NOT WIN32 AND NOT APPLE)
++if (1)
+ configure_file(Findlibmodman.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/Findlibmodman.cmake @ONLY)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Findlibmodman.cmake
+- DESTINATION ${SHARE_INSTALL_DIR}/cmake/Modules)
++ DESTINATION share/${PROJECT_NAME})
+ endif()
+
+ # Define the library itself
+@@ -50,8 +50,13 @@ if(NOT WIN32)
+ target_link_libraries(modman dl)
+ endif()
+ set_target_properties(modman PROPERTIES PREFIX "lib" VERSION 1.0.0 SOVERSION 1)
+-install(TARGETS modman DESTINATION ${LIB_INSTALL_DIR})
+-install(FILES module_manager.hpp module.hpp DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME})
++install(
++ TARGETS modman
++ RUNTIME DESTINATION bin
++ LIBRARY DESTINATION lib
++ ARCHIVE DESTINATION lib
++)
++install(FILES module_manager.hpp module.hpp DESTINATION include/${PROJECT_NAME})
+
+ ### Tests
+ add_testdirectory(test)
diff --git a/ports/libmodman/fix-undefined-typeid.patch b/ports/libmodman/fix-undefined-typeid.patch
new file mode 100644
index 000000000..93db67587
--- /dev/null
+++ b/ports/libmodman/fix-undefined-typeid.patch
@@ -0,0 +1,12 @@
+diff --git a/libmodman/test/main.hpp b/libmodman/test/main.hpp
+index 90ca87f..f4f8844 100644
+--- a/libmodman/test/main.hpp
++++ b/libmodman/test/main.hpp
+@@ -20,6 +20,7 @@
+ #ifndef MAIN_HPP_
+ #define MAIN_HPP_
+
++#include <typeinfo>
+ #include "../module_manager.hpp"
+
+ using namespace std;
diff --git a/ports/libmodman/portfile.cmake b/ports/libmodman/portfile.cmake
new file mode 100644
index 000000000..35bedf907
--- /dev/null
+++ b/ports/libmodman/portfile.cmake
@@ -0,0 +1,43 @@
+vcpkg_fail_port_install(ON_TARGET "UWP")
+
+# Enable static build in UNIX
+if (VCPKG_TARGET_IS_WINDOWS)
+ vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
+endif()
+
+set(LIBMODMAN_VER 2.0.1)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/libmodman/libmodman-${LIBMODMAN_VER}.zip"
+ FILENAME "libmodman-${LIBMODMAN_VER}.zip"
+ SHA512 1fecc0fa3637c4aa86d114f5bc991605172d39183fa0f39d8c7858ef5d0d894152025bd426de4dd017a41372d800bf73f53b2328c57b77352a508e12792729fa
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ tests BUILD_TESTING
+)
+
+vcpkg_extract_source_archive_ex(
+ ARCHIVE ${ARCHIVE}
+ OUT_SOURCE_PATH SOURCE_PATH
+ PATCHES
+ fix-install-path.patch
+ fix-undefined-typeid.patch
+)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS ${FEATURE_OPTIONS}
+)
+
+vcpkg_install_cmake()
+vcpkg_fixup_cmake_targets(CONFIG_PATH share/libmodman)
+vcpkg_copy_pdbs()
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake
+ ${CMAKE_CURRENT_LIST_DIR}/usage
+ DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share)
+
+file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
diff --git a/ports/libmodman/usage b/ports/libmodman/usage
new file mode 100644
index 000000000..220de42e0
--- /dev/null
+++ b/ports/libmodman/usage
@@ -0,0 +1,5 @@
+The package libmodman provides CMake targets:
+
+ find_package(libmodman CONFIG REQUIRED)
+ target_include_directories(main PRIVATE ${LIBMODMAN_INCLUDE_DIR})
+ target_link_libraries(main PRIVATE ${LIBMODMAN_LIBRARIES})
diff --git a/ports/libmodman/vcpkg-cmake-wrapper.cmake b/ports/libmodman/vcpkg-cmake-wrapper.cmake
new file mode 100644
index 000000000..6d67806f5
--- /dev/null
+++ b/ports/libmodman/vcpkg-cmake-wrapper.cmake
@@ -0,0 +1,8 @@
+set(LIBMODMAN_PREV_MODULE_PATH ${CMAKE_MODULE_PATH})
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
+
+if(NOT LIBMODMAN_LIBRARIES)
+ _find_package(${ARGS})
+endif()
+
+set(CMAKE_MODULE_PATH ${LIBMODMAN_PREV_MODULE_PATH})