From 14f27aebf5898dc2e420c9c86f6d8d9a4ef764aa Mon Sep 17 00:00:00 2001
From: Ray Donnelly <mingw.android@gmail.com>
Date: Mon, 10 Dec 2018 14:45:19 -0600
Subject: [PATCH 01/13] qtbase: osx: allow any xcrun in PATH

Change-Id: I6066837f34fbed47340aa280d696e9deb3c79fc7
---
 qtbase/configure                            | 10 +++++-----
 qtbase/mkspecs/features/mac/default_pre.prf |  8 ++++----
 qtbase/mkspecs/features/mac/sdk.mk          |  2 +-
 qtbase/mkspecs/features/mac/sdk.prf         |  4 ++--
 qtbase/qtbase/mkspecs/features/mac/sdk.mk   | 12 ++++++++++++
 5 files changed, 24 insertions(+), 12 deletions(-)
 create mode 100644 qtbase/qtbase/mkspecs/features/mac/sdk.mk

diff --git a/qtbase/configure b/qtbase/configure
index b6c9b462f2..35f273982d 100644
--- a/qtbase/configure
+++ b/qtbase/configure
@@ -232,7 +232,7 @@ macSDKify()
 
     sdk=$(getSingleQMakeVariable "QMAKE_MAC_SDK" "$1")
     if [ -z "$sdk" ]; then echo "QMAKE_MAC_SDK must be set when building on Mac" >&2; exit 1; fi
-    sysroot=$(/usr/bin/xcrun --sdk $sdk --show-sdk-path 2>/dev/null)
+    sysroot=$(xcrun --sdk $sdk --show-sdk-path 2>/dev/null)
     if [ -z "$sysroot" ]; then echo "Failed to resolve SDK path for '$sdk'" >&2; exit 1; fi
 
     case "$sdk" in
@@ -267,7 +267,7 @@ macSDKify()
                 # Prefix tool with toolchain path
                 var=$(echo "$line" | cut -d '=' -f 1)
                 val=$(echo "$line" | cut -d '=' -f 2-)
-                sdk_val=$(/usr/bin/xcrun -sdk $sdk -find $(echo $val | cut -d ' ' -f 1))
+                sdk_val=$(xcrun -sdk $sdk -find $(echo $val | cut -d ' ' -f 1))
                 val=$(echo $sdk_val $(echo $val | cut -s -d ' ' -f 2-))
                 echo "$var=$val"
             ;;
@@ -315,7 +315,7 @@ fi
 #-------------------------------------------------------------------------------
 
 if [ "$BUILD_ON_MAC" = "yes" ]; then
-    if ! /usr/bin/xcode-select --print-path >/dev/null 2>&1; then
+    if ! xcode-select --print-path >/dev/null 2>&1; then
         echo >&2
         echo "   No Xcode selected. Please install Xcode via the App Store, " >&2
         echo "   or the command line developer tools via xcode-select --install, " >&2
@@ -326,8 +326,8 @@ if [ "$BUILD_ON_MAC" = "yes" ]; then
     fi
 
     # In the else case we are probably using a Command Line Tools installation
-    if /usr/bin/xcrun -find xcodebuild >/dev/null 2>&1; then
-        if ! /usr/bin/xcrun xcodebuild -license check 2>/dev/null; then
+    if xcrun -find xcodebuild >/dev/null 2>&1; then
+        if ! xcrun xcodebuild -license check 2>/dev/null; then
             echo >&2
             echo "   Xcode setup not complete. You need to confirm the license" >&2
             echo "   agreement by running 'sudo xcrun xcodebuild -license accept'." >&2
diff --git a/qtbase/mkspecs/features/mac/default_pre.prf b/qtbase/mkspecs/features/mac/default_pre.prf
index e3534561a5..56a7e62155 100644
--- a/qtbase/mkspecs/features/mac/default_pre.prf
+++ b/qtbase/mkspecs/features/mac/default_pre.prf
@@ -3,7 +3,7 @@ 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")
+    QMAKE_XCODE_DEVELOPER_PATH = $$system("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.")
 
@@ -13,16 +13,16 @@ isEmpty(QMAKE_XCODE_DEVELOPER_PATH) {
 }
 
 isEmpty(QMAKE_XCODEBUILD_PATH): \
