// Copyright (C) 2020 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.

BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
CLANG_LINK_OBJC_RUNTIME = NO;
EXECUTABLE_PREFIX = libswift;
GENERATE_TEXT_BASED_STUBS = YES;
IS_ZIPPERED = NO;
OTHER_LDFLAGS = $(inherited) -weak_framework WebKit;
PRODUCT_NAME = WebKit;
STRIP_SWIFT_SYMBOLS = NO;
SUPPORTED_PLATFORMS = macosx iphoneos iphonesimulator;
SUPPORTS_TEXT_BASED_API = YES;
SWIFT_IS_OVERLAY = YES;
SWIFT_LINK_OBJC_RUNTIME = NO;
SWIFT_OVERLAY_INSTALL_PATH=/usr/lib/swift;

DYLIB_CURRENT_VERSION = $(FULL_VERSION);
MODULE_VERSION = $(FULL_VERSION);

// Disable code signing
COPY_PHASE_STRIP = NO;
CODE_SIGN_IDENTITY = -;
CODE_SIGN_STYLE = Manual;

// We need to run install-swiftmodules.sh during the installapi action.
INSTALLHDRS_SCRIPT_PHASE = YES;

// The install path is /usr/lib/swift except if we're building using the iosmac
// SDK variant on macOS, in which case it's /System/iOSSupport/usr/lib/swift.
INSTALL_PATH = $(WK_ALTERNATE_FRAMEWORKS_DIR)$(SWIFT_OVERLAY_INSTALL_PATH);

WK_SWIFT_CONCURRENCY_FLAGS = -Xfrontend -enable-experimental-concurrency;
WK_SWIFT_CONCURRENCY_FLAGS[sdk=macos*11.*] = ;
WK_SWIFT_CONCURRENCY_FLAGS[sdk=iphone*14.*] = ;

OTHER_SWIFT_FLAGS = -module-link-name $(SWIFT_MODULE_LINK_NAME) -autolink-force-load -runtime-compatibility-version none -disable-autolinking-runtime-compatibility-dynamic-replacements $(WK_SWIFT_CONCURRENCY_FLAGS);
SWIFT_MODULE_LINK_NAME = swift$(PRODUCT_NAME);

SWIFT_ENABLE_INCREMENTAL_COMPILATION = NO; // YES conflicts with -autolink-force-load

// Custom build settings for install-swiftmodules.sh.
SWIFT_INSTALL_MODULES = YES;
SWIFT_MODULE_INSTALL_PATH = $(INSTALL_PATH);

// We need to generate swiftmodules for these architectures, so that they can be
// imported in apps that are deployable on OS versions that support them.
// However, we can only generate module files for these; we can't emit binaries.
// (All imported definitions will be unavailable on these older OS versions.)
SWIFT_MODULE_ONLY_ARCHS = $(SWIFT_MODULE_ONLY_ARCHS_$(PLATFORM_NAME));
SWIFT_MODULE_ONLY_ARCHS_iphoneos = armv7 armv7s;
SWIFT_MODULE_ONLY_ARCHS_iphonesimulator = i386;
SWIFT_MODULE_ONLY_IPHONEOS_DEPLOYMENT_TARGET = 10.3;
