Source

Target

Showing with 150 additions and 71 deletions
...@@ -16,6 +16,14 @@ qt:!isEmpty(QT_CONFIG) { ...@@ -16,6 +16,14 @@ qt:!isEmpty(QT_CONFIG) {
} }
} }
isEmpty(_QMAKE_CACHE_) {
warning("No .qmake.cache is present. This significantly slows down qmake with this makespec.")
warning("Call 'cache()' in the top-level project file to rectify this problem.")
} else {
cache(QMAKE_XCODE_DEVELOPER_PATH)
cache(QMAKE_XCODE_VERSION)
}
# Ensure that we process sdk.prf first, as it will update QMAKE_CXX # Ensure that we process sdk.prf first, as it will update QMAKE_CXX
# and friends that other features/extra compilers may depend on. # and friends that other features/extra compilers may depend on.
sdk: load(sdk) sdk: load(sdk)
CONFIG = sdk rez $$CONFIG CONFIG = sdk rez $$CONFIG
load(default_pre) load(default_pre)
isEmpty(QMAKE_XCODE_DEVELOPER_PATH) {
# Get path of Xcode's Developer directory
QMAKE_XCODE_DEVELOPER_PATH = $$system("/usr/bin/xcode-select --print-path 2>/dev/null")
isEmpty(QMAKE_XCODE_DEVELOPER_PATH): \
error("Xcode path is not set. Please use xcode-select to choose Xcode installation path.")
# Make sure Xcode path is valid
!exists($$QMAKE_XCODE_DEVELOPER_PATH): \
error("Xcode is not installed in $${QMAKE_XCODE_DEVELOPER_PATH}. Please use xcode-select to choose Xcode installation path.")
# Make sure Xcode is set up properly
isEmpty($$list($$system("/usr/bin/xcrun -find xcrun 2>/dev/null"))): \
error("Xcode not set up properly. You may need to confirm the license agreement by running /usr/bin/xcodebuild.")
}
isEmpty(QMAKE_XCODE_VERSION) {
# Extract Xcode version using xcodebuild
xcode_version = $$system("/usr/bin/xcodebuild -version")
QMAKE_XCODE_VERSION = $$member(xcode_version, 1)
isEmpty(QMAKE_XCODE_VERSION): error("Could not resolve Xcode version.")
unset(xcode_version)
}
...@@ -5,8 +5,13 @@ isEmpty(QMAKE_MAC_SDK): \ ...@@ -5,8 +5,13 @@ isEmpty(QMAKE_MAC_SDK): \
contains(QMAKE_MAC_SDK, .*/.*): \ contains(QMAKE_MAC_SDK, .*/.*): \
error("QMAKE_MAC_SDK can only contain short-form SDK names (eg. macosx, iphoneos)") error("QMAKE_MAC_SDK can only contain short-form SDK names (eg. macosx, iphoneos)")
QMAKE_MAC_SDK_PATH = $$system("/usr/bin/xcodebuild -sdk $$QMAKE_MAC_SDK -version Path 2>/dev/null") isEmpty(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.path) {
isEmpty(QMAKE_MAC_SDK_PATH): error("Could not resolve SDK path for \'$$QMAKE_MAC_SDK\'") QMAKE_MAC_SDK_PATH = $$system("/usr/bin/xcodebuild -sdk $$QMAKE_MAC_SDK -version Path 2>/dev/null")
isEmpty(QMAKE_MAC_SDK_PATH): error("Could not resolve SDK path for \'$$QMAKE_MAC_SDK\'")
!isEmpty(_QMAKE_CACHE_): cache(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.path, set, QMAKE_MAC_SDK_PATH)
} else {
QMAKE_MAC_SDK_PATH = $$eval(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.path)
}
!equals(MAKEFILE_GENERATOR, XCODE) { !equals(MAKEFILE_GENERATOR, XCODE) {
QMAKE_CFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH QMAKE_CFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH
...@@ -21,6 +26,11 @@ QMAKE_INCDIR_OPENGL = $$sysrootified ...@@ -21,6 +26,11 @@ QMAKE_INCDIR_OPENGL = $$sysrootified
# Resolve SDK version of various tools # Resolve SDK version of various tools
for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_FIX_RPATH QMAKE_AR QMAKE_RANLIB QMAKE_LINK QMAKE_LINK_SHLIB)) { for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_FIX_RPATH QMAKE_AR QMAKE_RANLIB QMAKE_LINK QMAKE_LINK_SHLIB)) {
!isEmpty(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.$${tool}) {
$$tool = $$eval(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.$${tool})
next()
}
value = $$eval($$tool) value = $$eval($$tool)
isEmpty(value): next() isEmpty(value): next()
...@@ -28,15 +38,21 @@ for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_FIX_RPATH QMAKE_AR QMAKE_RANLIB QMAKE_ ...@@ -28,15 +38,21 @@ for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_FIX_RPATH QMAKE_AR QMAKE_RANLIB QMAKE_
isEmpty(sysrooted): next() isEmpty(sysrooted): next()
$$tool = $$sysrooted $$member(value, 1, -1) $$tool = $$sysrooted $$member(value, 1, -1)
!isEmpty(_QMAKE_CACHE_): cache(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.$${tool}, set, $$tool)
} }
# We use xml as the output format instead of json since plutil on 10.6 does not have that option isEmpty(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.platform_name) {
QMAKE_MAC_PLATFORM_NAME = $$system("/usr/bin/plutil -convert xml1 \"$$QMAKE_MAC_SDK_PATH/SDKSettings.plist\" -o - 2>/dev/null | " \ # We use xml as the output format instead of json since plutil on 10.6 does not have that option
"sed '/^<!DOCTYPE/d' | " \ # Don't look up http://www.apple.com/DTDs/PropertyList-1.0.dtd QMAKE_MAC_PLATFORM_NAME = $$system("/usr/bin/plutil -convert xml1 \"$$QMAKE_MAC_SDK_PATH/SDKSettings.plist\" -o - 2>/dev/null | " \
"PERL5LIB= xpath 'string(//key[.=\"PLATFORM_NAME\"]/following-sibling::*[1])' 2>/dev/null | " \ "sed '/^<!DOCTYPE/d' | " \ # Don't look up http://www.apple.com/DTDs/PropertyList-1.0.dtd
"sed 's/.*Value: \\(.*\\)/\\1/'") "PERL5LIB= xpath 'string(//key[.=\"PLATFORM_NAME\"]/following-sibling::*[1])' 2>/dev/null | " \
"sed 's/.*Value: \\(.*\\)/\\1/'")
isEmpty(QMAKE_MAC_PLATFORM_NAME): error("Could not resolve platform name for SDK '$$QMAKE_MAC_SDK'") isEmpty(QMAKE_MAC_PLATFORM_NAME): error("Could not resolve platform name for SDK '$$QMAKE_MAC_SDK'")
!isEmpty(_QMAKE_CACHE_): cache(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.platform_name, set, QMAKE_MAC_PLATFORM_NAME)
} else {
QMAKE_MAC_PLATFORM_NAME = $$eval(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.platform_name)
}
!equals(MAKEFILE_GENERATOR, XCODE) { !equals(MAKEFILE_GENERATOR, XCODE) {
# FIXME: Get the version_min_flag out of the platform's 'Native Build System.xcspec' # FIXME: Get the version_min_flag out of the platform's 'Native Build System.xcspec'
......
...@@ -20,6 +20,7 @@ QMAKE_QT_CONFIG = $$[QT_HOST_DATA/get]/mkspecs/qconfig.pri ...@@ -20,6 +20,7 @@ QMAKE_QT_CONFIG = $$[QT_HOST_DATA/get]/mkspecs/qconfig.pri
# qt_<module>.pri forwarding file # qt_<module>.pri forwarding file
QT_MODULE_INCLUDE_BASE = $$[QT_INSTALL_HEADERS] QT_MODULE_INCLUDE_BASE = $$[QT_INSTALL_HEADERS]
QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS] QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS]
QT_MODULE_HOST_LIB_BASE = $$[QT_HOST_LIBS]
QT_MODULE_PLUGIN_BASE = $$[QT_INSTALL_PLUGINS] QT_MODULE_PLUGIN_BASE = $$[QT_INSTALL_PLUGINS]
QT_MODULE_LIBEXEC_BASE = $$[QT_INSTALL_LIBEXECS] QT_MODULE_LIBEXEC_BASE = $$[QT_INSTALL_LIBEXECS]
QT_MODULE_BIN_BASE = $$[QT_INSTALL_BINS] QT_MODULE_BIN_BASE = $$[QT_INSTALL_BINS]
...@@ -30,6 +31,7 @@ QMAKE_QT_CONFIG = $$[QT_HOST_DATA/get]/mkspecs/qconfig.pri ...@@ -30,6 +31,7 @@ QMAKE_QT_CONFIG = $$[QT_HOST_DATA/get]/mkspecs/qconfig.pri
} }
unset(QT_MODULE_INCLUDE_BASE) unset(QT_MODULE_INCLUDE_BASE)
unset(QT_MODULE_LIB_BASE) unset(QT_MODULE_LIB_BASE)
unset(QT_MODULE_HOST_LIB_BASE)
unset(QT_MODULE_PLUGIN_BASE) unset(QT_MODULE_PLUGIN_BASE)
unset(QT_MODULE_LIBEXEC_BASE) unset(QT_MODULE_LIBEXEC_BASE)
unset(QT_MODULE_BIN_BASE) unset(QT_MODULE_BIN_BASE)
......
...@@ -194,12 +194,10 @@ defineTest(qtPrepareTool) { ...@@ -194,12 +194,10 @@ defineTest(qtPrepareTool) {
$$1 = $$eval(QT_TOOL.$${2}.command) $$1 = $$eval(QT_TOOL.$${2}.command)
isEmpty($$1) { isEmpty($$1) {
$$1 = $$[QT_HOST_BINS]/$$2 $$1 = $$[QT_HOST_BINS]/$$2
contains(QMAKE_HOST.os, Windows):!contains($$1, .*\\.(exe|bat)$) { exists($$eval($$1).pl) {
exists($$eval($$1).bat) { $$1 = perl -w $$eval($$1).pl
$$1 = $$eval($$1).bat } else: contains(QMAKE_HOST.os, Windows) {
} else { $$1 = $$eval($$1).exe
$$1 = $$eval($$1).exe
}
} else:contains(QMAKE_HOST.os, Darwin) { } else:contains(QMAKE_HOST.os, Darwin) {
BUNDLENAME = $$eval($$1).app/Contents/MacOS/$$2 BUNDLENAME = $$eval($$1).app/Contents/MacOS/$$2
exists($$BUNDLENAME) { exists($$BUNDLENAME) {
......
...@@ -12,10 +12,16 @@ ...@@ -12,10 +12,16 @@
#library #library
!qt_no_install_library { !qt_no_install_library {
win32 { win32 {
dlltarget.path = $$[QT_INSTALL_BINS] host_build: \
dlltarget.path = $$[QT_HOST_BINS]
else: \
dlltarget.path = $$[QT_INSTALL_BINS]
INSTALLS += dlltarget INSTALLS += dlltarget
} }
target.path = $$[QT_INSTALL_LIBS] host_build: \
target.path = $$[QT_HOST_LIBS]
else: \
target.path = $$[QT_INSTALL_LIBS]
INSTALLS += target INSTALLS += target
} }
......
...@@ -128,7 +128,10 @@ load(qt_installs) ...@@ -128,7 +128,10 @@ load(qt_installs)
unix|win32-g++* { unix|win32-g++* {
CONFIG += create_pc CONFIG += create_pc
QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS/raw] host_build: \
QMAKE_PKGCONFIG_LIBDIR = $$[QT_HOST_LIBS]
else: \
QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS/raw]
QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS/raw] QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS/raw]
QMAKE_PKGCONFIG_CFLAGS = -I${includedir}/$$MODULE_INCNAME QMAKE_PKGCONFIG_CFLAGS = -I${includedir}/$$MODULE_INCNAME
QMAKE_PKGCONFIG_DESTDIR = pkgconfig QMAKE_PKGCONFIG_DESTDIR = pkgconfig
...@@ -139,14 +142,14 @@ unix|win32-g++* { ...@@ -139,14 +142,14 @@ unix|win32-g++* {
include_replace.match = $$rplbase/include include_replace.match = $$rplbase/include
include_replace.replace = $$[QT_INSTALL_HEADERS/raw] include_replace.replace = $$[QT_INSTALL_HEADERS/raw]
lib_replace.match = $$rplbase/lib lib_replace.match = $$rplbase/lib
lib_replace.replace = $$[QT_INSTALL_LIBS/raw] lib_replace.replace = $$QMAKE_PKGCONFIG_LIBDIR
QMAKE_PKGCONFIG_INSTALL_REPLACE += include_replace lib_replace QMAKE_PKGCONFIG_INSTALL_REPLACE += include_replace lib_replace
QMAKE_PRL_INSTALL_REPLACE += include_replace lib_replace QMAKE_PRL_INSTALL_REPLACE += include_replace lib_replace
} }
unix { unix {
CONFIG += create_libtool explicitlib CONFIG += create_libtool explicitlib
QMAKE_LIBTOOL_LIBDIR = $$[QT_INSTALL_LIBS/raw] QMAKE_LIBTOOL_LIBDIR = $$QMAKE_PKGCONFIG_LIBDIR
QMAKE_LIBTOOL_INSTALL_REPLACE += include_replace lib_replace QMAKE_LIBTOOL_INSTALL_REPLACE += include_replace lib_replace
} }
......
...@@ -19,10 +19,18 @@ else: \ ...@@ -19,10 +19,18 @@ else: \
!build_pass { !build_pass {
# Create a module .pri file # Create a module .pri file
unix:!static: \ host_build: \
module_rpath = "QT.$${MODULE}.rpath = $$[QT_INSTALL_LIBS/raw]" module_libs = "\$\$QT_MODULE_HOST_LIB_BASE"
else: \ else: \
module_libs = "\$\$QT_MODULE_LIB_BASE"
unix:!static {
host_build: \
module_rpath = "QT.$${MODULE}.rpath = $$[QT_HOST_LIBS]"
else: \
module_rpath = "QT.$${MODULE}.rpath = $$[QT_INSTALL_LIBS/raw]"
} else {
module_rpath = module_rpath =
}
!isEmpty(QT_FOR_PRIVATE) { !isEmpty(QT_FOR_PRIVATE) {
contains(QT_FOR_PRIVATE, .*-private$):error("QT_FOR_PRIVATE may not contain *-private.") contains(QT_FOR_PRIVATE, .*-private$):error("QT_FOR_PRIVATE may not contain *-private.")
module_privdep = "QT.$${MODULE}.private_depends = $$QT_FOR_PRIVATE" module_privdep = "QT.$${MODULE}.private_depends = $$QT_FOR_PRIVATE"
...@@ -55,15 +63,17 @@ else: \ ...@@ -55,15 +63,17 @@ else: \
"QT.$${MODULE}.PATCH_VERSION = $$section(VERSION, ., 2, 2)" \ "QT.$${MODULE}.PATCH_VERSION = $$section(VERSION, ., 2, 2)" \
"" \ "" \
"QT.$${MODULE}.name = $$TARGET" \ "QT.$${MODULE}.name = $$TARGET" \
"QT.$${MODULE}.bins = \$\$QT_MODULE_BIN_BASE" \ "QT.$${MODULE}.libs = $$module_libs" \
$$module_rpath \
"QT.$${MODULE}.private_includes = $$MODULE_PRIVATE_INCLUDES"
!host_build: MODULE_PRI_CONT += \
"QT.$${MODULE}.includes = $$MODULE_INCLUDES" \ "QT.$${MODULE}.includes = $$MODULE_INCLUDES" \
"QT.$${MODULE}.private_includes = $$MODULE_PRIVATE_INCLUDES" \ "QT.$${MODULE}.bins = \$\$QT_MODULE_BIN_BASE" \
"QT.$${MODULE}.libs = \$\$QT_MODULE_LIB_BASE" \
"QT.$${MODULE}.libexecs = \$\$QT_MODULE_LIBEXEC_BASE" \ "QT.$${MODULE}.libexecs = \$\$QT_MODULE_LIBEXEC_BASE" \
$$module_rpath \
"QT.$${MODULE}.plugins = \$\$QT_MODULE_PLUGIN_BASE" \ "QT.$${MODULE}.plugins = \$\$QT_MODULE_PLUGIN_BASE" \
"QT.$${MODULE}.imports = \$\$QT_MODULE_IMPORT_BASE" \ "QT.$${MODULE}.imports = \$\$QT_MODULE_IMPORT_BASE" \
"QT.$${MODULE}.qml = \$\$QT_MODULE_QML_BASE" \ "QT.$${MODULE}.qml = \$\$QT_MODULE_QML_BASE"
MODULE_PRI_CONT += \
"QT.$${MODULE}.depends =$$join(MODULE_DEPENDS, " ", " ")" \ "QT.$${MODULE}.depends =$$join(MODULE_DEPENDS, " ", " ")" \
$$module_privdep \ $$module_privdep \
$$module_rundep \ $$module_rundep \
...@@ -84,6 +94,7 @@ else: \ ...@@ -84,6 +94,7 @@ else: \
"QT_MODULE_IMPORT_BASE = $$MODULE_BASE_OUTDIR/imports" \ "QT_MODULE_IMPORT_BASE = $$MODULE_BASE_OUTDIR/imports" \
"QT_MODULE_QML_BASE = $$MODULE_BASE_OUTDIR/qml" \ "QT_MODULE_QML_BASE = $$MODULE_BASE_OUTDIR/qml" \
"QT_MODULE_LIB_BASE = $$MODULE_BASE_OUTDIR/lib" \ "QT_MODULE_LIB_BASE = $$MODULE_BASE_OUTDIR/lib" \
"QT_MODULE_HOST_LIB_BASE = $$MODULE_BASE_OUTDIR/lib" \
"QT_MODULE_LIBEXEC_BASE = $$MODULE_BASE_OUTDIR/libexec" \ "QT_MODULE_LIBEXEC_BASE = $$MODULE_BASE_OUTDIR/libexec" \
"QT_MODULE_PLUGIN_BASE = $$MODULE_BASE_OUTDIR/plugins" \ "QT_MODULE_PLUGIN_BASE = $$MODULE_BASE_OUTDIR/plugins" \
"include($$MODULE_PRI)" "include($$MODULE_PRI)"
...@@ -99,6 +110,7 @@ else: \ ...@@ -99,6 +110,7 @@ else: \
QT_MODULE_IMPORT_BASE = $$[QT_INSTALL_IMPORTS] QT_MODULE_IMPORT_BASE = $$[QT_INSTALL_IMPORTS]
QT_MODULE_QML_BASE = $$[QT_INSTALL_QML] QT_MODULE_QML_BASE = $$[QT_INSTALL_QML]
QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS] QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS]
QT_MODULE_HOST_LIB_BASE = $$[QT_HOST_LIBS]
QT_MODULE_LIBEXEC_BASE = $$[QT_INSTALL_LIBEXECS] QT_MODULE_LIBEXEC_BASE = $$[QT_INSTALL_LIBEXECS]
QT_MODULE_PLUGIN_BASE = $$[QT_INSTALL_PLUGINS] QT_MODULE_PLUGIN_BASE = $$[QT_INSTALL_PLUGINS]
......
...@@ -22,6 +22,4 @@ include(../../common/clang-mac.conf) ...@@ -22,6 +22,4 @@ include(../../common/clang-mac.conf)
include(../../common/ios/clang.conf) include(../../common/ios/clang.conf)
include(../../common/ios/qmake.conf) include(../../common/ios/qmake.conf)
lessThan(QMAKE_XCODE_VERSION, "4.3"): error("This mkspec requires Xcode 4.3 or later")
load(qt_config) load(qt_config)
...@@ -94,6 +94,10 @@ QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain ...@@ -94,6 +94,10 @@ QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain
MINGW_IN_SHELL = 1 MINGW_IN_SHELL = 1
QMAKE_DIR_SEP = / QMAKE_DIR_SEP = /
include(../common/shell-unix.conf) include(../common/shell-unix.conf)
# Because install's ability to set permissions is not relevant on Windows,
# and git's msys does not provide it to start with.
QMAKE_INSTALL_FILE = cp -f
QMAKE_INSTALL_PROGRAM = cp -f
} else { } else {
include(../common/shell-win32.conf) include(../common/shell-win32.conf)
} }
......
...@@ -275,6 +275,7 @@ enum ProToken { ...@@ -275,6 +275,7 @@ enum ProToken {
TokRemove, // variable -= TokRemove, // variable -=
TokReplace, // variable ~= TokReplace, // variable ~=
// previous literal/expansion is a variable manipulation // previous literal/expansion is a variable manipulation
// - lower bound for expected output length (1)
// - value expression + TokValueTerminator // - value expression + TokValueTerminator
TokValueTerminator, // assignment value terminator TokValueTerminator, // assignment value terminator
TokLiteral, // literal string (fully dequoted) TokLiteral, // literal string (fully dequoted)
......
...@@ -195,7 +195,7 @@ static bool isTrue(const ProString &_str, QString &tmp) ...@@ -195,7 +195,7 @@ static bool isTrue(const ProString &_str, QString &tmp)
return !str.compare(statics.strtrue, Qt::CaseInsensitive) || str.toInt(); return !str.compare(statics.strtrue, Qt::CaseInsensitive) || str.toInt();
} }
#ifdef Q_OS_WIN #if defined(Q_OS_WIN) && defined(PROEVALUATOR_FULL)
static QString windowsErrorCode() static QString windowsErrorCode()
{ {
wchar_t *string = 0; wchar_t *string = 0;
......
...@@ -1242,10 +1242,11 @@ void QMakeEvaluator::setupProject() ...@@ -1242,10 +1242,11 @@ void QMakeEvaluator::setupProject()
{ {
setTemplate(); setTemplate();
ProValueMap &vars = m_valuemapStack.top(); ProValueMap &vars = m_valuemapStack.top();
vars[ProKey("TARGET")] << ProString(QFileInfo(currentFileName()).baseName()); ProFile *proFile = currentProFile();
vars[ProKey("_PRO_FILE_")] << ProString(currentFileName()); vars[ProKey("TARGET")] << ProString(QFileInfo(currentFileName()).baseName()).setSource(proFile);
vars[ProKey("_PRO_FILE_PWD_")] << ProString(currentDirectory()); vars[ProKey("_PRO_FILE_")] << ProString(currentFileName()).setSource(proFile);
vars[ProKey("OUT_PWD")] << ProString(m_outputDir); vars[ProKey("_PRO_FILE_PWD_")] << ProString(currentDirectory()).setSource(proFile);
vars[ProKey("OUT_PWD")] << ProString(m_outputDir).setSource(proFile);
} }
void QMakeEvaluator::evaluateCommand(const QString &cmds, const QString &where) void QMakeEvaluator::evaluateCommand(const QString &cmds, const QString &where)
...@@ -1356,11 +1357,9 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile( ...@@ -1356,11 +1357,9 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile(
loadDefaults(); loadDefaults();
} }
#ifdef QT_BUILD_QMAKE
for (ProValueMap::ConstIterator it = m_extraVars.constBegin(); for (ProValueMap::ConstIterator it = m_extraVars.constBegin();
it != m_extraVars.constEnd(); ++it) it != m_extraVars.constEnd(); ++it)
m_valuemapStack.first().insert(it.key(), it.value()); m_valuemapStack.first().insert(it.key(), it.value());
#endif
VisitReturn vr; VisitReturn vr;
...@@ -1375,11 +1374,9 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile( ...@@ -1375,11 +1374,9 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile(
evaluateCommand(m_option->precmds, fL1S("(command line)")); evaluateCommand(m_option->precmds, fL1S("(command line)"));
#ifdef QT_BUILD_QMAKE
// After user configs, to override them // After user configs, to override them
if (!m_extraConfigs.isEmpty()) if (!m_extraConfigs.isEmpty())
evaluateCommand("CONFIG += " + m_extraConfigs.join(' '), fL1S("(extra configs)")); evaluateCommand(fL1S("CONFIG += ") + m_extraConfigs.join(QLatin1Char(' ')), fL1S("(extra configs)"));
#endif
} }
debugMsg(1, "visiting file %s", qPrintable(pro->fileName())); debugMsg(1, "visiting file %s", qPrintable(pro->fileName()));
...@@ -1390,13 +1387,11 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile( ...@@ -1390,13 +1387,11 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProFile(
if (flags & LoadPostFiles) { if (flags & LoadPostFiles) {
evaluateCommand(m_option->postcmds, fL1S("(command line -after)")); evaluateCommand(m_option->postcmds, fL1S("(command line -after)"));
#ifdef QT_BUILD_QMAKE
// Again, to ensure the project does not mess with us. // Again, to ensure the project does not mess with us.
// Specifically, do not allow a project to override debug/release within a // Specifically, do not allow a project to override debug/release within a
// debug_and_release build pass - it's too late for that at this point anyway. // debug_and_release build pass - it's too late for that at this point anyway.
if (!m_extraConfigs.isEmpty()) if (!m_extraConfigs.isEmpty())
evaluateCommand("CONFIG += " + m_extraConfigs.join(' '), fL1S("(extra configs)")); evaluateCommand(fL1S("CONFIG += ") + m_extraConfigs.join(QLatin1Char(' ')), fL1S("(extra configs)"));
#endif
if ((vr = evaluateFeatureFile(QLatin1String("default_post.prf"))) == ReturnError) if ((vr = evaluateFeatureFile(QLatin1String("default_post.prf"))) == ReturnError)
goto failed; goto failed;
......
...@@ -112,10 +112,8 @@ public: ...@@ -112,10 +112,8 @@ public:
QMakeHandler *handler); QMakeHandler *handler);
~QMakeEvaluator(); ~QMakeEvaluator();
#ifdef QT_BUILD_QMAKE
void setExtraVars(const ProValueMap &extraVars) { m_extraVars = extraVars; } void setExtraVars(const ProValueMap &extraVars) { m_extraVars = extraVars; }
void setExtraConfigs(const ProStringList &extraConfigs) { m_extraConfigs = extraConfigs; } void setExtraConfigs(const ProStringList &extraConfigs) { m_extraConfigs = extraConfigs; }
#endif
void setOutputDir(const QString &outputDir) { m_outputDir = outputDir; } void setOutputDir(const QString &outputDir) { m_outputDir = outputDir; }
ProStringList values(const ProKey &variableName) const; ProStringList values(const ProKey &variableName) const;
...@@ -268,10 +266,8 @@ public: ...@@ -268,10 +266,8 @@ public:
QStack<Location> m_locationStack; // All execution location changes QStack<Location> m_locationStack; // All execution location changes
QStack<ProFile *> m_profileStack; // Includes only QStack<ProFile *> m_profileStack; // Includes only
#ifdef QT_BUILD_QMAKE
ProValueMap m_extraVars; ProValueMap m_extraVars;
ProStringList m_extraConfigs; ProStringList m_extraConfigs;
#endif
QString m_outputDir; QString m_outputDir;
int m_listCount; int m_listCount;
......
...@@ -298,12 +298,12 @@ bool QMakeParser::read(ProFile *pro, const QString &in, int line, SubGrammar gra ...@@ -298,12 +298,12 @@ bool QMakeParser::read(ProFile *pro, const QString &in, int line, SubGrammar gra
// Worst-case size calculations: // Worst-case size calculations:
// - line marker adds 1 (2-nl) to 1st token of each line // - line marker adds 1 (2-nl) to 1st token of each line
// - empty assignment "A=":2 => // - empty assignment "A=":2 =>
// TokHashLiteral(1) + hash(2) + len(1) + "A"(1) + TokAssign(1) + // TokHashLiteral(1) + hash(2) + len(1) + "A"(1) + TokAssign(1) + 0(1) +
// TokValueTerminator(1) == 7 (8) // TokValueTerminator(1) == 8 (9)
// - non-empty assignment "A=B C":5 => // - non-empty assignment "A=B C":5 =>
// TokHashLiteral(1) + hash(2) + len(1) + "A"(1) + TokAssign(1) + // TokHashLiteral(1) + hash(2) + len(1) + "A"(1) + TokAssign(1) + 2(1) +
// TokLiteral(1) + len(1) + "B"(1) + // TokLiteral(1) + len(1) + "B"(1) +
// TokLiteral(1) + len(1) + "C"(1) + TokValueTerminator(1) == 13 (14) // TokLiteral(1) + len(1) + "C"(1) + TokValueTerminator(1) == 14 (15)
// - variable expansion: "$$f":3 => // - variable expansion: "$$f":3 =>
// TokVariable(1) + hash(2) + len(1) + "f"(1) = 5 // TokVariable(1) + hash(2) + len(1) + "f"(1) = 5
// - function expansion: "$$f()":5 => // - function expansion: "$$f()":5 =>
......
...@@ -74,6 +74,7 @@ static const struct { ...@@ -74,6 +74,7 @@ static const struct {
{ "QT_HOST_PREFIX", QLibraryInfo::HostPrefixPath, true }, { "QT_HOST_PREFIX", QLibraryInfo::HostPrefixPath, true },
{ "QT_HOST_DATA", QLibraryInfo::HostDataPath, true }, { "QT_HOST_DATA", QLibraryInfo::HostDataPath, true },
{ "QT_HOST_BINS", QLibraryInfo::HostBinariesPath, true }, { "QT_HOST_BINS", QLibraryInfo::HostBinariesPath, true },
{ "QT_HOST_LIBS", QLibraryInfo::HostLibrariesPath, true },
{ "QMAKE_SPEC", QLibraryInfo::HostSpecPath, true }, { "QMAKE_SPEC", QLibraryInfo::HostSpecPath, true },
{ "QMAKE_XSPEC", QLibraryInfo::TargetSpecPath, true }, { "QMAKE_XSPEC", QLibraryInfo::TargetSpecPath, true },
}; };
......
...@@ -77,17 +77,14 @@ INSTALLS += qmake ...@@ -77,17 +77,14 @@ INSTALLS += qmake
#syncqt #syncqt
syncqt.path = $$[QT_HOST_BINS] syncqt.path = $$[QT_HOST_BINS]
syncqt.files = $$PWD/bin/syncqt syncqt.files = $$PWD/bin/syncqt.pl
equals(QMAKE_HOST.os, Windows):syncqt.files += $$PWD/bin/syncqt.bat
INSTALLS += syncqt INSTALLS += syncqt
# If we are doing a prefix build, create a "module" pri which enables # If we are doing a prefix build, create a "module" pri which enables
# qtPrepareTool() to find the non-installed syncqt. # qtPrepareTool() to find the non-installed syncqt.
prefix_build { prefix_build|!equals(PWD, $$OUT_PWD) {
cmd = $$shell_path($$OUT_PWD/bin/syncqt) cmd = perl -w $$shell_path($$PWD/bin/syncqt.pl)
contains(QMAKE_HOST.os, Windows): \
cmd = $${cmd}.bat
TOOL_PRI = $$OUT_PWD/mkspecs/modules/qt_tool_syncqt.pri TOOL_PRI = $$OUT_PWD/mkspecs/modules/qt_tool_syncqt.pri
......
...@@ -478,7 +478,6 @@ public class QtActivity extends Activity ...@@ -478,7 +478,6 @@ public class QtActivity extends Activity
} }
loaderParams.putStringArrayList(NATIVE_LIBRARIES_KEY, libraryList); loaderParams.putStringArrayList(NATIVE_LIBRARIES_KEY, libraryList);
loaderParams.putString(ENVIRONMENT_VARIABLES_KEY, ENVIRONMENT_VARIABLES loaderParams.putString(ENVIRONMENT_VARIABLES_KEY, ENVIRONMENT_VARIABLES
+ "QT_QPA_EGLFS_HIDECURSOR=1"
+ "\tQML2_IMPORT_PATH=" + localPrefix + "/qml" + "\tQML2_IMPORT_PATH=" + localPrefix + "/qml"
+ "\tQML_IMPORT_PATH=" + localPrefix + "/imports" + "\tQML_IMPORT_PATH=" + localPrefix + "/imports"
+ "\tQT_PLUGIN_PATH=" + localPrefix + "/plugins"); + "\tQT_PLUGIN_PATH=" + localPrefix + "/plugins");
......
...@@ -41,3 +41,5 @@ if (_Qt5_NOTFOUND_MESSAGE) ...@@ -41,3 +41,5 @@ if (_Qt5_NOTFOUND_MESSAGE)
set(Qt5_NOT_FOUND_MESSAGE \"${_Qt5_NOTFOUND_MESSAGE}\") set(Qt5_NOT_FOUND_MESSAGE \"${_Qt5_NOTFOUND_MESSAGE}\")
set(Qt5_FOUND False) set(Qt5_FOUND False)
endif() endif()
_qt5_Core_check_file_exists(\"${CMAKE_CURRENT_LIST_DIR}/Qt5ConfigVersion.cmake\")
...@@ -2,24 +2,30 @@ ...@@ -2,24 +2,30 @@
if (NOT TARGET Qt5::qmake) if (NOT TARGET Qt5::qmake)
add_executable(Qt5::qmake IMPORTED) add_executable(Qt5::qmake IMPORTED)
set_target_properties(Qt5::qmake PROPERTIES
!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
IMPORTED_LOCATION \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\" set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
!!ELSE !!ELSE
IMPORTED_LOCATION \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\" set(imported_location \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
!!ENDIF !!ENDIF
_qt5_Core_check_file_exists(${imported_location})
set_target_properties(Qt5::qmake PROPERTIES
IMPORTED_LOCATION ${imported_location}
) )
endif() endif()
if (NOT TARGET Qt5::moc) if (NOT TARGET Qt5::moc)
add_executable(Qt5::moc IMPORTED) add_executable(Qt5::moc IMPORTED)
set_target_properties(Qt5::moc PROPERTIES
!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
IMPORTED_LOCATION \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\" set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
!!ELSE !!ELSE
IMPORTED_LOCATION \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\" set(imported_location \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
!!ENDIF !!ENDIF
_qt5_Core_check_file_exists(${imported_location})
set_target_properties(Qt5::moc PROPERTIES
IMPORTED_LOCATION ${imported_location}
) )
# For CMake automoc feature # For CMake automoc feature
get_target_property(QT_MOC_EXECUTABLE Qt5::moc LOCATION) get_target_property(QT_MOC_EXECUTABLE Qt5::moc LOCATION)
...@@ -28,12 +34,15 @@ endif() ...@@ -28,12 +34,15 @@ endif()
if (NOT TARGET Qt5::rcc) if (NOT TARGET Qt5::rcc)
add_executable(Qt5::rcc IMPORTED) add_executable(Qt5::rcc IMPORTED)
set_target_properties(Qt5::rcc PROPERTIES
!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
IMPORTED_LOCATION \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\" set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
!!ELSE !!ELSE
IMPORTED_LOCATION \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\" set(imported_location \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
!!ENDIF !!ENDIF
_qt5_Core_check_file_exists(${imported_location})
set_target_properties(Qt5::rcc PROPERTIES
IMPORTED_LOCATION ${imported_location}
) )
endif() endif()
...@@ -51,6 +60,9 @@ set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_HOST_DATA_ ...@@ -51,6 +60,9 @@ set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_HOST_DATA_
!!ELSE !!ELSE
set(_qt5_corelib_extra_includes \"$${CMAKE_HOST_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\") set(_qt5_corelib_extra_includes \"$${CMAKE_HOST_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\")
!!ENDIF !!ENDIF
foreach(_dir ${_qt5_corelib_extra_includes})
_qt5_Core_check_file_exists(${_dir})
endforeach()
list(APPEND Qt5Core_INCLUDE_DIRS ${_qt5_corelib_extra_includes}) list(APPEND Qt5Core_INCLUDE_DIRS ${_qt5_corelib_extra_includes})
set_property(TARGET Qt5::Core APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${_qt5_corelib_extra_includes}) set_property(TARGET Qt5::Core APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${_qt5_corelib_extra_includes})
...@@ -87,23 +99,28 @@ if (NOT TARGET Qt5::WinMain) ...@@ -87,23 +99,28 @@ if (NOT TARGET Qt5::WinMain)
!!IF !isEmpty(CMAKE_RELEASE_TYPE) !!IF !isEmpty(CMAKE_RELEASE_TYPE)
set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(Qt5::WinMain PROPERTIES
!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
IMPORTED_LOCATION_RELEASE \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\" set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\")
!!ELSE !!ELSE
IMPORTED_LOCATION_RELEASE \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\" set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\")
!!ENDIF !!ENDIF
set_target_properties(Qt5::WinMain PROPERTIES
IMPORTED_LOCATION_RELEASE ${imported_location}
) )
!!ENDIF !!ENDIF
!!IF !isEmpty(CMAKE_DEBUG_TYPE) !!IF !isEmpty(CMAKE_DEBUG_TYPE)
set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(Qt5::WinMain PROPERTIES
!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
IMPORTED_LOCATION_DEBUG \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\" set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\")
!!ELSE !!ELSE
IMPORTED_LOCATION_DEBUG \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\" set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\")
!!ENDIF !!ENDIF
set_target_properties(Qt5::WinMain PROPERTIES
IMPORTED_LOCATION_DEBUG ${imported_location}
) )
!!ENDIF !!ENDIF
...@@ -131,3 +148,5 @@ endif() ...@@ -131,3 +148,5 @@ endif()
get_filename_component(_Qt5CoreConfigDir ${CMAKE_CURRENT_LIST_FILE} PATH) get_filename_component(_Qt5CoreConfigDir ${CMAKE_CURRENT_LIST_FILE} PATH)
set(_Qt5CTestMacros \"${_Qt5CoreConfigDir}/Qt5CTestMacros.cmake\") set(_Qt5CTestMacros \"${_Qt5CoreConfigDir}/Qt5CTestMacros.cmake\")
_qt5_Core_check_file_exists(${_Qt5CTestMacros})