! Check that lit configuration works by checking the compiler version
-! RUN: %f18 -V 2>&1 | FileCheck -check-prefix=VERSION %s
! VERSION-NOT:{{![[:space:]]}}
! VERSION:{{[[:space:]]}}
-! VERSION-SAME:f18 compiler (under development)
+! VERSION-SAME:f18 compiler (under development), version {{[1-9][0-9]*.[0-9]*.[0-9]*}}
! VERSION-EMPTY:
+
+! RUN: %f18 -V 2>&1 | FileCheck -check-prefix=VERSION %s
+! RUN: %f18 -v 2>&1 | FileCheck -check-prefix=VERSION %s
+! RUN: %f18 --version 2>&1 | FileCheck -check-prefix=VERSION %s
--- /dev/null
+! Check that the macros that give the version number are set properly
+
+!CHECK: flang_major = {{[1-9][0-9]*$}}
+!CHECK: flang_minor = {{[0-9]+$}}
+!CHECK: flang_patchlevel = {{[0-9]+$}}
+!RUN: %f18 -E %s | FileCheck --ignore-case %s
+
+
+integer, parameter :: flang_major = __flang_major__
+integer, parameter :: flang_minor = __flang_minor__
+integer, parameter :: flang_patchlevel = __flang_patchlevel__
)
set(include ${FLANG_BINARY_DIR}/include/flang)
-
-set(include ${FLANG_BINARY_DIR}/include/flang)
+target_include_directories(f18
+ PRIVATE
+ ${CMAKE_CURRENT_BINARY_DIR}
+)
# Create module files directly from the top-level module source directory
foreach(filename ${MODULES})
# The flang script to be installed needs a different path to the headers.
set(FLANG_INTRINSIC_MODULES_DIR ${CMAKE_INSTALL_PREFIX}/include/flang)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/flang.sh.in ${FLANG_BINARY_DIR}/bin/flang-install.sh @ONLY)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/f18_version.h.in ${CMAKE_CURRENT_BINARY_DIR}/f18_version.h @ONLY)
install(PROGRAMS ${FLANG_BINARY_DIR}/bin/flang-install.sh DESTINATION bin RENAME flang PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE)
#include <string>
#include <vector>
+#include "f18_version.h"
+
static std::list<std::string> argList(int argc, char *const argv[]) {
std::list<std::string> result;
for (int j = 0; j < argc; ++j) {
Exec(argv, driver.verbose);
}
+int printVersion() {
+ llvm::errs() << "\nf18 compiler (under development), version "
+ << __FLANG_MAJOR__ << "." << __FLANG_MINOR__ << "."
+ << __FLANG_PATCHLEVEL__ << "\n";
+ return exitStatus;
+}
+
int main(int argc, char *const argv[]) {
atexit(CleanUpAtExit);
options.predefinitions.emplace_back("__F18_MAJOR__", "1");
options.predefinitions.emplace_back("__F18_MINOR__", "1");
options.predefinitions.emplace_back("__F18_PATCHLEVEL__", "1");
+ options.predefinitions.emplace_back("__flang__", __FLANG__);
+ options.predefinitions.emplace_back("__flang_major__", __FLANG_MAJOR__);
+ options.predefinitions.emplace_back("__flang_minor__", __FLANG_MINOR__);
+ options.predefinitions.emplace_back(
+ "__flang_patchlevel__", __FLANG_PATCHLEVEL__);
#if __x86_64__
options.predefinitions.emplace_back("__x86_64__", "1");
#endif
<< "Unrecognised options are passed through to the external compiler\n"
<< "set by F18_FC (see defaults).\n";
return exitStatus;
- } else if (arg == "-V") {
- llvm::errs() << "\nf18 compiler (under development)\n";
- return exitStatus;
+ } else if (arg == "-V" || arg == "--version") {
+ return printVersion();
} else {
driver.F18_FCArgs.push_back(arg);
if (arg == "-v") {
- driver.verbose = true;
+ if (args.size() > 1) {
+ driver.verbose = true;
+ } else {
+ return printVersion();
+ }
} else if (arg == "-I") {
driver.F18_FCArgs.push_back(args.front());
driver.searchDirectories.push_back(args.front());