1# 2# Helper to set build tool & SDK versions for iOS configurations 3# 4# This file sets up the following configuration variables: 5# 6# QMAKE_IOS_XCODE_VERSION - version number of Xcode being used 7# QMAKE_IOS_SDK_VERSION - version number of iOS device SDK 8# QMAKE_IOS_SIMULATOR_SDK_VERSION - version number of iOS simulator SDK 9# 10# Used in: 11# 12# mkspecs/common/ios/clang.conf 13# mkspecs/common/ios/llvm.conf 14# mkspecs/common/ios/qmake.conf 15# mkspecs/unsupported/macx-iosdevice-clang-legacy/qmake.conf 16# mkspecs/unsupported/macx-iosdevice-clang/qmake.conf 17# mkspecs/unsupported/macx-iosdevice-llvm-legacy/qmake.conf 18# mkspecs/unsupported/macx-iosdevice-llvm/qmake.conf 19# mkspecs/unsupported/macx-iosdevice-g++-legacy/qmake.conf 20# mkspecs/unsupported/macx-iossimulator-llvm-legacy/qmake.conf 21# mkspecs/unsupported/macx-iossimulator-llvm/qmake.conf 22# mkspecs/unsupported/macx-iossimulator-g++-legacy/qmake.conf 23# 24 25# 26# IMPORTANT: 27# 28# Xcode versions <= 4.2.x must be installed in /Developer. 29# Xcode versions >= 4.3.x must be installed in /Applications 30# 31# Xcode versions >= 4.10 & < 5.0 and versions >= 10.0 are not supported due to 32# the way the version checks are done here. As Apple (so far) has not used 33# minor version numbers greater than 3 for Xcode, and the Xcode major version 34# has only changed three times in the period 2003-2012, this is viewed as an 35# acceptable limitation. 36# 37 38# 39# Edit values below to match iOS build environment, or leave blank for 40# autodetection (slower!) 41# 42 43# Xcode version used for cross-compiling 44QMAKE_IOS_XCODE_VERSION = 45 46# iOS SDK version used for cross-compiling for iOS devices 47QMAKE_IOS_SDK_VERSION = 48 49# iOS SDK version used for cross-compiling for the iOS simulator 50QMAKE_IOS_SIMULATOR_SDK_VERSION = 51 52# 53# Do not edit values below here if using a pre-built SDK 54# 55 56# Minimum iOS version required on deployment target (if not specified, will 57# default to minimum version that guarantees ARMv7 & OpenGL/ES 2.x). 58# 59# No part of Qt or any known plugin uses features that require iOS versions 60# later than 4.0. 61QMAKE_IPHONEOS_DEPLOYMENT_TARGET = 4.0 62 63########################################################################### 64 65# No Xcode version specified? 66isEmpty(QMAKE_IOS_XCODE_VERSION) { 67 # Get version string from installed Xcode 68 exists(/Applications/Xcode.app/Contents/Developer) { 69 QMAKE_IOS_XCODE_INFO = $$system(/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -version) 70 } else: QMAKE_IOS_XCODE_INFO = $$system(/Developer/usr/bin/xcodebuild -version) 71 72 # Extract Xcode version number from output 73 QMAKE_IOS_XCODE_VERSION = $$member(QMAKE_IOS_XCODE_INFO, 1) 74 QMAKE_IOS_XCODE_INFO = 75} 76 77# Make sure Xcode version is valid 78!lessThan(QMAKE_IOS_XCODE_VERSION, "4.3") { 79 # Xcode 4.3+ is stored in /Applications 80 QMAKE_IOS_PLATFORM_PATH = /Applications/Xcode.app/Contents/Developer/Platforms 81 82 # Make sure Xcode path is valid 83 !exists($$QMAKE_IOS_PLATFORM_PATH): error("Xcode is not installed in /Applications/Xcode.app! Edit mkspecs/common/ios/versions.conf to specify version installed.") 84} else { 85 # Older Xcode versions are stored in /Developer 86 QMAKE_IOS_PLATFORM_PATH = /Developer/Platforms 87 88 # Make sure Xcode path is valid 89 !exists($$QMAKE_IOS_PLATFORM_PATH): error("Xcode is not installed in /Developer! Edit mkspecs/common/ios/versions.conf to specify version installed.") 90} 91 92# iOS 4.3 is the preferred version as it is the earliest version that is armv7/gles2 only 93QMAKE_IPHONEOS_PREFERRED_TARGET = 4.3 94 95# Building for iOS device? 96!*simulator* { 97 # No iOS SDK version specified? 98 isEmpty(QMAKE_IOS_SDK_VERSION) { 99 # Get version string from installed Xcode 100 !lessThan(QMAKE_IOS_XCODE_VERSION, "4.3") { 101 QMAKE_IOS_SDK_INFO = $$system(/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -showsdks) 102 } else: QMAKE_IOS_SDK_INFO = $$system(/Developer/usr/bin/xcodebuild -showsdks) 103 104 # Get names of installed device SDKs 105 QMAKE_IOS_SDK_INFO = $$find(QMAKE_IOS_SDK_INFO, ^iphoneos) 106 for(v, QMAKE_IOS_SDK_INFO): { 107 # Extract SDK version number from output 108 v = $$replace(v,iphoneos,) 109 110 # Use latest SDK version 111 greaterThan(v, $$QMAKE_IOS_SDK_VERSION): QMAKE_IOS_SDK_VERSION = $$v 112 } 113 QMAKE_IOS_SDK_INFO = 114 } 115 116 # Make sure iOS SDK version is valid 117 !exists($$QMAKE_IOS_PLATFORM_PATH/iPhoneOS.platform/Developer/SDKs/iPhoneOS$${QMAKE_IOS_SDK_VERSION}.sdk) { 118 error("iOS $$QMAKE_IOS_SDK_VERSION SDK not found! Edit mkspecs/common/ios/versions.conf to specify version installed.") 119 } 120 121 # No deployment target specified? 122 isEmpty(QMAKE_IPHONEOS_DEPLOYMENT_TARGET) { 123 # Use SDK version for iOS versions < preferred 124 lessThan(QMAKE_IOS_SDK_VERSION, $$QMAKE_IPHONEOS_PREFERRED_TARGET) { 125 QMAKE_IPHONEOS_DEPLOYMENT_TARGET = $$QMAKE_IOS_SDK_VERSION 126 } else: QMAKE_IPHONEOS_DEPLOYMENT_TARGET = $$QMAKE_IPHONEOS_PREFERRED_TARGET 127 } 128 129 # Make sure iOS SDK version is >= iOS target version 130 !lessThan(QMAKE_IPHONEOS_DEPLOYMENT_TARGET, $$QMAKE_IOS_SDK_VERSION) { 131 error("Target iOS version is greater that iOS SDK version $$QMAKE_IOS_SDK_VERSION! Edit mkspecs/common/ios/versions.conf to specify target iOS version.") 132 } 133# Building for iOS simulator 134} else { 135 # No iOS simulator SDK version specified? 136 isEmpty(QMAKE_IOS_SIMULATOR_SDK_VERSION) { 137 # Get version string from installed Xcode 138 !lessThan(QMAKE_IOS_XCODE_VERSION, "4.3") { 139 QMAKE_IOS_SDK_INFO = $$system(/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -showsdks) 140 } else: QMAKE_IOS_SDK_INFO = $$system(/Developer/usr/bin/xcodebuild -showsdks) 141 142 # Get names of installed device SDKs 143 QMAKE_IOS_SDK_INFO = $$find(QMAKE_IOS_SDK_INFO, ^iphonesimulator) 144 for(v, QMAKE_IOS_SDK_INFO): { 145 # Extract SDK version number from output 146 v = $$replace(v,iphonesimulator,) 147 148 # Use latest SDK version 149 greaterThan(v, $$QMAKE_IOS_SIMULATOR_SDK_VERSION): QMAKE_IOS_SIMULATOR_SDK_VERSION = $$v 150 } 151 QMAKE_IOS_SDK_INFO = 152 } 153 154 # Make sure iOS simulator SDK version is valid 155 !exists($$QMAKE_IOS_PLATFORM_PATH/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator$${QMAKE_IOS_SIMULATOR_SDK_VERSION}.sdk) { 156 error("iOS $$QMAKE_IOS_SIMULATOR_SDK_VERSION simulator SDK not found! Edit mkspecs/common/ios/versions.conf to specify version installed.") 157 } 158 159 # No deployment target specified? 160 isEmpty(QMAKE_IPHONEOS_DEPLOYMENT_TARGET) { 161 # Use SDK version for iOS versions < preferred 162 lessThan(QMAKE_IOS_SIMULATOR_SDK_VERSION, $$QMAKE_IPHONEOS_PREFERRED_TARGET) { 163 QMAKE_IPHONEOS_DEPLOYMENT_TARGET = $$QMAKE_IOS_SIMULATOR_SDK_VERSION 164 } else: QMAKE_IPHONEOS_DEPLOYMENT_TARGET = $$QMAKE_IPHONEOS_PREFERRED_TARGET 165 } 166 167 # Make sure iOS simulator SDK version is >= iOS target version 168 !lessThan(QMAKE_IPHONEOS_DEPLOYMENT_TARGET, $$QMAKE_IOS_SIMULATOR_SDK_VERSION) { 169 error("Target iOS version is greater that iOS simulator SDK version $$QMAKE_IOS_SIMULATOR_SDK_VERSION! Edit mkspecs/common/ios/versions.conf to specify target iOS version.") 170 } 171} 172 173QMAKE_IPHONEOS_PREFERRED_TARGET = 174QMAKE_IOS_PLATFORM_PATH = 175 176# Set deployment target 177QMAKE_IOS_VERSION_FLAGS = -miphoneos-version-min=$$QMAKE_IPHONEOS_DEPLOYMENT_TARGET 178 179# Set build flags 180QMAKE_CFLAGS += $$QMAKE_IOS_VERSION_FLAGS 181QMAKE_CXXFLAGS += $$QMAKE_IOS_VERSION_FLAGS 182QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_IOS_VERSION_FLAGS 183QMAKE_LFLAGS += $$QMAKE_IOS_VERSION_FLAGS 184QMAKE_IOS_VERSION_FLAGS = 185