[flang] [llvm] [flang/flang-rt] Add -isysroot flag only to tests really requiring (PR #152914)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Aug 10 05:59:14 PDT 2025
https://github.com/parabola94 created https://github.com/llvm/llvm-project/pull/152914
-isysroot flag was added to all tests, but it makes Driver/darwin-version.f90 failed.
In fact, only a few tests regarding interoperability with C need -isysroot flag to search for headers and libraries. So, -isysroot flag is now eliminated from the substitution `%flang`, and a new substitution `%isysroot` has been introduced.
Moreover, Integration/iso-fortran-binding.cpp invokes clang++ via a shell script, which makes it hard to add -isysroot flag. So, it is refactored.
Fixes #150765
>From 156b6b0a115dcfa8b241ee59855fd33776847609 Mon Sep 17 00:00:00 2001
From: parabola94 <heavybaby5000 at toki.waseda.jp>
Date: Sat, 9 Aug 2025 15:09:22 +0900
Subject: [PATCH] [flang/flang-rt] Add -isysroot flag only to tests really
requiring
-isysroot flag was added to all tests, but it makes
Driver/darwin-version.f90 failed.
In fact, only a few tests need -isysroot flag. So, -isysroot flag
is now eliminated from the substitution `%flang`, and a new substitution
`%isysroot` has been introduced.
Moreover, Integration/iso-fortran-binding.cpp invokes clang++
via a shell script, which makes it hard to add -isysroot flag.
So, it is refactored.
---
flang-rt/test/Driver/ctofortran.f90 | 4 ++--
flang-rt/test/Runtime/no-cpp-dep.c | 2 +-
flang-rt/test/lit.cfg.py | 7 +++---
.../test/Integration/iso-fortran-binding.cpp | 24 ++++---------------
flang/test/Integration/lit.local.cfg | 13 ++++++++++
flang/test/lit.cfg.py | 4 ++--
flang/test/lit.site.cfg.py.in | 2 ++
7 files changed, 27 insertions(+), 29 deletions(-)
create mode 100644 flang/test/Integration/lit.local.cfg
diff --git a/flang-rt/test/Driver/ctofortran.f90 b/flang-rt/test/Driver/ctofortran.f90
index e385e7974cdc1..4979a4e68da59 100644
--- a/flang-rt/test/Driver/ctofortran.f90
+++ b/flang-rt/test/Driver/ctofortran.f90
@@ -2,8 +2,8 @@
! UNSUPPORTED: offload-cuda
! RUN: split-file %s %t
-! RUN: %clang -I"%include/flang" -c %t/cfile.c -o %t/cfile.o
-! RUN: %flang -L"%libdir" %t/ffile.f90 %t/cfile.o -o %t/ctofortran
+! RUN: %clang %isysroot -I"%include/flang" -c %t/cfile.c -o %t/cfile.o
+! RUN: %flang %isysroot -L"%libdir" %t/ffile.f90 %t/cfile.o -o %t/ctofortran
! RUN: env LD_LIBRARY_PATH="$LD_LIBRARY_PATH:%libdir" %t/ctofortran | FileCheck %s
!--- ffile.f90
diff --git a/flang-rt/test/Runtime/no-cpp-dep.c b/flang-rt/test/Runtime/no-cpp-dep.c
index c98678b69aa14..006f44b4aff7a 100644
--- a/flang-rt/test/Runtime/no-cpp-dep.c
+++ b/flang-rt/test/Runtime/no-cpp-dep.c
@@ -7,7 +7,7 @@ UNSUPPORTED: system-windows
UNSUPPORTED: offload-cuda
RUN: %if system-aix %{ export OBJECT_MODE=64 %}
-RUN: %cc -std=c99 %s -I%include -L"%libdir" -lflang_rt.runtime -lm \
+RUN: %cc -std=c99 %s %isysroot -I%include -L"%libdir" -lflang_rt.runtime -lm \
RUN: %if system-aix %{-lpthread %}
RUN: rm a.out
*/
diff --git a/flang-rt/test/lit.cfg.py b/flang-rt/test/lit.cfg.py
index 032aeef2d5bf6..27f4666a4a42a 100644
--- a/flang-rt/test/lit.cfg.py
+++ b/flang-rt/test/lit.cfg.py
@@ -62,25 +62,24 @@ def shjoin(args, sep=" "):
# lit writes a '.lit_test_times.txt' file into this directory.
config.test_exec_root = config.flang_rt_binary_test_dir
-# On MacOS, -isysroot is needed to build binaries.
+# On MacOS, some tests need -isysroot to build binaries.
isysroot_flag = []
if config.osx_sysroot:
isysroot_flag = ["-isysroot", config.osx_sysroot]
+config.substitutions.append(("%isysroot", " ".join(isysroot_flag)))
tools = [
ToolSubst(
"%flang",
command=config.flang,
- extra_args=isysroot_flag,
unresolved="fatal",
),
ToolSubst(
"%clang",
command=FindTool("clang"),
- extra_args=isysroot_flag,
unresolved="fatal",
),
- ToolSubst("%cc", command=config.cc, extra_args=isysroot_flag, unresolved="fatal"),
+ ToolSubst("%cc", command=config.cc, unresolved="fatal"),
]
llvm_config.add_tool_substitutions(tools)
diff --git a/flang/test/Integration/iso-fortran-binding.cpp b/flang/test/Integration/iso-fortran-binding.cpp
index aaafd7cccd07d..95a151914bbc2 100644
--- a/flang/test/Integration/iso-fortran-binding.cpp
+++ b/flang/test/Integration/iso-fortran-binding.cpp
@@ -1,9 +1,9 @@
+// REQUIRES: clang
// UNSUPPORTED: system-windows
-// RUN: split-file %s %t
-// RUN: chmod +x %t/runtest.sh
-// RUN: %t/runtest.sh %t %t/cppfile.cpp %flang | FileCheck %s
+// RUN: rm -rf %t && mkdir %t
+// RUN: %clangxx %isysroot -I %include/flang %s -o %t/a.out
+// RUN: %t/a.out | FileCheck %s
-//--- cppfile.cpp
extern "C" {
#include "ISO_Fortran_binding.h"
}
@@ -15,19 +15,3 @@ int main() {
}
// CHECK: PASS
-// clang-format off
-//--- runtest.sh
-#!/bin/bash
-TMPDIR=$1
-CPPFILE=$2
-FLANG=$3
-BINDIR=`dirname $FLANG`
-CPPCOMP=$BINDIR/clang++
-if [ -x $CPPCOMP ]
-then
- $CPPCOMP $CPPFILE -o $TMPDIR/a.out
- $TMPDIR/a.out # should print "PASS"
-else
- # No clang compiler, just pass by default
- echo "PASS"
-fi
diff --git a/flang/test/Integration/lit.local.cfg b/flang/test/Integration/lit.local.cfg
new file mode 100644
index 0000000000000..71db41d9112e4
--- /dev/null
+++ b/flang/test/Integration/lit.local.cfg
@@ -0,0 +1,13 @@
+from lit.llvm import llvm_config
+
+llvm_config.use_clang(required=False)
+if llvm_config.config.clang:
+ config.available_features.add("clang")
+ clangxx = next((subst for subst in llvm_config.config.substitutions
+ if "clangxx" in subst[0]), None)
+ config.substitutions.append(clangxx)
+
+# Include path for C headers that define Flang's Fortran ABI.
+config.substitutions.append(
+ ("%include", os.path.join(config.flang_source_dir, "include"))
+)
diff --git a/flang/test/lit.cfg.py b/flang/test/lit.cfg.py
index 7eb57670ac767..2c5d2e7271e21 100644
--- a/flang/test/lit.cfg.py
+++ b/flang/test/lit.cfg.py
@@ -118,10 +118,11 @@
"PATH", config.flang_llvm_tools_dir, append_path=True
)
-# On MacOS, -isysroot is needed to build binaries.
+# On MacOS, some tests need -isysroot to build binaries.
isysroot_flag = []
if config.osx_sysroot:
isysroot_flag = ["-isysroot", config.osx_sysroot]
+config.substitutions.append(("%isysroot", " ".join(isysroot_flag)))
# Check for DEFAULT_SYSROOT, because when it is set -isysroot has no effect.
if config.default_sysroot:
@@ -133,7 +134,6 @@
ToolSubst(
"%flang",
command=FindTool("flang"),
- extra_args=isysroot_flag,
unresolved="fatal",
),
ToolSubst(
diff --git a/flang/test/lit.site.cfg.py.in b/flang/test/lit.site.cfg.py.in
index ae5144010bc8b..2a016c733be59 100644
--- a/flang/test/lit.site.cfg.py.in
+++ b/flang/test/lit.site.cfg.py.in
@@ -6,10 +6,12 @@ import lit.util
config.llvm_tools_dir = lit_config.substitute("@LLVM_TOOLS_DIR@")
config.llvm_shlib_dir = lit_config.substitute(path(r"@SHLIBDIR@"))
config.llvm_plugin_ext = "@LLVM_PLUGIN_EXT@"
+config.host_triple = "@LLVM_HOST_TRIPLE@"
config.target_triple = "@LLVM_TARGET_TRIPLE@"
config.llvm_target_triple_env = "@LLVM_TARGET_TRIPLE_ENV@"
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
config.errc_messages = "@LLVM_LIT_ERRC_MESSAGES@"
+config.flang_source_dir = "@FLANG_SOURCE_DIR@"
config.flang_obj_root = "@FLANG_BINARY_DIR@"
config.flang_tools_dir = lit_config.substitute("@FLANG_TOOLS_DIR@")
config.flang_intrinsic_modules_dir = "@FLANG_INTRINSIC_MODULES_DIR@"
More information about the llvm-commits
mailing list