summary refs log tree commit diff
path: root/pkgs/os-specific/darwin/libtapi/default.nix
diff options
context:
space:
mode:
authorAndrew Childs <lorne@cons.org.nz>2020-07-26 17:27:15 +0900
committerAndrew Childs <lorne@cons.org.nz>2020-07-28 19:16:24 +0900
commitb418d4c6a4a3b34e317327ff7e80ab7a8fc1c02a (patch)
tree8dacce799c453f7c339d8aabaa855e0b93538552 /pkgs/os-specific/darwin/libtapi/default.nix
parent1e6079d819259c185ccfbc17277783c32723f556 (diff)
downloadnixpkgs-b418d4c6a4a3b34e317327ff7e80ab7a8fc1c02a.tar
nixpkgs-b418d4c6a4a3b34e317327ff7e80ab7a8fc1c02a.tar.gz
nixpkgs-b418d4c6a4a3b34e317327ff7e80ab7a8fc1c02a.tar.bz2
nixpkgs-b418d4c6a4a3b34e317327ff7e80ab7a8fc1c02a.tar.lz
nixpkgs-b418d4c6a4a3b34e317327ff7e80ab7a8fc1c02a.tar.xz
nixpkgs-b418d4c6a4a3b34e317327ff7e80ab7a8fc1c02a.tar.zst
nixpkgs-b418d4c6a4a3b34e317327ff7e80ab7a8fc1c02a.zip
libtapi: fix build, install phase and install name
installTarget looks like a typo for installTargets. This causes a lot
of llvm and clang to be built and installed.

Clang is not intended to be an external dependency. The source bundle
includes llvm and clang. Adding include paths and building clangBasic
first is sufficient to use the internal clang components.
Diffstat (limited to 'pkgs/os-specific/darwin/libtapi/default.nix')
-rw-r--r--pkgs/os-specific/darwin/libtapi/default.nix24
1 files changed, 17 insertions, 7 deletions
diff --git a/pkgs/os-specific/darwin/libtapi/default.nix b/pkgs/os-specific/darwin/libtapi/default.nix
index 182d1db3bfd..8d710b45b26 100644
--- a/pkgs/os-specific/darwin/libtapi/default.nix
+++ b/pkgs/os-specific/darwin/libtapi/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, cmake, python3, clang_6 }:
+{ lib, stdenv, fetchFromGitHub, cmake, python3 }:
 
 stdenv.mkDerivation {
   name = "libtapi-1000.10.8";
@@ -9,22 +9,32 @@ stdenv.mkDerivation {
     sha256 = "1a19h39a48agvnmal99n9j1fjadiqwib7hfzmn342wmgh9z3vk0g";
   };
 
+  sourceRoot = "source/src/llvm";
+
   nativeBuildInputs = [ cmake python3 ];
-  buildInputs = [ clang_6.cc ];
 
+  cmakeFlags = [ "-DLLVM_INCLUDE_TESTS=OFF" ];
+
+  # fixes: fatal error: 'clang/Basic/Diagnostic.h' file not found
+  # adapted from upstream
+  # https://github.com/tpoechtrager/apple-libtapi/blob/3cb307764cc5f1856c8a23bbdf3eb49dfc6bea48/build.sh#L58-L60
   preConfigure = ''
-    cd src/llvm
+    INCLUDE_FIX="-I $PWD/projects/clang/include"
+    INCLUDE_FIX+=" -I $PWD/build/projects/clang/include"
+
+    cmakeFlagsArray+=(-DCMAKE_CXX_FLAGS="$INCLUDE_FIX")
   '';
 
-  cmakeFlags = [ "-DLLVM_INCLUDE_TESTS=OFF" ];
+  buildFlags = [ "clangBasic" "libtapi" ];
 
-  buildFlags = [ "libtapi" ];
+  installTargets = [ "install-libtapi" "install-tapi-headers" ];
 
-  installTarget = "install-libtapi";
+  postInstall = ''
+    install_name_tool -id $out/lib/libtapi.dylib $out/lib/libtapi.dylib
+  '';
 
   meta = with lib; {
     license = licenses.apsl20;
     maintainers = with maintainers; [ matthewbauer ];
   };
-
 }