[flang-commits] [flang] b11c527 - [flang] Version information in flang/f18
Richard Barton via flang-commits
flang-commits at lists.llvm.org
Tue Sep 1 11:05:57 PDT 2020
Author: Camille Coti
Date: 2020-09-01T19:05:43+01:00
New Revision: b11c52781635bd871abd6d932cfd5dcd6f311903
URL: https://github.com/llvm/llvm-project/commit/b11c52781635bd871abd6d932cfd5dcd6f311903
DIFF: https://github.com/llvm/llvm-project/commit/b11c52781635bd871abd6d932cfd5dcd6f311903.diff
LOG: [flang] Version information in flang/f18
Fixed some version information in flang/f18:
- fixed the behavior of the -v switch: this flag enables verbosity with used with arguments, but just displays the version when used alone (related to this bug: https://bugs.llvm.org/show_bug.cgi?id=46017)
- added __FLANG, __FLANG_MAJOR__, __FLANG_MINOR__ and __FLANG_PATCHLEVEL__ (similar to their __F18* counterparts) for compatibility purpose
Reviewed By: AlexisPerry, richard.barton.arm, tskeith
Differential Revision: https://reviews.llvm.org/D84334
Added:
flang/test/Preprocessing/compiler_defined_macros.F90
flang/tools/f18/f18_version.h.in
Modified:
flang/test/Driver/version_test.f90
flang/tools/f18/CMakeLists.txt
flang/tools/f18/f18.cpp
Removed:
################################################################################
diff --git a/flang/test/Driver/version_test.f90 b/flang/test/Driver/version_test.f90
index 08ea35ba49ea..79be3617cf4b 100644
--- a/flang/test/Driver/version_test.f90
+++ b/flang/test/Driver/version_test.f90
@@ -1,7 +1,10 @@
! 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
diff --git a/flang/test/Preprocessing/compiler_defined_macros.F90 b/flang/test/Preprocessing/compiler_defined_macros.F90
new file mode 100644
index 000000000000..ba20f6d39622
--- /dev/null
+++ b/flang/test/Preprocessing/compiler_defined_macros.F90
@@ -0,0 +1,11 @@
+! 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__
diff --git a/flang/tools/f18/CMakeLists.txt b/flang/tools/f18/CMakeLists.txt
index 6103117123ee..b92733d8374e 100644
--- a/flang/tools/f18/CMakeLists.txt
+++ b/flang/tools/f18/CMakeLists.txt
@@ -28,8 +28,10 @@ set(MODULES
)
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})
@@ -80,5 +82,6 @@ endif()
# The flang script to be installed needs a
diff erent 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)
diff --git a/flang/tools/f18/f18.cpp b/flang/tools/f18/f18.cpp
index 732dc07202aa..156c2337d0c8 100644
--- a/flang/tools/f18/f18.cpp
+++ b/flang/tools/f18/f18.cpp
@@ -37,6 +37,8 @@
#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) {
@@ -375,6 +377,13 @@ void Link(std::vector<std::string> &liblist, std::vector<std::string> &objects,
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);
@@ -396,6 +405,11 @@ int main(int argc, char *const argv[]) {
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
@@ -645,13 +659,16 @@ int main(int argc, char *const argv[]) {
<< "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());
diff --git a/flang/tools/f18/f18_version.h.in b/flang/tools/f18/f18_version.h.in
new file mode 100644
index 000000000000..0c8d5227cd00
--- /dev/null
+++ b/flang/tools/f18/f18_version.h.in
@@ -0,0 +1,9 @@
+#ifndef _F18_H_
+#define _F18_H_
+
+#define __FLANG__ "1"
+#define __FLANG_MAJOR__ "@LLVM_VERSION_MAJOR@"
+#define __FLANG_MINOR__ "@LLVM_VERSION_MINOR@"
+#define __FLANG_PATCHLEVEL__ "@LLVM_VERSION_PATCH@"
+
+#endif // _F18_H_
More information about the flang-commits
mailing list