// Copyright (C) 2018-2025 Apple Inc. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
// PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

// Use the following helpers to define build settings whose value depends on the target
// macOS version in a succinct and future-proof way.
//
// Example 1: To give the SMOOTHNESS build setting the value 3 in macOS 10.12 and later and the
// value 2 in earlier versions, write:
//
//     SMOOTHNESS = $(SMOOTHNESS$(WK_MACOS_1012));
//     SMOOTHNESS_MACOS_BEFORE_1012 = 2;
//     SMOOTHNESS_MACOS_SINCE_1012 = 3;
//
// Example 2: To define ENABLE_COLOR to ENABLE_COLOR in all platforms except macOS 10.12 and
// earlier write:
//
//     ENABLE_COLOR = ENABLE_COLOR;
//     ENABLE_COLOR[sdk=macosx*] = $(ENABLE_COLOR$(WK_MACOS_1013));
//     ENABLE_COLOR_MACOS_SINCE_1013 = $(ENABLE_COLOR);
//
// Example 3: To give EXTRA_PATH one value before macOS 10.12, another value in macOS 10.12 and
// macOS 10.13, and a third value in macOS 10.14 and later, write:
//
//     EXTRA_PATH = $(EXTRA_PATH$(WK_MACOS_1012_1014));
//     EXTRA_PATH_MACOS_BEFORE_1012 = "/Library/Application Support/WebKit";
//     EXTRA_PATH_MACOS_BEFORE_1014 = /System/Library/CoreServices;
//     EXTRA_PATH_MACOS_SINCE_1014 = /System/Library/PrivateFrameworks;

// macOS

WK_MACOS_BEFORE_1014 = $(WK_MACOS_BEFORE_1014_$(TARGET_MAC_OS_X_VERSION_MAJOR));

WK_MACOS_BEFORE_1015 = $(WK_MACOS_BEFORE_1015_$(TARGET_MAC_OS_X_VERSION_MAJOR));
WK_MACOS_BEFORE_1015_101400 = YES;

WK_MACOS_BEFORE_1016 = $(WK_MACOS_BEFORE_1016_$(TARGET_MAC_OS_X_VERSION_MAJOR));
WK_MACOS_BEFORE_1016_101400 = YES;
WK_MACOS_BEFORE_1016_101500 = YES;

WK_MACOS_BEFORE_1100 = $(WK_MACOS_BEFORE_1100_$(TARGET_MAC_OS_X_VERSION_MAJOR));
WK_MACOS_BEFORE_1100_101400 = YES;
WK_MACOS_BEFORE_1100_101500 = YES;

WK_MACOS_BEFORE_1200 = $(WK_MACOS_BEFORE_1200_$(TARGET_MAC_OS_X_VERSION_MAJOR));
WK_MACOS_BEFORE_1200_101400 = YES;
WK_MACOS_BEFORE_1200_101500 = YES;
WK_MACOS_BEFORE_1200_110000 = YES;

WK_MACOS_BEFORE_1300 = $(WK_MACOS_BEFORE_1300_$(TARGET_MAC_OS_X_VERSION_MAJOR));
WK_MACOS_BEFORE_1300_101400 = YES;
WK_MACOS_BEFORE_1300_101500 = YES;
WK_MACOS_BEFORE_1300_110000 = YES;
WK_MACOS_BEFORE_1300_120000 = YES;

WK_MACOS_BEFORE_1400 = $(WK_MACOS_BEFORE_1400_$(TARGET_MAC_OS_X_VERSION_MAJOR));
WK_MACOS_BEFORE_1400_101400 = YES;
WK_MACOS_BEFORE_1400_101500 = YES;
WK_MACOS_BEFORE_1400_110000 = YES;
WK_MACOS_BEFORE_1400_120000 = YES;
WK_MACOS_BEFORE_1400_130000 = YES;

