CONFIG = asset_catalogs rez $$CONFIG
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")
    isEmpty(QMAKE_XCODE_DEVELOPER_PATH): \
        error("Xcode path is not set. Please use xcode-select to choose Xcode installation path.")

    # Make sure Xcode path is valid
    !exists($$QMAKE_XCODE_DEVELOPER_PATH): \
        error("Xcode is not installed in $${QMAKE_XCODE_DEVELOPER_PATH}. Please use xcode-select to choose Xcode installation path.")
}

isEmpty(QMAKE_XCODEBUILD_PATH): \
    QMAKE_XCODEBUILD_PATH = $$system("/usr/bin/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"): \
        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")
        QMAKE_XCODE_VERSION = $$member(xcode_version, 1)
        isEmpty(QMAKE_XCODE_VERSION): error("Could not resolve Xcode version.")
        unset(xcode_version)
    }
}

isEmpty(QMAKE_TARGET_BUNDLE_PREFIX) {
    QMAKE_XCODE_PREFERENCES_FILE = $$(HOME)/Library/Preferences/com.apple.dt.Xcode.plist
    exists($$QMAKE_XCODE_PREFERENCES_FILE): \
        QMAKE_TARGET_BUNDLE_PREFIX = $$system("/usr/libexec/PlistBuddy -c 'print IDETemplateOptions:bundleIdentifierPrefix' $$QMAKE_XCODE_PREFERENCES_FILE 2>/dev/null")

    !isEmpty(_QMAKE_CACHE_):!isEmpty(QMAKE_TARGET_BUNDLE_PREFIX): \
        cache(QMAKE_TARGET_BUNDLE_PREFIX)
}

QMAKE_ASSET_CATALOGS_APP_ICON = AppIcon

# Make the default debug info format for static debug builds
# DWARF instead of DWARF with dSYM. This cuts down build times
# for application debug builds significantly, as Xcode doesn't
# have to pull out all the DWARF info from the Qt static libs
# and put it into a dSYM file. We don't need that dSYM file in
# the first place, since the information is available in the
# object files inside the archives (static libraries).
macx-xcode:qtConfig(static): \
    QMAKE_XCODE_DEBUG_INFORMATION_FORMAT = dwarf

# This variable is used by the xcode_dynamic_library_suffix
# feature, which allows Xcode to choose the Qt libraries to link to
# at build time, depending on the current Xcode SDK and configuration.
QMAKE_XCODE_LIBRARY_SUFFIX_SETTING = QT_LIBRARY_SUFFIX

xcode_copy_phase_strip_setting.name = COPY_PHASE_STRIP
xcode_copy_phase_strip_setting.value = NO
QMAKE_MAC_XCODE_SETTINGS += xcode_copy_phase_strip_setting
