at master 2.4 kB view raw
1{ 2 lib, 3 llvm_meta, 4 monorepoSrc, 5 release_version, 6 runCommand, 7 cmake, 8 libxml2, 9 libllvm, 10 ninja, 11 libffi, 12 libclang, 13 stdenv, 14 clang, 15 mlir, 16 version, 17 python3, 18 buildLlvmTools, 19 devExtraCmakeFlags ? [ ], 20}: 21 22stdenv.mkDerivation (finalAttrs: { 23 pname = "flang"; 24 inherit version; 25 26 src = runCommand "flang-src-${version}" { inherit (monorepoSrc) passthru; } '' 27 mkdir -p "$out" 28 cp -r ${monorepoSrc}/${finalAttrs.pname} "$out" 29 cp -r ${monorepoSrc}/cmake "$out" 30 cp -r ${monorepoSrc}/llvm "$out" 31 cp -r ${monorepoSrc}/clang "$out" 32 cp -r ${monorepoSrc}/mlir "$out" 33 cp -r ${monorepoSrc}/third-party "$out" 34 chmod -R +w $out/llvm 35 ''; 36 37 patches = [ 38 ./dummy_target_19+.patch 39 ]; 40 patchFlags = [ "-p2" ]; 41 42 sourceRoot = "${finalAttrs.src.name}/flang"; 43 44 buildInputs = [ 45 libffi 46 libxml2 47 libllvm 48 libclang 49 mlir 50 ]; 51 nativeBuildInputs = [ 52 cmake 53 clang 54 ninja 55 python3 56 libllvm.dev 57 mlir.dev 58 ]; 59 preConfigure = '' 60 ls -l ${libllvm.dev}/lib/cmake/llvm/LLVMConfig.cmake 61 ls -l ${libclang.dev}/lib/cmake/clang/ClangConfig.cmake 62 ls -l ${mlir.dev}/lib/cmake/mlir/MLIRConfig.cmake 63 ''; 64 cmakeFlags = [ 65 (lib.cmakeBool "CMAKE_VERBOSE_MAKEFILE" true) 66 (lib.cmakeFeature "LLVM_DIR" "${libllvm.dev}/lib/cmake/llvm") 67 (lib.cmakeFeature "LLVM_TOOLS_BINARY_DIR" "${buildLlvmTools.tblgen}/bin/") 68 (lib.cmakeFeature "LLVM_EXTERNAL_LIT" "${buildLlvmTools.tblgen}/bin/llvm-lit") 69 (lib.cmakeFeature "CLANG_DIR" "${libclang.dev}/lib/cmake/clang") 70 (lib.cmakeFeature "MLIR_DIR" "${mlir.dev}/lib/cmake/mlir") 71 (lib.cmakeFeature "MLIR_TABLEGEN_EXE" "${buildLlvmTools.tblgen}/bin/mlir-tblgen") 72 (lib.cmakeFeature "MLIR_TABLEGEN_TARGET" "MLIR-TBLGen") 73 (lib.cmakeBool "LLVM_BUILD_EXAMPLES" false) 74 (lib.cmakeBool "LLVM_ENABLE_PLUGINS" false) 75 (lib.cmakeBool "FLANG_STANDALONE_BUILD" true) 76 (lib.cmakeBool "LLVM_INCLUDE_EXAMPLES" false) 77 (lib.cmakeBool "FLANG_INCLUDE_TESTS" false) 78 79 ] 80 ++ devExtraCmakeFlags; 81 82 postUnpack = '' 83 chmod -R u+w -- $sourceRoot/.. 84 ''; 85 86 outputs = [ "out" ]; 87 requiredSystemFeatures = [ "big-parallel" ]; 88 meta = llvm_meta // { 89 homepage = "https://flang.llvm.org/"; 90 description = "LLVM-based Fortran frontend"; 91 license = lib.licenses.ncsa; 92 mainProgram = "flang"; 93 maintainers = with lib.maintainers; [ acture ]; 94 }; 95})