diff --git a/flang/test/Runtime/no-cpp-dep.c b/flang/test/Runtime/no-cpp-dep.c new file mode 100644 --- /dev/null +++ b/flang/test/Runtime/no-cpp-dep.c @@ -0,0 +1,19 @@ +// 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 --- a/flang/test/lit.cfg.py +++ b/flang/test/lit.cfg.py @@ -75,6 +75,19 @@ 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: + config.available_features.add('c-compiler') + tools.append(ToolSubst('%cc', command=config.cc, unresolved='ignore')) + tools.append(ToolSubst('%libruntime', + command=os.path.join(config.flang_lib_dir, 'libFortranRuntime.a'), + unresolved='warn')) + tools.append(ToolSubst('%runtimeincludes', + command=os.path.join(config.flang_src_dir, 'runtime'), + unresolved='warn')) + 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 --- a/flang/test/lit.site.cfg.py.in +++ b/flang/test/lit.site.cfg.py.in @@ -9,8 +9,10 @@ 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