11with import <nixpkgs> { } ;
22let
3- pkgs = import ( builtins . fetchGit {
4- # Descriptive name to make the store path easier to identify
5- name = "cmake24-revision" ;
6- url = "https://github.com/NixOS/nixpkgs/" ;
7- ref = "refs/heads/nixpkgs-unstable" ;
8- rev = "55070e598e0e03d1d116c49b9eff322ef07c6ac6" ;
9- } ) { } ;
10-
11- cmake24 = pkgs . cmake ;
3+ # pkgs = import (builtins.fetchGit {
4+ # # Descriptive name to make the store path easier to identify
5+ # name = "cmake24-revision";
6+ # url = "https://github.com/NixOS/nixpkgs/";
7+ # ref = "refs/heads/nixpkgs-unstable";
8+ # rev = "55070e598e0e03d1d116c49b9eff322ef07c6ac6";
9+ # }) {};
10+ #
11+ # cmake24 = pkgs.cmake;
1212 gccForLibs = stdenv . cc . cc ;
13+ nativeCC = pkgsBuildBuild . targetPackages . stdenv . cc ;
14+ nativeBintools = nativeCC . bintools . bintools ;
1315in stdenv . mkDerivation {
1416 name = "llvm-env" ;
1517 buildInputs = [
1618 bashInteractive
1719 python3
1820 ninja
19- cmake24
21+ cmake
2022 llvmPackages_latest . llvm
23+ libbfd
2124 ] ;
2225
2326 # where to find libgcc
@@ -26,27 +29,67 @@ in stdenv.mkDerivation {
2629 CFLAGS = "-B${ gccForLibs } /lib/gcc/${ targetPlatform . config } /${ gccForLibs . version } -B ${ stdenv . cc . libc } /lib" ;
2730
2831 cmakeFlags = [
29- "-DGCC_INSTALL_PREFIX=${ gcc } "
32+ "-DCMAKE_C_COMPILER=${ nativeCC } /bin/${ nativeCC . targetPrefix } cc"
33+ "-DCMAKE_CXX_COMPILER=${ nativeCC } /bin/${ nativeCC . targetPrefix } c++"
34+ "-DCMAKE_AR=${ nativeBintools } /bin/${ nativeBintools . targetPrefix } ar"
35+ "-DCMAKE_STRIP=${ nativeBintools } /bin/${ nativeBintools . targetPrefix } strip"
36+ "-DCMAKE_RANLIB=${ nativeBintools } /bin/${ nativeBintools . targetPrefix } ranlib"
3037 "-DC_INCLUDE_DIRS=${ stdenv . cc . libc . dev } /include"
38+
39+ "-DCMAKE_INSTALL_PREFIX=../inst"
40+ "-DCMAKE_INSTALL_BINDIR=$../inst/bin"
41+ "-DCMAKE_INSTALL_INCLUDEDIR=../inst/include"
42+ "-DCMAKE_INSTALL_LIBDIR=$../inst/lib"
43+ "-DCMAKE_INSTALL_LIBEXECDIR=$../inst/libexec"
44+
3145 "-GNinja"
3246 "-DCMAKE_BUILD_TYPE=Release"
3347 "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
34- "-DCMAKE_INSTALL_PREFIX=../inst"
3548 "-DLLVM_TARGETS_TO_BUILD=host"
49+ "-DLLVM_ENABLE_PROJECTS=\" clang;clang-tools-extra;lld;mlir;polly\" "
50+ "-DLLVM_ENABLE_RUNTIMES=\" compiler-rt;libcxx;libcxxabi;libunwind\" "
51+
52+ "-DLLVM_POLLY_LINK_INTO_TOOLS=ON"
53+ "-DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON"
54+ "-DLLVM_LINK_LLVM_DYLIB=ON"
55+ "-DLLVM_ENABLE_EH=ON"
56+ "-DLLVM_ENABLE_RTTI=ON"
3657 "-DLLVM_ENABLE_FFI=ON"
58+ "-DLLVM_INCLUDE_DOCS=OFF"
59+ "-DLLVM_OPTIMIZED_TABLEGEN=ON"
60+ "-DLLVM_INCLUDE_TESTS=OFF"
61+ "-DLLVM_INSTALL_UTILS=ON"
62+
3763 "-DLLVM_ENABLE_DUMP=ON"
3864 "-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF"
39- "-DLLVM_ENABLE_PROJECTS=\" clang;clang-tools-extra;lld;libc;libclc;lldb\" "
40- "-DLLVM_ENABLE_RUNTIMES=\" compiler-rt;libcxx;libcxxabi;libunwind\" "
41- "-DLLVM_INSTALL_UTILS=ON"
4265 "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
66+
67+ "-DLLVM_ENABLE_LIBXML2=OFF"
68+ "-DLLVM_ENABLE_LIBCXX=OFF"
69+ "-DCLANG_DEFAULT_CXX_STDLIB=libstdc++"
70+
71+ "-DCLANG_FORCE_MATCHING_LIBCLANG_SOVERSION=OFF"
72+
73+ "-DLLVM_BINUTILS_INCDIR=${ libbfd . dev } /include"
74+
75+ "-DLIBCXX_INSTALL_MODULES=ON"
4376 "-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON"
4477 "-DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=OFF"
4578 "-DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON"
4679 "-DLIBCXX_USE_COMPILER_RT=ON"
80+ "-DLIBCXX_HAS_ATOMIC_LIB=OFF"
81+
82+ "-DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON"
83+ "-DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF"
84+ "-DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON"
4785 "-DLIBCXXABI_USE_COMPILER_RT=ON"
4886 "-DLIBCXXABI_USE_LLVM_UNWINDER=ON"
49- "-DLLVM_ENABLE_EH=ON"
50- "-DLLVM_ENABLE_RTTI=ON"
87+
88+ "-DLIBUNWIND_USE_COMPILER_RT=ON"
89+ "-DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON"
90+ "-DCOMPILER_RT_USE_LLVM_UNWINDER=ON"
91+
92+ "-DSANITIZER_CXX_ABI=libc++"
93+ "-DSANITIZER_TEST_CXX=libc++"
5194 ] ;
5295 }
0 commit comments