diff --git a/flang/test/Runtime/no-cpp-dep.c b/flang/test/Runtime/no-cpp-dep.c new file mode 100644 index 0000000000000..a35a52d91ac39 --- /dev/null +++ b/flang/test/Runtime/no-cpp-dep.c @@ -0,0 +1,23 @@ +/* +This test makes sure that flang's runtime does not depend on the C++ runtime +library. It tries to link this simple file against libFortranRuntime.a with +a C compiler. + +REQUIRES: c-compiler + +RUN: %cc -std=c90 %s -I%runtimeincludes %libruntime -o /dev/null +*/ + +#include "entry-names.h" + +/* +Manually add declarations for the runtime functions that we want to make sure +we're testing. We can't include any headers directly since they likely contain +C++ code that would explode here. +*/ +double RTNAME(CpuTime)(); + +int main() { + double x = RTNAME(CpuTime)(); + return x; +} diff --git a/flang/test/lit.cfg.py b/flang/test/lit.cfg.py index 4109400087e53..374047e6c5755 100644 --- a/flang/test/lit.cfg.py +++ b/flang/test/lit.cfg.py @@ -75,6 +75,21 @@ tools.append(ToolSubst('%flang_fc1', command=FindTool('f18'), unresolved='fatal')) +# Define some variables to help us test that the flang runtime doesn't depend on +# the C++ runtime libraries. For this we need a C compiler. If for some reason +# we don't have one, we can just disable the test. +if config.cc: + libruntime = os.path.join(config.flang_lib_dir, 'libFortranRuntime.a') + includes = os.path.join(config.flang_src_dir, 'runtime') + + if os.path.isfile(libruntime) and os.path.isdir(includes): + config.available_features.add('c-compiler') + tools.append(ToolSubst('%cc', command=config.cc, unresolved='fatal')) + tools.append(ToolSubst('%libruntime', command=libruntime, + unresolved='fatal')) + tools.append(ToolSubst('%runtimeincludes', command=includes, + unresolved='fatal')) + if config.flang_standalone_build: llvm_config.add_tool_substitutions(tools, [config.flang_llvm_tools_dir]) else: diff --git a/flang/test/lit.site.cfg.py.in b/flang/test/lit.site.cfg.py.in index 17822b0b7d2e4..bcafd8ac43023 100644 --- a/flang/test/lit.site.cfg.py.in +++ b/flang/test/lit.site.cfg.py.in @@ -9,8 +9,10 @@ config.flang_src_dir = "@FLANG_SOURCE_DIR@" config.flang_tools_dir = "@FLANG_TOOLS_DIR@" config.flang_intrinsic_modules_dir = "@FLANG_INTRINSIC_MODULES_DIR@" config.flang_llvm_tools_dir = "@CMAKE_BINARY_DIR@/bin" +config.flang_lib_dir = "@CMAKE_BINARY_DIR@/lib" config.python_executable = "@PYTHON_EXECUTABLE@" config.flang_standalone_build = @FLANG_STANDALONE_BUILD@ +config.cc = "@CMAKE_C_COMPILER@" # Control the regression test for flang-new driver import lit.util