diff options
Diffstat (limited to 'mkspecs/features/toolchain.prf')
-rw-r--r-- | mkspecs/features/toolchain.prf | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/mkspecs/features/toolchain.prf b/mkspecs/features/toolchain.prf index fdf3d1cdd3..4ecfb8d889 100644 --- a/mkspecs/features/toolchain.prf +++ b/mkspecs/features/toolchain.prf @@ -34,7 +34,9 @@ isEmpty($${target_prefix}.INCDIRS) { # # Get default include and library paths from compiler # - gcc { + wasm { + # wasm compiler does not work here, just use defaults + } else: gcc { cmd_suffix = "<$$QMAKE_SYSTEM_NULL_DEVICE >$$QMAKE_SYSTEM_NULL_DEVICE" equals(QMAKE_HOST.os, Windows): \ cmd_prefix = "set LC_ALL=C&" @@ -142,6 +144,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. @@ -168,14 +193,14 @@ isEmpty($${target_prefix}.INCDIRS) { # defineReplace(qtVariablesFromMSVC) { - ret = $$system("$$1 -nologo -E $$2 $$system_quote($$PWD/data/macros.cpp) <NUL 2>NUL", lines, ec) + ret = $$system("$$1 -nologo -E $$2 $$system_quote($$PWD/data/macros.cpp) 2>NUL", lines, ec) !equals(ec, 0): qtCompilerErrror($$1, $$ret) return($$ret) } defineReplace(qtVariablesFromGCC) { ret = $$system("$$1 -E $$system_quote($$PWD/data/macros.cpp) \ - <$$QMAKE_SYSTEM_NULL_DEVICE 2>$$QMAKE_SYSTEM_NULL_DEVICE", lines, ec) + 2>$$QMAKE_SYSTEM_NULL_DEVICE", lines, ec) !equals(ec, 0): qtCompilerErrror($$1, $$ret) return($$ret) } @@ -199,11 +224,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 +270,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 |