aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2018-08-15 10:44:49 +0200
committerIvan Donchevskii <ivan.donchevskii@qt.io>2018-08-16 06:36:44 +0000
commit0bc721fa046e5ce320c7bc88bf08bb4c37ae8839 (patch)
tree91240fd24b7985b281c4ae5f48657135a878b79e
parentec5e70eedadc659aeea7458e1989fded8f9bd03e (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.pri35
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}) {