-    QMAKE_XCODEBUILD_PATH = $$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null")
+    QMAKE_XCODEBUILD_PATH = $$system("xcrun -find xcodebuild 2>/dev/null")
 
 !isEmpty(QMAKE_XCODEBUILD_PATH) {
     # Make sure Xcode is set up properly
-    !system("/usr/bin/xcrun xcodebuild -license check 2>/dev/null"): \
+    !system("xcrun xcodebuild -license check 2>/dev/null"): \
         error("Xcode not set up properly. You need to confirm the license agreement by running 'sudo xcrun xcodebuild -license accept'.")
 
     isEmpty(QMAKE_XCODE_VERSION) {
         # Extract Xcode version using xcodebuild
-        xcode_version = $$system("/usr/bin/xcrun xcodebuild -version")
+        xcode_version = $$system("xcrun xcodebuild -version")
         QMAKE_XCODE_VERSION = $$member(xcode_version, 1)
         isEmpty(QMAKE_XCODE_VERSION): error("Could not resolve Xcode version.")
         unset(xcode_version)
diff --git a/qtbase/mkspecs/features/mac/sdk.mk b/qtbase/mkspecs/features/mac/sdk.mk
index f30b5830b4..1ac85f32f5 100644
--- a/qtbase/mkspecs/features/mac/sdk.mk
+++ b/qtbase/mkspecs/features/mac/sdk.mk
@@ -1,6 +1,6 @@
 
 ifeq ($(QT_MAC_SDK_NO_VERSION_CHECK),)
-    CHECK_SDK_COMMAND = /usr/bin/xcrun --sdk $(EXPORT_QMAKE_MAC_SDK) -show-sdk-version 2>&1
+    CHECK_SDK_COMMAND = xcrun --sdk $(EXPORT_QMAKE_MAC_SDK) -show-sdk-version 2>&1
     CURRENT_MAC_SDK_VERSION := $(shell DEVELOPER_DIR=$(EXPORT_QMAKE_XCODE_DEVELOPER_PATH) $(CHECK_SDK_COMMAND))
     ifneq ($(CURRENT_MAC_SDK_VERSION),$(EXPORT_QMAKE_MAC_SDK_VERSION))
         # We don't want to complain about out of date SDK unless the target needs to be remade.
diff --git a/qtbase/mkspecs/features/mac/sdk.prf b/qtbase/mkspecs/features/mac/sdk.prf
index 3a9c2778bb..12c1c82639 100644
--- a/qtbase/mkspecs/features/mac/sdk.prf
+++ b/qtbase/mkspecs/features/mac/sdk.prf
@@ -18,7 +18,7 @@ defineReplace(xcodeSDKInfo) {
         sdk = $$QMAKE_MAC_SDK
 
     isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}) {
-        QMAKE_MAC_SDK.$${sdk}.$${info} = $$system("/usr/bin/xcrun --sdk $$sdk $$infoarg 2>/dev/null")
+        QMAKE_MAC_SDK.$${sdk}.$${info} = $$system("xcrun --sdk $$sdk $$infoarg 2>/dev/null")
         # --show-sdk-platform-path won't work for Command Line Tools; this is fine
         # only used by the XCTest backend to testlib
         isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}):if(!isEmpty(QMAKE_XCODEBUILD_PATH)|!equals(infoarg, "--show-sdk-platform-path")): \
@@ -53,7 +53,7 @@ for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_FIX_RPATH QMAKE_AR QMAKE_RANLIB QMAKE_
     value = $$eval($$tool)
     isEmpty(value): next()
 
-    sysrooted = $$system("/usr/bin/xcrun -sdk $$QMAKE_MAC_SDK -find $$first(value) 2>/dev/null")
+    sysrooted = $$system("xcrun -sdk $$QMAKE_MAC_SDK -find $$first(value) 2>/dev/null")
     isEmpty(sysrooted): next()
 
     $$tool = $$sysrooted $$member(value, 1, -1)
diff --git a/qtbase/qtbase/mkspecs/features/mac/sdk.mk b/qtbase/qtbase/mkspecs/features/mac/sdk.mk
new file mode 100644
index 0000000000..f912d6016a
--- /dev/null
+++ b/qtbase/qtbase/mkspecs/features/mac/sdk.mk
@@ -0,0 +1,12 @@
+CURRENT_MAC_SDK_VERSION := $(shell DEVELOPER_DIR=$(EXPORT_QMAKE_XCODE_DEVELOPER_PATH) 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
-- 
2.38.1.windows.1

