summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/mac/sdk.mk
blob: c40f58c987c7617e65f26c8f92277f15cc9ceb01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

ifeq ($(QT_MAC_SDK_NO_VERSION_CHECK),)
    CHECK_SDK_COMMAND = /usr/bin/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.
        # This covers use-cases such as running 'make check' after moving the build to a
        # computer without Xcode or with a different Xcode version.
        TARGET_UP_TO_DATE := $(shell QT_MAC_SDK_NO_VERSION_CHECK=1 $(MAKE) --question $(QMAKE_TARGET) && echo 1 || echo 0)
        ifeq ($(TARGET_UP_TO_DATE),0)
            ifneq ($(findstring missing DEVELOPER_DIR path,$(CURRENT_MAC_SDK_VERSION)),)
                $(info The developer dir $(EXPORT_QMAKE_XCODE_DEVELOPER_PATH) is no longer valid.)
            else ifneq ($(findstring SDK "$(EXPORT_QMAKE_MAC_SDK)" cannot be located,$(CURRENT_MAC_SDK_VERSION)),)
                $(info The developer dir $(EXPORT_QMAKE_XCODE_DEVELOPER_PATH) no longer contains the $(EXPORT_QMAKE_MAC_SDK_VERSION) platform SDK.)
            else ifneq ($(CURRENT_MAC_SDK_VERSION),)
                $(info The platform SDK has been changed from version $(EXPORT_QMAKE_MAC_SDK_VERSION) to version $(CURRENT_MAC_SDK_VERSION).)
            else
                $(info Unknown error resolving current platform SDK version.)
            endif
            $(info This requires a fresh build. Please wipe the build directory completely,)
            $(info including any .qmake.stash and .qmake.cache files generated by qmake.)
            $(error ^)
        endif
    endif
endif