WK_MACOS_BEFORE_1500 = $(WK_MACOS_BEFORE_1500_$(TARGET_MAC_OS_X_VERSION_MAJOR));
WK_MACOS_BEFORE_1500_101400 = YES;
WK_MACOS_BEFORE_1500_101500 = YES;
WK_MACOS_BEFORE_1500_110000 = YES;
WK_MACOS_BEFORE_1500_120000 = YES;
WK_MACOS_BEFORE_1500_130000 = YES;
WK_MACOS_BEFORE_1500_140000 = YES;

WK_MACOS_BEFORE_2600 = $(WK_MACOS_BEFORE_2600_$(TARGET_MAC_OS_X_VERSION_MAJOR));
WK_MACOS_BEFORE_2600_101400 = YES;
WK_MACOS_BEFORE_2600_101500 = YES;
WK_MACOS_BEFORE_2600_110000 = YES;
WK_MACOS_BEFORE_2600_120000 = YES;
WK_MACOS_BEFORE_2600_130000 = YES;
WK_MACOS_BEFORE_2600_140000 = YES;
WK_MACOS_BEFORE_2600_150000 = YES;

WK_MACOS_1014 = $(WK_MACOS_1014_$(WK_MACOS_BEFORE_1014));
WK_MACOS_1014_ = _MACOS_SINCE_1014;
WK_MACOS_1014_YES = _MACOS_BEFORE_1014;

WK_MACOS_1014_1015 = $(WK_MACOS_1014_1015_$(WK_MACOS_BEFORE_1014));
WK_MACOS_1014_1015_ = $(WK_MACOS_1015);
WK_MACOS_1014_1015_YES = _MACOS_BEFORE_1014;

WK_MACOS_1014_1016 = $(WK_MACOS_1014_1016_$(WK_MACOS_BEFORE_1014));
WK_MACOS_1014_1016_ = $(WK_MACOS_1016);
WK_MACOS_1014_1016_YES = _MACOS_BEFORE_1014;

WK_MACOS_1014_1100 = $(WK_MACOS_1014_1100_$(WK_MACOS_BEFORE_1014));
WK_MACOS_1014_1100_ = $(WK_MACOS_1100);
WK_MACOS_1014_1100_YES = _MACOS_BEFORE_1014;

WK_MACOS_1014_1200 = $(WK_MACOS_1014_1200_$(WK_MACOS_BEFORE_1014));
WK_MACOS_1014_1200_ = $(WK_MACOS_1200);
WK_MACOS_1014_1200_YES = _MACOS_BEFORE_1014;

WK_MACOS_1014_1300 = $(WK_MACOS_1014_1300_$(WK_MACOS_BEFORE_1014));
WK_MACOS_1014_1300_ = $(WK_MACOS_1300);
WK_MACOS_1014_1300_YES = _MACOS_BEFORE_1014;

WK_MACOS_1014_1400 = $(WK_MACOS_1014_1400_$(WK_MACOS_BEFORE_1014));
WK_MACOS_1014_1400_ = $(WK_MACOS_1400);
WK_MACOS_1014_1400_YES = _MACOS_BEFORE_1014;

WK_MACOS_1014_1500 = $(WK_MACOS_1014_1500_$(WK_MACOS_BEFORE_1014));
WK_MACOS_1014_1500_ = $(WK_MACOS_1500);
WK_MACOS_1014_1500_YES = _MACOS_BEFORE_1014;

WK_MACOS_1015 = $(WK_MACOS_1015_$(WK_MACOS_BEFORE_1015));
WK_MACOS_1015_ = _MACOS_SINCE_1015;
WK_MACOS_1015_YES = _MACOS_BEFORE_1015;

WK_MACOS_1015_1016 = $(WK_MACOS_1015_1016_$(WK_MACOS_BEFORE_1015));
WK_MACOS_1015_1016_ = $(WK_MACOS_1016);
WK_MACOS_1015_1016_YES = _MACOS_BEFORE_1015;

