summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarsten Heimrich <karsten.heimrich@qt.io>2019-09-19 15:48:52 +0200
committerKarsten Heimrich <karsten.heimrich@qt.io>2019-09-20 10:17:00 +0200
commit065a946d397d6e9d323ce1c71aa3b79bf5514e14 (patch)
tree97b847487b667f5fb1f0369e4d9b2146cd54073e
parent392aced821225a3364dc6d2f8c4d7caede7ea8d5 (diff)
Export clang versioning to support building with clang 10.0.0
Change-Id: Ib60d4d450387d974c4b194f71d02baed9f344385 Reviewed-by: Lucie Gerard <lucie.gerard@qt.io> Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
-rw-r--r--src/global/configure.json5
-rw-r--r--src/global/configure.pri16
-rw-r--r--src/linguist/lupdate/clangtoolastreader.h11
-rw-r--r--src/linguist/lupdate/lupdate.pro5
4 files changed, 36 insertions, 1 deletions
diff --git a/src/global/configure.json b/src/global/configure.json
index f364abf79..00132db9a 100644
--- a/src/global/configure.json
+++ b/src/global/configure.json
@@ -17,7 +17,10 @@
{ "type": "varAssign", "name": "CLANG_INCLUDEPATH", "value": "tests.libclang.includepath" },
{ "type": "varAssign", "name": "CLANG_LIBDIR", "value": "tests.libclang.libdir" },
{ "type": "varAssign", "name": "CLANG_DEFINES", "value": "tests.libclang.defines" },
- { "type": "varAssign", "name": "CLANG_VERSION", "value": "tests.libclang.version" }
+ { "type": "varAssign", "name": "CLANG_VERSION", "value": "tests.libclang.version" },
+ { "type": "varAssign", "name": "CLANG_MAJOR_VERSION", "value": "tests.libclang.major_version" },
+ { "type": "varAssign", "name": "CLANG_MINOR_VERSION", "value": "tests.libclang.minor_version" },
+ { "type": "varAssign", "name": "CLANG_PATCH_VERSION", "value": "tests.libclang.patch_version" }
]
},
"clangcpp": {
diff --git a/src/global/configure.pri b/src/global/configure.pri
index a6357f4d1..013e0e757 100644
--- a/src/global/configure.pri
+++ b/src/global/configure.pri
@@ -223,6 +223,10 @@ defineTest(qtConfTest_libclang) {
!isEmpty(LLVM_INSTALL_DIR): \
qtLog("Cannot determine version of clang installation in $${clangInstallDir}.")
return(false)
+ } else {
+ CLANG_MAJOR_VERSION = $$extractMajorVersion($$CLANG_VERSION)
+ CLANG_MINOR_VERSION = $$extractMinorVersion($$CLANG_VERSION)
+ CLANG_PATCH_VERSION = $$extractPatchVersion($$CLANG_VERSION)
}
LIBCLANG_MAIN_HEADER = $$CLANG_INCLUDEPATH/clang-c/Index.h
@@ -512,6 +516,18 @@ defineTest(qtConfTest_libclang) {
export($${1}.version)
$${1}.cache += version
+ $${1}.major_version = $$CLANG_MAJOR_VERSION
+ export($${1}.major_version)
+ $${1}.cache += major_version
+
+ $${1}.minor_version = $$CLANG_MINOR_VERSION
+ export($${1}.minor_version)
+ $${1}.cache += minor_version
+
+ $${1}.patch_version = $$CLANG_PATCH_VERSION
+ export($${1}.patch_version)
+ $${1}.cache += patch_version
+
$${1}.has_clangcpp = $$HAS_CLANGCPP
export($${1}.has_clangcpp)
$${1}.cache += has_clangcpp
diff --git a/src/linguist/lupdate/clangtoolastreader.h b/src/linguist/lupdate/clangtoolastreader.h
index e43bc471d..e339cca85 100644
--- a/src/linguist/lupdate/clangtoolastreader.h
+++ b/src/linguist/lupdate/clangtoolastreader.h
@@ -64,6 +64,10 @@ QT_BEGIN_NAMESPACE
Q_DECLARE_LOGGING_CATEGORY(lcClang)
+#define LUPDATE_CLANG_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch))
+#define LUPDATE_CLANG_VERSION LUPDATE_CLANG_VERSION_CHECK(LUPDATE_CLANG_VERSION_MAJOR, \
+ LUPDATE_CLANG_VERSION_MINOR, LUPDATE_CLANG_VERSION_PATCH)
+
class LupdateVisitor : public clang::RecursiveASTVisitor<LupdateVisitor>
{
public:
@@ -120,10 +124,17 @@ public:
: m_tor(tor)
{}
+#if (LUPDATE_CLANG_VERSION >= LUPDATE_CLANG_VERSION_CHECK(10,0,0))
+ std::unique_ptr<clang::FrontendAction> create() override
+ {
+ return std::make_unique<LupdateFrontendAction>(m_tor);
+ }
+#else
clang::FrontendAction *create() override
{
return new LupdateFrontendAction(m_tor);
}
+#endif
private:
Translator *m_tor { nullptr };
diff --git a/src/linguist/lupdate/lupdate.pro b/src/linguist/lupdate/lupdate.pro
index ddf115bab..f93e521d5 100644
--- a/src/linguist/lupdate/lupdate.pro
+++ b/src/linguist/lupdate/lupdate.pro
@@ -16,6 +16,11 @@ qtConfig(clangcpp) {
!contains(QMAKE_DEFAULT_LIBDIRS, $$CLANG_LIBDIR):!disable_external_rpath: QMAKE_RPATHDIR += $$CLANG_LIBDIR
DEFINES += $$shell_quote(CLANG_RESOURCE_DIR=\"$${CLANG_LIBDIR}/clang/$${CLANG_VERSION}/include\")
+
+ DEFINES += $$shell_quote(LUPDATE_CLANG_VERSION_STR=\"$${CLANG_VERSION}\") \
+ LUPDATE_CLANG_VERSION_MAJOR=$${CLANG_MAJOR_VERSION} \
+ LUPDATE_CLANG_VERSION_MINOR=$${CLANG_MINOR_VERSION} \
+ LUPDATE_CLANG_VERSION_PATCH=$${CLANG_PATCH_VERSION}
}
CONFIG += rtti_off