diff --git a/programming/language/fortran/component.xml b/programming/language/fortran/component.xml new file mode 100644 index 0000000000..ec54fcc887 --- /dev/null +++ b/programming/language/fortran/component.xml @@ -0,0 +1,3 @@ + + programming.language.fortran + diff --git a/programming/language/fortran/flang/actions.py b/programming/language/fortran/flang/actions.py new file mode 100755 index 0000000000..30db7c8092 --- /dev/null +++ b/programming/language/fortran/flang/actions.py @@ -0,0 +1,52 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import cmaketools +from pisi.actionsapi import get + +WorkDir = "llvm-project-%s/flang" + +NoStrip = ["/usr"] + +def setup(): + shelltools.makedirs("build") + shelltools.cd("build") + + if get.buildTYPE() == "emul32": + shelltools.export("CC", "clang") + shelltools.export("CXX" "clang++") + else: + shelltools.export("CC", "clang -m32") + shelltools.export("CXX" "clang++ -m32") + + pisitools.ldflags.add("-fuse-ld=lld") + + options = "-DBUILD_SHARED_LIBS=ON \ + -DFLANG_INCLUDE_DOCS=ON \ + -DLLVM_LINK_LLVM_DYLIB=ON \ + -DLLVM_EXTERNAL_LIT=../../llvm/utils/lit/lit.py \ + " + if get.buildTYPE() == "emul32": + options += "-DLLVM_LIBDIR_SUFFIX=32 \ + -DCMAKE_INSTALL_PREFIX=/emul32 + " + cmaketools.configure(options) + +def build(): + shelltools.cd("build") + autotools.make() + +def install(): + shelltools.cd("build") + autotools.rawInstall("DESTDIR=%s" %get.installDIR()) + if get.buildTYPE() == "emul32" : + pisitools.domove("/emul32/lib32/", "/usr/") + pisitools.removeDir("/emul32") + + pisitools.dodoc("LICENSE.TXT", "README.md") diff --git a/programming/language/fortran/flang/files/shared.patch b/programming/language/fortran/flang/files/shared.patch new file mode 100644 index 0000000000..c8dabf4862 --- /dev/null +++ b/programming/language/fortran/flang/files/shared.patch @@ -0,0 +1,12 @@ +diff -Naur flang-11.0.0rc2.src/CMakeLists.txt flang-11.0.0rc2.src.cmake/CMakeLists.txt +--- flang-11.0.0rc2.src/CMakeLists.txt 2020-08-20 16:24:59.000000000 +0000 ++++ flang-11.0.0rc2.src.cmake/CMakeLists.txt 2020-09-03 13:44:24.226776260 +0000 +@@ -199,8 +199,6 @@ + # Always build tco tool + set(LLVM_BUILD_TOOLS ON) + message(STATUS "Linking driver with FIR and LLVM") +- llvm_map_components_to_libnames(LLVM_COMMON_LIBS support) +- message(STATUS "LLVM libraries: ${LLVM_COMMON_LIBS}") + endif() + + # Add Flang-centric modules to cmake path. diff --git a/programming/language/fortran/flang/files/token-sequence.patch b/programming/language/fortran/flang/files/token-sequence.patch new file mode 100644 index 0000000000..8f4577e662 --- /dev/null +++ b/programming/language/fortran/flang/files/token-sequence.patch @@ -0,0 +1,13 @@ +diff -Naur flang-11.0.0rc2.src.orig/lib/Parser/token-sequence.cpp flang-11.0.0rc2.src/lib/Parser/token-sequence.cpp +--- flang-11.0.0rc2.src.orig/lib/Parser/token-sequence.cpp 2020-09-03 12:01:15.278223312 +0000 ++++ flang-11.0.0rc2.src/lib/Parser/token-sequence.cpp 2020-09-03 12:51:40.082870848 +0000 +@@ -134,7 +134,8 @@ + std::size_t atToken{0}; + for (std::size_t j{0}; j < chars;) { + std::size_t nextStart{atToken + 1 < tokens ? start_[++atToken] : chars}; +- char *p{&char_[j]}, *limit{&char_[nextStart]}; ++ char *p{&char_[j]}; ++ char const* limit{char_.data() + nextStart}; + j = nextStart; + if (IsDecimalDigit(*p)) { + while (p < limit && IsDecimalDigit(*p)) { diff --git a/programming/language/fortran/flang/llvm-project-11.0.0.tar.xz b/programming/language/fortran/flang/llvm-project-11.0.0.tar.xz new file mode 100644 index 0000000000..ab93d39fed Binary files /dev/null and b/programming/language/fortran/flang/llvm-project-11.0.0.tar.xz differ diff --git a/programming/language/fortran/flang/pspec.xml b/programming/language/fortran/flang/pspec.xml new file mode 100755 index 0000000000..c8e3403398 --- /dev/null +++ b/programming/language/fortran/flang/pspec.xml @@ -0,0 +1,75 @@ + + + + + flang + https://llvm.org/ + + Idris Kalp + idriskalp@gmail.com + + MIT + library + LLVM Fortran compiler + A Fortran language front-end designed for integration with LLVM + https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/llvm-project-11.0.0.tar.xz + + llvm + llvm-libs + llvm-clang + lld + cmake + python3-sphinx + + + shared.patch + token-sequence.patch + + + + + flang + + llvm-libs + + + /usr/bin + /usr/lib + /usr/share/doc + + + + + flang-32bit + flang 32bit shared libraries. + emul32 + emul32 + + llvm-32bit + + + /usr/lib32 + + + + + flang-devel + Development files for flang + + flang + + + /usr/include + + + + + + 2020-11-12 + 11.0.0 + First release + Idris Kalp + idriskalp@gmail.com + + +