WK_MACOS_1015_1100 = $(WK_MACOS_1015_1100_$(WK_MACOS_BEFORE_1015));
WK_MACOS_1015_1100_ = $(WK_MACOS_1100);
WK_MACOS_1015_1100_YES = _MACOS_BEFORE_1015;

WK_MACOS_1015_1200 = $(WK_MACOS_1015_1200_$(WK_MACOS_BEFORE_1015));
WK_MACOS_1015_1200_ = $(WK_MACOS_1200);
WK_MACOS_1015_1200_YES = _MACOS_BEFORE_1015;

WK_MACOS_1015_1300 = $(WK_MACOS_1015_1300_$(WK_MACOS_BEFORE_1015));
WK_MACOS_1015_1300_ = $(WK_MACOS_1300);
WK_MACOS_1015_1300_YES = _MACOS_BEFORE_1015;

WK_MACOS_1015_1400 = $(WK_MACOS_1015_1400_$(WK_MACOS_BEFORE_1015));
WK_MACOS_1015_1400_ = $(WK_MACOS_1400);
WK_MACOS_1015_1400_YES = _MACOS_BEFORE_1015;

WK_MACOS_1015_1500 = $(WK_MACOS_1015_1500_$(WK_MACOS_BEFORE_1015));
WK_MACOS_1015_1500_ = $(WK_MACOS_1500);
WK_MACOS_1015_1500_YES = _MACOS_BEFORE_1015;

WK_MACOS_1016 = $(WK_MACOS_1016_$(WK_MACOS_BEFORE_1016));
WK_MACOS_1016_ = _MACOS_SINCE_1016;
WK_MACOS_1016_YES = _MACOS_BEFORE_1016;

WK_MACOS_1016_1100 = $(WK_MACOS_1016_1100_$(WK_MACOS_BEFORE_1016));
WK_MACOS_1016_1100 = $(WK_MACOS_1100);
WK_MACOS_1016_1100_YES = _MACOS_BEFORE_1016;

WK_MACOS_1016_1200 = $(WK_MACOS_1016_1200_$(WK_MACOS_BEFORE_1016));
WK_MACOS_1016_1200 = $(WK_MACOS_1200);
WK_MACOS_1016_1200_YES = _MACOS_BEFORE_1016;

WK_MACOS_1016_1300 = $(WK_MACOS_1016_1300_$(WK_MACOS_BEFORE_1016));
WK_MACOS_1016_1300 = $(WK_MACOS_1300);
WK_MACOS_1016_1300_YES = _MACOS_BEFORE_1016;

WK_MACOS_1016_1400 = $(WK_MACOS_1016_1400_$(WK_MACOS_BEFORE_1016));
WK_MACOS_1016_1400 = $(WK_MACOS_1400);
WK_MACOS_1016_1400_YES = _MACOS_BEFORE_1016;

WK_MACOS_1016_1500 = $(WK_MACOS_1016_1500_$(WK_MACOS_BEFORE_1016));
WK_MACOS_1016_1500 = $(WK_MACOS_1500);
WK_MACOS_1016_1500_YES = _MACOS_BEFORE_1016;

WK_MACOS_1100 = $(WK_MACOS_1100_$(WK_MACOS_BEFORE_1100));
WK_MACOS_1100_ = _MACOS_SINCE_1100;
WK_MACOS_1100_YES = _MACOS_BEFORE_1100;

WK_MACOS_1100_1200 = $(WK_MACOS_1100_1200_$(WK_MACOS_BEFORE_1100));
WK_MACOS_1100_1200 = $(WK_MACOS_1200);
WK_MACOS_1100_1200_YES = _MACOS_BEFORE_1100;

WK_MACOS_1100_1300 = $(WK_MACOS_1100_1300_$(WK_MACOS_BEFORE_1100));
WK_MACOS_1100_1300 = $(WK_MACOS_1300);
WK_MACOS_1100_1300_YES = _MACOS_BEFORE_1100;

