diff --git a/platform/ios/Makefile b/platform/ios/Makefile index b8421d8f516..faf9b590e11 100644 --- a/platform/ios/Makefile +++ b/platform/ios/Makefile @@ -2,6 +2,7 @@ export BUILDTYPE ?= Debug export IS_LOCAL_DEVELOPMENT ?= true export TARGET_BRANCH ?= main export CI ?= 0 +export DEV_TEAM ?= "" # When only the dependencies in the package.json are installed # Node.js will error when running a script from the root scripts directory @@ -156,6 +157,11 @@ ios-lint: ios-pod-lint ios-pod-lint: ./platform/ios/scripts/lint-podspecs.js +# make ios-sizetest +.PHONY: ios-sizetest +ios-sizetest: + ./scripts/size-check.sh ${DEV_TEAM} + # make ios-uitest .PHONY: ios-uitest ios-uitest: $(IOS_PROJ_PATH) diff --git a/platform/ios/platform/ios/ios.xcodeproj/project.pbxproj b/platform/ios/platform/ios/ios.xcodeproj/project.pbxproj index a2471c797bd..8c128a3233d 100644 --- a/platform/ios/platform/ios/ios.xcodeproj/project.pbxproj +++ b/platform/ios/platform/ios/ios.xcodeproj/project.pbxproj @@ -4620,6 +4620,350 @@ }; name = Release; }; + FA8AD4F329DCC3C500230E00 /* MinSizeRel */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 15256; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = c11; + GCC_PREPROCESSOR_DEFINITIONS = ""; + "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = "-Wno-ambiguous-macro"; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SYMROOT = ../../build/ios; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = MinSizeRel; + }; + FA8AD4F429DCC3C500230E00 /* MinSizeRel */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ""; + GCC_OPTIMIZATION_LEVEL = z; + GCC_PREPROCESSOR_DEFINITIONS = GLES_SILENCE_DEPRECATION; + INFOPLIST_FILE = app/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = org.maplibre.maplibregl; + PRODUCT_NAME = "MapLibre GL"; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = MinSizeRel; + }; + FA8AD4F529DCC3C500230E00 /* MinSizeRel */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_CXX_LIBRARY = "libc++"; + CODE_SIGN_STYLE = Manual; + DEVELOPMENT_TEAM = KBDAWM7T4E; + HEADER_SEARCH_PATHS = ( + "$(PROJECT_DIR)/../../../../include", + "$(PROJECT_DIR)/../../../default/include", + "$(PROJECT_DIR)/../../../../vendor/mapbox-base/include", + "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/variant/include", + "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geometry.hpp/include", + "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geojson.hpp/include", + "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/optional", + "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/rapidjson/include", + "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/expected-lite/include", + "$(PROJECT_DIR)/../../../../vendor/polylabel/include", + "$(PROJECT_DIR)/../../../darwin/include", + "$(PROJECT_DIR)/../darwin/include", + ); + INFOPLIST_FILE = benchmark/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_GENERATE_MAP_FILE = YES; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = org.maplibre.bench; + PRODUCT_NAME = "Bench GL"; + PROVISIONING_PROFILE_SPECIFIER = "MapLibre GL Bench Development"; + }; + name = MinSizeRel; + }; + FA8AD4F629DCC3C500230E00 /* MinSizeRel */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; + BITCODE_GENERATION_MODE = bitcode; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + DEFINES_MODULE = YES; + DEPLOYMENT_POSTPROCESSING = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 15256; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_OPTIMIZATION_LEVEL = z; + GCC_PREPROCESSOR_DEFINITIONS = GLES_SILENCE_DEPRECATION; + INFOPLIST_FILE = framework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LLVM_LTO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox; + PRODUCT_NAME = Mapbox; + SKIP_INSTALL = YES; + STRIP_STYLE = "non-global"; + VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) "; + }; + name = MinSizeRel; + }; + FA8AD4F729DCC3C500230E00 /* MinSizeRel */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; + buildSettings = { + BITCODE_GENERATION_MODE = bitcode; + DEFINES_MODULE = YES; + DEPLOYMENT_POSTPROCESSING = YES; + DYLIB_CURRENT_VERSION = 15256; + GCC_OPTIMIZATION_LEVEL = z; + HEADER_SEARCH_PATHS = ( + "$(PROJECT_DIR)/../../../../include", + "$(PROJECT_DIR)/../../../default/include", + "$(PROJECT_DIR)/../../../../vendor/mapbox-base/include", + "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/variant/include", + "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geometry.hpp/include", + "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geojson.hpp/include", + "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/optional", + "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/rapidjson/include", + "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/expected-lite/include", + "$(PROJECT_DIR)/../../../../vendor/polylabel/include", + "$(PROJECT_DIR)/../../../darwin/include", + "$(PROJECT_DIR)/../darwin/include", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)", + ); + LLVM_LTO = YES; + OTHER_LDFLAGS = ( + "-ObjC", + "$(mbgl_core_LINK_LIBRARIES)", + "$(mbgl_filesource_LINK_LIBRARIES)", + ); + PRODUCT_NAME = Mapbox; + PUBLIC_HEADERS_FOLDER_PATH = Headers; + SKIP_INSTALL = YES; + STRIP_STYLE = "non-global"; + VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) "; + }; + name = MinSizeRel; + }; + FA8AD4F829DCC3C500230E00 /* MinSizeRel */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_OPTIMIZATION_LEVEL = z; + INFOPLIST_FILE = "framework/Info-static.plist"; + PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox; + PRODUCT_NAME = Mapbox; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = bundle; + }; + name = MinSizeRel; + }; + FA8AD4F929DCC3C500230E00 /* MinSizeRel */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; + DEVELOPMENT_TEAM = V6F7X5J9Y7; + INFOPLIST_FILE = test/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_CFLAGS = "-fvisibility=hidden"; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "$(variant_cflags)", + "$(geometry_cflags)", + "$(geojson_cflags)", + ); + OTHER_LDFLAGS = ( + "$(mbgl_core_LINK_LIBRARIES)", + "$(mbgl_filesource_LINK_LIBRARIES)", + ); + OTHER_SWIFT_FLAGS = "-warnings-as-errors"; + PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.test; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "../darwin/test/test-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + }; + name = MinSizeRel; + }; + FA8AD4FA29DCC3C500230E00 /* MinSizeRel */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = "Integration Tests/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.integration-tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Integration Tests/integration-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Integration Test Harness.app/Integration Test Harness"; + }; + name = MinSizeRel; + }; + FA8AD4FB29DCC3C500230E00 /* MinSizeRel */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = "Integration Test Harness/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.Integration-Test-Harness"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = MinSizeRel; + }; + FA8AD4FC29DCC3C500230E00 /* MinSizeRel */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "iosapp UITests/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "org.maplibre.iosapp-UITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = iosapp; + }; + name = MinSizeRel; + }; + FA8AD4FD29DCC3C500230E00 /* MinSizeRel */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "bench UITests/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.4; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "org.maplibre.bench-UITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = bench; + }; + name = MinSizeRel; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -4628,6 +4972,7 @@ buildConfigurations = ( 16376B0E1FFD9DAF0000563E /* Debug */, 16376B0F1FFD9DAF0000563E /* Release */, + FA8AD4FA29DCC3C500230E00 /* MinSizeRel */, 96AF1AAA21B615A3007CB696 /* RelWithDebInfo */, ); defaultConfigurationIsVisible = 0; @@ -4638,6 +4983,7 @@ buildConfigurations = ( 16376B431FFDB4B40000563E /* Debug */, 16376B441FFDB4B40000563E /* Release */, + FA8AD4FB29DCC3C500230E00 /* MinSizeRel */, 96AF1AAB21B615A3007CB696 /* RelWithDebInfo */, ); defaultConfigurationIsVisible = 0; @@ -4648,6 +4994,7 @@ buildConfigurations = ( D717FE7E25F1955A0054E06E /* Debug */, D717FE7F25F1955A0054E06E /* Release */, + FA8AD4FC29DCC3C500230E00 /* MinSizeRel */, D717FE8025F1955A0054E06E /* RelWithDebInfo */, ); defaultConfigurationIsVisible = 0; @@ -4658,6 +5005,7 @@ buildConfigurations = ( D7E7CE8C25F2EF6A00C175FC /* Debug */, D7E7CE8D25F2EF6A00C175FC /* Release */, + FA8AD4FD29DCC3C500230E00 /* MinSizeRel */, D7E7CE8E25F2EF6A00C175FC /* RelWithDebInfo */, ); defaultConfigurationIsVisible = 0; @@ -4668,6 +5016,7 @@ buildConfigurations = ( DA1DC95F1CB6C1C2006E619F /* Debug */, DA1DC9601CB6C1C2006E619F /* Release */, + FA8AD4F329DCC3C500230E00 /* MinSizeRel */, 96AF1AA321B615A3007CB696 /* RelWithDebInfo */, ); defaultConfigurationIsVisible = 0; @@ -4678,6 +5027,7 @@ buildConfigurations = ( DA1DC9621CB6C1C2006E619F /* Debug */, DA1DC9631CB6C1C2006E619F /* Release */, + FA8AD4F429DCC3C500230E00 /* MinSizeRel */, 96AF1AA421B615A3007CB696 /* RelWithDebInfo */, ); defaultConfigurationIsVisible = 0; @@ -4688,6 +5038,7 @@ buildConfigurations = ( DA2E885A1CC036F400F24E7B /* Debug */, DA2E885B1CC036F400F24E7B /* Release */, + FA8AD4F929DCC3C500230E00 /* MinSizeRel */, 96AF1AA921B615A3007CB696 /* RelWithDebInfo */, ); defaultConfigurationIsVisible = 0; @@ -4698,6 +5049,7 @@ buildConfigurations = ( DA8847DB1CBAF91600AB86E3 /* Debug */, DA8847DC1CBAF91600AB86E3 /* Release */, + FA8AD4F629DCC3C500230E00 /* MinSizeRel */, 96AF1AA621B615A3007CB696 /* RelWithDebInfo */, ); defaultConfigurationIsVisible = 0; @@ -4708,6 +5060,7 @@ buildConfigurations = ( DA8933D91CCD306400E68420 /* Debug */, DA8933DA1CCD306400E68420 /* Release */, + FA8AD4F829DCC3C500230E00 /* MinSizeRel */, 96AF1AA821B615A3007CB696 /* RelWithDebInfo */, ); defaultConfigurationIsVisible = 0; @@ -4718,6 +5071,7 @@ buildConfigurations = ( DAA4E41A1CBB71D500178DFB /* Debug */, DAA4E41B1CBB71D500178DFB /* Release */, + FA8AD4F729DCC3C500230E00 /* MinSizeRel */, 96AF1AA721B615A3007CB696 /* RelWithDebInfo */, ); defaultConfigurationIsVisible = 0; @@ -4728,6 +5082,7 @@ buildConfigurations = ( DABCABBC1CB80692000A7C39 /* Debug */, DABCABBD1CB80692000A7C39 /* Release */, + FA8AD4F529DCC3C500230E00 /* MinSizeRel */, 96AF1AA521B615A3007CB696 /* RelWithDebInfo */, ); defaultConfigurationIsVisible = 0; diff --git a/platform/ios/scripts/size-check.sh b/platform/ios/scripts/size-check.sh new file mode 100755 index 00000000000..9c8a0c845e3 --- /dev/null +++ b/platform/ios/scripts/size-check.sh @@ -0,0 +1,98 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + echo "Give development team as argument, eg. '484D8S5C7M'" + exit 1 +fi + +RED=$'\033[1;31m' +GREEN=$'\033[1;32m' +BOLD=$'\033[1m' +NORMAL=$'\033[0m' + +# The development team for signing the archive is taken as argument +DEVELOPMENT_TEAM=$1 + +# The configuration for the build +BUILD_CONFIGURATIONS=("Release" "MinSizeRel") + +# Initial lib size in bytes +INITIAL_LIB_SIZES=(5504352 4249952) + +# The path to the Xcode workspace +XCODE_WORKSPACE_PATH=platform/ios/ios.xcworkspace + +# The scheme name for the build +SCHEME_NAME="iosapp" + +# The archive filename +ARCHIVE_NAME="${SCHEME_NAME}.xcarchive" + +if [[ ! -d $XCODE_WORKSPACE_PATH ]]; then + echo "${RED}iOS workspace not found: $XCODE_WORKSPACE_PATH${NORMAL}" + exit 2 +fi + +# Clean up any old builds +make clean +if [ ! $? -eq 0 ]; then + echo "${RED}Failed cleaning up the build folder${NORMAL}" + exit 3 +fi + +# Set up the Xcode workspace +make iproj CI=1 +if [ ! $? -eq 0 ]; then + echo "${RED}Failed setting up the Xcode workspace${NORMAL}" + exit 4 +fi + +TOTAL_TESTS=${#BUILD_CONFIGURATIONS[@]} +PASSED_TESTS=0 +FAILED_TESTS=0 + +for ((i=0; i<${TOTAL_TESTS}; i++)); do + BUILD_CONFIGURATION=${BUILD_CONFIGURATIONS[i]} + INITIAL_LIB_SIZE=${INITIAL_LIB_SIZES[i]} + + echo -e "\n** ${BOLD}Building size test $((i+1)) on configuration: ${BUILD_CONFIGURATION}, initial size was ${INITIAL_LIB_SIZE} bytes${NORMAL} **\n" + + # The output directory for the archive + OUTPUT_DIR="build/ios/archive/${BUILD_CONFIGURATION}" + + # Build the app + xcodebuild archive -quiet -workspace "${XCODE_WORKSPACE_PATH}" -scheme "${SCHEME_NAME}" -configuration "${BUILD_CONFIGURATION}" -archivePath "${OUTPUT_DIR}/${ARCHIVE_NAME}" DEVELOPMENT_TEAM="${DEVELOPMENT_TEAM}" + if [ ! $? -eq 0 ]; then + echo "${RED}Failed to compile the scheme: ${SCHEME_NAME}${NORMAL}" + exit 5 + fi + + # The path to the maplibre dynamic lib + LIB_PATH="${OUTPUT_DIR}/${ARCHIVE_NAME}/Products/Applications/MapLibre GL.app/Frameworks/Mapbox.framework/Mapbox" + if [[ ! -f "$LIB_PATH" ]]; then + echo "${RED}MapLibre dynamic lib not found: $LIB_PATH${NORMAL}" + exit 6 + fi + + # Current lib size in bytes + CURRENT_LIB_SIZE=$(wc -c "${LIB_PATH}" | awk '{print $1}') + if [ -z $CURRENT_LIB_SIZE ]; then + echo "${RED}Failed to compute the size of MapLibre: ${LIB_PATH}${NORMAL}" + exit 7 + fi + + if (($CURRENT_LIB_SIZE > $INITIAL_LIB_SIZE)); then + FAILED_TESTS=$((FAILED_TESTS+1)) + echo -e "${RED}\n[FAILED] MapLibre size is ${CURRENT_LIB_SIZE} bytes. This is larger than the initial size of ${INITIAL_LIB_SIZE} bytes.\n${NORMAL}" + else + PASSED_TESTS=$((PASSED_TESTS+1)) + if (($CURRENT_LIB_SIZE == $INITIAL_LIB_SIZE)); then + echo -e "${GREEN}\n[PASSED] MapLibre size is ${CURRENT_LIB_SIZE} bytes. This is equal with the initial size of ${INITIAL_LIB_SIZE} bytes.\n${NORMAL}" + else + echo -e "${GREEN}\n[PASSED] MapLibre size is ${CURRENT_LIB_SIZE} bytes. This is smaller than the initial size of ${INITIAL_LIB_SIZE} bytes.\n${NORMAL}" + fi + fi +done + +echo -e "${GREEN}PASSED TESTS: ${PASSED_TESTS} of ${TOTAL_TESTS}${NORMAL}" +echo -e "${RED}FAILED TESTS: ${FAILED_TESTS} of ${TOTAL_TESTS}${NORMAL}" \ No newline at end of file