diff --git a/config/pkg/lib/libxslt.yml b/config/pkg/lib/libxslt.yml new file mode 100644 index 00000000..07955333 --- /dev/null +++ b/config/pkg/lib/libxslt.yml @@ -0,0 +1,15 @@ +libxslt: + type: library + artifact: + source: + type: filelist + url: 'https://download.gnome.org/sources/libxslt/1.1/' + regex: '/href="(?libxslt-(?[^"]+)\.tar\.xz)"/' + metadata: + license-files: [Copyright] + license: MIT + depends: + - libxml2 + static-libs@unix: + - libxslt.a + - libexslt.a diff --git a/src/Package/Library/libxslt.php b/src/Package/Library/libxslt.php new file mode 100644 index 00000000..11ba2bf8 --- /dev/null +++ b/src/Package/Library/libxslt.php @@ -0,0 +1,52 @@ + true, 'no_php'])->getPackageDepsConfig($lib->getName(), array_keys($installer->getResolvedPackages())); + $cpp = SystemTarget::getTargetOS() === 'Darwin' ? '-lc++' : '-lstdc++'; + $ac = UnixAutoconfExecutor::create($lib) + ->appendEnv([ + 'CFLAGS' => "-I{$lib->getIncludeDir()}", + 'LDFLAGS' => "-L{$lib->getLibDir()}", + 'LIBS' => "{$static_libs['libs']} {$cpp}", + ]) + ->addConfigureArgs( + '--without-python', + '--without-crypto', + '--without-debug', + '--without-debugger', + "--with-libxml-prefix={$lib->getBuildRootPath()}", + ); + if (getenv('SPC_LD_LIBRARY_PATH') && getenv('SPC_LIBRARY_PATH')) { + $ac->appendEnv([ + 'LD_LIBRARY_PATH' => getenv('SPC_LD_LIBRARY_PATH'), + 'LIBRARY_PATH' => getenv('SPC_LIBRARY_PATH'), + ]); + } + $ac->configure()->make(); + + $lib->patchPkgconfPrefix(['libexslt.pc', 'libxslt.pc']); + $lib->patchLaDependencyPrefix(); + $AR = getenv('AR') ?: 'ar'; + shell()->cd($lib->getLibDir()) + ->exec("{$AR} -t libxslt.a | grep '\\.a$' | xargs -n1 {$AR} d libxslt.a") + ->exec("{$AR} -t libexslt.a | grep '\\.a$' | xargs -n1 {$AR} d libexslt.a"); + } +}