aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libffi
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/libffi
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/libffi')
-rw-r--r--vcpkg/ports/libffi/dll-bindir.diff12
-rw-r--r--vcpkg/ports/libffi/libffiConfig.cmake7
-rw-r--r--vcpkg/ports/libffi/portfile.cmake69
-rw-r--r--vcpkg/ports/libffi/unofficial-libffi-config.cmake20
-rw-r--r--vcpkg/ports/libffi/usage9
-rw-r--r--vcpkg/ports/libffi/vcpkg.json17
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
+ }
+ ]
+}