summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2018-08-31 11:43:24 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2018-08-31 12:25:19 +0000
commit3ed306772eb333fb4d9fa0b0a003c119e848ed58 (patch)
tree3f727ae307630214fc1efd1e2a32eabcd3e98f35 /mkspecs
parent5b6eb8e247d246a28bdc8ce533c52d7647a44a90 (diff)
macOS: Detect changes to the platform SDK and ask the user to deal with it
Otherwise the SDK upgrade (or downgrade) may subtly and silently affect the resulting binary, or if it results in build breaks, the user won't know why. We limit it to applications for now, as that's the point where it's most important to catch the SDK upgrade, but technically we should also do this for intermediate libraries. Doing it for everything will likely incur a performance cost, so we skip that for now. Change-Id: I8a0604aad8b1e9fba99848ab8ab031c07fd50dc4 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/features/mac/default_post.prf6
-rw-r--r--mkspecs/features/mac/sdk.mk12
2 files changed, 18 insertions, 0 deletions
diff --git a/mkspecs/features/mac/default_post.prf b/mkspecs/features/mac/default_post.prf
index c6eb7c5a2c..adc796f395 100644
--- a/mkspecs/features/mac/default_post.prf
+++ b/mkspecs/features/mac/default_post.prf
@@ -1,5 +1,11 @@
load(default_post)
+# Detect changes to the platform SDK. Apps only for now
+contains(TEMPLATE, .*app):!macx-xcode {
+ QMAKE_EXTRA_VARIABLES += QMAKE_MAC_SDK QMAKE_MAC_SDK_VERSION
+ QMAKE_EXTRA_INCLUDES += $$shell_quote($$PWD/sdk.mk)
+}
+
!no_objective_c:CONFIG += objective_c
qt {
diff --git a/mkspecs/features/mac/sdk.mk b/mkspecs/features/mac/sdk.mk
new file mode 100644
index 0000000000..a7c8268da5
--- /dev/null
+++ b/mkspecs/features/mac/sdk.mk
@@ -0,0 +1,12 @@
+CURRENT_MAC_SDK_VERSION := $(shell /usr/bin/xcrun --sdk $(EXPORT_QMAKE_MAC_SDK) -show-sdk-version)
+
+ifneq ($(CURRENT_MAC_SDK_VERSION),$(EXPORT_QMAKE_MAC_SDK_VERSION))
+ $(info The platform SDK has been changed from version $(EXPORT_QMAKE_MAC_SDK_VERSION) to version $(CURRENT_MAC_SDK_VERSION).)
+ $(info This requires a fresh build. Please wipe the build directory completely,)
+ $(info including any .qmake.stash and .qmake.cache files generated by qmake.)
+ # FIXME: Ideally this should be advertised as just running make distclean, or we
+ # should even do it automatically by having proper makefile dependencies between
+ # .qmake.stash and the SDK version, but as qmake doesn't seem to be consistent in
+ # how it deals with .qmake.stash as a dependency we need to defer that until later.
+ $(error ^)
+endif