diff --git a/config/pkg/lib/liburing.yml b/config/pkg/lib/liburing.yml new file mode 100644 index 00000000..58bda524 --- /dev/null +++ b/config/pkg/lib/liburing.yml @@ -0,0 +1,19 @@ +liburing: + type: library + artifact: + source: + type: ghtar + repo: axboe/liburing + prefer-stable: true + metadata: + license-files: [COPYING] + license: LGPL-2.1-or-later + headers@linux: + - liburing/ + - liburing.h + pkg-configs: + - liburing + - liburing-ffi + static-libs@linux: + - liburing.a + - liburing-ffi.a diff --git a/src/Package/Library/liburing.php b/src/Package/Library/liburing.php new file mode 100644 index 00000000..ad396eac --- /dev/null +++ b/src/Package/Library/liburing.php @@ -0,0 +1,61 @@ +getSourceDir()}/configure", 'realpath -s', 'realpath'); + return true; + } + return false; + } + + #[BuildFor('Linux')] + public function buildLinux(ToolchainInterface $toolchain): void + { + $use_libc = !$toolchain instanceof GccNativeToolchain || version_compare(SystemTarget::getLibcVersion(), '2.30', '>='); + $make = UnixAutoconfExecutor::create($this); + + if ($use_libc) { + $make->appendEnv([ + 'CFLAGS' => '-D_GNU_SOURCE', + ]); + } + + $make + ->removeConfigureArgs( + '--disable-shared', + '--enable-static', + '--with-pic', + '--enable-pic', + ) + ->addConfigureArgs( + $use_libc ? '--use-libc' : '', + ) + ->configure() + ->make('library ENABLE_SHARED=0', 'install ENABLE_SHARED=0', with_clean: false); + + $this->patchPkgconfPrefix(); + } +}