WK_MACOS_1100_1400 = $(WK_MACOS_1100_1400_$(WK_MACOS_BEFORE_1100));
WK_MACOS_1100_1400 = $(WK_MACOS_1400);
WK_MACOS_1100_1400_YES = _MACOS_BEFORE_1100;

WK_MACOS_1100_1500 = $(WK_MACOS_1100_1500_$(WK_MACOS_BEFORE_1100));
WK_MACOS_1100_1500 = $(WK_MACOS_1500);
WK_MACOS_1100_1500_YES = _MACOS_BEFORE_1100;

WK_MACOS_1200 = $(WK_MACOS_1200_$(WK_MACOS_BEFORE_1200));
WK_MACOS_1200_ = _MACOS_SINCE_1200;
WK_MACOS_1200_YES = _MACOS_BEFORE_1200;

WK_MACOS_1200_1300 = $(WK_MACOS_1200_1300_$(WK_MACOS_BEFORE_1200));
WK_MACOS_1200_1300 = $(WK_MACOS_1300);
WK_MACOS_1200_1300_YES = _MACOS_BEFORE_1200;

WK_MACOS_1200_1400 = $(WK_MACOS_1200_1400_$(WK_MACOS_BEFORE_1200));
WK_MACOS_1200_1400 = $(WK_MACOS_1400);
WK_MACOS_1200_1400_YES = _MACOS_BEFORE_1200;

WK_MACOS_1200_1500 = $(WK_MACOS_1200_1500_$(WK_MACOS_BEFORE_1200));
WK_MACOS_1200_1500 = $(WK_MACOS_1500);
WK_MACOS_1200_1500_YES = _MACOS_BEFORE_1200;

WK_MACOS_1300 = $(WK_MACOS_1300_$(WK_MACOS_BEFORE_1300));
WK_MACOS_1300_ = _MACOS_SINCE_1300;
WK_MACOS_1300_YES = _MACOS_BEFORE_1300;

WK_MACOS_1300_1400 = $(WK_MACOS_1300_1400_$(WK_MACOS_BEFORE_1300));
WK_MACOS_1300_1400 = $(WK_MACOS_1400);
WK_MACOS_1300_1400_YES = _MACOS_BEFORE_1300;

WK_MACOS_1300_1500 = $(WK_MACOS_1300_1500_$(WK_MACOS_BEFORE_1300));
WK_MACOS_1300_1500 = $(WK_MACOS_1500);
WK_MACOS_1300_1500_YES = _MACOS_BEFORE_1300;

WK_MACOS_1400 = $(WK_MACOS_1400_$(WK_MACOS_BEFORE_1400));
WK_MACOS_1400_ = _MACOS_SINCE_1400;
WK_MACOS_1400_YES = _MACOS_BEFORE_1400;

WK_MACOS_1400_1500 = $(WK_MACOS_1400_1500_$(WK_MACOS_BEFORE_1400));
WK_MACOS_1400_1500 = $(WK_MACOS_1500);
WK_MACOS_1400_1500_YES = _MACOS_BEFORE_1400;

WK_MACOS_1500 = $(WK_MACOS_1500_$(WK_MACOS_BEFORE_1500));
WK_MACOS_1500_ = _MACOS_SINCE_1500;
WK_MACOS_1500_YES = _MACOS_BEFORE_1500;

WK_MACOS_1500_2600 = $(WK_MACOS_1500_2600_$(WK_MACOS_BEFORE_1500));
WK_MACOS_1500_2600 = $(WK_MACOS_2600);
WK_MACOS_1500_2600_YES = _MACOS_BEFORE_1500;

WK_MACOS_2600 = $(WK_MACOS_2600_$(WK_MACOS_BEFORE_2600));
WK_MACOS_2600_ = _MACOS_SINCE_2600;
WK_MACOS_2600_YES = _MACOS_BEFORE_2600;

// iOSMac / MacCatalyst

