summary refs log tree commit diff
path: root/pkgs/os-specific/darwin/apple-sdk
diff options
context:
space:
mode:
authorDaiderd Jordan <daiderd@gmail.com>2019-06-17 23:09:06 +0200
committerDaiderd Jordan <daiderd@gmail.com>2019-07-03 22:20:09 +0200
commit73d9cac3776b705c8d265b0c9c2ddaf18bc48b46 (patch)
tree850bd227105a79c8d7d49c5981c4d0286ac622e5 /pkgs/os-specific/darwin/apple-sdk
parentc2b76fa13cf7cacc16f1040f43d379402b518149 (diff)
downloadnixpkgs-73d9cac3776b705c8d265b0c9c2ddaf18bc48b46.tar
nixpkgs-73d9cac3776b705c8d265b0c9c2ddaf18bc48b46.tar.gz
nixpkgs-73d9cac3776b705c8d265b0c9c2ddaf18bc48b46.tar.bz2
nixpkgs-73d9cac3776b705c8d265b0c9c2ddaf18bc48b46.tar.lz
nixpkgs-73d9cac3776b705c8d265b0c9c2ddaf18bc48b46.tar.xz
nixpkgs-73d9cac3776b705c8d265b0c9c2ddaf18bc48b46.tar.zst
nixpkgs-73d9cac3776b705c8d265b0c9c2ddaf18bc48b46.zip
darwin-frameworks: replace cf-private and move it's setup-hook
The only remaining use-case for cf-private are symbols that are not
available in the opensource build.  This generally solved the problem
because of it's setup-hook.
Diffstat (limited to 'pkgs/os-specific/darwin/apple-sdk')
-rw-r--r--pkgs/os-specific/darwin/apple-sdk/cf-setup-hook.sh9
-rw-r--r--pkgs/os-specific/darwin/apple-sdk/default.nix6
-rw-r--r--pkgs/os-specific/darwin/apple-sdk/frameworks.nix6
3 files changed, 17 insertions, 4 deletions
diff --git a/pkgs/os-specific/darwin/apple-sdk/cf-setup-hook.sh b/pkgs/os-specific/darwin/apple-sdk/cf-setup-hook.sh
new file mode 100644
index 00000000000..66e24fe5877
--- /dev/null
+++ b/pkgs/os-specific/darwin/apple-sdk/cf-setup-hook.sh
@@ -0,0 +1,9 @@
+linkSystemCoreFoundationFramework() {
+  NIX_CFLAGS_COMPILE="-F@out@/Library/Frameworks $NIX_CFLAGS_COMPILE"
+  # 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+=" /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation"
+}
+
+preConfigureHooks+=(linkSystemCoreFoundationFramework)
diff --git a/pkgs/os-specific/darwin/apple-sdk/default.nix b/pkgs/os-specific/darwin/apple-sdk/default.nix
index 908116e0c62..4d33fc0f3f8 100644
--- a/pkgs/os-specific/darwin/apple-sdk/default.nix
+++ b/pkgs/os-specific/darwin/apple-sdk/default.nix
@@ -187,6 +187,10 @@ in rec {
       ];
     });
 
+    CoreFoundation = stdenv.lib.overrideDerivation super.CoreFoundation (drv: {
+      setupHook = ./cf-setup-hook.sh;
+    });
+
     CoreMedia = stdenv.lib.overrideDerivation super.CoreMedia (drv: {
       __propagatedImpureHostDeps = drv.__propagatedImpureHostDeps ++ [
         "/System/Library/Frameworks/CoreImage.framework"
@@ -222,7 +226,7 @@ in rec {
 
   bareFrameworks = stdenv.lib.mapAttrs framework (import ./frameworks.nix {
     inherit frameworks libs;
-    inherit (pkgs.darwin) cf-private libobjc;
+    inherit (pkgs.darwin) libobjc;
   });
 
   frameworks = bareFrameworks // overrides bareFrameworks;
diff --git a/pkgs/os-specific/darwin/apple-sdk/frameworks.nix b/pkgs/os-specific/darwin/apple-sdk/frameworks.nix
index 4ed85f903d6..28570714b60 100644
--- a/pkgs/os-specific/darwin/apple-sdk/frameworks.nix
+++ b/pkgs/os-specific/darwin/apple-sdk/frameworks.nix
@@ -2,7 +2,7 @@
 # Epic weird knot-tying happening here.
 # TODO: clean up the process for generating this and include it
 
-{ frameworks, libs, libobjc, cf-private }:
+{ frameworks, libs, libobjc, }:
 
 with frameworks; with libs; {
   AGL                     = [ Carbon OpenGL ];
@@ -47,8 +47,8 @@ with frameworks; with libs; {
   ExceptionHandling       = [];
   FWAUserLib              = [];
   ForceFeedback           = [ IOKit ];
-  Foundation              = [ cf-private libobjc Security ApplicationServices SystemConfiguration ];
-  GLKit                   = [ ];
+  Foundation              = [ libobjc CoreFoundation Security ApplicationServices SystemConfiguration ];
+  GLKit                   = [];
   GLUT                    = [ OpenGL ];
   GSS                     = [];
   GameController          = [];