Skip to content

Commit 14b439c

Browse files
authored
Enable build for iOS in Pipelines. (#925)
1 parent a2d2d3c commit 14b439c

File tree

6 files changed

+68
-318
lines changed

6 files changed

+68
-318
lines changed

.gitignore

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#Visual Studio files
1+
# Visual Studio files
22
*.o
33
*.d
44
*.so
@@ -38,7 +38,7 @@
3838
*~
3939
ipch/
4040
obj/
41-
#OSX files
41+
# OSX files
4242
*.xccheckout
4343
*.pbxuser
4444
*.mode1v3
@@ -67,7 +67,8 @@ Intermediate/
6767
# Ignore cmake building directories
6868
build.*/
6969
docs/
70-
# ignore NuGet artifacts
70+
# Ignore NuGet artifacts
7171
.nuget/
72-
73-
Generated Files/
72+
Generated Files/
73+
# Ignore iOS temp build directories
74+
Build_iOS/Apple-Boost-BuildScript

Build_iOS/CMakeLists.txt

Lines changed: 15 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,45 @@
11
project(casablanca-ios NONE)
2-
cmake_minimum_required(VERSION 2.6)
2+
cmake_minimum_required(VERSION 3.1)
33

44
enable_testing()
55

66
if (CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET)
77
set (ENV{CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET} ${CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET})
88
endif()
99

10-
set(TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/iOS.cmake")
11-
12-
set(SIM_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/build.i386" CACHE INTERNAL "")
13-
set(SIM_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../Release" CACHE INTERNAL "")
10+
set(TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ios-cmake/ios.toolchain.cmake")
1411

1512
set(SIM64_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/build.x86_64" CACHE INTERNAL "")
1613
set(SIM64_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../Release" CACHE INTERNAL "")
1714

18-
set(ARM_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/build.arm" CACHE INTERNAL "")
19-
set(ARM_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../Release" CACHE INTERNAL "")
15+
set(ARM64_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/build.arm64" CACHE INTERNAL "")
16+
set(ARM64_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../Release" CACHE INTERNAL "")
2017
add_test(NAME ios_runner
2118
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../Release/tests/common/testrunner/ios
2219
COMMAND xcodebuild test -project ios_runner.xcodeproj -configuration=${CMAKE_BUILD_TYPE} -scheme ios_runner -destination "platform=iOS Simulator,name=iPhone 6" LIBRARY_SEARCH_PATH=${SIM_BINARY_DIR}
2320
)
2421

25-
file(MAKE_DIRECTORY ${SIM_BINARY_DIR})
26-
execute_process(WORKING_DIRECTORY ${SIM_BINARY_DIR}
27-
COMMAND ${CMAKE_COMMAND}
28-
-GXcode
29-
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}
30-
-DIOS_PLATFORM=SIMULATOR
31-
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
32-
-DCMAKE_C_COMPILER=${CLANG_C_COMPILER}
33-
-DCMAKE_CXX_COMPILER=${CLANG_CXX_COMPILER}
34-
"${SIM_SOURCE_DIR}"
35-
)
36-
3722
file(MAKE_DIRECTORY ${SIM64_BINARY_DIR})
3823
execute_process(WORKING_DIRECTORY ${SIM64_BINARY_DIR}
3924
COMMAND ${CMAKE_COMMAND}
4025
-GXcode
4126
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}
4227
-DIOS_PLATFORM=SIMULATOR64
4328
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
44-
-DCMAKE_C_COMPILER=${CLANG_C_COMPILER}
45-
-DCMAKE_CXX_COMPILER=${CLANG_CXX_COMPILER}
4629
"${SIM64_SOURCE_DIR}"
4730
)
4831

49-
file(MAKE_DIRECTORY ${ARM_BINARY_DIR})
50-
execute_process(WORKING_DIRECTORY ${ARM_BINARY_DIR}
32+
file(MAKE_DIRECTORY ${ARM64_BINARY_DIR})
33+
execute_process(WORKING_DIRECTORY ${ARM64_BINARY_DIR}
5134
COMMAND ${CMAKE_COMMAND}
5235
-GXcode
5336
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}
54-
-DIOS_PLATFORM=OS
37+
-DIOS_PLATFORM=OS64
5538
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
56-
-DCMAKE_C_COMPILER=${CLANG_C_COMPILER}
57-
-DCMAKE_CXX_COMPILER=${CLANG_CXX_COMPILER}
58-
"${ARM_SOURCE_DIR}"
39+
"${ARM64_SOURCE_DIR}"
5940
)
6041

6142

62-
## Simulator i386 version
63-
add_custom_target(sim
64-
COMMAND ${CMAKE_COMMAND}
65-
--build ${SIM_BINARY_DIR}
66-
--config ${CMAKE_BUILD_TYPE}
67-
COMMENT "Building for i386 (simulator)"
68-
VERBATIM
69-
)
70-
7143
## Simulator x86_64 version
7244
add_custom_target(sim64
7345
COMMAND ${CMAKE_COMMAND}
@@ -77,12 +49,12 @@ add_custom_target(sim64
7749
VERBATIM
7850
)
7951

80-
## ARM version
81-
add_custom_target(arm
52+
## ARM64 version
53+
add_custom_target(arm64
8254
COMMAND ${CMAKE_COMMAND}
83-
--build ${ARM_BINARY_DIR}
55+
--build ${ARM64_BINARY_DIR}
8456
--config ${CMAKE_BUILD_TYPE}
85-
COMMENT "Building for armv7, armv7s, arm64"
57+
COMMENT "Building for arm64"
8658
VERBATIM
8759
)
8860

@@ -91,16 +63,13 @@ add_custom_command(
9163
OUTPUT ${LIB_CPPREST}
9264
COMMAND lipo -create
9365
-output "${CMAKE_CURRENT_BINARY_DIR}/${LIB_CPPREST}"
94-
${SIM_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/${LIB_CPPREST}
9566
${SIM64_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/${LIB_CPPREST}
96-
${ARM_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/${LIB_CPPREST}
67+
${ARM64_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/${LIB_CPPREST}
9768
DEPENDS
98-
sim
9969
sim64
100-
arm
101-
"${SIM_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/${LIB_CPPREST}"
70+
arm64
10271
"${SIM64_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/${LIB_CPPREST}"
103-
"${ARM_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/${LIB_CPPREST}"
72+
"${ARM64_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/${LIB_CPPREST}"
10473
VERBATIM
10574
)
10675

Build_iOS/configure.sh

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,52 @@
22
set -e
33

44
if [ ! -e boost.framework ]
5-
then
6-
git clone -n https://github.com/faithfracture/Apple-Boost-BuildScript Apple-Boost-BuildScript
7-
pushd Apple-Boost-BuildScript
8-
git checkout 86f7570fceaef00846cc75f59c61474758fc65cb
9-
BOOST_LIBS="thread chrono filesystem regex system random" ./boost.sh
10-
popd
11-
mv Apple-Boost-BuildScript/build/boost/1.63.0/ios/framework/boost.framework .
12-
mv boost.framework/Versions/A/Headers boost.headers
13-
mkdir -p boost.framework/Versions/A/Headers
14-
mv boost.headers boost.framework/Versions/A/Headers/boost
5+
then
6+
git clone https://github.com/faithfracture/Apple-Boost-BuildScript Apple-Boost-BuildScript
7+
pushd ./Apple-Boost-BuildScript
8+
git checkout 1b94ec2e2b5af1ee036d9559b96e70c113846392
9+
BOOST_LIBS="thread chrono filesystem regex system random" ./boost.sh -ios -tvos
10+
popd
11+
mv Apple-Boost-BuildScript/build/boost/1.67.0/ios/framework/boost.framework .
12+
mv boost.framework/Versions/A/Headers boost.headers
13+
mkdir -p boost.framework/Versions/A/Headers
14+
mv boost.headers boost.framework/Versions/A/Headers/boost
1515
fi
1616

1717
if [ ! -e openssl/lib/libcrypto.a ]
18-
then
19-
git clone --depth=1 https://github.com/x2on/OpenSSL-for-iPhone.git
20-
pushd OpenSSL-for-iPhone
21-
./build-libssl.sh
22-
popd
23-
mkdir -p openssl/lib
24-
cp -r OpenSSL-for-iPhone/bin/iPhoneOS9.2-armv7.sdk/include openssl
25-
cp OpenSSL-for-iPhone/include/LICENSE openssl
26-
lipo -create -output openssl/lib/libssl.a OpenSSL-for-iPhone/bin/iPhone*/lib/libssl.a
27-
lipo -create -output openssl/lib/libcrypto.a OpenSSL-for-iPhone/bin/iPhone*/lib/libcrypto.a
18+
then
19+
git clone --depth=1 https://github.com/x2on/OpenSSL-for-iPhone.git
20+
pushd OpenSSL-for-iPhone
21+
git checkout 10019638e80e8a8a5fc19642a840d8a69fac7349
22+
./build-libssl.sh
23+
popd
24+
mkdir -p openssl/lib
25+
if [ -e OpenSSL-for-iPhone/bin/iPhoneOS11.4-arm64.sdk/include ]
26+
then
27+
cp -r OpenSSL-for-iPhone/bin/iPhoneOS11.4-arm64.sdk/include openssl
28+
elif [ -e OpenSSL-for-iPhone/bin/iPhoneOS12.0-arm64.sdk/include ]
29+
then
30+
cp -r OpenSSL-for-iPhone/bin/iPhoneOS12.0-arm64.sdk/include openssl
31+
else
32+
echo 'Could not find OpenSSL for iPhone'
33+
exit 1
34+
fi
35+
cp OpenSSL-for-iPhone/include/LICENSE openssl
36+
lipo -create -output openssl/lib/libssl.a OpenSSL-for-iPhone/bin/iPhone*/lib/libssl.a
37+
lipo -create -output openssl/lib/libcrypto.a OpenSSL-for-iPhone/bin/iPhone*/lib/libcrypto.a
2838
fi
2939

30-
if [ ! -e ios-cmake/toolchain/iOS.cmake ]
31-
then
32-
git clone https://github.com/cristeab/ios-cmake.git
33-
pushd ios-cmake
34-
git apply ../fix_ios_cmake_compiler.patch
35-
popd
40+
if [ ! -e ios-cmake/ios.toolchain.cmake ]
41+
then
42+
git clone https://github.com/leetal/ios-cmake
43+
pushd ios-cmake
44+
git checkout 6b30f4cfeab5567041d38e79507e642056fb9fd4
45+
popd
3646
fi
3747

38-
mkdir -p build.ios
39-
pushd build.ios
40-
cmake .. -DCMAKE_BUILD_TYPE=Release
48+
mkdir -p build.release.ios
49+
pushd build.release.ios
50+
cmake -DCMAKE_BUILD_TYPE=Release ..
4151
make
4252
popd
4353
echo "===="

Build_iOS/fix_boost_building_script.patch

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)