summaryrefslogtreecommitdiffstats
path: root/mkspecs/macx-ios-clang/features/default_post.prf
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-11-26 22:30:27 +0100
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2013-11-26 22:35:48 +0100
commit4a8273a6fc2e741e811cf5dabc9a3c240306cf7f (patch)
tree2148abc88f8543eecdc0b97b2dd92594836af9b2 /mkspecs/macx-ios-clang/features/default_post.prf
parent036c5db468164297d213764c59a4b59daa76d90a (diff)
parent1c2be58fecaff1de5f2849192eb712984ebd59bd (diff)
Merge remote-tracking branch 'origin/stable' into dev
For the conflicts in msvc_nmake.cpp the ifdefs are extended since we need to support windows phone in the target branch while it is not there in the current stable branch (as of Qt 5.2). Conflicts: configure qmake/generators/win32/msvc_nmake.cpp src/3rdparty/angle/src/libEGL/Surface.cpp src/angle/src/common/common.pri src/corelib/global/qglobal.h src/corelib/io/qstandardpaths.cpp src/plugins/platforms/qnx/qqnxintegration.cpp src/plugins/platforms/qnx/qqnxscreeneventhandler.h src/plugins/platforms/xcb/qglxintegration.h src/widgets/kernel/win.pri tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp tools/configure/configureapp.cpp Change-Id: I00b579eefebaf61d26ab9b00046d2b5bd5958812
Diffstat (limited to 'mkspecs/macx-ios-clang/features/default_post.prf')
-rw-r--r--mkspecs/macx-ios-clang/features/default_post.prf220
1 files changed, 172 insertions, 48 deletions
diff --git a/mkspecs/macx-ios-clang/features/default_post.prf b/mkspecs/macx-ios-clang/features/default_post.prf
index 0d38c058c9..0a35b1167d 100644
--- a/mkspecs/macx-ios-clang/features/default_post.prf
+++ b/mkspecs/macx-ios-clang/features/default_post.prf
@@ -1,6 +1,21 @@
-equals(TEMPLATE, app) {
+# In case the user sets the SDK manually
+contains(QMAKE_MAC_SDK, ^iphonesimulator.*) {
+ iphonesimulator_and_iphoneos: \
+ error("iOS simulator is handled automatically for iphonesimulator_and_iphoneos")
+
+ CONFIG += iphonesimulator
+}
+
+# Resolve config so we don't need to use CONFIG() later on
+CONFIG(iphonesimulator, iphonesimulator|iphoneos) {
+ CONFIG -= iphoneos
+} else {
+ CONFIG -= iphonesimulator
+ CONFIG += iphoneos
+}
+equals(TEMPLATE, app) {
# If the application uses Qt, it needs to be an application bundle
# to be able to deploy and run on iOS. The only exception to this
# is if you're working with a jailbroken device and can run the
@@ -8,47 +23,150 @@ equals(TEMPLATE, app) {
# use-case we care about, so no need to complicate the logic.
qt: CONFIG *= app_bundle
- # Application bundles require building through Xcode
- app_bundle:!macx-xcode {
- # For Qt applications we want Xcode project files as the generated output,
- # but since qmake doesn't handle the transition between makefiles and Xcode
- # project files (which happens when using subdirs), we create a wrapper
- # makefile that takes care of generating the Xcode project, and allows
- # building by calling out to xcodebuild.
- TEMPLATE = aux
-
- CONFIG =
- SOURCES =
- OBJECTIVE_SOURCES =
- RESOURCES =
- INSTALLS =
- QMAKE_EXTRA_COMPILERS =
- QMAKE_EXTRA_TARGETS =
-
- TARGET_XCODE_PROJECT_DIR = $${TARGET}.xcodeproj
-
- system("cd $$system_quote($$OUT_PWD) && $${QMAKE_QMAKE} $$system_quote($$_PRO_FILE_) -spec macx-xcode")
-
- # We use xcodebuild to do the actual build, but filter out the verbose
- # output that shows all environment variables for each build step.
- xcodebuild_build.commands = "@bash -o pipefail -c 'xcodebuild | grep -v setenv'"
- QMAKE_EXTRA_TARGETS += xcodebuild_build
- all.depends = xcodebuild_build
- QMAKE_EXTRA_TARGETS += all
-
- # We do the same for the clean action
- xcodebuild_clean.commands = "@xcodebuild clean"
- QMAKE_EXTRA_TARGETS += xcodebuild_clean
- clean.depends = xcodebuild_clean
- QMAKE_EXTRA_TARGETS += clean
-
- # And distclean
- xcodebuild_distclean.commands = "$(DEL_FILE) -R $$TARGET_XCODE_PROJECT_DIR"
- xcodebuild_distclean.depends = xcodebuild_clean
- QMAKE_EXTRA_TARGETS += xcodebuild_distclean
- distclean.depends = xcodebuild_distclean
- QMAKE_EXTRA_TARGETS += distclean
+ app_bundle {
+ macx-xcode {
+ # There is no way to genereate Xcode projects that are limited to either
+ # simulator or device builds, so iphonesimulator_and_iphoneos is always
+ # effectivly active, even if the user disabled it explicitly.
+ # The Xcode generator doesn't support multiple BUILDS though (exclusive
+ # builds), so we have to manually set up the simulator suffix.
+ library_suffix_iphonesimulator.name = "$${QMAKE_XCODE_LIBRARY_SUFFIX_SETTING}[sdk=iphonesimulator*]"
+ library_suffix_iphonesimulator.value = "_iphonesimulator$($${QMAKE_XCODE_LIBRARY_SUFFIX_SETTING})"
+ QMAKE_MAC_XCODE_SETTINGS += library_suffix_iphonesimulator
+ CONFIG *= xcode_dynamic_library_suffix
+ } else {
+ # For Qt applications we want Xcode project files as the generated output,
+ # but since qmake doesn't handle the transition between makefiles and Xcode
+ # project files (which happens when using subdirs), we create a wrapper
+ # makefile that takes care of generating the Xcode project, and allows
+ # building by calling out to xcodebuild.
+ TEMPLATE = aux
+
+ SOURCES =
+ OBJECTIVE_SOURCES =
+ RESOURCES =
+ INSTALLS =
+ QMAKE_EXTRA_COMPILERS =
+ QMAKE_EXTRA_TARGETS =
+
+ !build_pass {
+ CONFIG += debug_and_release
+ load(resolve_config)
+
+ CONFIG += iphonesimulator_and_iphoneos
+ iphonesimulator.name = Simulator
+ iphoneos.name = Device
+ addExclusiveBuilds(iphonesimulator, iphoneos)
+
+ load(exclusive_builds_post)
+
+ xcode_distclean.commands = "$(DEL_FILE) -R $${TARGET}.xcodeproj"
+ xcode_distclean.depends = \
+ debug-iphonesimulator-distclean debug-iphoneos-distclean \
+ release-iphonesimulator-distclean release-iphoneos-distclean
+ QMAKE_EXTRA_TARGETS += xcode_distclean
+ distclean.depends = xcode_distclean
+ QMAKE_EXTRA_TARGETS += distclean
+
+ args =
+ for(arg, QMAKE_ARGS): \
+ args += $$system_quote($$arg)
+ system("cd $$system_quote($$OUT_PWD) && $$QMAKE_QMAKE $$args $$system_quote($$_PRO_FILE_) -spec macx-xcode")
+
+ } else {
+ load(resolve_config)
+
+ iphonesimulator: \
+ sdk = iphonesimulator
+ else: \
+ sdk = iphoneos
+
+ debug: \
+ cfg = debug
+ else: \
+ cfg = release
+
+ for(action, $$list(build install clean)) {
+ equals(action, build) {
+ action_target_suffix =
+ action_target = all
+ } else {
+ action_target_suffix = -$$action
+ action_target = $$action
+ }
+
+ target = $${sdk}-$${cfg}$${action_target_suffix}
+
+ $${target}.commands = "@bash -o pipefail -c 'xcodebuild $$action -sdk $$sdk -configuration $$title($$cfg) | grep -v setenv'"
+ QMAKE_EXTRA_TARGETS += $$target
+
+ $${action_target}.depends += $$target
+ QMAKE_EXTRA_TARGETS *= $${action_target}
+ }
+
+ xcode_build_dir_distclean.commands = "$(DEL_FILE) -R $$title($$cfg)-$${sdk}"
+ xcode_build_dir_distclean.depends = clean
+ QMAKE_EXTRA_TARGETS += xcode_build_dir_distclean
+ distclean.depends = xcode_build_dir_distclean
+ QMAKE_EXTRA_TARGETS += distclean
+ }
+
+ CONFIG =
+ }
+ }
+} else: equals(TEMPLATE, lib) {
+ iphonesimulator.name = Simulator
+ iphoneos.name = Device
+ addExclusiveBuilds(iphonesimulator, iphoneos)
+
+ iphonesimulator_and_iphoneos:iphonesimulator {
+ QT_ARCH = i386
+ QMAKE_MAC_SDK ~= s,^iphoneos,iphonesimulator,
+
+ # Since the CPU feature detection done by configure is limited to one
+ # target at the moment, we disable SIMD support for simulator.
+ CONFIG -= simd
}
+} else: equals(TEMPLATE, subdirs) {
+ # Prevent recursion into host_builds
+ for(subdir, SUBDIRS) {
+ contains($${subdir}.CONFIG, host_build) {
+ $${subdir}.CONFIG += no_iphoneos_target no_iphonesimulator_target
+
+ # Other targets which we do want to recurse into may depend on this target,
+ # for example corelib depends on moc, rcc, bootstrap, etc, and other libs
+ # may depend on host-tools that are needed to build the lib, so we resolve
+ # the final target name and redirect it to the base target, so that the
+ # dependency chain is not broken for the other targets.
+
+ !isEmpty($${subdir}.target) {
+ target = $$eval($${subdir}.target)
+ } else {
+ !isEmpty($${subdir}.file): \
+ file = $$eval($${subdir}.file)
+ else: !isEmpty($${subdir}.subdir): \
+ file = $$eval($${subdir}.subdir)
+ else: \
+ file = $$subdir
+
+ target = sub-$$file
+ }
+
+ target ~= s,[^a-zA-Z0-9_],-,
+
+ $${target}-iphonesimulator.depends = $$target
+ $${target}-iphoneos.depends = $$target
+ QMAKE_EXTRA_TARGETS += $${target}-iphonesimulator $${target}-iphoneos
+ }
+ }
+
+ prepareRecursiveTarget(iphonesimulator)
+ prepareRecursiveTarget(iphoneos)
+ QMAKE_EXTRA_TARGETS += iphonesimulator iphoneos
+
+} else: equals(TEMPLATE, aux) {
+ # Dummy targets for the 'aux' TEMPLATE, so we can always recurse
+ QMAKE_EXTRA_TARGETS *= iphonesimulator iphoneos
}
macx-xcode {
@@ -57,15 +175,21 @@ macx-xcode {
QMAKE_MAC_XCODE_SETTINGS += ios_device_family
}
-# Be more specific about which architecture we're targeting
-equals(QT_ARCH, arm): \
- actual_archs = $$QMAKE_IOS_DEVICE_ARCHS
-else: \
- actual_archs = $$QMAKE_IOS_SIMULATOR_ARCHS
-
macx-xcode {
- QMAKE_XCODE_ARCHS = $$actual_archs
+ arch_iphoneos.name = "ARCHS[sdk=iphoneos*]"
+ arch_iphoneos.value = $$QMAKE_IOS_DEVICE_ARCHS
+ arch_iphonesimulator.name = "ARCHS[sdk=iphonesimulator*]"
+ arch_iphonesimulator.value = $$QMAKE_IOS_SIMULATOR_ARCHS
+
+ QMAKE_MAC_XCODE_SETTINGS += arch_iphoneos arch_iphonesimulator
+ unset(QMAKE_XCODE_ARCHS)
} else {
+# Be more specific about which architecture we're targeting
+ equals(QT_ARCH, arm): \
+ actual_archs = $$QMAKE_IOS_DEVICE_ARCHS
+ else: \
+ actual_archs = $$QMAKE_IOS_SIMULATOR_ARCHS
+
for(arch, actual_archs): \
arch_flags += -arch $$arch