Skip to content

Commit f50a98e

Browse files
committed
Tweak to ios-buildscripts project
Significant improvement in dependency tracking for iOS builds
1 parent 3229ede commit f50a98e

File tree

1 file changed

+53
-27
lines changed

1 file changed

+53
-27
lines changed

Build_iOS/CMakeLists.txt

Lines changed: 53 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,68 @@
11
project(casablanca-ios)
22
cmake_minimum_required(VERSION 2.6)
33

4-
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/build.simulator ${CMAKE_BINARY_DIR}/build.arm)
4+
set(TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ios-cmake/toolchain/iOS.cmake")
55

6-
## Simulator version
7-
add_custom_command(
8-
OUTPUT build.simulator/CMakeCache.txt
9-
COMMAND cmake ${CMAKE_SOURCE_DIR}/../Release/ -DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/ios-cmake/toolchain/iOS.cmake -DIOS_PLATFORM=SIMULATOR -GXcode -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
10-
WORKING_DIRECTORY build.simulator
11-
)
6+
set(SIM_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/build.i386" CACHE INTERNAL "")
7+
set(SIM_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../Release" CACHE INTERNAL "")
128

13-
add_custom_command(
14-
OUTPUT build.simulator/Binaries/Debug/libcasablanca.a
15-
COMMAND cmake --build . --target casablanca
16-
DEPENDS build.simulator/CMakeCache.txt
17-
WORKING_DIRECTORY build.simulator
18-
)
9+
set(ARM_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/build.arm" CACHE INTERNAL "")
10+
set(ARM_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../Release" CACHE INTERNAL "")
1911

20-
## ARM version
21-
add_custom_command(
22-
OUTPUT build.arm/CMakeCache.txt
23-
COMMAND cmake ${CMAKE_SOURCE_DIR}/../Release/ -DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/ios-cmake/toolchain/iOS.cmake -DIOS_PLATFORM=OS -DCMAKE_OSX_ARCHITECTURES='armv7;armv7s;armv6' -GXcode -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
24-
WORKING_DIRECTORY build.arm
12+
file(MAKE_DIRECTORY ${SIM_BINARY_DIR})
13+
execute_process(WORKING_DIRECTORY ${SIM_BINARY_DIR}
14+
COMMAND ${CMAKE_COMMAND}
15+
-GXcode
16+
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}
17+
-DIOS_PLATFORM=SIMULATOR
18+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
19+
"${SIM_SOURCE_DIR}"
20+
)
21+
22+
file(MAKE_DIRECTORY ${ARM_BINARY_DIR})
23+
execute_process(WORKING_DIRECTORY ${ARM_BINARY_DIR}
24+
COMMAND ${CMAKE_COMMAND}
25+
-GXcode
26+
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}
27+
-DIOS_PLATFORM=OS
28+
"-DCMAKE_OSX_ARCHITECTURES=armv7s;armv7;arm64"
29+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
30+
"${ARM_SOURCE_DIR}"
31+
)
32+
33+
34+
## Simulator version
35+
add_custom_target(sim
36+
COMMAND ${CMAKE_COMMAND}
37+
--build ${SIM_BINARY_DIR}
38+
--target casablanca
39+
--config ${CMAKE_BUILD_TYPE}
40+
COMMENT "Building for i386 (simulator)"
41+
VERBATIM
2542
)
2643

27-
add_custom_command(
28-
OUTPUT build.arm/Binaries/Debug/libcasablanca.a
29-
COMMAND cmake --build . --target casablanca
30-
DEPENDS build.arm/CMakeCache.txt
31-
WORKING_DIRECTORY build.arm
44+
## ARM version
45+
add_custom_target(arm
46+
COMMAND ${CMAKE_COMMAND}
47+
--build ${ARM_BINARY_DIR}
48+
--target casablanca
49+
--config ${CMAKE_BUILD_TYPE}
50+
COMMENT "Building for armv7, armv7s, arm64"
51+
VERBATIM
3252
)
3353

3454
add_custom_command(
3555
OUTPUT libcasablanca.a
36-
COMMAND lipo -create -output ${CMAKE_CURRENT_BINARY_DIR}/libcasablanca.a
37-
${CMAKE_CURRENT_BINARY_DIR}/build.arm/Binaries/Debug/libcasablanca.a
38-
${CMAKE_CURRENT_BINARY_DIR}/build.simulator/Binaries/Debug/libcasablanca.a
39-
DEPENDS build.arm/Binaries/Debug/libcasablanca.a build.simulator/Binaries/Debug/libcasablanca.a
56+
COMMAND lipo -create
57+
-output "${CMAKE_CURRENT_BINARY_DIR}/libcasablanca.a"
58+
${SIM_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/libcasablanca.a
59+
${ARM_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/libcasablanca.a
60+
DEPENDS
61+
sim
62+
arm
63+
"${SIM_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/libcasablanca.a"
64+
"${ARM_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/libcasablanca.a"
65+
VERBATIM
4066
)
4167

4268
add_custom_target(casablanca ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/libcasablanca.a)

0 commit comments

Comments
 (0)