[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: sscalpone, AlexisPerry, richard.barton.arm, tskeith

Differential Revision: https://reviews.llvm.org/D84334
This commit is contained in:
Camille Coti 2020-08-10 16:16:35 +01:00 committed by Richard Barton
parent b34ec5969f
commit 89a9db438f
5 changed files with 48 additions and 6 deletions

View File

@ -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

View File

@ -0,0 +1,12 @@
! Check that the macros that give the verion 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__

View File

@ -80,5 +80,6 @@ endif()
# 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)

View File

@ -38,6 +38,8 @@
#include <unistd.h>
#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) {
@ -391,6 +393,13 @@ void Link(std::vector<std::string> &liblist, std::vector<std::string> &objects,
}
}
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);
@ -412,6 +421,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
@ -661,13 +675,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());

View File

@ -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_