diff --git a/ports/libarchive/CONTROL b/ports/libarchive/CONTROL index 6678faacccf536..dc53b2e8296e97 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 fd475b199a6743..1fdc3a1632af2a 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 00000000000000..c7e47ea901011d --- /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 \$<\$>:${LZO_LIBRARY_RELEASE}>) + endif() + if(LZO_LIBRARY_DEBUG) + list(APPEND interface_lib \$<\$:${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 7d9d1b1f31f8c0..efae9098fe097d 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 697e1e551b7ecc..4cc164c3195c58 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 00000000000000..10b6e649838a58 --- /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() + +