Merge pull request #304772 from NorfairKing/icu-static

icu: Make static linking possible
This commit is contained in:
7c6f434c 2024-04-23 09:43:59 +00:00 committed by GitHub
commit 0f21d281e8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,6 +1,6 @@
{ stdenv, lib, buildPackages, fetchurl, fixDarwinDylibNames, testers }:
{ version, hash, patches ? [], patchFlags ? [] }:
{ version, hash, patches ? [], patchFlags ? [], withStatic ? stdenv.hostPlatform.isStatic }:
let
# Cross-compiled icu4c requires a build-root of a native compile
@ -36,9 +36,12 @@ let
sed -e 's/LDFLAGSICUDT=-nodefaultlibs -nostdlib/LDFLAGSICUDT=/' -i config/mh-linux
'';
dontDisableStatic = withStatic;
configureFlags = [ "--disable-debug" ]
++ lib.optional (stdenv.isFreeBSD || stdenv.isDarwin) "--enable-rpath"
++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) "--with-cross-build=${nativeBuildRoot}";
++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) "--with-cross-build=${nativeBuildRoot}"
++ lib.optional withStatic "--enable-static";
enableParallelBuilding = true;
@ -58,7 +61,7 @@ let
realAttrs = baseAttrs // {
name = pname + "-" + version;
outputs = [ "out" "dev" ];
outputs = [ "out" "dev" ] ++ lib.optional withStatic "static";
outputBin = "dev";
# FIXME: This fixes dylib references in the dylibs themselves, but
@ -66,7 +69,10 @@ let
nativeBuildInputs = lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
# remove dependency on bootstrap-tools in early stdenv build
postInstall = lib.optionalString stdenv.isDarwin ''
postInstall = lib.optionalString withStatic ''
mkdir -p $static/lib
mv -v lib/*.a $static/lib
'' + lib.optionalString stdenv.isDarwin ''
sed -i 's/INSTALL_CMD=.*install/INSTALL_CMD=install/' $out/lib/icu/${version}/pkgdata.inc
'' + (let
replacements = [