Loading pkgs/development/compilers/llvm/common/default.nix +5 −0 Original line number Diff line number Diff line Loading @@ -488,6 +488,11 @@ let { libclc = callPackage ./libclc { }; } // lib.optionalAttrs (lib.versionAtLeast metadata.release_version "20") { flang = callPackage ./flang { mlir = tools.mlir; }; } ); libraries = lib.makeExtensible ( Loading pkgs/development/compilers/llvm/common/flang/default.nix 0 → 100644 +95 −0 Original line number Diff line number Diff line { lib, llvm_meta, monorepoSrc, release_version, runCommand, cmake, libxml2, libllvm, ninja, libffi, libclang, stdenv, clang, mlir, version, python3, buildLlvmTools, devExtraCmakeFlags ? [ ], }: stdenv.mkDerivation (finalAttrs: { pname = "flang"; inherit version; src = runCommand "flang-src-${version}" { inherit (monorepoSrc) passthru; } '' mkdir -p "$out" cp -r ${monorepoSrc}/${finalAttrs.pname} "$out" cp -r ${monorepoSrc}/cmake "$out" cp -r ${monorepoSrc}/llvm "$out" cp -r ${monorepoSrc}/clang "$out" cp -r ${monorepoSrc}/mlir "$out" cp -r ${monorepoSrc}/third-party "$out" chmod -R +w $out/llvm ''; patches = [ ./dummy_target_19+.patch ]; patchFlags = [ "-p2" ]; sourceRoot = "${finalAttrs.src.name}/flang"; buildInputs = [ libffi libxml2 libllvm libclang mlir ]; nativeBuildInputs = [ cmake clang ninja python3 libllvm.dev mlir.dev ]; preConfigure = '' ls -l ${libllvm.dev}/lib/cmake/llvm/LLVMConfig.cmake ls -l ${libclang.dev}/lib/cmake/clang/ClangConfig.cmake ls -l ${mlir.dev}/lib/cmake/mlir/MLIRConfig.cmake ''; cmakeFlags = [ (lib.cmakeBool "CMAKE_VERBOSE_MAKEFILE" true) (lib.cmakeFeature "LLVM_DIR" "${libllvm.dev}/lib/cmake/llvm") (lib.cmakeFeature "LLVM_TOOLS_BINARY_DIR" "${buildLlvmTools.tblgen}/bin/") (lib.cmakeFeature "LLVM_EXTERNAL_LIT" "${buildLlvmTools.tblgen}/bin/llvm-lit") (lib.cmakeFeature "CLANG_DIR" "${libclang.dev}/lib/cmake/clang") (lib.cmakeFeature "MLIR_DIR" "${mlir.dev}/lib/cmake/mlir") (lib.cmakeFeature "MLIR_TABLEGEN_EXE" "${buildLlvmTools.tblgen}/bin/mlir-tblgen") (lib.cmakeFeature "MLIR_TABLEGEN_TARGET" "MLIR-TBLGen") (lib.cmakeBool "LLVM_BUILD_EXAMPLES" false) (lib.cmakeBool "LLVM_ENABLE_PLUGINS" false) (lib.cmakeBool "FLANG_STANDALONE_BUILD" true) (lib.cmakeBool "LLVM_INCLUDE_EXAMPLES" false) (lib.cmakeBool "FLANG_INCLUDE_TESTS" false) ] ++ devExtraCmakeFlags; postUnpack = '' chmod -R u+w -- $sourceRoot/.. ''; outputs = [ "out" ]; requiredSystemFeatures = [ "big-parallel" ]; meta = llvm_meta // { homepage = "https://flang.llvm.org/"; description = "LLVM-based Fortran frontend"; license = lib.licenses.ncsa; mainProgram = "flang"; maintainers = with lib.maintainers; [ acture ]; }; }) pkgs/development/compilers/llvm/common/flang/dummy_target_19+.patch 0 → 100644 +27 −0 Original line number Diff line number Diff line diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt index 070c39eb6e9a..168c97524943 100644 --- a/flang/CMakeLists.txt +++ b/flang/CMakeLists.txt @@ -1,6 +1,22 @@ cmake_minimum_required(VERSION 3.20.0) set(LLVM_SUBPROJECT_TITLE "Flang") +# Patch: define dummy mlir-tblgen target for TableGen.cmake +if(DEFINED MLIR_TABLEGEN_EXE AND NOT TARGET mlir-tblgen) + add_executable(mlir-tblgen IMPORTED GLOBAL) + set_target_properties(mlir-tblgen PROPERTIES + IMPORTED_LOCATION "${MLIR_TABLEGEN_EXE}" + ) +endif() + +if(DEFINED MLIR_TABLEGEN_EXE AND NOT TARGET MLIR-TBLGen) + add_executable(MLIR-TBLGen IMPORTED GLOBAL) + set_target_properties(MLIR-TBLGen PROPERTIES + IMPORTED_LOCATION "${MLIR_TABLEGEN_EXE}" + ) +endif() + + if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS) set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake) endif() pkgs/top-level/all-packages.nix +5 −0 Original line number Diff line number Diff line Loading @@ -5580,6 +5580,7 @@ with pkgs; mlir_16 = llvmPackages_16.mlir; mlir_17 = llvmPackages_17.mlir; flang = llvmPackages_20.flang; libclc = llvmPackages.libclc; libllvm = llvmPackages.libllvm; Loading Loading @@ -5617,6 +5618,7 @@ with pkgs; lldb_20 = llvmPackages_20.lldb; llvm_20 = llvmPackages_20.llvm; bolt_20 = llvmPackages_20.bolt; flang_20 = llvmPackages_20.flang; llvmPackages_21 = llvmPackagesSet."21"; clang_21 = llvmPackages_21.clang; Loading @@ -5624,6 +5626,7 @@ with pkgs; lldb_21 = llvmPackages_21.lldb; llvm_21 = llvmPackages_21.llvm; bolt_21 = llvmPackages_21.bolt; flang_21 = llvmPackages_21.flang; mkLLVMPackages = llvmPackagesSet.mkPackage; }) Loading @@ -5650,12 +5653,14 @@ with pkgs; lldb_20 llvm_20 bolt_20 flang_20 llvmPackages_21 clang_21 lld_21 lldb_21 llvm_21 bolt_21 flang_21 mkLLVMPackages ; Loading Loading
pkgs/development/compilers/llvm/common/default.nix +5 −0 Original line number Diff line number Diff line Loading @@ -488,6 +488,11 @@ let { libclc = callPackage ./libclc { }; } // lib.optionalAttrs (lib.versionAtLeast metadata.release_version "20") { flang = callPackage ./flang { mlir = tools.mlir; }; } ); libraries = lib.makeExtensible ( Loading
pkgs/development/compilers/llvm/common/flang/default.nix 0 → 100644 +95 −0 Original line number Diff line number Diff line { lib, llvm_meta, monorepoSrc, release_version, runCommand, cmake, libxml2, libllvm, ninja, libffi, libclang, stdenv, clang, mlir, version, python3, buildLlvmTools, devExtraCmakeFlags ? [ ], }: stdenv.mkDerivation (finalAttrs: { pname = "flang"; inherit version; src = runCommand "flang-src-${version}" { inherit (monorepoSrc) passthru; } '' mkdir -p "$out" cp -r ${monorepoSrc}/${finalAttrs.pname} "$out" cp -r ${monorepoSrc}/cmake "$out" cp -r ${monorepoSrc}/llvm "$out" cp -r ${monorepoSrc}/clang "$out" cp -r ${monorepoSrc}/mlir "$out" cp -r ${monorepoSrc}/third-party "$out" chmod -R +w $out/llvm ''; patches = [ ./dummy_target_19+.patch ]; patchFlags = [ "-p2" ]; sourceRoot = "${finalAttrs.src.name}/flang"; buildInputs = [ libffi libxml2 libllvm libclang mlir ]; nativeBuildInputs = [ cmake clang ninja python3 libllvm.dev mlir.dev ]; preConfigure = '' ls -l ${libllvm.dev}/lib/cmake/llvm/LLVMConfig.cmake ls -l ${libclang.dev}/lib/cmake/clang/ClangConfig.cmake ls -l ${mlir.dev}/lib/cmake/mlir/MLIRConfig.cmake ''; cmakeFlags = [ (lib.cmakeBool "CMAKE_VERBOSE_MAKEFILE" true) (lib.cmakeFeature "LLVM_DIR" "${libllvm.dev}/lib/cmake/llvm") (lib.cmakeFeature "LLVM_TOOLS_BINARY_DIR" "${buildLlvmTools.tblgen}/bin/") (lib.cmakeFeature "LLVM_EXTERNAL_LIT" "${buildLlvmTools.tblgen}/bin/llvm-lit") (lib.cmakeFeature "CLANG_DIR" "${libclang.dev}/lib/cmake/clang") (lib.cmakeFeature "MLIR_DIR" "${mlir.dev}/lib/cmake/mlir") (lib.cmakeFeature "MLIR_TABLEGEN_EXE" "${buildLlvmTools.tblgen}/bin/mlir-tblgen") (lib.cmakeFeature "MLIR_TABLEGEN_TARGET" "MLIR-TBLGen") (lib.cmakeBool "LLVM_BUILD_EXAMPLES" false) (lib.cmakeBool "LLVM_ENABLE_PLUGINS" false) (lib.cmakeBool "FLANG_STANDALONE_BUILD" true) (lib.cmakeBool "LLVM_INCLUDE_EXAMPLES" false) (lib.cmakeBool "FLANG_INCLUDE_TESTS" false) ] ++ devExtraCmakeFlags; postUnpack = '' chmod -R u+w -- $sourceRoot/.. ''; outputs = [ "out" ]; requiredSystemFeatures = [ "big-parallel" ]; meta = llvm_meta // { homepage = "https://flang.llvm.org/"; description = "LLVM-based Fortran frontend"; license = lib.licenses.ncsa; mainProgram = "flang"; maintainers = with lib.maintainers; [ acture ]; }; })
pkgs/development/compilers/llvm/common/flang/dummy_target_19+.patch 0 → 100644 +27 −0 Original line number Diff line number Diff line diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt index 070c39eb6e9a..168c97524943 100644 --- a/flang/CMakeLists.txt +++ b/flang/CMakeLists.txt @@ -1,6 +1,22 @@ cmake_minimum_required(VERSION 3.20.0) set(LLVM_SUBPROJECT_TITLE "Flang") +# Patch: define dummy mlir-tblgen target for TableGen.cmake +if(DEFINED MLIR_TABLEGEN_EXE AND NOT TARGET mlir-tblgen) + add_executable(mlir-tblgen IMPORTED GLOBAL) + set_target_properties(mlir-tblgen PROPERTIES + IMPORTED_LOCATION "${MLIR_TABLEGEN_EXE}" + ) +endif() + +if(DEFINED MLIR_TABLEGEN_EXE AND NOT TARGET MLIR-TBLGen) + add_executable(MLIR-TBLGen IMPORTED GLOBAL) + set_target_properties(MLIR-TBLGen PROPERTIES + IMPORTED_LOCATION "${MLIR_TABLEGEN_EXE}" + ) +endif() + + if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS) set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake) endif()
pkgs/top-level/all-packages.nix +5 −0 Original line number Diff line number Diff line Loading @@ -5580,6 +5580,7 @@ with pkgs; mlir_16 = llvmPackages_16.mlir; mlir_17 = llvmPackages_17.mlir; flang = llvmPackages_20.flang; libclc = llvmPackages.libclc; libllvm = llvmPackages.libllvm; Loading Loading @@ -5617,6 +5618,7 @@ with pkgs; lldb_20 = llvmPackages_20.lldb; llvm_20 = llvmPackages_20.llvm; bolt_20 = llvmPackages_20.bolt; flang_20 = llvmPackages_20.flang; llvmPackages_21 = llvmPackagesSet."21"; clang_21 = llvmPackages_21.clang; Loading @@ -5624,6 +5626,7 @@ with pkgs; lldb_21 = llvmPackages_21.lldb; llvm_21 = llvmPackages_21.llvm; bolt_21 = llvmPackages_21.bolt; flang_21 = llvmPackages_21.flang; mkLLVMPackages = llvmPackagesSet.mkPackage; }) Loading @@ -5650,12 +5653,14 @@ with pkgs; lldb_20 llvm_20 bolt_20 flang_20 llvmPackages_21 clang_21 lld_21 lldb_21 llvm_21 bolt_21 flang_21 mkLLVMPackages ; Loading