WK_MACCATALYST_BEFORE_13 = $(WK_MACCATALYST_BEFORE_13_$(MACOSX_DEPLOYMENT_TARGET:base));

WK_MACCATALYST_BEFORE_14 = $(WK_MACCATALYST_BEFORE_14_$(MACOSX_DEPLOYMENT_TARGET:base));
WK_MACCATALYST_BEFORE_14_13 = YES;

WK_MACCATALYST_BEFORE_15 = $(WK_MACCATALYST_BEFORE_15_$(MACOSX_DEPLOYMENT_TARGET:base));
WK_MACCATALYST_BEFORE_15_13 = YES;
WK_MACCATALYST_BEFORE_15_14 = YES;

WK_MACCATALYST_13 = $(WK_MACCATALYST_13_$(SDK_VARIANT)_$(WK_MACCATALYST_BEFORE_13));
WK_MACCATALYST_13_iosmac_ = _MACCATALYST_SINCE_13;
WK_MACCATALYST_13_iosmac_YES = _MACCATALYST_BEFORE_13;

WK_MACCATALYST_14 = $(WK_MACCATALYST_14_$(SDK_VARIANT)_$(WK_MACCATALYST_BEFORE_14));
WK_MACCATALYST_14_iosmac_ = _MACCATALYST_SINCE_14;
WK_MACCATALYST_14_iosmac_YES = _MACCATALYST_BEFORE_14;

WK_MACCATALYST_15 = $(WK_MACCATALYST_15_$(SDK_VARIANT)_$(WK_MACCATALYST_BEFORE_15));
WK_MACCATALYST_15_iosmac_ = _MACCATALYST_SINCE_15;
WK_MACCATALYST_15_iosmac_YES = _MACCATALYST_BEFORE_15;

// iOS

WK_IOS_BEFORE_13 = $(WK_IOS_BEFORE_13_$(IPHONEOS_DEPLOYMENT_TARGET:base));

WK_IOS_BEFORE_14 = $(WK_IOS_BEFORE_14_$(IPHONEOS_DEPLOYMENT_TARGET:base));
WK_IOS_BEFORE_14_13 = YES;

WK_IOS_BEFORE_15 = $(WK_IOS_BEFORE_15_$(IPHONEOS_DEPLOYMENT_TARGET:base));
WK_IOS_BEFORE_15_13 = YES;
WK_IOS_BEFORE_15_14 = YES;

WK_IOS_BEFORE_16 = $(WK_IOS_BEFORE_16_$(IPHONEOS_DEPLOYMENT_TARGET:base));
WK_IOS_BEFORE_16_13 = YES;
WK_IOS_BEFORE_16_14 = YES;
WK_IOS_BEFORE_16_15 = YES;

WK_IOS_BEFORE_17 = $(WK_IOS_BEFORE_17_$(IPHONEOS_DEPLOYMENT_TARGET:base));
WK_IOS_BEFORE_17_13 = YES;
WK_IOS_BEFORE_17_14 = YES;
WK_IOS_BEFORE_17_15 = YES;
WK_IOS_BEFORE_17_16 = YES;

WK_IOS_BEFORE_18 = $(WK_IOS_BEFORE_18_$(IPHONEOS_DEPLOYMENT_TARGET:base));
WK_IOS_BEFORE_18_13 = YES;
WK_IOS_BEFORE_18_14 = YES;
WK_IOS_BEFORE_18_15 = YES;
WK_IOS_BEFORE_18_16 = YES;
WK_IOS_BEFORE_18_17 = YES;

WK_IOS_BEFORE_26 = $(WK_IOS_BEFORE_26_$(IPHONEOS_DEPLOYMENT_TARGET:base));
WK_IOS_BEFORE_26_13 = YES;
WK_IOS_BEFORE_26_14 = YES;
WK_IOS_BEFORE_26_15 = YES;
WK_IOS_BEFORE_26_16 = YES;
WK_IOS_BEFORE_26_17 = YES;
WK_IOS_BEFORE_26_18 = YES;

