diff options
Diffstat (limited to 'vcpkg/ports/libffi')
| -rw-r--r-- | vcpkg/ports/libffi/dll-bindir.diff | 12 | ||||
| -rw-r--r-- | vcpkg/ports/libffi/libffiConfig.cmake | 7 | ||||
| -rw-r--r-- | vcpkg/ports/libffi/portfile.cmake | 69 | ||||
| -rw-r--r-- | vcpkg/ports/libffi/unofficial-libffi-config.cmake | 20 | ||||
| -rw-r--r-- | vcpkg/ports/libffi/usage | 9 | ||||
| -rw-r--r-- | vcpkg/ports/libffi/vcpkg.json | 17 |
6 files changed, 134 insertions, 0 deletions
diff --git a/vcpkg/ports/libffi/dll-bindir.diff b/vcpkg/ports/libffi/dll-bindir.diff new file mode 100644 index 0000000..51e1541 --- /dev/null +++ b/vcpkg/ports/libffi/dll-bindir.diff @@ -0,0 +1,12 @@ +diff --git a/configure.host b/configure.host +index f23716f..78d317b 100644 +--- a/configure.host ++++ b/configure.host +@@ -103,6 +103,7 @@ case "${host}" in + else + AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"'; + fi ++ AM_LTLDFLAGS='-no-undefined'; + ;; + + i?86-*-darwin* | x86_64-*-darwin* | i?86-*-ios | x86_64-*-ios) diff --git a/vcpkg/ports/libffi/libffiConfig.cmake b/vcpkg/ports/libffi/libffiConfig.cmake new file mode 100644 index 0000000..a510862 --- /dev/null +++ b/vcpkg/ports/libffi/libffiConfig.cmake @@ -0,0 +1,7 @@ +file(READ "${CMAKE_CURRENT_LIST_DIR}/usage" usage) +message(WARNING "find_package(libffi) is deprecated.\n${usage}") +include(CMakeFindDependencyMacro) +find_dependency(unofficial-libffi CONFIG REQUIRED) +if(NOT TARGET libffi) + add_library(libffi ALIAS unofficial::libffi::libffi) +endif() diff --git a/vcpkg/ports/libffi/portfile.cmake b/vcpkg/ports/libffi/portfile.cmake new file mode 100644 index 0000000..7bc79fc --- /dev/null +++ b/vcpkg/ports/libffi/portfile.cmake @@ -0,0 +1,69 @@ +vcpkg_download_distfile(ARCHIVE + URLS "https://github.com/libffi/libffi/releases/download/v${VERSION}/libffi-${VERSION}.tar.gz" + FILENAME "libffi-${VERSION}.tar.gz" + SHA512 76974a84e3aee6bbd646a6da2e641825ae0b791ca6efdc479b2d4cbcd3ad607df59cffcf5031ad5bd30822961a8c6de164ac8ae379d1804acd388b1975cdbf4d +) +vcpkg_extract_source_archive( + SOURCE_PATH + ARCHIVE "${ARCHIVE}" + PATCHES + dll-bindir.diff +) + +vcpkg_list(SET options) +if(VCPKG_TARGET_IS_WINDOWS) + set(linkage_flag "-DFFI_STATIC_BUILD") + if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + set(linkage_flag "-DFFI_BUILDING_DLL") + endif() + vcpkg_list(APPEND options "CFLAGS=\${CFLAGS} ${linkage_flag}") +endif() + +vcpkg_cmake_get_vars(cmake_vars_file ADDITIONAL_LANGUAGES ASM) +include("${cmake_vars_file}") +if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC") + vcpkg_add_to_path("${SOURCE_PATH}") + vcpkg_list(APPEND options "CCAS=msvcc.sh") + set(ccas_options "") + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + string(APPEND ccas_options " -m32") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + string(APPEND ccas_options " -m64") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + string(APPEND ccas_options " -marm") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + string(APPEND ccas_options " -marm64") + endif() + if(ccas_options) + vcpkg_list(APPEND options "CCASFLAGS=\${CCASFLAGS}${ccas_options}") + endif() +endif() + +vcpkg_make_configure( + SOURCE_PATH "${SOURCE_PATH}" + LANGUAGES C CXX ASM + OPTIONS + --enable-portable-binary + --disable-docs + --disable-multi-os-directory + ${options} +) + +vcpkg_make_install() +vcpkg_copy_pdbs() +vcpkg_fixup_pkgconfig() + +if (VCPKG_LIBRARY_LINKAGE STREQUAL "static") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/ffi.h" "defined(FFI_STATIC_BUILD)" "1") +endif() + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/unofficial-libffi-config.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/unofficial-libffi") +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/libffiConfig.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/debug/share" + "${CURRENT_PACKAGES_DIR}/share/man3" +) + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/vcpkg/ports/libffi/unofficial-libffi-config.cmake b/vcpkg/ports/libffi/unofficial-libffi-config.cmake new file mode 100644 index 0000000..453f634 --- /dev/null +++ b/vcpkg/ports/libffi/unofficial-libffi-config.cmake @@ -0,0 +1,20 @@ +if(NOT TARGET unofficial::libffi::libffi) + get_filename_component(VCPKG_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) + find_library(VCPKG_LIBFFI_LIBRARY_RELEASE NAMES ffi PATHS "${VCPKG_IMPORT_PREFIX}/lib" REQUIRED) + find_library(VCPKG_LIBFFI_LIBRARY_DEBUG NAMES ffi PATHS "${VCPKG_IMPORT_PREFIX}/debug/lib") + mark_as_advanced(VCPKG_LIBFFI_LIBRARY_RELEASE VCPKG_LIBFFI_LIBRARY_DEBUG) + add_library(unofficial::libffi::libffi UNKNOWN IMPORTED) + set_target_properties(unofficial::libffi::libffi PROPERTIES + IMPORTED_CONFIGURATIONS "Release" + INTERFACE_INCLUDE_DIRECTORIES "${VCPKG_IMPORT_PREFIX}/include" + IMPORTED_LOCATION_RELEASE "${VCPKG_LIBFFI_LIBRARY_RELEASE}" + IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C" + ) + if(VCPKG_LIBFFI_LIBRARY_DEBUG) + set_property(TARGET unofficial::libffi::libffi APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug) + set_target_properties(unofficial::libffi::libffi PROPERTIES + IMPORTED_LOCATION_DEBUG "${VCPKG_LIBFFI_LIBRARY_DEBUG}" + IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C" + ) + endif() +endif() diff --git a/vcpkg/ports/libffi/usage b/vcpkg/ports/libffi/usage new file mode 100644 index 0000000..ef52bdd --- /dev/null +++ b/vcpkg/ports/libffi/usage @@ -0,0 +1,9 @@ +vcpkg provides proprietary CMake targets: + + find_package(unofficial-libffi CONFIG REQUIRED) + target_link_libraries(main PRIVATE unofficial::libffi::libffi) + +libffi provides pkg-config modules: + + # Library supporting Foreign Function Interfaces + libffi diff --git a/vcpkg/ports/libffi/vcpkg.json b/vcpkg/ports/libffi/vcpkg.json new file mode 100644 index 0000000..52cd1d8 --- /dev/null +++ b/vcpkg/ports/libffi/vcpkg.json @@ -0,0 +1,17 @@ +{ + "name": "libffi", + "version": "3.5.2", + "description": "Portable, high level programming interface to various calling conventions", + "homepage": "https://github.com/libffi/libffi", + "license": "MIT", + "dependencies": [ + { + "name": "vcpkg-cmake-get-vars", + "host": true + }, + { + "name": "vcpkg-make", + "host": true + } + ] +} |