aboutsummaryrefslogtreecommitdiffstats
path: root/src/shared/clang/clang_installation.pri
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/clang/clang_installation.pri')
-rw-r--r--src/shared/clang/clang_installation.pri101
1 files changed, 101 insertions, 0 deletions
diff --git a/src/shared/clang/clang_installation.pri b/src/shared/clang/clang_installation.pri
new file mode 100644
index 0000000000..ec2f3749b1
--- /dev/null
+++ b/src/shared/clang/clang_installation.pri
@@ -0,0 +1,101 @@
+isEmpty(LLVM_INSTALL_DIR):LLVM_INSTALL_DIR=$$(LLVM_INSTALL_DIR)
+LLVM_INSTALL_DIR = $$clean_path($$LLVM_INSTALL_DIR)
+
+DEFINES += CLANG_COMPLETION
+DEFINES += CLANG_HIGHLIGHTING
+#DEFINES += CLANG_INDEXING
+
+defineReplace(findLLVMConfig) {
+ LLVM_CONFIG_VARIANTS = \
+ llvm-config llvm-config-3.2 llvm-config-3.3 llvm-config-3.4 \
+ llvm-config-3.5 llvm-config-3.6 llvm-config-4.0 llvm-config-4.1
+
+ # Prefer llvm-config* from LLVM_INSTALL_DIR
+ !isEmpty(LLVM_INSTALL_DIR) {
+ for(variant, LLVM_CONFIG_VARIANTS) {
+ variant=$$LLVM_INSTALL_DIR/bin/$$variant
+ exists($$variant) {
+ return($$variant)
+ }
+ }
+ }
+
+ # Find llvm-config* in PATH
+ ENV_PATH = $$(PATH)
+ ENV_PATH = $$split(ENV_PATH, $$QMAKE_DIRLIST_SEP)
+ for(variant, LLVM_CONFIG_VARIANTS) {
+ for(path, ENV_PATH) {
+ subvariant = $$path/$$variant
+ exists($$subvariant) {
+ return($$subvariant)
+ }
+ }
+ }
+
+ # Fallback
+ return(llvm-config)
+}
+
+defineReplace(findClangOnWindows) {
+ FILE_EXTS = a dll
+ win32-msvc*: FILE_EXTS = lib dll
+ for (suffix, $$list(lib bin)) {
+ for (libname, $$list(clang libclang)) {
+ for (ext, FILE_EXTS) {
+ exists("$${LLVM_INSTALL_DIR}/$${suffix}/$${libname}.$${ext}") {
+ return($${LLVM_INSTALL_DIR}/$${suffix}/)
+ }
+ }
+ }
+ }
+ error("Cannot find clang shared library at $${LLVM_INSTALL_DIR}")
+}
+
+win32 {
+ LLVM_INCLUDEPATH = "$$LLVM_INSTALL_DIR/include"
+ CLANG_LIB_PATH = $$findClangOnWindows()
+ CLANG_LIB = clang
+ !exists("$${CLANG_LIB_PATH}/clang.*"):CLANG_LIB = libclang
+
+ LLVM_LIBS = -L"$${CLANG_LIB_PATH}" -l$${CLANG_LIB}
+ LLVM_LIBS += -ladvapi32 -lshell32
+ LLVM_VERSION = 3.4
+}
+
+unix {
+ LLVM_CONFIG = $$findLLVMConfig()
+
+ LLVM_VERSION = $$system($$LLVM_CONFIG --version 2>/dev/null)
+ LLVM_VERSION = $$replace(LLVM_VERSION, ^(\\d+\\.\\d+\\.\\d+).*$, \\1)
+ message("... version $$LLVM_VERSION")
+
+ LLVM_INCLUDEPATH = $$system($$LLVM_CONFIG --includedir 2>/dev/null)
+ isEmpty(LLVM_INCLUDEPATH):LLVM_INCLUDEPATH=$$LLVM_INSTALL_DIR/include
+ LLVM_LIBDIR = $$system($$LLVM_CONFIG --libdir 2>/dev/null)
+ isEmpty(LLVM_LIBDIR):LLVM_LIBDIR=$$LLVM_INSTALL_DIR/lib
+
+ exists ($${LLVM_LIBDIR}/libclang.*) {
+ #message("LLVM was build with autotools")
+ CLANG_LIB = clang
+ } else {
+ exists ($${LLVM_LIBDIR}/liblibclang.*) {
+ #message("LLVM was build with CMake")
+ CLANG_LIB = libclang
+ } else {
+ exists ($${LLVM_INSTALL_DIR}/lib/libclang.*) {
+ #message("libclang placed separately from LLVM")
+ CLANG_LIB = clang
+ LLVM_LIBDIR = $${LLVM_INSTALL_DIR}/lib
+ LLVM_INCLUDEPATH=$${LLVM_INSTALL_DIR}/include
+ } else {
+ error("Cannot find Clang shared library!")
+ }
+ }
+ }
+
+ LLVM_LIBS = -L$${LLVM_LIBDIR}
+ LLVM_LIBS += -l$${CLANG_LIB}
+}
+
+DEFINES += CLANG_VERSION=\\\"$${LLVM_VERSION}\\\"
+DEFINES += "\"CLANG_RESOURCE_DIR=\\\"$${LLVM_LIBDIR}/clang/$${LLVM_VERSION}/include\\\"\""