--- /dev/null
+/*
+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;
+}
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:
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