diff --git a/flang/test/Driver/intrinsic_module_path.f90 b/flang/test/Driver/intrinsic_module_path.f90 index 3f11512289a63..1105220b84568 100644 --- a/flang/test/Driver/intrinsic_module_path.f90 +++ b/flang/test/Driver/intrinsic_module_path.f90 @@ -3,20 +3,11 @@ ! With the option GIVEN, the module with the same name is PREPENDED, and considered over the ! default one, causing a CHECKSUM error. -! REQUIRES: new-flang-driver - - -!-------------------------- -! FLANG DRIVER (flang-new) -!-------------------------- -! RUN: %flang-new -fsyntax-only %s 2>&1 | FileCheck %s --allow-empty --check-prefix=WITHOUT -! RUN: not %flang-new -fsyntax-only -fintrinsic-modules-path %S/Inputs/ %s 2>&1 | FileCheck %s --check-prefix=GIVEN - !----------------------------------------- ! FRONTEND FLANG DRIVER (flang-new -fc1) !----------------------------------------- -! RUN: %flang-new -fc1 %s 2>&1 | FileCheck %s --allow-empty --check-prefix=WITHOUT -! RUN: not %flang-new -fc1 -fintrinsic-modules-path %S/Inputs/ %s 2>&1 | FileCheck %s --check-prefix=GIVEN +! RUN: %flang_fc1 -fsyntax-only %s 2>&1 | FileCheck %s --allow-empty --check-prefix=WITHOUT +! RUN: not %flang_fc1 -fsyntax-only -fintrinsic-modules-path %S/Inputs/ %s 2>&1 | FileCheck %s --check-prefix=GIVEN !----------------------------------------- ! EXPECTED OUTPUT WITHOUT diff --git a/flang/test/lit.cfg.py b/flang/test/lit.cfg.py index 4392da680e7f9..7c99d6f7636d5 100644 --- a/flang/test/lit.cfg.py +++ b/flang/test/lit.cfg.py @@ -64,7 +64,6 @@ # the build directory holding that tool. tools = [ ToolSubst('%f18', command=FindTool('f18'), - extra_args=["-intrinsic-module-directory "+config.flang_intrinsic_modules_dir], unresolved='fatal') ] @@ -75,10 +74,8 @@ extra_args=['-fc1'], unresolved='fatal')) else: tools.append(ToolSubst('%flang', command=FindTool('f18'), - extra_args=["-intrinsic-module-directory "+config.flang_intrinsic_modules_dir], unresolved='fatal')) tools.append(ToolSubst('%flang_fc1', command=FindTool('f18'), - extra_args=["-intrinsic-module-directory "+config.flang_intrinsic_modules_dir], unresolved='fatal')) if config.flang_standalone_build: diff --git a/flang/tools/f18/f18.cpp b/flang/tools/f18/f18.cpp index e22905a86a926..9c5e6c9802fbc 100644 --- a/flang/tools/f18/f18.cpp +++ b/flang/tools/f18/f18.cpp @@ -27,6 +27,7 @@ #include "flang/Version.inc" #include "llvm/Support/Errno.h" #include "llvm/Support/FileSystem.h" +#include "llvm/Support/FileUtilities.h" #include "llvm/Support/Program.h" #include "llvm/Support/Signals.h" #include "llvm/Support/raw_ostream.h" @@ -395,6 +396,16 @@ int printVersion() { return exitStatus; } +// Generate the path to look for intrinsic modules +static std::string getIntrinsicDir() { + // TODO: Find a system independent API + llvm::SmallString<128> driverPath; + driverPath.assign(llvm::sys::fs::getMainExecutable(nullptr, nullptr)); + llvm::sys::path::remove_filename(driverPath); + driverPath.append("/../include/flang/"); + return std::string(driverPath); +} + int main(int argc, char *const argv[]) { atexit(CleanUpAtExit); @@ -431,6 +442,10 @@ int main(int argc, char *const argv[]) { std::vector fortranSources, otherSources; bool anyFiles{false}; + // Add the default intrinsic module directory to the list of search + // directories + driver.searchDirectories.push_back(getIntrinsicDir()); + while (!args.empty()) { std::string arg{std::move(args.front())}; auto dot{arg.rfind(".")}; @@ -603,8 +618,11 @@ int main(int argc, char *const argv[]) { } else if (arg == "-module-suffix") { driver.moduleFileSuffix = args.front(); args.pop_front(); - } else if (arg == "-intrinsic-module-directory") { - driver.searchDirectories.push_back(args.front()); + } else if (arg == "-intrinsic-module-directory" || + arg == "-fintrinsic-modules-path") { + // prepend to the list of search directories + driver.searchDirectories.insert( + driver.searchDirectories.begin(), args.front()); args.pop_front(); } else if (arg == "-futf-8") { driver.encoding = Fortran::parser::Encoding::UTF_8; diff --git a/flang/tools/f18/flang b/flang/tools/f18/flang index 8dda836c86c41..81fac7b283459 100644 --- a/flang/tools/f18/flang +++ b/flang/tools/f18/flang @@ -8,7 +8,7 @@ #===------------------------------------------------------------------------===# wd=$(cd $(dirname "$0")/.. && pwd) -opts="-module-suffix .f18.mod -intrinsic-module-directory $wd/include/flang" +opts="-module-suffix .f18.mod " if ! $wd/bin/f18 $opts "$@" then status=$? echo flang: in $PWD, f18 failed with exit status $status: $wd/bin/f18 $opts "$@" >&2