llvm6: copy llvm5

+778
+109
pkgs/development/compilers/llvm/6/clang/default.nix
··· 1 + { stdenv, fetch, cmake, libxml2, libedit, llvm, version, release_version, clang-tools-extra_src, python 2 + , fixDarwinDylibNames 3 + , enableManpages ? false 4 + }: 5 + 6 + let 7 + gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc; 8 + self = stdenv.mkDerivation ({ 9 + name = "clang-${version}"; 10 + 11 + unpackPhase = '' 12 + unpackFile ${fetch "cfe" "1zyh4dggxd55lnfg73c8fybnkssqcaa6bq2h4bzimnnj1jdnqpqk"} 13 + mv cfe-${version}* clang 14 + sourceRoot=$PWD/clang 15 + unpackFile ${clang-tools-extra_src} 16 + mv clang-tools-extra-* $sourceRoot/tools/extra 17 + ''; 18 + 19 + nativeBuildInputs = [ cmake python ] 20 + ++ stdenv.lib.optional enableManpages python.pkgs.sphinx; 21 + 22 + buildInputs = [ libedit libxml2 llvm ] 23 + ++ stdenv.lib.optional stdenv.isDarwin fixDarwinDylibNames; 24 + 25 + cmakeFlags = [ 26 + "-DCMAKE_CXX_FLAGS=-std=c++11" 27 + ] ++ stdenv.lib.optionals enableManpages [ 28 + "-DCLANG_INCLUDE_DOCS=ON" 29 + "-DLLVM_ENABLE_SPHINX=ON" 30 + "-DSPHINX_OUTPUT_MAN=ON" 31 + "-DSPHINX_OUTPUT_HTML=OFF" 32 + "-DSPHINX_WARNINGS_AS_ERRORS=OFF" 33 + ] 34 + # Maybe with compiler-rt this won't be needed? 35 + ++ stdenv.lib.optional stdenv.isLinux "-DGCC_INSTALL_PREFIX=${gcc}" 36 + ++ stdenv.lib.optional (stdenv.cc.libc != null) "-DC_INCLUDE_DIRS=${stdenv.cc.libc}/include"; 37 + 38 + patches = [ ./purity.patch ]; 39 + 40 + # XXX: TODO: This should be removed on next rebuild 41 + postBuild = ""; 42 + 43 + postPatch = '' 44 + sed -i -e 's/DriverArgs.hasArg(options::OPT_nostdlibinc)/true/' \ 45 + -e 's/Args.hasArg(options::OPT_nostdlibinc)/true/' \ 46 + lib/Driver/ToolChains/*.cpp 47 + 48 + # Patch for standalone doc building 49 + sed -i '1s,^,find_package(Sphinx REQUIRED)\n,' docs/CMakeLists.txt 50 + ''; 51 + 52 + outputs = [ "out" "lib" "python" ]; 53 + 54 + # Clang expects to find LLVMgold in its own prefix 55 + # Clang expects to find sanitizer libraries in its own prefix 56 + postInstall = '' 57 + ln -sv ${llvm}/lib/LLVMgold.so $out/lib 58 + ln -sv ${llvm}/lib/clang/${release_version}/lib $out/lib/clang/${release_version}/ 59 + ln -sv $out/bin/clang $out/bin/cpp 60 + 61 + # Move libclang to 'lib' output 62 + moveToOutput "lib/libclang.*" "$lib" 63 + substituteInPlace $out/lib/cmake/clang/ClangTargets-release.cmake \ 64 + --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." 65 + 66 + mkdir -p $python/bin $python/share/clang/ 67 + mv $out/bin/{git-clang-format,scan-view} $python/bin 68 + if [ -e $out/bin/set-xcode-analyzer ]; then 69 + mv $out/bin/set-xcode-analyzer $python/bin 70 + fi 71 + mv $out/share/clang/*.py $python/share/clang 72 + rm $out/bin/c-index-test 73 + ''; 74 + 75 + enableParallelBuilding = true; 76 + 77 + passthru = { 78 + isClang = true; 79 + inherit llvm; 80 + } // stdenv.lib.optionalAttrs stdenv.isLinux { 81 + inherit gcc; 82 + }; 83 + 84 + meta = { 85 + description = "A c, c++, objective-c, and objective-c++ frontend for the llvm compiler"; 86 + homepage = http://llvm.org/; 87 + license = stdenv.lib.licenses.ncsa; 88 + platforms = stdenv.lib.platforms.all; 89 + }; 90 + } // stdenv.lib.optionalAttrs enableManpages { 91 + name = "clang-manpages-${version}"; 92 + 93 + buildPhase = '' 94 + make docs-clang-man 95 + ''; 96 + 97 + installPhase = '' 98 + mkdir -p $out/share/man/man1 99 + # Manually install clang manpage 100 + cp docs/man/*.1 $out/share/man/man1/ 101 + ''; 102 + 103 + outputs = [ "out" ]; 104 + 105 + doCheck = false; 106 + 107 + meta.description = "man page for Clang ${version}"; 108 + }); 109 + in self
+30
pkgs/development/compilers/llvm/6/clang/purity.patch
··· 1 + From 4add81bba40dcec62c4ea4481be8e35ac53e89d8 Mon Sep 17 00:00:00 2001 2 + From: Will Dietz <w@wdtz.org> 3 + Date: Thu, 18 May 2017 11:56:12 -0500 4 + Subject: [PATCH] "purity" patch for 5.0 5 + 6 + --- 7 + lib/Driver/ToolChains/Gnu.cpp | 7 ------- 8 + 1 file changed, 7 deletions(-) 9 + 10 + diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp 11 + index fe3c0191bb..c6a482bece 100644 12 + --- a/lib/Driver/ToolChains/Gnu.cpp 13 + +++ b/lib/Driver/ToolChains/Gnu.cpp 14 + @@ -494,13 +494,6 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, 15 + if (!Args.hasArg(options::OPT_static)) { 16 + if (Args.hasArg(options::OPT_rdynamic)) 17 + CmdArgs.push_back("-export-dynamic"); 18 + - 19 + - if (!Args.hasArg(options::OPT_shared)) { 20 + - const std::string Loader = 21 + - D.DyldPrefix + ToolChain.getDynamicLinker(Args); 22 + - CmdArgs.push_back("-dynamic-linker"); 23 + - CmdArgs.push_back(Args.MakeArgString(Loader)); 24 + - } 25 + } 26 + 27 + CmdArgs.push_back("-o"); 28 + -- 29 + 2.11.0 30 +
+155
pkgs/development/compilers/llvm/6/compiler-rt-codesign.patch
··· 1 + From 3dec5f3475a26aeb4678627795c4b67c6b7b4785 Mon Sep 17 00:00:00 2001 2 + From: Will Dietz <w@wdtz.org> 3 + Date: Tue, 19 Sep 2017 13:13:06 -0500 4 + Subject: [PATCH] remove codesign use on Apple, disable ios sim testing that 5 + needs it 6 + 7 + --- 8 + cmake/Modules/AddCompilerRT.cmake | 8 ------ 9 + test/asan/CMakeLists.txt | 52 --------------------------------------- 10 + test/tsan/CMakeLists.txt | 47 ----------------------------------- 11 + 3 files changed, 107 deletions(-) 12 + 13 + diff --git a/cmake/Modules/AddCompilerRT.cmake b/cmake/Modules/AddCompilerRT.cmake 14 + index bc5fb9ff7..b64eb4246 100644 15 + --- a/cmake/Modules/AddCompilerRT.cmake 16 + +++ b/cmake/Modules/AddCompilerRT.cmake 17 + @@ -210,14 +210,6 @@ function(add_compiler_rt_runtime name type) 18 + set_target_properties(${libname} PROPERTIES IMPORT_PREFIX "") 19 + set_target_properties(${libname} PROPERTIES IMPORT_SUFFIX ".lib") 20 + endif() 21 + - if(APPLE) 22 + - # Ad-hoc sign the dylibs 23 + - add_custom_command(TARGET ${libname} 24 + - POST_BUILD 25 + - COMMAND codesign --sign - $<TARGET_FILE:${libname}> 26 + - WORKING_DIRECTORY ${COMPILER_RT_LIBRARY_OUTPUT_DIR} 27 + - ) 28 + - endif() 29 + endif() 30 + install(TARGETS ${libname} 31 + ARCHIVE DESTINATION ${COMPILER_RT_LIBRARY_INSTALL_DIR} 32 + diff --git a/test/asan/CMakeLists.txt b/test/asan/CMakeLists.txt 33 + index 8bfc15b5c..f23d0f71a 100644 34 + --- a/test/asan/CMakeLists.txt 35 + +++ b/test/asan/CMakeLists.txt 36 + @@ -83,58 +83,6 @@ foreach(arch ${ASAN_TEST_ARCH}) 37 + endif() 38 + endforeach() 39 + 40 + -# iOS and iOS simulator test suites 41 + -# These are not added into "check-all", in order to run these tests, use 42 + -# "check-asan-iossim-x86_64" and similar. They also require that an extra env 43 + -# variable to select which iOS device or simulator to use, e.g.: 44 + -# SANITIZER_IOSSIM_TEST_DEVICE_IDENTIFIER="iPhone 6" 45 + -if(APPLE) 46 + - set(EXCLUDE_FROM_ALL ON) 47 + - 48 + - set(ASAN_TEST_TARGET_CC ${COMPILER_RT_TEST_COMPILER}) 49 + - set(ASAN_TEST_IOS "1") 50 + - pythonize_bool(ASAN_TEST_IOS) 51 + - set(ASAN_TEST_DYNAMIC True) 52 + - 53 + - foreach(arch ${DARWIN_iossim_ARCHS}) 54 + - set(ASAN_TEST_IOSSIM "1") 55 + - pythonize_bool(ASAN_TEST_IOSSIM) 56 + - set(ASAN_TEST_TARGET_ARCH ${arch}) 57 + - set(ASAN_TEST_TARGET_CFLAGS "-arch ${arch} -isysroot ${DARWIN_iossim_SYSROOT} ${COMPILER_RT_TEST_COMPILER_CFLAGS}") 58 + - set(ASAN_TEST_CONFIG_SUFFIX "-${arch}-iossim") 59 + - get_bits_for_arch(${arch} ASAN_TEST_BITS) 60 + - string(TOUPPER ${arch} ARCH_UPPER_CASE) 61 + - set(CONFIG_NAME "IOSSim${ARCH_UPPER_CASE}Config") 62 + - configure_lit_site_cfg( 63 + - ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 64 + - ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg 65 + - ) 66 + - add_lit_testsuite(check-asan-iossim-${arch} "AddressSanitizer iOS Simulator ${arch} tests" 67 + - ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/ 68 + - DEPENDS ${ASAN_TEST_DEPS}) 69 + - endforeach() 70 + - 71 + - foreach (arch ${DARWIN_ios_ARCHS}) 72 + - set(ASAN_TEST_IOSSIM "0") 73 + - pythonize_bool(ASAN_TEST_IOSSIM) 74 + - set(ASAN_TEST_TARGET_ARCH ${arch}) 75 + - set(ASAN_TEST_TARGET_CFLAGS "-arch ${arch} -isysroot ${DARWIN_ios_SYSROOT} ${COMPILER_RT_TEST_COMPILER_CFLAGS}") 76 + - set(ASAN_TEST_CONFIG_SUFFIX "-${arch}-ios") 77 + - get_bits_for_arch(${arch} ASAN_TEST_BITS) 78 + - string(TOUPPER ${arch} ARCH_UPPER_CASE) 79 + - set(CONFIG_NAME "IOS${ARCH_UPPER_CASE}Config") 80 + - configure_lit_site_cfg( 81 + - ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 82 + - ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg 83 + - ) 84 + - add_lit_testsuite(check-asan-ios-${arch} "AddressSanitizer iOS ${arch} tests" 85 + - ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/ 86 + - DEPENDS ${ASAN_TEST_DEPS}) 87 + - endforeach() 88 + - 89 + - set(EXCLUDE_FROM_ALL OFF) 90 + -endif() 91 + - 92 + # Add unit tests. 93 + if(COMPILER_RT_INCLUDE_TESTS) 94 + set(ASAN_TEST_DYNAMIC False) 95 + diff --git a/test/tsan/CMakeLists.txt b/test/tsan/CMakeLists.txt 96 + index a68908612..cde0accb5 100644 97 + --- a/test/tsan/CMakeLists.txt 98 + +++ b/test/tsan/CMakeLists.txt 99 + @@ -42,53 +42,6 @@ foreach(arch ${TSAN_TEST_ARCH}) 100 + list(APPEND TSAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}) 101 + endforeach() 102 + 103 + -# iOS and iOS simulator test suites 104 + -# These are not added into "check-all", in order to run these tests, use 105 + -# "check-tsan-iossim-x86_64" and similar. They also require an extra environment 106 + -# variable to select which iOS device or simulator to use, e.g.: 107 + -# SANITIZER_IOSSIM_TEST_DEVICE_IDENTIFIER="iPhone 6" 108 + -if(APPLE) 109 + - set(EXCLUDE_FROM_ALL ON) 110 + - 111 + - set(TSAN_TEST_TARGET_CC ${COMPILER_RT_TEST_COMPILER}) 112 + - set(TSAN_TEST_IOS "1") 113 + - pythonize_bool(TSAN_TEST_IOS) 114 + - 115 + - set(arch "x86_64") 116 + - set(TSAN_TEST_IOSSIM "1") 117 + - pythonize_bool(TSAN_TEST_IOSSIM) 118 + - set(TSAN_TEST_TARGET_ARCH ${arch}) 119 + - set(TSAN_TEST_TARGET_CFLAGS "-arch ${arch} -isysroot ${DARWIN_iossim_SYSROOT} ${COMPILER_RT_TEST_COMPILER_CFLAGS}") 120 + - set(TSAN_TEST_CONFIG_SUFFIX "-${arch}-iossim") 121 + - string(TOUPPER ${arch} ARCH_UPPER_CASE) 122 + - set(CONFIG_NAME "IOSSim${ARCH_UPPER_CASE}Config") 123 + - configure_lit_site_cfg( 124 + - ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 125 + - ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg 126 + - ) 127 + - add_lit_testsuite(check-tsan-iossim-${arch} "ThreadSanitizer iOS Simulator ${arch} tests" 128 + - ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/ 129 + - DEPENDS ${TSAN_TEST_DEPS}) 130 + - 131 + - set(arch "arm64") 132 + - set(TSAN_TEST_IOSSIM "0") 133 + - pythonize_bool(TSAN_TEST_IOSSIM) 134 + - set(TSAN_TEST_TARGET_ARCH ${arch}) 135 + - set(TSAN_TEST_TARGET_CFLAGS "-arch ${arch} -isysroot ${DARWIN_ios_SYSROOT} ${COMPILER_RT_TEST_COMPILER_CFLAGS}") 136 + - set(TSAN_TEST_CONFIG_SUFFIX "-${arch}-ios") 137 + - string(TOUPPER ${arch} ARCH_UPPER_CASE) 138 + - set(CONFIG_NAME "IOS${ARCH_UPPER_CASE}Config") 139 + - configure_lit_site_cfg( 140 + - ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 141 + - ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg 142 + - ) 143 + - add_lit_testsuite(check-tsan-ios-${arch} "ThreadSanitizer iOS Simulator ${arch} tests" 144 + - ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/ 145 + - DEPENDS ${TSAN_TEST_DEPS}) 146 + - 147 + - set(EXCLUDE_FROM_ALL OFF) 148 + -endif() 149 + - 150 + if(COMPILER_RT_INCLUDE_TESTS) 151 + configure_lit_site_cfg( 152 + ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in 153 + -- 154 + 2.14.1 155 +
+78
pkgs/development/compilers/llvm/6/default.nix
··· 1 + { lowPrio, newScope, stdenv, targetPlatform, cmake, libstdcxxHook 2 + , libxml2, python2, isl, fetchurl, overrideCC, wrapCC, ccWrapperFun 3 + , darwin 4 + }: 5 + 6 + let 7 + callPackage = newScope (self // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; }); 8 + 9 + release_version = "5.0.1"; 10 + version = release_version; # differentiating these is important for rc's 11 + 12 + fetch = name: sha256: fetchurl { 13 + url = "http://llvm.org/releases/${release_version}/${name}-${version}.src.tar.xz"; 14 + inherit sha256; 15 + }; 16 + 17 + compiler-rt_src = fetch "compiler-rt" "1nlmm0b3wpdwxkldqp1klzv3rpqf94q2a248xgqb7aapyhbi9paf"; 18 + clang-tools-extra_src = fetch "clang-tools-extra" "09fjii7w43kvxvsxxs6gig9vz95vnvx1779rqd36h8kksvws3bcs"; 19 + 20 + # Add man output without introducing extra dependencies. 21 + overrideManOutput = drv: 22 + let drv-manpages = drv.override { enableManpages = true; }; in 23 + drv // { man = drv-manpages.out; /*outputs = drv.outputs ++ ["man"];*/ }; 24 + 25 + llvm = callPackage ./llvm.nix { 26 + inherit compiler-rt_src stdenv; 27 + }; 28 + 29 + clang-unwrapped = callPackage ./clang { 30 + inherit clang-tools-extra_src stdenv; 31 + }; 32 + 33 + self = { 34 + llvm = overrideManOutput llvm; 35 + clang-unwrapped = overrideManOutput clang-unwrapped; 36 + 37 + libclang = self.clang-unwrapped.lib; 38 + llvm-manpages = lowPrio self.llvm.man; 39 + clang-manpages = lowPrio self.clang-unwrapped.man; 40 + 41 + clang = if stdenv.cc.isGNU then self.libstdcxxClang else self.libcxxClang; 42 + 43 + libstdcxxClang = ccWrapperFun { 44 + cc = self.clang-unwrapped; 45 + /* FIXME is this right? */ 46 + inherit (stdenv.cc) bintools libc nativeTools nativeLibc; 47 + extraPackages = [ libstdcxxHook ]; 48 + }; 49 + 50 + libcxxClang = ccWrapperFun { 51 + cc = self.clang-unwrapped; 52 + /* FIXME is this right? */ 53 + inherit (stdenv.cc) bintools libc nativeTools nativeLibc; 54 + extraPackages = [ self.libcxx self.libcxxabi ]; 55 + }; 56 + 57 + stdenv = stdenv.override (drv: { 58 + allowedRequisites = null; 59 + cc = self.clang; 60 + }); 61 + 62 + libcxxStdenv = stdenv.override (drv: { 63 + allowedRequisites = null; 64 + cc = self.libcxxClang; 65 + }); 66 + 67 + lld = callPackage ./lld.nix {}; 68 + 69 + lldb = callPackage ./lldb.nix {}; 70 + 71 + libcxx = callPackage ./libc++ {}; 72 + 73 + libcxxabi = callPackage ./libc++abi.nix {}; 74 + 75 + openmp = callPackage ./openmp.nix {}; 76 + }; 77 + 78 + in self
+44
pkgs/development/compilers/llvm/6/libc++/default.nix
··· 1 + { lib, stdenv, fetch, cmake, llvm, libcxxabi, fixDarwinDylibNames, version }: 2 + 3 + stdenv.mkDerivation rec { 4 + name = "libc++-${version}"; 5 + 6 + src = fetch "libcxx" "003wwniwlikgh38cbqbcshc5gkiv3a2jkmbn6am9s46y5gfrk3zs"; 7 + 8 + postUnpack = '' 9 + unpackFile ${libcxxabi.src} 10 + export LIBCXXABI_INCLUDE_DIR="$PWD/$(ls -d libcxxabi-${version}*)/include" 11 + ''; 12 + 13 + prePatch = '' 14 + substituteInPlace lib/CMakeLists.txt --replace "/usr/lib/libc++" "\''${LIBCXX_LIBCXXABI_LIB_PATH}/libc++" 15 + ''; 16 + 17 + preConfigure = '' 18 + # Get headers from the cxxabi source so we can see private headers not installed by the cxxabi package 19 + cmakeFlagsArray=($cmakeFlagsArray -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$LIBCXXABI_INCLUDE_DIR") 20 + ''; 21 + 22 + nativeBuildInputs = [ cmake ]; 23 + 24 + buildInputs = [ libcxxabi ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames; 25 + 26 + cmakeFlags = [ 27 + "-DLIBCXX_LIBCXXABI_LIB_PATH=${libcxxabi}/lib" 28 + "-DLIBCXX_LIBCPPABI_VERSION=2" 29 + "-DLIBCXX_CXX_ABI=libcxxabi" 30 + ]; 31 + 32 + enableParallelBuilding = true; 33 + 34 + linkCxxAbi = stdenv.isLinux; 35 + 36 + setupHook = ./setup-hook.sh; 37 + 38 + meta = { 39 + homepage = http://libcxx.llvm.org/; 40 + description = "A new implementation of the C++ standard library, targeting C++11"; 41 + license = with stdenv.lib.licenses; [ ncsa mit ]; 42 + platforms = stdenv.lib.platforms.unix; 43 + }; 44 + }
+3
pkgs/development/compilers/llvm/6/libc++/setup-hook.sh
··· 1 + linkCxxAbi="@linkCxxAbi@" 2 + export NIX_CXXSTDLIB_COMPILE+=" -isystem @out@/include/c++/v1" 3 + export NIX_CXXSTDLIB_LINK=" -stdlib=libc++${linkCxxAbi:+" -lc++abi"}"
+47
pkgs/development/compilers/llvm/6/libc++abi.nix
··· 1 + { stdenv, cmake, fetch, libcxx, libunwind, llvm, version }: 2 + 3 + stdenv.mkDerivation { 4 + name = "libc++abi-${version}"; 5 + 6 + src = fetch "libcxxabi" "0m78yr4arlz2b9m96xcygk15m2pbz8i10snk78i3q7pjnwn1a9as"; 7 + 8 + nativeBuildInputs = [ cmake ]; 9 + buildInputs = stdenv.lib.optional (!stdenv.isDarwin && !stdenv.isFreeBSD) libunwind; 10 + 11 + postUnpack = '' 12 + unpackFile ${libcxx.src} 13 + unpackFile ${llvm.src} 14 + export cmakeFlags="-DLLVM_PATH=$PWD/$(ls -d llvm-*) -DLIBCXXABI_LIBCXX_PATH=$PWD/$(ls -d libcxx-*)" 15 + '' + stdenv.lib.optionalString stdenv.isDarwin '' 16 + export TRIPLE=x86_64-apple-darwin 17 + ''; 18 + 19 + installPhase = if stdenv.isDarwin 20 + then '' 21 + for file in lib/*.dylib; do 22 + # this should be done in CMake, but having trouble figuring out 23 + # the magic combination of necessary CMake variables 24 + # if you fancy a try, take a look at 25 + # http://www.cmake.org/Wiki/CMake_RPATH_handling 26 + install_name_tool -id $out/$file $file 27 + done 28 + make install 29 + install -d 755 $out/include 30 + install -m 644 ../include/*.h $out/include 31 + '' 32 + else '' 33 + install -d -m 755 $out/include $out/lib 34 + install -m 644 lib/libc++abi.so.1.0 $out/lib 35 + install -m 644 ../include/cxxabi.h $out/include 36 + ln -s libc++abi.so.1.0 $out/lib/libc++abi.so 37 + ln -s libc++abi.so.1.0 $out/lib/libc++abi.so.1 38 + ''; 39 + 40 + meta = { 41 + homepage = http://libcxxabi.llvm.org/; 42 + description = "A new implementation of low level support for a standard C++ library"; 43 + license = with stdenv.lib.licenses; [ ncsa mit ]; 44 + maintainers = with stdenv.lib.maintainers; [ vlstill ]; 45 + platforms = stdenv.lib.platforms.unix; 46 + }; 47 + }
+33
pkgs/development/compilers/llvm/6/lld.nix
··· 1 + { stdenv 2 + , fetch 3 + , cmake 4 + , zlib 5 + , llvm 6 + , python 7 + , version 8 + }: 9 + 10 + stdenv.mkDerivation { 11 + name = "lld-${version}"; 12 + 13 + src = fetch "lld" "15fq2zvkliyiw5qi7ig2r8bshgbz4kzvs5in16mhfkw20l06rcym"; 14 + 15 + nativeBuildInputs = [ cmake ]; 16 + buildInputs = [ llvm ]; 17 + 18 + outputs = [ "out" "dev" ]; 19 + 20 + enableParallelBuilding = true; 21 + 22 + postInstall = '' 23 + moveToOutput include "$dev" 24 + moveToOutput lib "$dev" 25 + ''; 26 + 27 + meta = { 28 + description = "The LLVM Linker"; 29 + homepage = http://lld.llvm.org/; 30 + license = stdenv.lib.licenses.ncsa; 31 + platforms = stdenv.lib.platforms.all; 32 + }; 33 + }
+56
pkgs/development/compilers/llvm/6/lldb.nix
··· 1 + { stdenv 2 + , fetch 3 + , cmake 4 + , zlib 5 + , ncurses 6 + , swig 7 + , which 8 + , libedit 9 + , libxml2 10 + , llvm 11 + , clang-unwrapped 12 + , python 13 + , version 14 + , darwin 15 + }: 16 + 17 + stdenv.mkDerivation { 18 + name = "lldb-${version}"; 19 + 20 + src = fetch "lldb" "0sipv8k37ai44m7jcf6wsbm2q41dgk3sk9m3i6823jkmg7kckhdp"; 21 + 22 + postPatch = '' 23 + # Fix up various paths that assume llvm and clang are installed in the same place 24 + sed -i 's,".*ClangConfig.cmake","${clang-unwrapped}/lib/cmake/clang/ClangConfig.cmake",' \ 25 + cmake/modules/LLDBStandalone.cmake 26 + sed -i 's,".*tools/clang/include","${clang-unwrapped}/include",' \ 27 + cmake/modules/LLDBStandalone.cmake 28 + sed -i 's,"$.LLVM_LIBRARY_DIR.",${llvm}/lib ${clang-unwrapped}/lib,' \ 29 + cmake/modules/LLDBStandalone.cmake 30 + ''; 31 + 32 + nativeBuildInputs = [ cmake python which swig ]; 33 + buildInputs = [ ncurses zlib libedit libxml2 llvm ] 34 + ++ stdenv.lib.optionals stdenv.isDarwin [ darwin.libobjc darwin.apple_sdk.libs.xpc darwin.apple_sdk.frameworks.Foundation darwin.bootstrap_cmds darwin.apple_sdk.frameworks.Carbon darwin.apple_sdk.frameworks.Cocoa ]; 35 + 36 + CXXFLAGS = "-fno-rtti"; 37 + hardeningDisable = [ "format" ]; 38 + 39 + cmakeFlags = [ 40 + "-DLLDB_CODESIGN_IDENTITY=" # codesigning makes nondeterministic 41 + ]; 42 + 43 + enableParallelBuilding = true; 44 + 45 + postInstall = '' 46 + mkdir -p $out/share/man/man1 47 + cp ../docs/lldb.1 $out/share/man/man1/ 48 + ''; 49 + 50 + meta = with stdenv.lib; { 51 + description = "A next-generation high-performance debugger"; 52 + homepage = http://llvm.org/; 53 + license = licenses.ncsa; 54 + platforms = platforms.all; 55 + }; 56 + }
+26
pkgs/development/compilers/llvm/6/llvm-outputs.patch
··· 1 + diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp 2 + index 94d426b..37f7794 100644 3 + --- a/tools/llvm-config/llvm-config.cpp 4 + +++ b/tools/llvm-config/llvm-config.cpp 5 + @@ -333,6 +333,21 @@ int main(int argc, char **argv) { 6 + ActiveIncludeOption = "-I" + ActiveIncludeDir; 7 + } 8 + 9 + + /// Nix-specific multiple-output handling: override ActiveLibDir if --link-shared 10 + + if (!IsInDevelopmentTree) { 11 + + bool WantShared = true; 12 + + for (int i = 1; i < argc; ++i) { 13 + + StringRef Arg = argv[i]; 14 + + if (Arg == "--link-shared") 15 + + WantShared = true; 16 + + else if (Arg == "--link-static") 17 + + WantShared = false; // the last one wins 18 + + } 19 + + 20 + + if (WantShared) 21 + + ActiveLibDir = std::string("@lib@") + "/lib" + LLVM_LIBDIR_SUFFIX; 22 + + } 23 + + 24 + /// We only use `shared library` mode in cases where the static library form 25 + /// of the components provided are not available; note however that this is 26 + /// skipped if we're run from within the build dir. However, once installed,
+171
pkgs/development/compilers/llvm/6/llvm.nix
··· 1 + { stdenv 2 + , fetch 3 + , fetchpatch 4 + , perl 5 + , groff 6 + , cmake 7 + , python 8 + , libffi 9 + , libbfd 10 + , libxml2 11 + , valgrind 12 + , ncurses 13 + , version 14 + , release_version 15 + , zlib 16 + , compiler-rt_src 17 + , libcxxabi 18 + , debugVersion ? false 19 + , enableManpages ? false 20 + , enableSharedLibraries ? true 21 + , darwin 22 + }: 23 + 24 + let 25 + src = fetch "llvm" "1c07i0b61j69m578lgjkyayg419sh7sn40xb3j112nr2q2gli9sz"; 26 + 27 + # Used when creating a version-suffixed symlink of libLLVM.dylib 28 + shortVersion = with stdenv.lib; 29 + concatStringsSep "." (take 2 (splitString "." release_version)); 30 + in stdenv.mkDerivation (rec { 31 + name = "llvm-${version}"; 32 + 33 + unpackPhase = '' 34 + unpackFile ${src} 35 + mv llvm-${version}* llvm 36 + sourceRoot=$PWD/llvm 37 + unpackFile ${compiler-rt_src} 38 + mv compiler-rt-* $sourceRoot/projects/compiler-rt 39 + ''; 40 + 41 + outputs = [ "out" ] 42 + ++ stdenv.lib.optional enableSharedLibraries "lib"; 43 + 44 + nativeBuildInputs = [ perl groff cmake python ] 45 + ++ stdenv.lib.optional enableManpages python.pkgs.sphinx; 46 + 47 + buildInputs = [ libxml2 libffi ] 48 + ++ stdenv.lib.optionals stdenv.isDarwin [ libcxxabi ]; 49 + 50 + propagatedBuildInputs = [ ncurses zlib ]; 51 + 52 + # TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks 53 + # to get it, but they're unfree. Since LLVM is rather central to the stdenv, we patch out TSAN support so that Hydra 54 + # can build this. If we didn't do it, basically the entire nixpkgs on Darwin would have an unfree dependency and we'd 55 + # get no binary cache for the entire platform. If you really find yourself wanting the TSAN, make this controllable by 56 + # a flag and turn the flag off during the stdenv build. 57 + postPatch = stdenv.lib.optionalString stdenv.isDarwin '' 58 + substituteInPlace ./projects/compiler-rt/cmake/config-ix.cmake \ 59 + --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)' 60 + 61 + substituteInPlace cmake/modules/AddLLVM.cmake \ 62 + --replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir INSTALL_NAME_DIR "$lib/lib")" \ 63 + --replace 'set(_install_rpath "@loader_path/../lib" ''${extra_libdir})' "" 64 + '' 65 + # Patch llvm-config to return correct library path based on --link-{shared,static}. 66 + + stdenv.lib.optionalString (enableSharedLibraries) '' 67 + substitute '${./llvm-outputs.patch}' ./llvm-outputs.patch --subst-var lib 68 + patch -p1 < ./llvm-outputs.patch 69 + '' + '' 70 + # FileSystem permissions tests fail with various special bits 71 + substituteInPlace unittests/Support/CMakeLists.txt \ 72 + --replace "Path.cpp" "" 73 + rm unittests/Support/Path.cpp 74 + 75 + # Revert compiler-rt commit that makes codesign mandatory 76 + patch -p1 -i ${./compiler-rt-codesign.patch} -d projects/compiler-rt 77 + '' + stdenv.lib.optionalString stdenv.isAarch64 '' 78 + patch -p0 < ${../aarch64.patch} 79 + ''; 80 + 81 + # hacky fix: created binaries need to be run before installation 82 + preBuild = '' 83 + mkdir -p $out/ 84 + ln -sv $PWD/lib $out 85 + ''; 86 + 87 + cmakeFlags = with stdenv; [ 88 + "-DCMAKE_BUILD_TYPE=${if debugVersion then "Debug" else "Release"}" 89 + "-DLLVM_INSTALL_UTILS=ON" # Needed by rustc 90 + "-DLLVM_BUILD_TESTS=ON" 91 + "-DLLVM_ENABLE_FFI=ON" 92 + "-DLLVM_ENABLE_RTTI=ON" 93 + "-DCOMPILER_RT_INCLUDE_TESTS=OFF" # FIXME: requires clang source code 94 + ] 95 + ++ stdenv.lib.optional enableSharedLibraries 96 + "-DLLVM_LINK_LLVM_DYLIB=ON" 97 + ++ stdenv.lib.optionals enableManpages [ 98 + "-DLLVM_BUILD_DOCS=ON" 99 + "-DLLVM_ENABLE_SPHINX=ON" 100 + "-DSPHINX_OUTPUT_MAN=ON" 101 + "-DSPHINX_OUTPUT_HTML=OFF" 102 + "-DSPHINX_WARNINGS_AS_ERRORS=OFF" 103 + ] 104 + ++ stdenv.lib.optional (!isDarwin) 105 + "-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include" 106 + ++ stdenv.lib.optionals (isDarwin) [ 107 + "-DLLVM_ENABLE_LIBCXX=ON" 108 + "-DCAN_TARGET_i386=false" 109 + ]; 110 + 111 + postBuild = '' 112 + rm -fR $out 113 + 114 + paxmark m bin/{lli,llvm-rtdyld} 115 + paxmark m unittests/ExecutionEngine/MCJIT/MCJITTests 116 + paxmark m unittests/ExecutionEngine/Orc/OrcJITTests 117 + paxmark m unittests/Support/SupportTests 118 + paxmark m bin/lli-child-target 119 + ''; 120 + 121 + preCheck = '' 122 + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib 123 + ''; 124 + 125 + postInstall = stdenv.lib.optionalString enableSharedLibraries '' 126 + moveToOutput "lib/libLLVM-*" "$lib" 127 + moveToOutput "lib/libLLVM${stdenv.hostPlatform.extensions.sharedLibrary}" "$lib" 128 + substituteInPlace "$out/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \ 129 + --replace "\''${_IMPORT_PREFIX}/lib/libLLVM-" "$lib/lib/libLLVM-" 130 + '' 131 + + stdenv.lib.optionalString (stdenv.isDarwin && enableSharedLibraries) '' 132 + substituteInPlace "$out/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \ 133 + --replace "\''${_IMPORT_PREFIX}/lib/libLLVM.dylib" "$lib/lib/libLLVM.dylib" 134 + ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib 135 + ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib 136 + ''; 137 + 138 + doCheck = stdenv.isLinux && (!stdenv.isi686); 139 + 140 + checkTarget = "check-all"; 141 + 142 + enableParallelBuilding = true; 143 + 144 + passthru.src = src; 145 + 146 + meta = { 147 + description = "Collection of modular and reusable compiler and toolchain technologies"; 148 + homepage = http://llvm.org/; 149 + license = stdenv.lib.licenses.ncsa; 150 + maintainers = with stdenv.lib.maintainers; [ lovek323 raskin viric dtzWill ]; 151 + platforms = stdenv.lib.platforms.all; 152 + }; 153 + } // stdenv.lib.optionalAttrs enableManpages { 154 + name = "llvm-manpages-${version}"; 155 + 156 + buildPhase = '' 157 + make docs-llvm-man 158 + ''; 159 + 160 + propagatedBuildInputs = []; 161 + 162 + installPhase = '' 163 + make -C docs install 164 + ''; 165 + 166 + outputs = [ "out" ]; 167 + 168 + doCheck = false; 169 + 170 + meta.description = "man pages for LLVM ${version}"; 171 + })
+26
pkgs/development/compilers/llvm/6/openmp.nix
··· 1 + { stdenv 2 + , fetch 3 + , cmake 4 + , zlib 5 + , llvm 6 + , perl 7 + , version 8 + }: 9 + 10 + stdenv.mkDerivation { 11 + name = "openmp-${version}"; 12 + 13 + src = fetch "openmp" "0lr6r87xzg87w1q9rrh04nqpyr8c929dh4qy3csjiy7rsb6kbdmd"; 14 + 15 + nativeBuildInputs = [ cmake perl ]; 16 + buildInputs = [ llvm ]; 17 + 18 + enableParallelBuilding = true; 19 + 20 + meta = { 21 + description = "Components required to build an executable OpenMP program"; 22 + homepage = http://openmp.llvm.org/; 23 + license = stdenv.lib.licenses.mit; 24 + platforms = stdenv.lib.platforms.all; 25 + }; 26 + }