diff --git a/0001-fedora-link-against-libclang-cpp.patch b/0001-fedora-link-against-libclang-cpp.patch new file mode 100644 index 0000000000000000000000000000000000000000..43224be5bce97facb4106cbc103887301951bc5d --- /dev/null +++ b/0001-fedora-link-against-libclang-cpp.patch @@ -0,0 +1,84 @@ +From 5271cef46c00f144875396947a090ceed803cd2d Mon Sep 17 00:00:00 2001 +From: Nikita Popov +Date: Thu, 4 Aug 2022 12:56:34 +0200 +Subject: [PATCH] Link against libclang-cpp + +--- + flang/lib/Frontend/CMakeLists.txt | 5 ++--- + flang/lib/FrontendTool/CMakeLists.txt | 5 ++--- + flang/tools/flang-driver/CMakeLists.txt | 3 +-- + flang/unittests/Frontend/CMakeLists.txt | 2 +- + 4 files changed, 6 insertions(+), 9 deletions(-) + +diff --git a/flang/lib/Frontend/CMakeLists.txt b/flang/lib/Frontend/CMakeLists.txt +index 96769c707f10..3e311875c8c6 100644 +--- a/flang/lib/Frontend/CMakeLists.txt ++++ b/flang/lib/Frontend/CMakeLists.txt +@@ -12,7 +12,7 @@ add_flang_library(flangFrontend + TextDiagnostic.cpp + + DEPENDS +- clangBasic ++ clang-cpp + FIRBuilder + FIRDialect + FIRSupport +@@ -26,8 +26,7 @@ add_flang_library(flangFrontend + FortranEvaluate + FortranCommon + FortranLower +- clangBasic +- clangDriver ++ clang-cpp + FIRDialect + FIRSupport + FIRBuilder +diff --git a/flang/lib/FrontendTool/CMakeLists.txt b/flang/lib/FrontendTool/CMakeLists.txt +index 0753313d7342..7482f74dba51 100644 +--- a/flang/lib/FrontendTool/CMakeLists.txt ++++ b/flang/lib/FrontendTool/CMakeLists.txt +@@ -5,12 +5,11 @@ add_flang_library(flangFrontendTool + # This makes sure that the MLIR dependencies of flangFrontend (which are + # transitively required here) are generated before this target is build. + flangFrontend +- clangBasic ++ clang-cpp + + LINK_LIBS + flangFrontend +- clangBasic +- clangDriver ++ clang-cpp + MLIRPass + + LINK_COMPONENTS +diff --git a/flang/tools/flang-driver/CMakeLists.txt b/flang/tools/flang-driver/CMakeLists.txt +index 94c8ce6d58f1..c11b677a62e9 100644 +--- a/flang/tools/flang-driver/CMakeLists.txt ++++ b/flang/tools/flang-driver/CMakeLists.txt +@@ -31,8 +31,7 @@ target_link_libraries(flang-new + + clang_target_link_libraries(flang-new + PRIVATE +- clangDriver +- clangBasic ++ clang-cpp + ) + + option(FLANG_PLUGIN_SUPPORT "Build Flang with plugin support." ON) +diff --git a/flang/unittests/Frontend/CMakeLists.txt b/flang/unittests/Frontend/CMakeLists.txt +index 739412c7888c..a4430dc2c59a 100644 +--- a/flang/unittests/Frontend/CMakeLists.txt ++++ b/flang/unittests/Frontend/CMakeLists.txt +@@ -9,7 +9,7 @@ add_flang_unittest(FlangFrontendTests + + target_link_libraries(FlangFrontendTests + PRIVATE +- clangBasic ++ clang-cpp + flangFrontend + flangFrontendTool + FortranParser +-- +2.37.1 + diff --git a/flang-15.0.7.src.tar.xz b/flang-15.0.7.src.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..36746a14b92430fd86df0c8ebcc3e3d6f2a4bcf4 Binary files /dev/null and b/flang-15.0.7.src.tar.xz differ diff --git a/flang-15.0.7.src.tar.xz.sig b/flang-15.0.7.src.tar.xz.sig new file mode 100644 index 0000000000000000000000000000000000000000..97c05f69044cb7b0410dbb48e33623bf2e35f643 Binary files /dev/null and b/flang-15.0.7.src.tar.xz.sig differ diff --git a/flang.spec b/flang.spec new file mode 100644 index 0000000000000000000000000000000000000000..6aad7dcf0979117ae9f284b66d6821c75aa550ec --- /dev/null +++ b/flang.spec @@ -0,0 +1,153 @@ +%bcond_without sys_llvm +%bcond_without check + +%global maj_ver 15 +%global min_ver 0 +%global patch_ver 7 + +%if %{with sys_llvm} +%global pkg_name flang +%global bin_suffix %{nil} +%global install_prefix %{_prefix} +%else +%global pkg_name flang%{maj_ver} +%global bin_suffix -%{maj_ver} +%global install_prefix %{_libdir}/%{name} +%endif + +%global install_bindir %{install_prefix}/bin +%global install_bindir %{install_prefix}/bin +%global install_includedir %{install_prefix}/include +%global install_libdir %{install_prefix}/%{_lib} + +%global flang_version %{maj_ver}.%{min_ver}.%{patch_ver} +%global flang_srcdir flang-%{flang_version}.src + +# Disable LTO as this causes crash if gcc lto enabled. +%global _lto_cflags %{nil} +%global _smp_mflags -j20 +%global max_link_jobs 2 + +Name: %{pkg_name} +Version: %{flang_version} +Release: 1 +Summary: a Fortran language front-end designed for integration with LLVM + +License: Apache-2.0 WITH LLVM-exception +URL: https://flang.llvm.org +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{flang_version}/%{flang_srcdir}.tar.xz +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{flang_version}/%{flang_srcdir}.tar.xz.sig + + +Patch1: 0001-fedora-link-against-libclang-cpp.patch + +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: zlib-devel +BuildRequires: llvm-devel = %{version} +BuildRequires: llvm-test = %{version} +BuildRequires: llvm-googletest = %{version} +BuildRequires: mlir-devel = %{version} +BuildRequires: ninja-build +BuildRequires: python3-lit >= 12.0.0 +BuildRequires: clang-tools-extra = %{version} + +# The new flang drive requires clang-devel +BuildRequires: clang-devel = %{version} +BuildRequires: clang = %{version} + +%description + +Flang is a ground-up implementation of a Fortran front end written in modern +C++. + +%package devel +Summary: Flang header files +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +Flang header files. + +%prep +%autosetup -n %{flang_srcdir} -p2 + +%build +mkdir -p _build +cd _build + +%cmake .. -GNinja \ + -DMLIR_TABLEGEN_EXE=%{install_bindir}/mlir-tblgen \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_SKIP_RPATH:BOOL=ON \ + -DCLANG_DIR=%{install_libdir}/cmake/clang \ + -DLLVM_MAIN_SRC_DIR=%{install_prefix}/src \ + -DBUILD_SHARED_LIBS:BOOL=ON \ + -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ + -DLLVM_PARALLEL_LINK_JOBS=%{max_link_jobs} \ + -DLLVM_EXTERNAL_LIT=%{_bindir}/lit \ + -DCMAKE_PREFIX_PATH=%{install_libdir}/cmake/llvm/ \ +\ +%if 0%{?__isa_bits} == 64 + -DLLVM_LIBDIR_SUFFIX=64 +%else + -DLLVM_LIBDIR_SUFFIX= +%endif + +export LD_LIBRARY_PATH=%{_builddir}/%{flang_srcdir}/_build/lib +%ninja_build + + +%install +%ninja_install -C _build + +# this is a test binary +rm -f %{buildroot}%{_bindir}/f18-parse-demo + + +%check + +%files +%license LICENSE.TXT +%{install_bindir}/tco +%{install_bindir}/bbc +%{install_bindir}/flang-to-external-fc +%{install_bindir}/fir-opt +%{install_bindir}/flang-new +%{install_libdir}/libFortranLower.so.%{maj_ver}* +%{install_libdir}/libFortranSemantics.so.%{maj_ver}* +%{install_libdir}/libFortranCommon.so.%{maj_ver}* +%{install_libdir}/libFortranRuntime.so.%{maj_ver}* +%{install_libdir}/libFortranDecimal.so.%{maj_ver}* +%{install_libdir}/libFortranEvaluate.so.%{maj_ver}* +%{install_libdir}/libFortranParser.so.%{maj_ver}* +%{install_libdir}/libflangFrontend.so.%{maj_ver}* +%{install_libdir}/libflangFrontendTool.so.%{maj_ver}* +%{install_libdir}/libFIRBuilder.so.%{maj_ver}* +%{install_libdir}/libFIRCodeGen.so.%{maj_ver}* +%{install_libdir}/libFIRDialect.so.%{maj_ver}* +%{install_libdir}/libFIRSupport.so.%{maj_ver}* +%{install_libdir}/libFIRTransforms.so.%{maj_ver}* + +%files devel +%{install_libdir}/libFortranLower.so +%{install_libdir}/libFortranParser.so +%{install_libdir}/libFortranCommon.so +%{install_libdir}/libFortranSemantics.so +%{install_libdir}/libFortran_main.a +%{install_libdir}/libFIRBuilder.so +%{install_libdir}/libFIRCodeGen.so +%{install_libdir}/libFIRDialect.so +%{install_libdir}/libFIRSupport.so +%{install_libdir}/libFIRTransforms.so +%{install_libdir}/libFortranDecimal.so +%{install_libdir}/libFortranRuntime.so +%{install_libdir}/libFortranEvaluate.so +%{install_libdir}/libflangFrontend.so +%{install_libdir}/libflangFrontendTool.so +%{install_includedir}/flang +%{install_libdir}/cmake/ + +%changelog +* Mon Aug 28 2023 cf-zhao - 15.0.7-1 +- Initial version.