diff options
author | parabola94 <heavybaby5000@toki.waseda.jp> | 2025-08-14 06:43:53 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-13 21:43:53 +0000 |
commit | cc58ca5370fb4866874ef19f6fcb914edfef24c2 (patch) | |
tree | 317bfa33a0b5b12615450287c99579d24ff4b344 | |
parent | 0425cc95bd5b76db4c6924dcf6e93edc33ea850a (diff) | |
download | llvm-cc58ca5370fb4866874ef19f6fcb914edfef24c2.zip llvm-cc58ca5370fb4866874ef19f6fcb914edfef24c2.tar.gz llvm-cc58ca5370fb4866874ef19f6fcb914edfef24c2.tar.bz2 |
[flang/flang-rt] Add -isysroot flag only to tests really requiring (#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
-rw-r--r-- | flang-rt/test/Driver/ctofortran.f90 | 4 | ||||
-rw-r--r-- | flang-rt/test/Runtime/no-cpp-dep.c | 2 | ||||
-rw-r--r-- | flang-rt/test/lit.cfg.py | 7 | ||||
-rw-r--r-- | flang/CMakeLists.txt | 5 | ||||
-rw-r--r-- | flang/test/Integration/iso-fortran-binding.cpp | 24 | ||||
-rw-r--r-- | flang/test/lit.cfg.py | 9 | ||||
-rw-r--r-- | flang/test/lit.site.cfg.py.in | 2 |
7 files changed, 22 insertions, 31 deletions
diff --git a/flang-rt/test/Driver/ctofortran.f90 b/flang-rt/test/Driver/ctofortran.f90 index e385e79..4979a4e 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 c98678b6..006f44b 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 032aeef..27f4666 100644 --- a/flang-rt/test/lit.cfg.py +++ b/flang-rt/test/lit.cfg.py @@ -62,25 +62,24 @@ config.test_source_root = os.path.dirname(__file__) # 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/CMakeLists.txt b/flang/CMakeLists.txt index 1d16c33..c01eb56 100644 --- a/flang/CMakeLists.txt +++ b/flang/CMakeLists.txt @@ -495,6 +495,9 @@ endif() include(AddFlang) include(FlangCommon) +include(GetClangResourceDir) + +get_clang_resource_dir(HEADER_BINARY_DIR PREFIX ${LLVM_LIBRARY_OUTPUT_INTDIR}/.. SUBDIR include) if (FLANG_INCLUDE_TESTS) add_compile_definitions(FLANG_INCLUDE_TESTS=1) @@ -575,8 +578,6 @@ endif() # Put ISO_Fortran_binding.h into the include files of the build area now # so that we can run tests before installing -include(GetClangResourceDir) -get_clang_resource_dir(HEADER_BINARY_DIR PREFIX ${LLVM_LIBRARY_OUTPUT_INTDIR}/.. SUBDIR include) configure_file( ${FLANG_SOURCE_DIR}/include/flang/ISO_Fortran_binding.h ${HEADER_BINARY_DIR}/ISO_Fortran_binding.h COPYONLY) diff --git a/flang/test/Integration/iso-fortran-binding.cpp b/flang/test/Integration/iso-fortran-binding.cpp index aaafd7c..36ae35d 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%flang_include %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/lit.cfg.py b/flang/test/lit.cfg.py index 7eb5767..9d81aa4 100644 --- a/flang/test/lit.cfg.py +++ b/flang/test/lit.cfg.py @@ -118,10 +118,11 @@ if config.flang_standalone_build: "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 @@ tools = [ ToolSubst( "%flang", command=FindTool("flang"), - extra_args=isysroot_flag, unresolved="fatal", ), ToolSubst( @@ -172,6 +172,11 @@ if config.flang_standalone_build: else: llvm_config.add_tool_substitutions(tools, config.llvm_tools_dir) +llvm_config.use_clang(required=False) + +# Clang may need the include path for ISO_fortran_binding.h. +config.substitutions.append(("%flang_include", config.flang_headers_dir)) + # Enable libpgmath testing result = lit_config.params.get("LIBPGMATH") if result: diff --git a/flang/test/lit.site.cfg.py.in b/flang/test/lit.site.cfg.py.in index ae514401..cc1f4fa 100644 --- a/flang/test/lit.site.cfg.py.in +++ b/flang/test/lit.site.cfg.py.in @@ -6,6 +6,7 @@ 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@" @@ -13,6 +14,7 @@ config.errc_messages = "@LLVM_LIT_ERRC_MESSAGES@" 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@" +config.flang_headers_dir = "@HEADER_BINARY_DIR@" config.flang_llvm_tools_dir = "@CMAKE_BINARY_DIR@/bin" config.flang_test_triple = "@FLANG_TEST_TARGET_TRIPLE@" config.flang_examples = @LLVM_BUILD_EXAMPLES@ |