f9048b3465
Modified common MacOS gcc config for iOS compatibility. Added iOS mkspecs for iOS devices and simulator using G++, LLVM-G++ or CLANG compilers. Change-Id: If0a0b1a3ce4e0dc4db319a315e227a9d31549399 Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
85 lines
2.8 KiB
Plaintext
85 lines
2.8 KiB
Plaintext
#
|
|
# Helper to set CPU architecture flags for iOS configurations
|
|
#
|
|
# Depends on:
|
|
#
|
|
# QMAKE_IPHONEOS_DEPLOYMENT_TARGET - set in mkspecs/common/ios/versions.conf
|
|
#
|
|
# Note:
|
|
#
|
|
# Must be included after load(qt_config) in mkspec for auto-detection based
|
|
# on GL/ES version (GL/ES 2.x implies armv7 on iOS).
|
|
#
|
|
|
|
# Target architecture for iOS devices (armv6, armv7 or leave blank for default)
|
|
QMAKE_IOS_TARGET_ARCH =
|
|
|
|
###########################################################################
|
|
|
|
# Device?
|
|
!*simulator* {
|
|
# Let mkspec specify archictecture
|
|
*armv6*: QMAKE_IOS_TARGET_ARCH = armv6
|
|
else:*armv7*: QMAKE_IOS_TARGET_ARCH = armv7
|
|
|
|
# ARMv7 architecture device (see below) is required for OpenGL/ES 2.x
|
|
isEmpty(QMAKE_IOS_TARGET_ARCH):contains(QT_CONFIG, opengles2): QMAKE_IOS_TARGET_ARCH = armv7
|
|
|
|
# No target architecture specified?
|
|
isEmpty(QMAKE_IOS_TARGET_ARCH) {
|
|
# iOS versions < 4.3 can be armv6 or armv7, so need armv6 for max. compatibility,
|
|
# assume that building for OpenGL/ES 1.x is targeting armv6
|
|
lessThan(QMAKE_IPHONEOS_DEPLOYMENT_TARGET, "4.3")|contains(QT_CONFIG, opengles1) {
|
|
QMAKE_IOS_TARGET_ARCH = armv6
|
|
} else: QMAKE_IOS_TARGET_ARCH = armv7
|
|
}
|
|
|
|
# Samsung S5PC100, Apple A4, A5, A5X
|
|
equals(QMAKE_IOS_TARGET_ARCH, "armv7") {
|
|
# iOS CPU architecture (armv7)
|
|
QMAKE_IOS_ARM_ARCH = __ARM_ARCH_7__
|
|
|
|
# Thumb2 instructions
|
|
QMAKE_IOS_ARM_FLAGS = -mthumb
|
|
QMAKE_IOS_ARM_ARCH += __MARM_THUMB__
|
|
|
|
# NEON instructions
|
|
*-g++*: QMAKE_IOS_ARM_FLAGS += -mfloat-abi=softfp -mfpu=neon
|
|
QMAKE_IOS_ARM_ARCH += __ARM_NEON__
|
|
} else {
|
|
# Samsung S5L8900
|
|
if(equals(QMAKE_IOS_TARGET_ARCH, "armv6")) {
|
|
# iOS CPU architecture (armv6)
|
|
QMAKE_IOS_ARM_ARCH = __ARM_ARCH_6__
|
|
|
|
# ARM instructions
|
|
QMAKE_IOS_ARM_FLAGS = -marm -mcpu=arm1176jzf-s
|
|
!*clang*: QMAKE_IOS_ARM_FLAGS += -march=armv6
|
|
} else {
|
|
# Unsupported architecture
|
|
error("Invalid iOS target $${QMAKE_IOS_TARGET_ARCH}! Edit mkspecs/common/ios/arch.conf to specify target architecture.")
|
|
}
|
|
}
|
|
# Simulator is i386 only
|
|
} else: QMAKE_IOS_TARGET_ARCH = i386
|
|
|
|
# iOS architecture build flags
|
|
QMAKE_IOS_ARCH_FLAGS = -arch $$QMAKE_IOS_TARGET_ARCH
|
|
QMAKE_CFLAGS += $$QMAKE_IOS_ARCH_FLAGS
|
|
QMAKE_CXXFLAGS += $$QMAKE_IOS_ARCH_FLAGS
|
|
QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_IOS_ARCH_FLAGS
|
|
QMAKE_LFLAGS += $$QMAKE_IOS_ARCH_FLAGS
|
|
QMAKE_IOS_TARGET_ARCH =
|
|
QMAKE_IOS_ARCH_FLAGS =
|
|
|
|
# Architecture specific defines/flags
|
|
!*simulator* {
|
|
DEFINES += $$QMAKE_IOS_ARM_ARCH
|
|
QMAKE_IOS_ARM_ARCH =
|
|
|
|
QMAKE_CFLAGS += $$QMAKE_IOS_ARM_FLAGS
|
|
QMAKE_CXXFLAGS += $$QMAKE_IOS_ARM_FLAGS
|
|
QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_IOS_ARM_FLAGS
|
|
QMAKE_IOS_ARM_FLAGS =
|
|
}
|