diff --git a/README.md b/README.md index f3d1b9baf01..735259eebb9 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,10 @@ You can build Qt Creator with export QBS_INSTALL_DIR=/path/to/qbs # Optional, needed for the Python enabled dumper on Windows set PYTHON_INSTALL_DIR=C:\path\to\python + # Optional, needed to use system KSyntaxHighlighting: + set KSYNTAXHIGHLIGHTING_LIB_DIR to folder holding the KSyntaxHighlighting library + # if automatic deducing of include folder fails set KSYNTAXHIGHLIGHTING_INCLUDE_DIR as well + # both variables can also be passed as qmake variables cd $SOURCE_DIRECTORY qmake -r diff --git a/src/libs/libs.pro b/src/libs/libs.pro index 8bc99461a71..26495bbbf04 100644 --- a/src/libs/libs.pro +++ b/src/libs/libs.pro @@ -31,9 +31,27 @@ for(l, SUBDIRS) { } SUBDIRS += \ - utils/process_stub.pro \ - 3rdparty/syntax-highlighting \ - 3rdparty/syntax-highlighting/data + utils/process_stub.pro + +isEmpty(KSYNTAXHIGHLIGHTING_LIB_DIR): KSYNTAXHIGHLIGHTING_LIB_DIR=$$(KSYNTAXHIGHLIGHTING_LIB_DIR) +!isEmpty(KSYNTAXHIGHLIGHTING_LIB_DIR) { + # enable short information message + KSYNTAX_WARN_ON = 1 +} + +include(../shared/syntax/syntax_shared.pri) +isEmpty(KSYNTAXHIGHLIGHTING_LIB_DIR) { + SUBDIRS += \ + 3rdparty/syntax-highlighting \ + 3rdparty/syntax-highlighting/data + + equals(KSYNTAX_WARN_ON, 1) { + message("Either KSYNTAXHIGHLIGHTING_LIB_DIR does not exist or include path could not be deduced.") + unset(KSYNTAX_WARN_ON) + } +} else { + message("Using KSyntaxHighlighting provided at $${KSYNTAXHIGHLIGHTING_LIB_DIR}.") +} win32:SUBDIRS += utils/process_ctrlc_stub.pro diff --git a/src/plugins/texteditor/texteditor.pro b/src/plugins/texteditor/texteditor.pro index d5bf895ee47..29231afb82c 100644 --- a/src/plugins/texteditor/texteditor.pro +++ b/src/plugins/texteditor/texteditor.pro @@ -2,7 +2,19 @@ DEFINES += TEXTEDITOR_LIBRARY QT += gui-private network printsupport xml CONFIG += exceptions CONFIG += include_source_dir # For the highlighter autotest. + +include(../../shared/syntax/syntax_shared.pri) +isEmpty(KSYNTAXHIGHLIGHTING_LIB_DIR) | isEmpty(KSYNTAXHIGHLIGHTING_INCLUDE_DIR) { + QTC_LIB_DEPENDS += syntax-highlighting +} else { + unix:!disable_external_rpath { + !macos: QMAKE_LFLAGS += -Wl,-z,origin + QMAKE_LFLAGS += -Wl,-rpath,$$shell_quote($${KSYNTAXHIGHLIGHTING_LIB_DIR}) + } +} + include(../../qtcreatorplugin.pri) + SOURCES += texteditorplugin.cpp \ plaintexteditorfactory.cpp \ textdocument.cpp \ diff --git a/src/plugins/texteditor/texteditor_dependencies.pri b/src/plugins/texteditor/texteditor_dependencies.pri index c624e4cfb23..cd58e56905a 100644 --- a/src/plugins/texteditor/texteditor_dependencies.pri +++ b/src/plugins/texteditor/texteditor_dependencies.pri @@ -2,7 +2,21 @@ QTC_PLUGIN_NAME = TextEditor QTC_LIB_DEPENDS += \ aggregation \ extensionsystem \ - utils \ - syntax-highlighting + utils + QTC_PLUGIN_DEPENDS += \ coreplugin + +# needed for plugins that depend on TextEditor plugin +include(../../shared/syntax/syntax_shared.pri) +!isEmpty(KSYNTAXHIGHLIGHTING_INCLUDE_DIR) { + INCLUDEPATH *= $${KSYNTAXHIGHLIGHTING_INCLUDE_DIR} + LIBS *= -L$$KSYNTAXHIGHLIGHTING_LIB_DIR -lKF5SyntaxHighlighting + + linux { + QMAKE_LFLAGS += -Wl,-z,origin + QMAKE_LFLAGS += -Wl,-rpath,$$shell_quote($${KSYNTAXHIGHLIGHTING_LIB_DIR}) + } +} else { + QTC_LIB_DEPENDS += syntax-highlighting +} diff --git a/src/shared/syntax/syntax_shared.pri b/src/shared/syntax/syntax_shared.pri new file mode 100644 index 00000000000..235939d35cf --- /dev/null +++ b/src/shared/syntax/syntax_shared.pri @@ -0,0 +1,19 @@ +# KSyntaxHighlighting uses a special folder structure (may contain target arch triple for the lib), +# so expect lib folder to be specified by the user - generate include path based on this +isEmpty(KSYNTAXHIGHLIGHTING_LIB_DIR): KSYNTAXHIGHLIGHTING_LIB_DIR=$$(KSYNTAXHIGHLIGHTING_LIB_DIR) +isEmpty(KSYNTAXHIGHLIGHTING_INCLUDE_DIR): KSYNTAXHIGHLIGHTING_INCLUDE_DIR=$$(KSYNTAXHIGHLIGHTING_INCLUDE_DIR) + +!exists($$KSYNTAXHIGHLIGHTING_LIB_DIR) { + unset(KSYNTAXHIGHLIGHTING_LIB_DIR) + unset(KSYNTAXHIGHLIGHTING_INCLUDE_DIR) +} else { + isEmpty(KSYNTAXHIGHLIGHTING_INCLUDE_DIR) { + !linux: KSYNTAXHIGHLIGHTING_INCLUDE_DIR=$$absolute_path('../include/KF5/KSyntaxHighlighting/', $$KSYNTAXHIGHLIGHTING_LIB_DIR) + else: KSYNTAXHIGHLIGHTING_INCLUDE_DIR=$$absolute_path('../../include/KF5/KSyntaxHighlighting/', $$KSYNTAXHIGHLIGHTING_LIB_DIR) + } + + !exists($$KSYNTAXHIGHLIGHTING_INCLUDE_DIR) { + unset(KSYNTAXHIGHLIGHTING_INCLUDE_DIR) + unset(KSYNTAXHIGHLIGHTING_LIB_DIR) + } +}