WK_IOS_13 = $(WK_IOS_13_$(WK_IOS_BEFORE_13));
WK_IOS_13_ = _IOS_SINCE_13;
WK_IOS_13_YES = _IOS_BEFORE_13;

WK_IOS_14 = $(WK_IOS_14_$(WK_IOS_BEFORE_14));
WK_IOS_14_ = _IOS_SINCE_14;
WK_IOS_14_YES = _IOS_BEFORE_14;

WK_IOS_15 = $(WK_IOS_15_$(WK_IOS_BEFORE_15));
WK_IOS_15_ = _IOS_SINCE_15;
WK_IOS_15_YES = _IOS_BEFORE_15;

WK_IOS_16 = $(WK_IOS_16_$(WK_IOS_BEFORE_16));
WK_IOS_16_ = _IOS_SINCE_16;
WK_IOS_16_YES = _IOS_BEFORE_16;

WK_IOS_17 = $(WK_IOS_17_$(WK_IOS_BEFORE_17));
WK_IOS_17_ = _IOS_SINCE_17;
WK_IOS_17_YES = _IOS_BEFORE_17;

WK_IOS_18 = $(WK_IOS_18_$(WK_IOS_BEFORE_18));
WK_IOS_18_ = _IOS_SINCE_18;
WK_IOS_18_YES = _IOS_BEFORE_18;

WK_IOS_26 = $(WK_IOS_26_$(WK_IOS_BEFORE_26));
WK_IOS_26_ = _IOS_SINCE_26;
WK_IOS_26_YES = _IOS_BEFORE_26;

// tvOS

WK_TVOS_BEFORE_16 = $(WK_TVOS_BEFORE_16_$(TVOS_DEPLOYMENT_TARGET:base));

WK_TVOS_BEFORE_17 = $(WK_TVOS_BEFORE_17_$(TVOS_DEPLOYMENT_TARGET:base));
WK_TVOS_BEFORE_17_16 = YES;

WK_TVOS_BEFORE_18 = $(WK_TVOS_BEFORE_18_$(TVOS_DEPLOYMENT_TARGET:base));
WK_TVOS_BEFORE_18_16 = YES;
WK_TVOS_BEFORE_18_17 = YES;

WK_TVOS_16 = $(WK_TVOS_16_$(WK_TVOS_BEFORE_16));
WK_TVOS_16_ = _TVOS_SINCE_16;
WK_TVOS_16_YES = _TVOS_BEFORE_16;

WK_TVOS_17 = $(WK_TVOS_17_$(WK_TVOS_BEFORE_17));
WK_TVOS_17_ = _TVOS_SINCE_17;
WK_TVOS_17_YES = _TVOS_BEFORE_17;

WK_TVOS_18 = $(WK_TVOS_18_$(WK_TVOS_BEFORE_18));
WK_TVOS_18_ = _TVOS_SINCE_18;
WK_TVOS_18_YES = _TVOS_BEFORE_18;

// watchOS

WK_WATCHOS_BEFORE_9 = $(WK_WATCHOS_BEFORE_9_$(WATCHOS_DEPLOYMENT_TARGET:base));

WK_WATCHOS_BEFORE_10 = $(WK_WATCHOS_BEFORE_10_$(WATCHOS_DEPLOYMENT_TARGET:base));
WK_WATCHOS_BEFORE_10_9 = YES;

WK_WATCHOS_BEFORE_11 = $(WK_WATCHOS_BEFORE_11_$(WATCHOS_DEPLOYMENT_TARGET:base));
WK_WATCHOS_BEFORE_11_9 = YES;
WK_WATCHOS_BEFORE_11_10 = YES;

WK_WATCHOS_9 = $(WK_WATCHOS_9_$(WK_WATCHOS_BEFORE_9));
WK_WATCHOS_9_ = _WATCHOS_SINCE_9;
WK_WATCHOS_9_YES = _WATCHOS_BEFORE_9;

