mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-25 12:07:50 +08:00
109d286a0c
Libmagic supports some compression libraries that by default are enabled unpredictably, if they are found in the system. This PR adds features to the port that enable support for these compression libraries, and makes sure the features are disabled if not specified. Validated by building the port with all features enabled on Windows and Linux, and importing it in a project with static library linkage on Windows.
101 lines
3.7 KiB
CMake
101 lines
3.7 KiB
CMake
if(VCPKG_TARGET_IS_WINDOWS)
|
|
set(PATCHES
|
|
"0001-Use-libtre.patch"
|
|
"0002-Change-zlib-lib-name-to-match-CMake-output.patch"
|
|
"0003-Fix-WIN32-macro-checks.patch"
|
|
"0004-Typedef-POSIX-types-on-Windows.patch"
|
|
"0005-Include-dirent.h-for-S_ISREG-and-S_ISDIR.patch"
|
|
"0006-Remove-Wrap-POSIX-headers.patch"
|
|
"0007-Substitute-unistd-macros-for-MSVC.patch"
|
|
"0008-Add-FILENO-defines.patch"
|
|
"0010-Properly-check-for-the-presence-of-bitmasks.patch"
|
|
"0011-Remove-pipe-related-functions-in-funcs.c.patch"
|
|
"0012-Convert-MSYS2-paths-to-Windows-paths.patch"
|
|
"0013-Check-for-backslash-in-argv-0-on-Windows.patch"
|
|
"0015-MSYS2-Remove-ioctl-call.patch"
|
|
"0016-Fix-file_famagic-function.patch"
|
|
"0017-Change-bzlib-name-to-match-CMake-output.patch"
|
|
)
|
|
endif()
|
|
|
|
vcpkg_from_github(
|
|
OUT_SOURCE_PATH SOURCE_PATH
|
|
REPO file/file
|
|
REF FILE5_45
|
|
SHA512 fdd4c5d13d5ea1d25686c76d8ebc3252c54040c4871e3f0f623c4548b3841795d4e36050292a9453eedf0fbf932573890e9d6ac9fa63ccf577215598ae84b9ea
|
|
HEAD_REF master
|
|
PATCHES ${PATCHES}
|
|
)
|
|
|
|
if(VCPKG_TARGET_IS_WINDOWS)
|
|
set(VCPKG_C_FLAGS "${VCPKG_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS")
|
|
set(VCPKG_CXX_FLAGS "${VCPKG_CXX_FLAGS} -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS")
|
|
endif()
|
|
|
|
set(FEATURE_OPTIONS)
|
|
|
|
macro(enable_feature feature switch)
|
|
if("${feature}" IN_LIST FEATURES)
|
|
list(APPEND FEATURE_OPTIONS "--enable-${switch}")
|
|
set(has_${feature} 1)
|
|
else()
|
|
list(APPEND FEATURE_OPTIONS "--disable-${switch}")
|
|
set(has_${feature} 0)
|
|
endif()
|
|
endmacro()
|
|
|
|
enable_feature("bzip2" "bzlib")
|
|
enable_feature("zlib" "zlib")
|
|
enable_feature("lzma" "xzlib")
|
|
enable_feature("zstd" "zstdlib")
|
|
|
|
vcpkg_configure_make(
|
|
AUTOCONFIG
|
|
SOURCE_PATH "${SOURCE_PATH}"
|
|
OPTIONS
|
|
${FEATURE_OPTIONS}
|
|
"--disable-lzlib"
|
|
"--disable-libseccomp"
|
|
)
|
|
|
|
if(VCPKG_CROSSCOMPILING)
|
|
vcpkg_add_to_path(PREPEND "${CURRENT_HOST_INSTALLED_DIR}/tools/libmagic/bin")
|
|
elseif(VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
|
|
set(EXTRA_ARGS "ADD_BIN_TO_PATH")
|
|
endif()
|
|
|
|
vcpkg_install_make(${EXTRA_ARGS})
|
|
vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin")
|
|
vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug/bin")
|
|
vcpkg_fixup_pkgconfig()
|
|
|
|
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
|
|
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
|
|
endif()
|
|
|
|
if(VCPKG_TARGET_IS_WINDOWS)
|
|
if(NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
|
|
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}/share/misc")
|
|
file(COPY "${CURRENT_PACKAGES_DIR}/share/${PORT}/misc/magic.mgc" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}/share/misc")
|
|
endif()
|
|
if(NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
|
|
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug/share/misc")
|
|
file(COPY "${CURRENT_PACKAGES_DIR}/share/${PORT}/misc/magic.mgc" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug/share/misc")
|
|
endif()
|
|
endif()
|
|
|
|
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
|
|
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
|
|
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/${PORT}/man5")
|
|
|
|
include(CMakePackageConfigHelpers)
|
|
configure_package_config_file(
|
|
"${CMAKE_CURRENT_LIST_DIR}/unofficial-${PORT}-config.cmake.in"
|
|
"${CURRENT_PACKAGES_DIR}/share/unofficial-${PORT}/unofficial-${PORT}-config.cmake"
|
|
INSTALL_DESTINATION "share/unofficial-${PORT}"
|
|
)
|
|
|
|
# Handle copyright and usage
|
|
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")
|
|
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
|