[llvm-branch-commits] [clang] [flang] [lld] [llvm] [Flang] LLVM_ENABLE_RUNTIMES=flang-rt (PR #110217)
Michael Kruse via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Feb 7 06:23:11 PST 2025
Meinersbur wrote:
@h-vetinari Thanks you the complete paths in the internal FLANG_RT_* variables. Unfortunately it was not sufficient for me to understand what is going on. This is what I can conclude:
1. You are using a runtimes build (`cmake <llvm-project-source-dir>/runtimes -DLLVM_ENABLE_RUNTIMES=flang-rt -DLLVM_BINARY_DIR=<llvm-project-binary-dir>`), separate from the build of LLVM/Flang.
2. Source dir is `/home/conda/feedstock_root/build_artifacts/flang-split_1738098969735/work`
3. Build directory of the runtimes build is `/home/conda/feedstock_root/build_artifacts/flang-split_1738098969735/work/build`
4. Install dir (CMAKE_INSTALL_PREFIX) is ... `$PREFIX`
Ideas for causes for it not working:
* You are using the same build dir for LLVM+Flang and runtimes. Should be rejected by CMake, but still. Use some other location than `/home/conda/feedstock_root/build_artifacts/flang-split_1738098969735/work` to build LLVM+Flang.
* You are invoking Flang from the build-dir. libflang_rt.runtime.a is located in a different build dirs.
* You are invoking the system's Flang, not the just-built Flang.
* You are using two different CMAKE_INSTALL_PREFIX for LLVM+Flang and runtimes.
Since the back-and-forth isn't effective, I ask you to send a reproducer that works without conda. If you cannot reproduce it without conda, I am assuming the problem is with conda.
Here is my reproducer:
```sh
#! /bin/bash
set -xeuo pipefail
# Change to the location of the root llvm-project source directory
LLVM_SOURCE_DIR="${HOME}/src/llvm-project-flangrt"
ROOTDIR=`realpath --no-symlinks $(dirname $0)`
LLVM_BUILD_DIR="${ROOTDIR}/build/llvm_flang"
RUNTIMES_BUILD_DIR="${ROOTDIR}/build/runtimes"
INSTALL_PREFIX="${ROOTDIR}/install"
mkdir -p "${LLVM_BUILD_DIR}"
cmake -S "${LLVM_SOURCE_DIR}/llvm" -B "${LLVM_BUILD_DIR}" \
-GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_PROJECTS='clang;mlir;flang' \
-DFLANG_INCLUDE_RUNTIME=OFF \
-DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}"
(cd "${LLVM_BUILD_DIR}" && ninja all install)
mkdir -p "${RUNTIMES_BUILD_DIR}"
cmake -S "${LLVM_SOURCE_DIR}/runtimes" -B "${RUNTIMES_BUILD_DIR}" \
-GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_BINARY_DIR="${LLVM_BUILD_DIR}" \
-DLLVM_ENABLE_RUNTIMES='flang-rt' \
-DCMAKE_Fortran_COMPILER="${INSTALL_PREFIX}/bin/flang" \
-DCMAKE_Fortran_COMPILER_WORKS=ON \
-DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}"
(cd "${RUNTIMES_BUILD_DIR}" && ninja install)
find "${LLVM_BUILD_DIR}" -name "libflang_rt.*"
find "${RUNTIMES_BUILD_DIR}" -name "libflang_rt.*"
find "${INSTALL_PREFIX}" -name "libflang_rt.*"
"${INSTALL_PREFIX}/bin/flang" -v "${LLVM_SOURCE_DIR}/flang-rt/test/Driver/exec.f90" -o "${ROOTDIR}/exec"
"${ROOTDIR}/exec"
```
Please try it out in your environment, change according what you need for your build, and send be the output starting with the `find` lines:
```
[...]
[ 98%/102.489s :: 0->1->70 (of 71)] Install the project...
-- Install configuration: "Release"
-- Installing: /home/meinersbur/build/llvm-project-flangrt/install/lib/clang/21/lib/x86_64-unknown-linux-gnu/libflang_rt.runtime.a
+ find /home/meinersbur/build/llvm-project-flangrt/build/llvm_flang -name 'libflang_rt.*'
+ find /home/meinersbur/build/llvm-project-flangrt/build/runtimes -name 'libflang_rt.*'
/home/meinersbur/build/llvm-project-flangrt/build/runtimes/flang-rt/lib/libflang_rt.runtime.a
+ find /home/meinersbur/build/llvm-project-flangrt/install -name 'libflang_rt.*'
/home/meinersbur/build/llvm-project-flangrt/install/lib/clang/21/lib/x86_64-unknown-linux-gnu/libflang_rt.runtime.a
+ /home/meinersbur/build/llvm-project-flangrt/install/bin/flang -v /home/meinersbur/src/llvm-project-flangrt/flang-rt/test/Driver/exec.f90 -o /home/meinersbur/build/llvm-project-flangrt/exec
flang version 21.0.0git (/home/meinersbur/src/llvm-project-flangrt/clang 0c759c1051b51a1f4dde3bec2f8ae8ea9dd9842e)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/meinersbur/build/llvm-project-flangrt/install/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/13
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/13
Candidate multilib: .;@m64
Selected multilib: .;@m64
Found CUDA installation: /usr/lib/cuda, version 12.0
"/home/meinersbur/build/llvm-project-flangrt/install/bin/flang" -fc1 -triple x86_64-unknown-linux-gnu -emit-obj -fcolor-diagnostics -mrelocation-model pic -pic-level 2 -pic-is-pie -target-cpu x86-64 -resource-dir /home/meinersbur/build/llvm-project-flangrt/install/lib/clang/21 -mframe-pointer=all -o /tmp/meinersbur/exec-e14f69.o -x f95-cpp-input /home/meinersbur/src/llvm-project-flangrt/flang-rt/test/Driver/exec.f90
"/usr/bin/ld" -z relro --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -pie -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /home/meinersbur/build/llvm-project-flangrt/exec /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/home/meinersbur/build/llvm-project-flangrt/install/lib/clang/21/lib/x86_64-unknown-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib /tmp/meinersbur/exec-e14f69.o -L/home/meinersbur/build/llvm-project-flangrt/install/lib -lflang_rt.runtime -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /lib/x86_64-linux-gnu/crtn.o
+ /home/meinersbur/build/llvm-project-flangrt/exec
Hello, World!
```
https://github.com/llvm/llvm-project/pull/110217
More information about the llvm-branch-commits
mailing list