diff options
| author | Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> | 2020-04-17 23:13:24 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-17 14:13:24 -0700 |
| commit | 4d8237b89ccefca3e50000406eebdc36d27aac07 (patch) | |
| tree | 86cb4ff0fc224e60a63516cf08b7f840aef4b670 | |
| parent | 5f77f3e92b93f849bb73afeff77127a4f47f089e (diff) | |
| download | vcpkg-4d8237b89ccefca3e50000406eebdc36d27aac07.tar.gz vcpkg-4d8237b89ccefca3e50000406eebdc36d27aac07.zip | |
[libarchive, libuv]Fix static linkage (#10769)
* [libarchive] fix static linkage of libarchive in dependent ports (non yet)
* [libuv] fix static builds of dependent ports
* modernize portfiles
* remove POSIX_REGEX_LIB=NONE
since it is added elsewhere
* remove debug message
| -rw-r--r-- | ports/libarchive/CONTROL | 2 | ||||
| -rw-r--r-- | ports/libarchive/portfile.cmake | 33 | ||||
| -rw-r--r-- | ports/libarchive/vcpkg-cmake-wrapper.cmake | 86 | ||||
| -rw-r--r-- | ports/libuv/CONTROL | 2 | ||||
| -rw-r--r-- | ports/libuv/portfile.cmake | 7 | ||||
| -rw-r--r-- | ports/libuv/vcpkg-cmake-wrapper.cmake | 16 |
6 files changed, 136 insertions, 10 deletions
diff --git a/ports/libarchive/CONTROL b/ports/libarchive/CONTROL index 6678faacc..dc53b2e82 100644 --- a/ports/libarchive/CONTROL +++ b/ports/libarchive/CONTROL @@ -1,5 +1,5 @@ Source: libarchive
-Version: 3.4.1
+Version: 3.4.1-1
Homepage: https://github.com/libarchive/libarchive
Description: Library for reading and writing streaming archives
Build-Depends: zlib
diff --git a/ports/libarchive/portfile.cmake b/ports/libarchive/portfile.cmake index fd475b199..1fdc3a163 100644 --- a/ports/libarchive/portfile.cmake +++ b/ports/libarchive/portfile.cmake @@ -21,8 +21,25 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS lzma ENABLE_LZMA
lzo ENABLE_LZO
openssl ENABLE_OPENSSL
+ # The below features should be added to CONTROL
+ #pcre ENABLE_PCREPOSIX
+ #nettle ENABLE_NETTLE
+ #expat ENABLE_EXPAT
+ #libgcc ENABLE_LibGCC
+ #cng ENABLE_CNG
+ #tar ENABLE_TAR
+ #cpio ENABLE_CPIO
+ #cat ENABLE_CAT
+ #xattr ENABLE_XATTR
+ #acl ENABLE_ACL
+ #iconv ENABLE_ICONV
)
+if(FEATURES MATCHES "pcre")
+else()
+ list(APPEND FEATURE_OPTIONS -DPOSIX_REGEX_LIB=NONE)
+endif()
+
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
@@ -38,15 +55,24 @@ vcpkg_configure_cmake( -DENABLE_CAT=OFF
-DENABLE_XATTR=OFF
-DENABLE_ACL=OFF
- -DENABLE_TEST=OFF
-DENABLE_ICONV=OFF
- -DPOSIX_REGEX_LIB=NONE
+ -DENABLE_TEST=OFF
-DENABLE_WERROR=OFF
)
vcpkg_install_cmake()
vcpkg_copy_pdbs()
+foreach(_feature IN LISTS FEATURE_OPTIONS)
+ string(REPLACE "-D" "" _feature "${_feature}")
+ string(REPLACE "=" ";" _feature "${_feature}")
+ string(REPLACE "ON" "1" _feature "${_feature}")
+ string(REPLACE "OFF" "0" _feature "${_feature}")
+ list(GET _feature 0 _feature_name)
+ list(GET _feature 1 _feature_status)
+ set(${_feature_name} ${_feature_status})
+endforeach()
+configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
foreach(HEADER ${CURRENT_PACKAGES_DIR}/include/archive.h ${CURRENT_PACKAGES_DIR}/include/archive_entry.h)
file(READ ${HEADER} CONTENTS)
@@ -54,5 +80,4 @@ foreach(HEADER ${CURRENT_PACKAGES_DIR}/include/archive.h ${CURRENT_PACKAGES_DIR} file(WRITE ${HEADER} "${CONTENTS}")
endforeach()
-file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/libarchive)
-file(RENAME ${CURRENT_PACKAGES_DIR}/share/libarchive/COPYING ${CURRENT_PACKAGES_DIR}/share/libarchive/copyright)
+file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
\ No newline at end of file diff --git a/ports/libarchive/vcpkg-cmake-wrapper.cmake b/ports/libarchive/vcpkg-cmake-wrapper.cmake new file mode 100644 index 000000000..c7e47ea90 --- /dev/null +++ b/ports/libarchive/vcpkg-cmake-wrapper.cmake @@ -0,0 +1,86 @@ +_find_package(${ARGS})
+
+if("@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static")
+ if(@ENABLE_BZip2@)
+ find_package(BZip2 REQUIRED)
+ list(APPEND LibArchive_LIBRARIES BZip2::BZip2)
+ endif()
+ if(@ENABLE_LIBXML2@)
+ find_package(LibXml2 REQUIRED)
+ list(APPEND LibArchive_LIBRARIES LibXml2::LibXml2)
+ endif()
+ if(@ENABLE_LZ4@)
+ find_package(lz4 REQUIRED)
+ list(APPEND LibArchive_LIBRARIES lz4::lz4)
+ endif()
+ if(@ENABLE_LZMA@)
+ find_package(LibLZMA REQUIRED)
+ list(APPEND LibArchive_LIBRARIES LibLZMA::LibLZMA)
+ endif()
+ if(@ENABLE_LZO@)
+ find_library(LZO_LIBRARY_DEBUG NAMES lzo2d lzo2 NAMES_PER_DIR PATH_SUFFIXES lib PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug" NO_DEFAULT_PATH)
+ find_library(LZO_LIBRARY_RELEASE NAMES lzo2 NAMES_PER_DIR PATH_SUFFIXES lib PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}" NO_DEFAULT_PATH)
+ if(LZO_LIBRARY_RELEASE)
+ list(APPEND LibArchive_LIBRARIES optimized ${LZO_LIBRARY_RELEASE})
+ endif()
+ if(LZO_LIBRARY_DEBUG)
+ list(APPEND LibArchive_LIBRARIES debug ${LZO_LIBRARY_DEBUG})
+ endif()
+ endif()
+ if(@ENABLE_OPENSSL@)
+ find_package(OpenSSL REQUIRED)
+ list(APPEND LibArchive_LIBRARIES OpenSSL::Crypto)
+ endif()
+
+ if(TARGET LibArchive::LibArchive)
+ if(@ENABLE_BZip2@)
+ target_link_libraries(LibArchive::LibArchive INTERFACE BZip2::BZip2)
+ endif()
+ if(@ENABLE_LIBXML2@)
+ target_link_libraries(LibArchive::LibArchive INTERFACE LibXml2::LibXml2)
+ endif()
+ if(@ENABLE_LZ4@)
+ target_link_libraries(LibArchive::LibArchive INTERFACE lz4::lz4)
+ endif()
+ if(@ENABLE_LZMA@)
+ target_link_libraries(LibArchive::LibArchive INTERFACE LibLZMA::LibLZMA)
+ endif()
+ if(@ENABLE_LZO@)
+ if(LZO_LIBRARY_RELEASE)
+ list(APPEND interface_lib \$<\$<NOT:\$<CONFIG:DEBUG>>:${LZO_LIBRARY_RELEASE}>)
+ endif()
+ if(LZO_LIBRARY_DEBUG)
+ list(APPEND interface_lib \$<\$<CONFIG:DEBUG>:${LZO_LIBRARY_DEBUG}>)
+ endif()
+ set_property(TARGET LibArchive::LibArchive APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${interface_lib})
+ endif()
+ if(@ENABLE_OPENSSL@)
+ target_link_libraries(LibArchive::LibArchive INTERFACE OpenSSL::Crypto)
+ endif()
+ endif()
+endif()
+
+
+# TODO in some future
+# if(@ENABLE_PCREPOSIX@)
+# endif()
+# if(@ENABLE_NETTLE@)
+# endif()
+# if(@ENABLE_EXPAT@)
+# endif()
+# if(@ENABLE_LibGCC@)
+# endif()
+# if(@ENABLE_CNG@)
+# endif()
+# if(@ENABLE_TAR@)
+# endif()
+# if(@ENABLE_CPIO@)
+# endif()
+# if(@ENABLE_CAT@)
+# endif()
+# if(@ENABLE_XATTR@)
+# endif()
+# if(@ENABLE_ACL@)
+# endif()
+# if(@ENABLE_ICONV@)
+# endif()
diff --git a/ports/libuv/CONTROL b/ports/libuv/CONTROL index 7d9d1b1f3..efae9098f 100644 --- a/ports/libuv/CONTROL +++ b/ports/libuv/CONTROL @@ -1,4 +1,4 @@ Source: libuv -Version: 1.34.2 +Version: 1.34.2-1 Homepage: https://github.com/libuv/libuv Description: libuv is a multi-platform support library with a focus on asynchronous I/O. diff --git a/ports/libuv/portfile.cmake b/ports/libuv/portfile.cmake index 697e1e551..4cc164c31 100644 --- a/ports/libuv/portfile.cmake +++ b/ports/libuv/portfile.cmake @@ -1,5 +1,3 @@ -include(vcpkg_common_functions) - vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO libuv/libuv @@ -32,8 +30,9 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") string(REPLACE "defined(USING_UV_SHARED)" "1" UV_H "${UV_H}") else() string(REPLACE "defined(USING_UV_SHARED)" "0" UV_H "${UV_H}") + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY) endif() file(WRITE ${CURRENT_PACKAGES_DIR}/include/uv.h "${UV_H}") -file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/libuv) -file(RENAME ${CURRENT_PACKAGES_DIR}/share/libuv/LICENSE ${CURRENT_PACKAGES_DIR}/share/libuv/copyright) +file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) + diff --git a/ports/libuv/vcpkg-cmake-wrapper.cmake b/ports/libuv/vcpkg-cmake-wrapper.cmake new file mode 100644 index 000000000..10b6e6498 --- /dev/null +++ b/ports/libuv/vcpkg-cmake-wrapper.cmake @@ -0,0 +1,16 @@ +_find_package(${ARGS})
+
+if(WIN32)
+ list(APPEND LibUV_LIBRARIES iphlpapi psapi shell32 userenv ws2_32)
+ if(TARGET LibUV::LibUV)
+ target_link_libraries(LibUV::LibUV INTERFACE iphlpapi psapi shell32 userenv ws2_32)
+ endif()
+endif()
+include(CMakeFindDependencyMacro)
+find_dependency(Threads)
+list(APPEND LibUV_LIBRARIES Threads::Threads)
+if(TARGET LibUV::LibUV)
+ target_link_libraries(LibUV::LibUV INTERFACE Threads::Threads)
+endif()
+
+
|
