! 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
# the build directory holding that tool.
tools = [
ToolSubst('%f18', command=FindTool('f18'),
- extra_args=["-intrinsic-module-directory "+config.flang_intrinsic_modules_dir],
unresolved='fatal')
]
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:
#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"
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);
std::vector<std::string> 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(".")};
} 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;
#===------------------------------------------------------------------------===#
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