qmake: add default path and version detection for ghs toolchain
Change-Id: Ic35f3e25078909e212864218835663989f647aae Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Nikola Velinov <nvelinov@ghs.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
This commit is contained in:
parent
32b4cb1b54
commit
89f2a731cf
@ -1144,6 +1144,12 @@ defineReplace(qtConfOutputPostProcess_publicPro) {
|
||||
"QT_ICC_MINOR_VERSION = $$format_number($$replace(QMAKE_ICC_VER, "(..)(..)", "\\2"))" \
|
||||
"QT_ICC_PATCH_VERSION = $$QMAKE_ICC_UPDATE_VER"
|
||||
}
|
||||
!isEmpty(QMAKE_GHS_VERSION) {
|
||||
output += \
|
||||
"QT_GHS_MAJOR_VERSION = $$replace(QMAKE_GHS_VERSION, "(.*)(.)(.)", "\\1")" \
|
||||
"QT_GHS_MINOR_VERSION = $$replace(QMAKE_GHS_VERSION, "(.*)(.)(.)", "\\2")" \
|
||||
"QT_GHS_PATCH_VERSION = $$replace(QMAKE_GHS_VERSION, "(.*)(.)(.)", "\\3")"
|
||||
}
|
||||
|
||||
output += "QT_EDITION = $$config.input.qt_edition"
|
||||
!contains(config.input.qt_edition, "(OpenSource|Preview)") {
|
||||
|
@ -27,3 +27,6 @@ QMAKE_GCC_MAJOR_VERSION = __GNUC__
|
||||
QMAKE_GCC_MINOR_VERSION = __GNUC_MINOR__
|
||||
QMAKE_GCC_PATCH_VERSION = __GNUC_PATCHLEVEL__
|
||||
#endif
|
||||
#ifdef __ghs__
|
||||
QMAKE_GHS_VERSION = __GHS_VERSION_NUMBER
|
||||
#endif
|
||||
|
@ -142,6 +142,29 @@ isEmpty($${target_prefix}.INCDIRS) {
|
||||
!integrity: \
|
||||
error("failed to parse default search paths from compiler output")
|
||||
QMAKE_DEFAULT_LIBDIRS = $$unique(QMAKE_DEFAULT_LIBDIRS)
|
||||
} else: ghs {
|
||||
cmd = $$QMAKE_CXX $$QMAKE_CXXFLAGS -$${LITERAL_HASH} -o /tmp/fake_output /tmp/fake_input.cpp
|
||||
output = $$system("$$cmd", blob, ec)
|
||||
!equals(ec, 0): qtCompilerErrror($$QMAKE_CXX, $$output)
|
||||
output ~= s/\\\\\\n {8}//g
|
||||
output = $$split(output, $$escape_expand(\\n))
|
||||
for (line, output) {
|
||||
contains(line, "^[^ ]+/ecom[^ ]+ .* /tmp/fake_input\\.cpp") {
|
||||
for (parameter, $$list($$line)) {
|
||||
contains(parameter, "^(-I|--include_no_mmd=|--sys_include=).*") {
|
||||
parameter ~= s/^(-I|--include_no_mmd=|--sys_include=)//
|
||||
QMAKE_DEFAULT_INCDIRS += $$clean_path($$parameter)
|
||||
}
|
||||
}
|
||||
} else: contains(line, "^[^ ]+/elxr .*") {
|
||||
for (parameter, $$list($$line)) {
|
||||
contains(parameter, "^-L.*") {
|
||||
parameter ~= s/^-L//
|
||||
QMAKE_DEFAULT_LIBDIRS += $$clean_path($$parameter)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else: msvc {
|
||||
# This doesn't differentiate between host and target,
|
||||
# but neither do the compilers.
|
||||
@ -199,11 +222,11 @@ isEmpty($${target_prefix}.COMPILER_MACROS) {
|
||||
} else {
|
||||
vars = $$qtVariablesFromMSVC($$QMAKE_CXX)
|
||||
}
|
||||
} else: gcc {
|
||||
} else: gcc|ghs {
|
||||
vars = $$qtVariablesFromGCC($$QMAKE_CXX)
|
||||
}
|
||||
for (v, vars) {
|
||||
contains(v, $${LITERAL_HASH}.*)|contains(v, " *"): next()
|
||||
!contains(v, "[A-Z_]+ = .*"): next()
|
||||
# Set both <varname> for the outer scope ...
|
||||
eval($$v)
|
||||
v ~= s/ .*//
|
||||
@ -245,6 +268,8 @@ QMAKE_COMPILER_DEFINES += __cplusplus=$$QT_COMPILER_STDCXX
|
||||
__GNUC__=$$QMAKE_GCC_MAJOR_VERSION \
|
||||
__GNUC_MINOR__=$$QMAKE_GCC_MINOR_VERSION \
|
||||
__GNUC_PATCHLEVEL__=$$QMAKE_GCC_PATCH_VERSION
|
||||
!isEmpty(QMAKE_GHS_VERSION): \
|
||||
QMAKE_COMPILER_DEFINES += __ghs__ __GHS_VERSION_NUMBER=$$QMAKE_GHS_VERSION
|
||||
|
||||
QMAKE_CFLAGS += $$QMAKE_CFLAGS_MSVC_COMPAT
|
||||
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_MSVC_COMPAT
|
||||
|
Loading…
Reference in New Issue
Block a user