WK_WATCHOS_10 = $(WK_WATCHOS_10_$(WK_WATCHOS_BEFORE_10));
WK_WATCHOS_10_ = _WATCHOS_SINCE_10;
WK_WATCHOS_10_YES = _WATCHOS_BEFORE_10;

WK_WATCHOS_11 = $(WK_WATCHOS_11_$(WK_WATCHOS_BEFORE_11));
WK_WATCHOS_11_ = _WATCHOS_SINCE_11;
WK_WATCHOS_11_YES = _WATCHOS_BEFORE_11;

// Xcode

WK_XCODE_BEFORE_15 = $(WK_XCODE_BEFORE_15_$(XCODE_VERSION_MAJOR));
WK_XCODE_BEFORE_15_1400 = YES;

WK_XCODE_15 = $(WK_XCODE_15_$(WK_XCODE_BEFORE_15));
WK_XCODE_15_ = _XCODE_SINCE_15;
WK_XCODE_15_YES = _XCODE_BEFORE_15;

WK_XCODE_BEFORE_15_3 = $(WK_XCODE_BEFORE_15_3$(WK_XCODE_15));
WK_XCODE_BEFORE_15_3_XCODE_BEFORE_15 = YES;
WK_XCODE_BEFORE_15_3_XCODE_SINCE_15 = $(WK_XCODE_BEFORE_15_3_$(XCODE_VERSION_MINOR));
WK_XCODE_BEFORE_15_3_1500 = YES;
WK_XCODE_BEFORE_15_3_1510 = YES;
WK_XCODE_BEFORE_15_3_1520 = YES;

WK_XCODE_15_3 = $(WK_XCODE_15_3_$(WK_XCODE_BEFORE_15_3));
WK_XCODE_15_3_ = _XCODE_SINCE_15_3;
WK_XCODE_15_3_YES = _XCODE_BEFORE_15_3;

WK_XCODE_BEFORE_16 = $(WK_XCODE_BEFORE_16_$(XCODE_VERSION_MAJOR));
WK_XCODE_BEFORE_16_1400 = YES;
WK_XCODE_BEFORE_16_1500 = YES;

WK_XCODE_16 = $(WK_XCODE_16_$(WK_XCODE_BEFORE_16));
WK_XCODE_16_ = _XCODE_SINCE_16;
WK_XCODE_16_YES = _XCODE_BEFORE_16;

WK_XCODE_BEFORE_16_3 = $(WK_XCODE_BEFORE_16_3$(WK_XCODE_16));
WK_XCODE_BEFORE_16_3_XCODE_BEFORE_16 = YES;
WK_XCODE_BEFORE_16_3_XCODE_SINCE_16 = $(WK_XCODE_BEFORE_16_3_$(XCODE_VERSION_MINOR));
WK_XCODE_BEFORE_16_3_1600 = YES;
WK_XCODE_BEFORE_16_3_1610 = YES;
WK_XCODE_BEFORE_16_3_1620 = YES;

WK_XCODE_16_3 = $(WK_XCODE_16_3_$(WK_XCODE_BEFORE_16_3));
WK_XCODE_16_3_ = _XCODE_SINCE_16_3;
WK_XCODE_16_3_YES = _XCODE_BEFORE_16_3;

WK_XCODE_BEFORE_17 = $(WK_XCODE_BEFORE_17_$(XCODE_VERSION_MAJOR));
WK_XCODE_BEFORE_17_1400 = YES;
WK_XCODE_BEFORE_17_1500 = YES;
WK_XCODE_BEFORE_17_1600 = YES;

WK_XCODE_17 = $(WK_XCODE_17_$(WK_XCODE_BEFORE_17));
WK_XCODE_17_ = _XCODE_SINCE_17;
WK_XCODE_17_YES = _XCODE_BEFORE_17;
