diff --git a/config/pkg/lib/libffi.yml b/config/pkg/lib/libffi.yml new file mode 100644 index 00000000..a3395684 --- /dev/null +++ b/config/pkg/lib/libffi.yml @@ -0,0 +1,16 @@ +libffi: + type: library + artifact: + source: + type: ghrel + repo: libffi/libffi + match: libffi.+\.tar\.gz + prefer-stable: true + metadata: + license-files: [LICENSE] + license: MIT + headers@unix: + - ffi.h + - ffitarget.h + static-libs@unix: + - libffi.a diff --git a/src/Package/Library/libffi.php b/src/Package/Library/libffi.php new file mode 100644 index 00000000..351b9076 --- /dev/null +++ b/src/Package/Library/libffi.php @@ -0,0 +1,40 @@ +configure()->make(); + + if (is_file("{$this->getBuildRootPath()}/lib64/libffi.a")) { + copy("{$this->getBuildRootPath()}/lib64/libffi.a", "{$this->getBuildRootPath()}/lib/libffi.a"); + unlink("{$this->getBuildRootPath()}/lib64/libffi.a"); + } + $this->patchPkgconfPrefix(['libffi.pc']); + } + + #[BuildFor('Darwin')] + public function buildDarwin(): void + { + $arch = getenv('SPC_ARCH'); + UnixAutoconfExecutor::create($this) + ->configure( + "--host={$arch}-apple-darwin", + "--target={$arch}-apple-darwin", + ) + ->make(); + $this->patchPkgconfPrefix(['libffi.pc']); + } +}