| // Copyright (C) 2022-2023 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. |
| |
| #include? "../../Internal/Configurations/HaveInternalSDK.xcconfig" |
| #include? "<DEVELOPER_DIR>/AppleInternal/XcodeConfig/PlatformSupport.xcconfig" |
| #include "Sanitizers.xcconfig" |
| #include "SDKVariant.xcconfig" |
| #include "WebKitProjectPaths.xcconfig" |
| #include "SDKAdditions.xcconfig" |
| |
| // Prefix Definitions |
| // |
| // WK_COMMON_ prefix is used to define variables in CommonBase.xcconfig |
| // that may be used in project xcconfig files when $(inherited) is not |
| // used. |
| // Examples: WK_COMMON_OTHER_{CFLAGS,CPLUSPLUSFLAGS,LDFLAGS}. |
| // |
| // WK_DEFAULT_ prefix is used in Base.xcconfig project files for |
| // single-value variables that may be overridden in CommonBase.xcconfig. |
| // Example: WK_DEFAULT_GCC_OPTIMIZATION_LEVEL. |
| |
| GCC_OPTIMIZATION_LEVEL = $(WK_GCC_OPTIMIZATION_LEVEL_SANITIZER_OVERRIDE_$(WK_ANY_SANITIZER_ENABLED)); |
| WK_GCC_OPTIMIZATION_LEVEL_SANITIZER_OVERRIDE_NO = $(WK_DEFAULT_GCC_OPTIMIZATION_LEVEL); |
| WK_GCC_OPTIMIZATION_LEVEL_SANITIZER_OVERRIDE_YES = $(WK_SANITIZER_GCC_OPTIMIZATION_LEVEL); |
| |
| WK_COMMON_OTHER_CFLAGS = $(WK_SANITIZER_OTHER_CFLAGS); |
| OTHER_CFLAGS = $(inherited) $(WK_COMMON_OTHER_CFLAGS); |
| |
| WK_COMMON_OTHER_CPLUSPLUSFLAGS = $(WK_LIBCPP_ASSERTIONS_CFLAGS) $(WK_SANITIZER_OTHER_CPLUSPLUSFLAGS); |
| OTHER_CPLUSPLUSFLAGS = $(inherited) $(WK_COMMON_OTHER_CPLUSPLUSFLAGS); |
| |
| WK_COMMON_OTHER_LDFLAGS = $(WK_SANITIZER_OTHER_LDFLAGS); |
| OTHER_LDFLAGS = $(inherited) $(WK_COMMON_OTHER_LDFLAGS); |
| |
| WK_COMMON_OTHER_TAPI_FLAGS = -x objective-c++ -std=c++2b -fno-rtti $(WK_SANITIZER_OTHER_TAPI_FLAGS); |
| OTHER_TAPI_FLAGS = $(inherited) $(WK_COMMON_OTHER_TAPI_FLAGS); |
| |
| WK_COMMON_WARNING_CFLAGS = -Wall -Wc99-designator -Wconditional-uninitialized -Wextra -Wdeprecated-enum-enum-conversion -Wdeprecated-enum-float-conversion -Wenum-float-conversion -Wfinal-dtor-non-final-class -Wformat=2 -Wmisleading-indentation -Wreorder-init-list -Wundef -Wvla; |
| WARNING_CFLAGS = $(inherited) $(WK_COMMON_WARNING_CFLAGS) $(WK_SANITIZER_WARNING_CFLAGS); |
| |
| CLANG_CXX_STANDARD_LIBRARY_HARDENING = extensive; |
| |
| // Setting CLANG_CXX_STANDARD_LIBRARY_HARDENING is sufficient in recent XCode versions but we want to keep |
| // the libcpp assertion enabled on downlevels so use `-D_LIBCPP_ENABLE_ASSERTIONS=1` as well. |
| WK_LIBCPP_ASSERTIONS_CFLAGS = $(WK_LIBCPP_ASSERTIONS_CFLAGS_$(WK_PLATFORM_NAME)); |
| WK_LIBCPP_ASSERTIONS_CFLAGS_iphoneos = $(WK_LIBCPP_ASSERTIONS_CFLAGS$(WK_IOS_17)$(WK_IOS_18)); |
| WK_LIBCPP_ASSERTIONS_CFLAGS_iphonesimulator = $(WK_LIBCPP_ASSERTIONS_CFLAGS$(WK_IOS_17)$(WK_IOS_18)); |
| WK_LIBCPP_ASSERTIONS_CFLAGS_IOS_SINCE_17_IOS_BEFORE_18 = -D_LIBCPP_ENABLE_ASSERTIONS=1; |
| WK_LIBCPP_ASSERTIONS_CFLAGS_maccatalyst = $(WK_LIBCPP_ASSERTIONS_CFLAGS$(WK_MACCATALYST_14)$(WK_MACCATALYST_15)); |
| WK_LIBCPP_ASSERTIONS_CFLAGS_MACCATALYST_SINCE_14_MACCATALYST_BEFORE_15 = -D_LIBCPP_ENABLE_ASSERTIONS=1; |
| WK_LIBCPP_ASSERTIONS_CFLAGS_macosx = $(WK_LIBCPP_ASSERTIONS_CFLAGS$(WK_MACOS_1400)$(WK_MACOS_1500)); |
| WK_LIBCPP_ASSERTIONS_CFLAGS_MACOS_SINCE_1400_MACOS_BEFORE_1500 = -D_LIBCPP_ENABLE_ASSERTIONS=1; |
| WK_LIBCPP_ASSERTIONS_CFLAGS_appletvos = $(WK_LIBCPP_ASSERTIONS_CFLAGS$(WK_TVOS_17)$(WK_TVOS_18)); |
| WK_LIBCPP_ASSERTIONS_CFLAGS_appletvsimulator = $(WK_LIBCPP_ASSERTIONS_CFLAGS$(WK_TVOS_17)$(WK_TVOS_18)); |
| WK_LIBCPP_ASSERTIONS_CFLAGS_TVOS_SINCE_17_TVOS_BEFORE_18 = -D_LIBCPP_ENABLE_ASSERTIONS=1; |
| WK_LIBCPP_ASSERTIONS_CFLAGS_watchos = $(WK_LIBCPP_ASSERTIONS_CFLAGS$(WK_WATCHOS_10)$(WK_WATCHOS_11)); |
| WK_LIBCPP_ASSERTIONS_CFLAGS_watchsimulator = $(WK_LIBCPP_ASSERTIONS_CFLAGS$(WK_WATCHOS_10)$(WK_WATCHOS_11)); |
| WK_LIBCPP_ASSERTIONS_CFLAGS_WATCHOS_SINCE_10_WATCHOS_BEFORE_11 = -D_LIBCPP_ENABLE_ASSERTIONS=1; |
| |