diff --git a/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix b/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix index ca23af43229ca..16999add41613 100644 --- a/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix +++ b/pkgs/os-specific/darwin/apple-sdk-11.0/apple_sdk.nix @@ -215,7 +215,10 @@ in rec { # Overrides for framework derivations. overrides = super: { CoreFoundation = lib.overrideDerivation super.CoreFoundation (drv: { - setupHook = ./cf-setup-hook.sh; + setupHooks = [ + ../../../build-support/setup-hooks/role.bash + ./cf-setup-hook.sh + ]; }); # This framework doesn't exist in newer SDKs (somewhere around 10.13), but diff --git a/pkgs/os-specific/darwin/apple-sdk-11.0/cf-setup-hook.sh b/pkgs/os-specific/darwin/apple-sdk-11.0/cf-setup-hook.sh index b64eb95f2ded7..c4cb044202754 100644 --- a/pkgs/os-specific/darwin/apple-sdk-11.0/cf-setup-hook.sh +++ b/pkgs/os-specific/darwin/apple-sdk-11.0/cf-setup-hook.sh @@ -1,6 +1,14 @@ forceLinkCoreFoundationFramework() { - NIX_CFLAGS_COMPILE="-F@out@/Library/Frameworks${NIX_CFLAGS_COMPILE:+ }${NIX_CFLAGS_COMPILE-}" - NIX_LDFLAGS+=" @out@/Library/Frameworks/CoreFoundation.framework/CoreFoundation.tbd" + local role_post + getHostRole + + local cflags_compile_role_var="NIX_CFLAGS_COMPILE${role_post}" + local cflags_compile_role="${!cflags_compile_role_var-}" + export NIX_CFLAGS_COMPILE${role_post}="-F@out@/Library/Frameworks${cflags_compile_role:+ $cflags_compile_role}" + + local ldflags_role_var="NIX_LDFLAGS${role_post}" + local ldflags_role="${!ldflags_role_var-}" + export NIX_LDFLAGS${role_post}+="${ldflags_role:+ }@out@/Library/Frameworks/CoreFoundation.framework/CoreFoundation.tbd" } -preConfigureHooks+=(forceLinkCoreFoundationFramework) +forceLinkCoreFoundationFramework diff --git a/pkgs/os-specific/darwin/apple-sdk/cf-setup-hook.sh b/pkgs/os-specific/darwin/apple-sdk/cf-setup-hook.sh index 5d0f58f48b481..9ff99e58c4c44 100644 --- a/pkgs/os-specific/darwin/apple-sdk/cf-setup-hook.sh +++ b/pkgs/os-specific/darwin/apple-sdk/cf-setup-hook.sh @@ -1,9 +1,17 @@ linkSystemCoreFoundationFramework() { - NIX_CFLAGS_COMPILE="-F@out@/Library/Frameworks${NIX_CFLAGS_COMPILE:+ }${NIX_CFLAGS_COMPILE-}" + local role_post + getHostRole + + local cflags_compile_role_var="NIX_CFLAGS_COMPILE${role_post}" + local cflags_compile_role="${!cflags_compile_role_var-}" + export NIX_CFLAGS_COMPILE${role_post}="-F@out@/Library/Frameworks${cflags_compile_role:+ $cflags_compile_role}" + # gross! many symbols (such as _OBJC_CLASS_$_NSArray) are defined in system CF, but not # in the opensource release # if the package needs private headers, we assume they also want to link with system CF - NIX_LDFLAGS+=" @out@/Library/Frameworks/CoreFoundation.framework/CoreFoundation.tbd" + local ldflags_role_var="NIX_LDFLAGS${role_post}" + local ldflags_role="${!ldflags_role_var-}" + export NIX_LDFLAGS${role_post}+="${ldflags_role:+ }@out@/Library/Frameworks/CoreFoundation.framework/CoreFoundation.tbd" } -preConfigureHooks+=(linkSystemCoreFoundationFramework) +linkSystemCoreFoundationFramework diff --git a/pkgs/os-specific/darwin/apple-sdk/default.nix b/pkgs/os-specific/darwin/apple-sdk/default.nix index 5484ba5acb189..6b857f4bfd3a9 100644 --- a/pkgs/os-specific/darwin/apple-sdk/default.nix +++ b/pkgs/os-specific/darwin/apple-sdk/default.nix @@ -277,7 +277,10 @@ in rec { }); CoreFoundation = lib.overrideDerivation super.CoreFoundation (drv: { - setupHook = ./cf-setup-hook.sh; + setupHooks = [ + ../../../build-support/setup-hooks/role.bash + ./cf-setup-hook.sh + ]; }); CoreMedia = lib.overrideDerivation super.CoreMedia (drv: {