Unverified Commit 00839fea authored by Rahul Butani's avatar Rahul Butani
Browse files

llvmPackages_15.compiler-rt: fixes for Darwin

this introduces a codesigning related patch that we can drop once #195107
goes through

see: https://github.com/NixOS/nixpkgs/pull/194634#issuecomment-1272116014
parent 501a9e1b
Loading
Loading
Loading
Loading
+0 −33
Original line number Diff line number Diff line
From 3dec5f3475a26aeb4678627795c4b67c6b7b4785 Mon Sep 17 00:00:00 2001
From: Will Dietz <w@wdtz.org>
Date: Tue, 19 Sep 2017 13:13:06 -0500
Subject: [PATCH] remove codesign use on Apple, disable ios sim testing that
 needs it

---
 cmake/Modules/AddCompilerRT.cmake |  8 ------
 test/asan/CMakeLists.txt          | 52 ---------------------------------------
 test/tsan/CMakeLists.txt          | 47 -----------------------------------
 3 files changed, 107 deletions(-)

diff --git a/cmake/Modules/AddCompilerRT.cmake b/cmake/Modules/AddCompilerRT.cmake
index bc69ec95c419..9f100fdcec2f 100644
--- a/cmake/Modules/AddCompilerRT.cmake
+++ b/cmake/Modules/AddCompilerRT.cmake
@@ -366,14 +366,6 @@ function(add_compiler_rt_runtime name type)
         set_target_properties(${libname} PROPERTIES IMPORT_PREFIX "")
         set_target_properties(${libname} PROPERTIES IMPORT_SUFFIX ".lib")
       endif()
-      if(APPLE)
-        # Ad-hoc sign the dylibs
-        add_custom_command(TARGET ${libname}
-          POST_BUILD  
-          COMMAND codesign --sign - $<TARGET_FILE:${libname}>
-          WORKING_DIRECTORY ${COMPILER_RT_OUTPUT_LIBRARY_DIR}
-        )
-      endif()
     endif()
 
     set(parent_target_arg)
2.14.1
+24 −1
Original line number Diff line number Diff line
@@ -66,6 +66,10 @@ stdenv.mkDerivation {
    "-DDARWIN_macosx_OVERRIDE_SDK_VERSION=ON"
    "-DDARWIN_osx_ARCHS=${stdenv.hostPlatform.darwinArch}"
    "-DDARWIN_osx_BUILTIN_ARCHS=${stdenv.hostPlatform.darwinArch}"

    # `COMPILER_RT_DEFAULT_TARGET_ONLY` does not apply to Darwin:
    # https://github.com/llvm/llvm-project/blob/27ef42bec80b6c010b7b3729ed0528619521a690/compiler-rt/cmake/base-config-ix.cmake#L153
    "-DCOMPILER_RT_ENABLE_IOS=OFF"
  ];

  outputs = [ "out" "dev" ];
@@ -78,7 +82,26 @@ stdenv.mkDerivation {
    ./normalize-var.patch
  ] # Prevent a compilation error on darwin
    ++ lib.optional stdenv.hostPlatform.isDarwin ./darwin-targetconditionals.patch
    ++ lib.optional stdenv.hostPlatform.isAarch32 ./armv7l.patch;
    ++ lib.optional stdenv.hostPlatform.isAarch32 ./armv7l.patch

    # The `compiler-rt` build inspects `ld` to figure out whether it needs to
    # explicitly call `codesign`:
    # https://github.com/llvm/llvm-project/blob/27ef42bec80b6c010b7b3729ed0528619521a690/compiler-rt/cmake/Modules/AddCompilerRT.cmake#L409-L422
    #
    # In our case, despite (currently) having an `ld` version than 609, we don't
    # need an explicit codesigning step because `postLinkSignHook` handles this
    # for us.
    #
    # Unfortunately there isn't an easy way to override
    # `NEED_EXPLICIT_ADHOC_CODESIGN`.
    #
    # Adding `codesign` as a build input also doesn't currently work because, as
    # of this writing, `codesign` in nixpkgs doesn't support the `--sign` alias
    # which the `compiler-rt` build uses. See here for context:
    # https://github.com/NixOS/nixpkgs/pull/194634#issuecomment-1272116014
    #
    # So, for now, we patch `compiler-rt` to skip the explicit codesigning step.
    ++ lib.optional stdenv.hostPlatform.isDarwin ./skip-explicit-codesign.patch;

  # TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks
  # to get it, but they're unfree. Since LLVM is rather central to the stdenv, we patch out TSAN support so that Hydra
+12 −0
Original line number Diff line number Diff line
diff --git a/cmake/Modules/AddCompilerRT.cmake b/cmake/Modules/AddCompilerRT.cmake
--- a/cmake/Modules/AddCompilerRT.cmake
+++ b/cmake/Modules/AddCompilerRT.cmake
@@ -406,7 +406,7 @@ function(add_compiler_rt_runtime name type)
         if (HAD_ERROR)
           message(FATAL_ERROR "${CMAKE_LINKER} failed with status ${HAD_ERROR}")
         endif()
-        set(NEED_EXPLICIT_ADHOC_CODESIGN 1)
+        set(NEED_EXPLICIT_ADHOC_CODESIGN 0) # `postLinkSignHook` handles this for us
         if ("${LD_V_OUTPUT}" MATCHES ".*ld64-([0-9.]+).*")
           string(REGEX REPLACE ".*ld64-([0-9.]+).*" "\\1" HOST_LINK_VERSION ${LD_V_OUTPUT})
           if (HOST_LINK_VERSION VERSION_GREATER_EQUAL 609)