diff options
author | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2018-08-15 10:44:49 +0200 |
---|---|---|
committer | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2018-08-16 06:36:44 +0000 |
commit | 0bc721fa046e5ce320c7bc88bf08bb4c37ae8839 (patch) | |
tree | 91240fd24b7985b281c4ae5f48657135a878b79e | |
parent | ec5e70eedadc659aeea7458e1989fded8f9bd03e (diff) |
Clang: Improve LLVM_CXXFLAGS
Remove MSVC-specific flags and split the string into
separate flags.
Change-Id: Idce7c2e988651df670c0119245dc6f6c89461c41
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
-rw-r--r-- | src/shared/clang/clang_installation.pri | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/shared/clang/clang_installation.pri b/src/shared/clang/clang_installation.pri index 4baed36668..6c0ffd96c5 100644 --- a/src/shared/clang/clang_installation.pri +++ b/src/shared/clang/clang_installation.pri @@ -80,6 +80,37 @@ defineReplace(findClangLibInLibDir) { } } +defineReplace(splitFlags) { + flags = $$1 + inside_quotes = 0 + starting_substr = $$str_member($$flags, 0, 0) + equals(starting_substr, "\"") { + inside_quotes = 1 + } + + flags_temp = $$split(flags, "\"") + + for (flag, flags_temp) { + equals(inside_quotes, 0) { + inside_quotes = 1 + flag ~= s,-I\S*, + flag ~= s,/D\S*, + flag ~= s,/Z\S*, + result += $$split(flag, " ") + } else { + inside_quotes = 0 + starting_substr = $$str_member($$flag, 0, 0) + !equals(starting_substr, "/") { + starting_substr = $$str_member($$flag, 0, 1) + !equals(starting_substr, "-I") { + result += "\"$$flag\"" + } + } + } + } + return($$result) +} + CLANGTOOLING_LIBS=-lclangTooling -lclangIndex -lclangFrontend -lclangParse -lclangSerialization \ -lclangSema -lclangEdit -lclangAnalysis -lclangDriver -lclangDynamicASTMatchers \ -lclangASTMatchers -lclangToolingCore -lclangAST -lclangLex -lclangBasic @@ -180,6 +211,8 @@ isEmpty(LLVM_VERSION) { LLVM_CXXFLAGS ~= s,/O\S*, LLVM_CXXFLAGS ~= s,/W4, LLVM_CXXFLAGS ~= s,/EH\S*, + LLVM_CXXFLAGS ~= s,/M\S*, + LLVM_CXXFLAGS ~= s,/G\S*, LLVM_CXXFLAGS ~= s,-Werror=date-time, LLVM_CXXFLAGS ~= s,-Wcovered-switch-default, LLVM_CXXFLAGS ~= s,-fPIC, @@ -188,6 +221,8 @@ isEmpty(LLVM_VERSION) { # split-dwarf needs objcopy which does not work via icecc out-of-the-box LLVM_CXXFLAGS ~= s,-gsplit-dwarf, + LLVM_CXXFLAGS = $$splitFlags($$LLVM_CXXFLAGS) + LLVM_IS_COMPILED_WITH_RTTI = $$system($$llvm_config --has-rtti, lines) unix:!disable_external_rpath:!contains(QMAKE_DEFAULT_LIBDIRS, $${LLVM_LIBDIR}) { |