mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Temp
This commit is contained in:
parent
22abc4fa6c
commit
1e742ea3f9
@ -12,7 +12,7 @@ WALLET_BUCK_OPTIONS=\
|
||||
--config custom.distributionProvisioningProfileApp="${WALLET_DISTRIBUTION_PROVISIONING_PROFILE_APP}" \
|
||||
--config custom.apiId="${API_ID}" \
|
||||
--config custom.apiHash="${API_HASH}" \
|
||||
--config custom.hockeyAppId="${HOCKEYAPP_ID}" \
|
||||
--config custom.appCenterId="${HOCKEYAPP_ID}" \
|
||||
--config custom.isInternalBuild="${IS_INTERNAL_BUILD}" \
|
||||
--config custom.isAppStoreBuild="${IS_APPSTORE_BUILD}" \
|
||||
--config custom.appStoreId="${APPSTORE_ID}" \
|
||||
@ -38,6 +38,7 @@ build_wallet: check_env
|
||||
//submodules/AsyncDisplayKit:AsyncDisplayKit#shared,iphoneos-arm64,iphoneos-armv7 \
|
||||
//submodules/Display:Display#dwarf-and-dsym,shared,iphoneos-arm64,iphoneos-armv7 \
|
||||
//submodules/Display:Display#shared,iphoneos-arm64,iphoneos-armv7 \
|
||||
--verbose 7 \
|
||||
${WALLET_BUCK_OPTIONS} ${BUCK_RELEASE_OPTIONS} ${BUCK_THREADS_OPTIONS} ${BUCK_CACHE_OPTIONS}
|
||||
|
||||
wallet_package:
|
||||
|
23
submodules/AsyncDisplayKit/BUCK
vendored
23
submodules/AsyncDisplayKit/BUCK
vendored
@ -1,30 +1,21 @@
|
||||
load("//Config:buck_rule_macros.bzl", "framework")
|
||||
|
||||
ASYNCDISPLAYKIT_EXPORTED_HEADERS = glob([
|
||||
"Source/*.h",
|
||||
"Source/Details/**/*.h",
|
||||
"Source/Layout/*.h",
|
||||
"Source/Base/*.h",
|
||||
"Source/Debug/AsyncDisplayKit+Debug.h",
|
||||
"Source/TextKit/ASTextNodeTypes.h",
|
||||
"Source/TextKit/ASTextKitComponents.h"
|
||||
public_headers = glob([
|
||||
"Source/PublicHeaders/AsyncDisplayKit/*.h",
|
||||
])
|
||||
|
||||
ASYNCDISPLAYKIT_PRIVATE_HEADERS = glob([
|
||||
"Source/**/*.h"
|
||||
],
|
||||
exclude = ASYNCDISPLAYKIT_EXPORTED_HEADERS,
|
||||
)
|
||||
private_headers = glob([
|
||||
"Source/*.h",
|
||||
])
|
||||
|
||||
framework(
|
||||
name = "AsyncDisplayKit",
|
||||
headers = ASYNCDISPLAYKIT_PRIVATE_HEADERS,
|
||||
exported_headers = ASYNCDISPLAYKIT_EXPORTED_HEADERS,
|
||||
srcs = glob([
|
||||
"Source/**/*.m",
|
||||
"Source/**/*.mm",
|
||||
"Source/Base/*.m"
|
||||
]),
|
||||
headers = private_headers,
|
||||
exported_headers = public_headers,
|
||||
compiler_flags = [
|
||||
"-DMINIMAL_ASDK",
|
||||
],
|
||||
|
14
submodules/NumberPluralizationForm/BUCK
Normal file
14
submodules/NumberPluralizationForm/BUCK
Normal file
@ -0,0 +1,14 @@
|
||||
load("//Config:buck_rule_macros.bzl", "static_library")
|
||||
|
||||
static_library(
|
||||
name = "NumberPluralizationForm",
|
||||
srcs = glob([
|
||||
"Sources/*.m",
|
||||
]),
|
||||
exported_headers = glob([
|
||||
"PublicHeaders/**/*.h",
|
||||
]),
|
||||
frameworks = [
|
||||
"$SDKROOT/System/Library/Frameworks/Foundation.framework",
|
||||
],
|
||||
)
|
@ -14,6 +14,7 @@ static_library(
|
||||
]),
|
||||
deps = [
|
||||
"//submodules/AppBundle:AppBundle",
|
||||
"//submodules/NumberPluralizationForm:NumberPluralizationForm",
|
||||
],
|
||||
frameworks = [
|
||||
"$SDKROOT/System/Library/Frameworks/Foundation.framework",
|
||||
|
@ -1,3 +1,4 @@
|
||||
load("//Config:buck_rule_macros.bzl", "static_library", "gen_header_targets")
|
||||
|
||||
openssl_headers = [
|
||||
"aes.h",
|
||||
@ -114,11 +115,11 @@ rules = [
|
||||
genrule(
|
||||
name = "openssl_build_" + arch,
|
||||
srcs = glob([
|
||||
"build-openssl.sh",
|
||||
"build-openssl-buck.sh",
|
||||
"*.tar.gz",
|
||||
"*.patch",
|
||||
]),
|
||||
bash = "sh $SRCDIR/build-openssl.sh $OUT $SRCDIR " + arch,
|
||||
bash = "sh $SRCDIR/build-openssl-buck.sh $OUT $SRCDIR " + arch,
|
||||
out = "openssl_" + arch,
|
||||
visibility = [
|
||||
"//submodules/openssl:...",
|
||||
|
@ -112,7 +112,7 @@ openssl_libs = [
|
||||
genrule(
|
||||
name = "openssl_build",
|
||||
srcs = [
|
||||
"build-openssl.sh",
|
||||
"build-openssl-bazel.sh",
|
||||
"openssl-1.1.1d.tar.gz",
|
||||
"patch-conf.patch",
|
||||
"patch-include.patch",
|
||||
@ -129,9 +129,9 @@ genrule(
|
||||
echo "Unsupported architecture $(TARGET_CPU)"
|
||||
fi
|
||||
""" + "\n" +
|
||||
"mkdir -p $(RULEDIR)/$$BUILD_ARCH && cp $(SRCS) $(RULEDIR)/$$BUILD_ARCH/ && sh $(RULEDIR)/$$BUILD_ARCH/build-openssl.sh $(RULEDIR)/$$BUILD_ARCH $(RULEDIR)/$$BUILD_ARCH $$BUILD_ARCH" + "\n" +
|
||||
"mkdir -p $(RULEDIR)/$$BUILD_ARCH && cp $(SRCS) $(RULEDIR)/$$BUILD_ARCH/ && sh $(RULEDIR)/$$BUILD_ARCH/build-openssl-bazel.sh $(RULEDIR)/$$BUILD_ARCH $(RULEDIR)/$$BUILD_ARCH $$BUILD_ARCH" + "\n" +
|
||||
"\n".join([
|
||||
"cp \"$(RULEDIR)/$$BUILD_ARCH/build/arm64/include/openssl/{}\" \"$(location :{})\"\n".format(x, x) for x in openssl_headers
|
||||
"cp \"$(RULEDIR)/$$BUILD_ARCH/build/$$BUILD_ARCH/include/openssl/{}\" \"$(location :{})\"\n".format(x, x) for x in openssl_headers
|
||||
]) +
|
||||
"\n".join([
|
||||
"cp \"$(RULEDIR)/$$BUILD_ARCH/build/$$BUILD_ARCH/lib/{}\" \"$(location :{})\"\n".format(x, x) for x in openssl_libs
|
||||
|
195
submodules/openssl/build-openssl-buck.sh
Normal file
195
submodules/openssl/build-openssl-buck.sh
Normal file
@ -0,0 +1,195 @@
|
||||
#!/bin/bash
|
||||
|
||||
OUT_DIR="$1"
|
||||
SRC_DIR="$2"
|
||||
ARCH="$3"
|
||||
|
||||
if [ "$ARCH" != "arm64" ] && [ "$ARCH" != "armv7" ] && [ "$ARCH" != "x86_64" ]; then
|
||||
echo "Invalid architecture $ARCH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$OUT_DIR" ]; then
|
||||
echo "Usage: sh build-openssl.sh OUT_DIR SRC_DIR ARCH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$SRC_DIR" ]; then
|
||||
echo "Usage: sh build-openssl.sh OUT_DIR SRC_DIR ARCH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$SRC_DIR" ]; then
|
||||
echo "$SRC_DIR does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$OUT_DIR"
|
||||
|
||||
TMP_DIR="$OUT_DIR/build"
|
||||
rm -rf "$TMP_DIR"
|
||||
mkdir -p "$TMP_DIR"
|
||||
|
||||
CROSS_TOP_SIM="`xcode-select --print-path`/Platforms/iPhoneSimulator.platform/Developer"
|
||||
CROSS_SDK_SIM="iPhoneSimulator.sdk"
|
||||
|
||||
CROSS_TOP_IOS="`xcode-select --print-path`/Platforms/iPhoneOS.platform/Developer"
|
||||
CROSS_SDK_IOS="iPhoneOS.sdk"
|
||||
|
||||
SOURCE_DIR="$OUT_DIR/openssl-1.1.1d"
|
||||
SOURCE_ARCHIVE="$SRC_DIR/openssl-1.1.1d.tar.gz"
|
||||
|
||||
rm -rf "$SOURCE_DIR"
|
||||
|
||||
tar -xzf "$SOURCE_ARCHIVE" --directory "$OUT_DIR"
|
||||
|
||||
export CROSS_COMPILE=`xcode-select --print-path`/Toolchains/XcodeDefault.xctoolchain/usr/bin/
|
||||
|
||||
function build_for ()
|
||||
{
|
||||
DIR="$(pwd)"
|
||||
cd "$SOURCE_DIR"
|
||||
|
||||
PLATFORM="$1"
|
||||
ARCH="$2"
|
||||
CROSS_TOP_ENV="CROSS_TOP_$3"
|
||||
CROSS_SDK_ENV="CROSS_SDK_$3"
|
||||
|
||||
make clean
|
||||
|
||||
export CROSS_TOP="${!CROSS_TOP_ENV}"
|
||||
export CROSS_SDK="${!CROSS_SDK_ENV}"
|
||||
|
||||
MINIMAL_FLAGS=(\
|
||||
"no-afalgeng" \
|
||||
"no-aria" \
|
||||
"no-asan" \
|
||||
"no-async" \
|
||||
"no-autoalginit" \
|
||||
"no-autoerrinit" \
|
||||
"no-autoload-config" \
|
||||
"no-bf" \
|
||||
"no-blake2" \
|
||||
"no-buildtest-c++" \
|
||||
"no-camellia" \
|
||||
"no-capieng" \
|
||||
"no-cast" \
|
||||
"no-chacha" \
|
||||
"no-cmac" \
|
||||
"no-cms" \
|
||||
"no-comp" \
|
||||
"no-crypto-mdebug" \
|
||||
"no-crypto-mdebug-backtrace" \
|
||||
"no-ct" \
|
||||
"no-deprecated" \
|
||||
"no-des" \
|
||||
"no-devcryptoeng" \
|
||||
"no-dgram" \
|
||||
"no-dh" \
|
||||
"no-dsa" \
|
||||
"no-dtls" \
|
||||
"no-dynamic-engine" \
|
||||
"no-ec" \
|
||||
"no-ec2m" \
|
||||
"no-ecdh" \
|
||||
"no-ecdsa" \
|
||||
"no-ec_nistp_64_gcc_128" \
|
||||
"no-egd" \
|
||||
"no-engine" \
|
||||
"no-err" \
|
||||
"no-external-tests" \
|
||||
"no-filenames" \
|
||||
"no-fuzz-libfuzzer" \
|
||||
"no-fuzz-afl" \
|
||||
"no-gost" \
|
||||
"no-heartbeats" \
|
||||
"no-idea" \
|
||||
"no-makedepend" \
|
||||
"no-md2" \
|
||||
"no-md4" \
|
||||
"no-mdc2" \
|
||||
"no-msan" \
|
||||
"no-multiblock" \
|
||||
"no-nextprotoneg" \
|
||||
"no-pinshared" \
|
||||
"no-ocb" \
|
||||
"no-ocsp" \
|
||||
"no-pic" \
|
||||
"no-poly1305" \
|
||||
"no-posix-io" \
|
||||
"no-psk" \
|
||||
"no-rc2" \
|
||||
"no-rc4" \
|
||||
"no-rc5" \
|
||||
"no-rfc3779" \
|
||||
"no-rmd160" \
|
||||
"no-scrypt" \
|
||||
"no-sctp" \
|
||||
"no-shared" \
|
||||
"no-siphash" \
|
||||
"no-sm2" \
|
||||
"no-sm3" \
|
||||
"no-sm4" \
|
||||
"no-sock" \
|
||||
"no-srp" \
|
||||
"no-srtp" \
|
||||
"no-sse2" \
|
||||
"no-ssl" \
|
||||
"no-ssl-trace" \
|
||||
"no-static-engine" \
|
||||
"no-stdio" \
|
||||
"no-tests" \
|
||||
"no-tls" \
|
||||
"no-ts" \
|
||||
"no-ubsan" \
|
||||
"no-ui-console" \
|
||||
"no-unit-test" \
|
||||
"no-whirlpool" \
|
||||
"no-weak-ssl-ciphers" \
|
||||
"no-zlib" \
|
||||
"no-zlib-dynamic" \
|
||||
)
|
||||
|
||||
DEFAULT_FLAGS=(\
|
||||
"no-asm" \
|
||||
"no-ssl3" \
|
||||
"no-comp" \
|
||||
"no-hw" \
|
||||
"no-engine" \
|
||||
"no-async" \
|
||||
)
|
||||
|
||||
ADDITIONAL_FLAGS=$DEFAULT_FLAGS
|
||||
|
||||
./Configure $PLATFORM "-arch $ARCH" ${ADDITIONAL_FLAGS[@]} --prefix=${TMP_DIR}/${ARCH} || exit 1
|
||||
|
||||
make && make install_sw || exit 2
|
||||
unset CROSS_TOP
|
||||
unset CROSS_SDK
|
||||
|
||||
cd "$DIR"
|
||||
}
|
||||
|
||||
patch "$SOURCE_DIR/Configurations/10-main.conf" < patch-conf.patch || exit 1
|
||||
|
||||
if [ "$ARCH" == "x86_64" ]; then
|
||||
build_for ios64sim-cross x86_64 SIM || exit 2
|
||||
elif [ "$ARCH" == "armv7" ]; then
|
||||
build_for ios-cross armv7 IOS || exit 4
|
||||
elif [ "$ARCH" == "arm64" ]; then
|
||||
build_for ios64-cross arm64 IOS || exit 5
|
||||
else
|
||||
echo "Invalid architecture $ARCH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cp -r "${TMP_DIR}/$ARCH/include" "${TMP_DIR}/"
|
||||
patch -p3 "${TMP_DIR}/include/openssl/opensslconf.h" < patch-include.patch
|
||||
|
||||
DFT_DIST_DIR="$OUT_DIR/out"
|
||||
rm -rf "$DFT_DIST_DIR"
|
||||
mkdir -p "$DFT_DIST_DIR"
|
||||
|
||||
DIST_DIR="${DIST_DIR:-$DFT_DIST_DIR}"
|
||||
mkdir -p "${DIST_DIR}"
|
||||
cp -r "${TMP_DIR}/include" "${TMP_DIR}/$ARCH/lib" "${DIST_DIR}"
|
@ -1,5 +1,9 @@
|
||||
load("//Config:buck_rule_macros.bzl", "static_library")
|
||||
|
||||
public_headers = glob([
|
||||
"PublicHeaders/**/*.h",
|
||||
])
|
||||
|
||||
static_library(
|
||||
name = "RLottieBinding",
|
||||
srcs = glob([
|
||||
@ -20,12 +24,9 @@ static_library(
|
||||
], exclude = [
|
||||
"rlottie/src/lottie/rapidjson/msinttypes/**/*",
|
||||
]) + [
|
||||
"LottieInstance.h",
|
||||
"config.h",
|
||||
],
|
||||
exported_headers = [
|
||||
"LottieInstance.h"
|
||||
],
|
||||
] + public_headers,
|
||||
exported_headers = public_headers,
|
||||
frameworks = [
|
||||
"$SDKROOT/System/Library/Frameworks/Foundation.framework",
|
||||
"$SDKROOT/System/Library/Frameworks/UIKit.framework",
|
||||
|
@ -42,14 +42,14 @@ ton_lib_flags = ["-l" + name for name in ton_lib_names]
|
||||
genrule(
|
||||
name = "ton_build",
|
||||
srcs = [
|
||||
"build-ton.sh",
|
||||
"build-ton-buck.sh",
|
||||
"tonlib-src",
|
||||
"iOS.cmake"
|
||||
"iOS-buck.cmake"
|
||||
],
|
||||
bash =
|
||||
"""
|
||||
export PATH=\"$PATH:$(location //third-party/cmake:cmake)/cmake-3.16.0/bin\"
|
||||
sh $SRCDIR/build-ton.sh $OUT $SRCDIR $(location //submodules/openssl:openssl_build_merged)
|
||||
sh $SRCDIR/build-ton-buck.sh $OUT $SRCDIR $(location //submodules/openssl:openssl_build_merged)
|
||||
""",
|
||||
out = "ton",
|
||||
visibility = [
|
||||
|
@ -38,7 +38,7 @@ ton_lib_names = [
|
||||
genrule(
|
||||
name = "ton_build",
|
||||
srcs = [
|
||||
"build-ton.sh",
|
||||
"build-ton-bazel.sh",
|
||||
"iOS.cmake",
|
||||
"tonlib-src.tar.gz",
|
||||
"//submodules/openssl:openssl_include",
|
||||
@ -58,7 +58,7 @@ genrule(
|
||||
echo "Unsupported architecture $(TARGET_CPU)"
|
||||
fi
|
||||
|
||||
cp $(location :build-ton.sh) "$(RULEDIR)/"
|
||||
cp $(location :build-ton-bazel.sh) "$(RULEDIR)/"
|
||||
cp $(location :iOS.cmake) "$(RULEDIR)/"
|
||||
tar -xzf $(location tonlib-src.tar.gz) -C "$(RULEDIR)/"
|
||||
|
||||
@ -70,7 +70,7 @@ genrule(
|
||||
done
|
||||
mkdir -p "$(RULEDIR)/Public/ton"
|
||||
|
||||
sh $(RULEDIR)/build-ton.sh "$(RULEDIR)" "$(RULEDIR)" "$(RULEDIR)/openssl_headers" $$BUILD_ARCH
|
||||
sh $(RULEDIR)/build-ton-bazel.sh "$(RULEDIR)" "$(RULEDIR)" "$(RULEDIR)/openssl_headers" $$BUILD_ARCH
|
||||
""" +
|
||||
"\n".join([
|
||||
"cp -f \"$(RULEDIR)/build/out/include/{}\" \"$(location Public/ton/include/{})\"".format(header, header) for header in ton_headers
|
||||
|
@ -20,7 +20,7 @@ fi
|
||||
|
||||
ARCHIVE_PATH="$SOURCE_DIR/tonlib.zip"
|
||||
td_path="$SOURCE_DIR/tonlib-src"
|
||||
TOOLCHAIN="$SOURCE_DIR/iOS.cmake"
|
||||
TOOLCHAIN="$SOURCE_DIR/iOS-bazel.cmake"
|
||||
|
||||
mkdir -p "$OUT_DIR"
|
||||
mkdir -p "$OUT_DIR/build"
|
76
submodules/ton/build-ton-buck.sh
Normal file
76
submodules/ton/build-ton-buck.sh
Normal file
@ -0,0 +1,76 @@
|
||||
#/bin/sh
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
OUT_DIR="$1"
|
||||
SOURCE_DIR="$2"
|
||||
openssl_base_path="$3"
|
||||
|
||||
if [ -z "$openssl_base_path" ]; then
|
||||
echo "Usage: sh build-ton.sh path/to/openssl"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$openssl_base_path" ]; then
|
||||
echo "$openssl_base_path not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ARCHIVE_PATH="$SOURCE_DIR/tonlib.zip"
|
||||
td_path="$SOURCE_DIR/tonlib-src"
|
||||
TOOLCHAIN="$SOURCE_DIR/iOS-buck.cmake"
|
||||
|
||||
mkdir -p "$OUT_DIR"
|
||||
mkdir -p "$OUT_DIR/build"
|
||||
cd "$OUT_DIR/build"
|
||||
|
||||
platforms="iOS"
|
||||
for platform in $platforms; do
|
||||
openssl_path="$openssl_base_path"
|
||||
echo "OpenSSL path = ${openssl_path}"
|
||||
openssl_crypto_library="${openssl_path}/lib/libcrypto.a"
|
||||
openssl_ssl_library="${openssl_path}/lib/libssl.a"
|
||||
options="$options -DOPENSSL_FOUND=1"
|
||||
options="$options -DOPENSSL_CRYPTO_LIBRARY=${openssl_crypto_library}"
|
||||
options="$options -DOPENSSL_INCLUDE_DIR=${openssl_path}/include"
|
||||
options="$options -DOPENSSL_LIBRARIES=${openssl_crypto_library}"
|
||||
options="$options -DCMAKE_BUILD_TYPE=Release"
|
||||
if [[ $skip_build = "" ]]; then
|
||||
simulators="0 1"
|
||||
else
|
||||
simulators=""
|
||||
fi
|
||||
for simulator in $simulators;
|
||||
do
|
||||
build="build-${platform}"
|
||||
install="install-${platform}"
|
||||
if [[ $simulator = "1" ]]; then
|
||||
build="${build}-simulator"
|
||||
install="${install}-simulator"
|
||||
ios_platform="SIMULATOR"
|
||||
else
|
||||
ios_platform="OS"
|
||||
fi
|
||||
echo "Platform = ${platform} Simulator = ${simulator}"
|
||||
echo $ios_platform
|
||||
rm -rf $build
|
||||
mkdir -p $build
|
||||
mkdir -p $install
|
||||
cd $build
|
||||
cmake $td_path $options -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN" -DIOS_PLATFORM=${ios_platform} -DTON_ARCH= -DCMAKE_INSTALL_PREFIX=../${install}
|
||||
CORE_COUNT=`sysctl -n hw.logicalcpu`
|
||||
make -j$CORE_COUNT install || exit
|
||||
cd ..
|
||||
done
|
||||
mkdir -p $platform
|
||||
|
||||
mkdir -p "out"
|
||||
cp -r "install-iOS/include" "out/"
|
||||
mkdir -p "out/lib"
|
||||
|
||||
for f in install-iOS/lib/*.a; do
|
||||
lib_name=$(basename "$f")
|
||||
lipo -create "install-iOS/lib/$lib_name" "install-iOS-simulator/lib/$lib_name" -o "out/lib/$lib_name"
|
||||
done
|
||||
done
|
250
submodules/ton/iOS-buck.cmake
Normal file
250
submodules/ton/iOS-buck.cmake
Normal file
@ -0,0 +1,250 @@
|
||||
# This file is based off of the Platform/Darwin.cmake and Platform/UnixPaths.cmake
|
||||
# files which are included with CMake 2.8.4
|
||||
# It has been altered for iOS development
|
||||
|
||||
# Options:
|
||||
#
|
||||
# IOS_PLATFORM = OS (default) or SIMULATOR
|
||||
# This decides if SDKS will be selected from the iPhoneOS.platform or iPhoneSimulator.platform folders
|
||||
# OS - the default, used to build for iPhone and iPad physical devices, which have an arm arch.
|
||||
# SIMULATOR - used to build for the Simulator platforms, which have an x86 arch.
|
||||
#
|
||||
# CMAKE_IOS_DEVELOPER_ROOT = automatic(default) or /path/to/platform/Developer folder
|
||||
# By default this location is automatcially chosen based on the IOS_PLATFORM value above.
|
||||
# If set manually, it will override the default location and force the user of a particular Developer Platform
|
||||
#
|
||||
# CMAKE_IOS_SDK_ROOT = automatic(default) or /path/to/platform/Developer/SDKs/SDK folder
|
||||
# By default this location is automatcially chosen based on the CMAKE_IOS_DEVELOPER_ROOT value.
|
||||
# In this case it will always be the most up-to-date SDK found in the CMAKE_IOS_DEVELOPER_ROOT path.
|
||||
# If set manually, this will force the use of a specific SDK version
|
||||
|
||||
# Macros:
|
||||
#
|
||||
# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE)
|
||||
# A convenience macro for setting xcode specific properties on targets
|
||||
# example: set_xcode_property (myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1")
|
||||
#
|
||||
# find_host_package (PROGRAM ARGS)
|
||||
# A macro used to find executable programs on the host system, not within the iOS environment.
|
||||
# Thanks to the android-cmake project for providing the command
|
||||
|
||||
# Standard settings
|
||||
set (CMAKE_SYSTEM_NAME Darwin)
|
||||
set (CMAKE_SYSTEM_VERSION 1)
|
||||
set (UNIX True)
|
||||
set (APPLE True)
|
||||
set (IOS True)
|
||||
|
||||
# Required as of cmake 2.8.10
|
||||
set (CMAKE_OSX_DEPLOYMENT_TARGET "" CACHE STRING "Force unset of the deployment target for iOS" FORCE)
|
||||
|
||||
# Determine the cmake host system version so we know where to find the iOS SDKs
|
||||
find_program (CMAKE_UNAME uname /bin /usr/bin /usr/local/bin)
|
||||
if (CMAKE_UNAME)
|
||||
exec_program(uname ARGS -r OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION)
|
||||
string (REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\1" DARWIN_MAJOR_VERSION "${CMAKE_HOST_SYSTEM_VERSION}")
|
||||
endif (CMAKE_UNAME)
|
||||
|
||||
# Force the compilers to gcc for iOS
|
||||
set (CMAKE_C_COMPILER /usr/bin/gcc)
|
||||
set (CMAKE_CXX_COMPILER /usr/bin/g++)
|
||||
set(CMAKE_AR ar CACHE FILEPATH "" FORCE)
|
||||
set(CMAKE_RANLIB ranlib CACHE FILEPATH "" FORCE)
|
||||
set(PKG_CONFIG_EXECUTABLE pkg-config CACHE FILEPATH "" FORCE)
|
||||
|
||||
# Setup iOS platform unless specified manually with IOS_PLATFORM
|
||||
if (NOT DEFINED IOS_PLATFORM)
|
||||
set (IOS_PLATFORM "OS")
|
||||
endif (NOT DEFINED IOS_PLATFORM)
|
||||
set (IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS Platform")
|
||||
|
||||
# Check the platform selection and setup for developer root
|
||||
if (${IOS_PLATFORM} STREQUAL "OS")
|
||||
set (IOS_PLATFORM_LOCATION "iPhoneOS.platform")
|
||||
set (XCODE_IOS_PLATFORM iphoneos)
|
||||
|
||||
# This causes the installers to properly locate the output libraries
|
||||
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphoneos")
|
||||
|
||||
set (APPLE_IOS True)
|
||||
elseif (${IOS_PLATFORM} STREQUAL "SIMULATOR")
|
||||
set (SIMULATOR_FLAG true)
|
||||
set (IOS_PLATFORM_LOCATION "iPhoneSimulator.platform")
|
||||
set (XCODE_IOS_PLATFORM iphonesimulator)
|
||||
|
||||
# This causes the installers to properly locate the output libraries
|
||||
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphonesimulator")
|
||||
|
||||
set (APPLE_IOS True)
|
||||
elseif (${IOS_PLATFORM} STREQUAL "WATCHOS")
|
||||
set (IOS_PLATFORM_LOCATION "WatchOS.platform")
|
||||
set (XCODE_IOS_PLATFORM watchos)
|
||||
|
||||
# This causes the installers to properly locate the output libraries
|
||||
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-watchos")
|
||||
|
||||
set (APPLE_WATCH True)
|
||||
elseif (${IOS_PLATFORM} STREQUAL "WATCHSIMULATOR")
|
||||
set (SIMULATOR_FLAG true)
|
||||
set (IOS_PLATFORM_LOCATION "WatchSimulator.platform")
|
||||
set (XCODE_IOS_PLATFORM watchsimulator)
|
||||
|
||||
# This causes the installers to properly locate the output libraries
|
||||
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-watchsimulator")
|
||||
|
||||
set (APPLE_WATCH True)
|
||||
elseif (${IOS_PLATFORM} STREQUAL "TVOS")
|
||||
set (IOS_PLATFORM_LOCATION "AppleTvOS.platform")
|
||||
set (XCODE_IOS_PLATFORM tvos)
|
||||
|
||||
# This causes the installers to properly locate the output libraries
|
||||
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-appletvos")
|
||||
|
||||
set (APPLE_TV True)
|
||||
elseif (${IOS_PLATFORM} STREQUAL "TVSIMULATOR")
|
||||
set (SIMULATOR_FLAG true)
|
||||
set (IOS_PLATFORM_LOCATION "AppleTvSimulator.platform")
|
||||
set (XCODE_IOS_PLATFORM tvsimulator)
|
||||
|
||||
# This causes the installers to properly locate the output libraries
|
||||
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-tvsimulator")
|
||||
|
||||
set (APPLE_TV True)
|
||||
else (${IOS_PLATFORM} STREQUAL "OS")
|
||||
message (FATAL_ERROR "Unsupported IOS_PLATFORM value selected. Please choose OS, SIMULATOR, or WATCHOS.")
|
||||
endif ()
|
||||
|
||||
# All iOS/Darwin specific settings - some may be redundant
|
||||
set (CMAKE_SHARED_LIBRARY_PREFIX "lib")
|
||||
set (CMAKE_SHARED_LIBRARY_SUFFIX ".dylib")
|
||||
set (CMAKE_SHARED_MODULE_PREFIX "lib")
|
||||
set (CMAKE_SHARED_MODULE_SUFFIX ".so")
|
||||
set (CMAKE_MODULE_EXISTS 1)
|
||||
set (CMAKE_DL_LIBS "")
|
||||
|
||||
set (CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
|
||||
set (CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ")
|
||||
set (CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}")
|
||||
set (CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}")
|
||||
|
||||
if (IOS_DEPLOYMENT_TARGET)
|
||||
set (XCODE_IOS_PLATFORM_VERSION_FLAGS "-m${XCODE_IOS_PLATFORM}-version-min=${IOS_DEPLOYMENT_TARGET}")
|
||||
endif()
|
||||
|
||||
set (CMAKE_SHARED_LINKER_FLAGS_INIT "-fapplication-extension")
|
||||
#if (NOT SIMULATOR_FLAG)
|
||||
# set (BITCODE "-fembed-bitcode")
|
||||
#endif()
|
||||
set (CMAKE_C_FLAGS_INIT "${XCODE_IOS_PLATFORM_VERSION_FLAGS} ${BITCODE} -fno-stack-check")
|
||||
# Hidden visibilty is required for cxx on iOS
|
||||
set (CMAKE_CXX_FLAGS_INIT "${XCODE_IOS_PLATFORM_VERSION_FLAGS} ${BITCODE} -fvisibility-inlines-hidden -fno-stack-check")
|
||||
|
||||
set (CMAKE_C_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -fapplication-extension -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}")
|
||||
set (CMAKE_CXX_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -fapplication-extension -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}")
|
||||
|
||||
set (CMAKE_PLATFORM_HAS_INSTALLNAME 1)
|
||||
set (CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -headerpad_max_install_names")
|
||||
set (CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -headerpad_max_install_names")
|
||||
set (CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,")
|
||||
set (CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,")
|
||||
set (CMAKE_FIND_LIBRARY_SUFFIXES ".dylib" ".so" ".a")
|
||||
|
||||
# hack: if a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old build tree
|
||||
# (where install_name_tool was hardcoded) and where CMAKE_INSTALL_NAME_TOOL isn't in the cache
|
||||
# and still cmake didn't fail in CMakeFindBinUtils.cmake (because it isn't rerun)
|
||||
# hardcode CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did before, Alex
|
||||
if (NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
|
||||
find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool)
|
||||
endif (NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
|
||||
|
||||
# Setup iOS deployment target
|
||||
set (IOS_DEPLOYMENT_TARGET ${IOS_DEPLOYMENT_TARGET} CACHE STRING "Minimum iOS version")
|
||||
|
||||
# Setup iOS developer location unless specified manually with CMAKE_IOS_DEVELOPER_ROOT
|
||||
# Note Xcode 4.3 changed the installation location, choose the most recent one available
|
||||
exec_program(/usr/bin/xcode-select ARGS -print-path OUTPUT_VARIABLE CMAKE_XCODE_DEVELOPER_DIR)
|
||||
set (XCODE_POST_43_ROOT "${CMAKE_XCODE_DEVELOPER_DIR}/Platforms/${IOS_PLATFORM_LOCATION}/Developer")
|
||||
set (XCODE_PRE_43_ROOT "/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer")
|
||||
if (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT)
|
||||
if (EXISTS ${XCODE_POST_43_ROOT})
|
||||
set (CMAKE_IOS_DEVELOPER_ROOT ${XCODE_POST_43_ROOT})
|
||||
elseif(EXISTS ${XCODE_PRE_43_ROOT})
|
||||
set (CMAKE_IOS_DEVELOPER_ROOT ${XCODE_PRE_43_ROOT})
|
||||
endif (EXISTS ${XCODE_POST_43_ROOT})
|
||||
endif (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT)
|
||||
set (CMAKE_IOS_DEVELOPER_ROOT ${CMAKE_IOS_DEVELOPER_ROOT} CACHE PATH "Location of iOS Platform")
|
||||
|
||||
# Find and use the most recent iOS sdk unless specified manually with CMAKE_IOS_SDK_ROOT
|
||||
if (NOT DEFINED CMAKE_IOS_SDK_ROOT)
|
||||
file (GLOB _CMAKE_IOS_SDKS "${CMAKE_IOS_DEVELOPER_ROOT}/SDKs/*")
|
||||
if (_CMAKE_IOS_SDKS)
|
||||
list (SORT _CMAKE_IOS_SDKS)
|
||||
list (REVERSE _CMAKE_IOS_SDKS)
|
||||
list (GET _CMAKE_IOS_SDKS 0 CMAKE_IOS_SDK_ROOT)
|
||||
else (_CMAKE_IOS_SDKS)
|
||||
message (FATAL_ERROR "No iOS SDK's found in default search path ${CMAKE_IOS_DEVELOPER_ROOT}. Manually set CMAKE_IOS_SDK_ROOT or install the iOS SDK.")
|
||||
endif (_CMAKE_IOS_SDKS)
|
||||
message (STATUS "Toolchain using default iOS SDK: ${CMAKE_IOS_SDK_ROOT}")
|
||||
endif (NOT DEFINED CMAKE_IOS_SDK_ROOT)
|
||||
set (CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Location of the selected iOS SDK")
|
||||
|
||||
# Set the sysroot default to the most recent SDK
|
||||
set (CMAKE_OSX_SYSROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Sysroot used for iOS support")
|
||||
|
||||
# set the architecture for iOS
|
||||
if (IOS_PLATFORM STREQUAL "OS")
|
||||
set (IOS_ARCH "armv7;arm64")
|
||||
elseif (IOS_PLATFORM STREQUAL "SIMULATOR")
|
||||
set (IOS_ARCH "x86_64")
|
||||
elseif (IOS_PLATFORM STREQUAL "WATCHOS")
|
||||
set (IOS_ARCH "armv7k")
|
||||
elseif (IOS_PLATFORM STREQUAL "WATCHSIMULATOR")
|
||||
set (IOS_ARCH "i386")
|
||||
elseif (IOS_PLATFORM STREQUAL "TVOS")
|
||||
set (IOS_ARCH "arm64")
|
||||
elseif (IOS_PLATFORM STREQUAL "TVSIMULATOR")
|
||||
set (IOS_ARCH "x86_64")
|
||||
else()
|
||||
message (WARNING "Unknown IOS_PLATFORM=<${IOS_PLATFORM}>")
|
||||
endif()
|
||||
message (STATUS ${IOS_ARCH})
|
||||
|
||||
set (CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} CACHE STRING "Build architecture for iOS")
|
||||
|
||||
# Set the find root to the iOS developer roots and to user defined paths
|
||||
set (CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_DEVELOPER_ROOT} ${CMAKE_IOS_SDK_ROOT} ${CMAKE_PREFIX_PATH} CACHE STRING "iOS find search path root")
|
||||
|
||||
# default to searching for frameworks first
|
||||
set (CMAKE_FIND_FRAMEWORK FIRST)
|
||||
|
||||
# set up the default search directories for frameworks
|
||||
set (CMAKE_SYSTEM_FRAMEWORK_PATH
|
||||
${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks
|
||||
${CMAKE_IOS_SDK_ROOT}/System/Library/PrivateFrameworks
|
||||
${CMAKE_IOS_SDK_ROOT}/Developer/Library/Frameworks
|
||||
)
|
||||
|
||||
# only search the iOS sdks, not the remainder of the host filesystem
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
||||
# This little macro lets you set any Xcode specific property
|
||||
macro (set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE)
|
||||
set_property (TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} ${XCODE_VALUE})
|
||||
endmacro (set_xcode_property)
|
||||
|
||||
# This macro lets you find executable programs on the host system
|
||||
macro (find_host_package)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
|
||||
set (IOS FALSE)
|
||||
|
||||
find_package(${ARGN})
|
||||
|
||||
set (IOS TRUE)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
endmacro (find_host_package)
|
Loading…
x
Reference in New Issue
Block a user