Skip to content

Commit 0f766a0

Browse files
mobilebenBillyONeal
authored andcommitted
#1015 Add in support for adding i386 slice when building for 32-bit targets. Also improve messaging and add means to clean (#1017)
1 parent c5ebc28 commit 0f766a0

File tree

2 files changed

+60
-7
lines changed

2 files changed

+60
-7
lines changed

Build_iOS/CMakeLists.txt

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,18 @@ cmake_minimum_required(VERSION 3.1)
33

44
enable_testing()
55

6+
set(LIB_CPPREST libcpprest.a)
7+
set(LIB_CPPREST_LIB_DIR "${CMAKE_CURRENT_BINARY_DIR}/lib")
8+
69
if (CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET)
710
set (ENV{CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET} ${CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET})
811
endif()
912

1013
set(TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ios-cmake/ios.toolchain.cmake")
1114

15+
set(SIM_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/build.i386" CACHE INTERNAL "")
16+
set(SIM_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../Release" CACHE INTERNAL "")
17+
1218
set(SIM64_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/build.x86_64" CACHE INTERNAL "")
1319
set(SIM64_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../Release" CACHE INTERNAL "")
1420

@@ -31,9 +37,25 @@ endif()
3137

3238
add_test(NAME ios_runner
3339
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../Release/tests/common/testrunner/ios
34-
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}
40+
COMMAND xcodebuild test -project ios_runner.xcodeproj -configuration=${CMAKE_BUILD_TYPE} -scheme ios_runner -destination "platform=iOS Simulator,name=iPhone 6" LIBRARY_SEARCH_PATH=${SIM64_BINARY_DIR}
3541
)
3642

43+
if (INCLUDE_32BIT)
44+
set (SIM_BINARY_LIB ${SIM_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/${LIB_CPPREST})
45+
file(MAKE_DIRECTORY ${SIM_BINARY_DIR})
46+
execute_process(WORKING_DIRECTORY ${SIM_BINARY_DIR}
47+
COMMAND ${CMAKE_COMMAND}
48+
-GXcode
49+
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}
50+
-DIOS_PLATFORM=SIMULATOR
51+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
52+
"${DEPLOYMENT_TARGET}"
53+
"${SIM_SOURCE_DIR}"
54+
)
55+
else()
56+
set (SIM_BINARY_LIB "")
57+
endif()
58+
3759
file(MAKE_DIRECTORY ${SIM64_BINARY_DIR})
3860
execute_process(WORKING_DIRECTORY ${SIM64_BINARY_DIR}
3961
COMMAND ${CMAKE_COMMAND}
@@ -57,6 +79,19 @@ execute_process(WORKING_DIRECTORY ${ARM_BINARY_DIR}
5779
"${ARM_SOURCE_DIR}"
5880
)
5981

82+
if (INCLUDE_32BIT)
83+
set (SIM_TARGET sim)
84+
## Simulator i386 version
85+
add_custom_target(sim
86+
COMMAND ${CMAKE_COMMAND}
87+
--build ${SIM_BINARY_DIR}
88+
--config ${CMAKE_BUILD_TYPE}
89+
COMMENT "Building for i386 (simulator)"
90+
VERBATIM
91+
)
92+
else()
93+
set (SIM_TARGET "")
94+
endif()
6095

6196
## Simulator x86_64 version
6297
add_custom_target(sim64
@@ -76,20 +111,20 @@ add_custom_target(arm
76111
VERBATIM
77112
)
78113

79-
set(LIB_CPPREST libcpprest.a)
80-
set(LIB_CPPREST_LIB_DIR "${CMAKE_CURRENT_BINARY_DIR}/lib")
81-
82114
add_custom_command(
83115
OUTPUT ${LIB_CPPREST_LIB_DIR}/${LIB_CPPREST}
84116
COMMAND mkdir -p "${LIB_CPPREST_LIB_DIR}"
85117
COMMAND lipo -create
86118
-output "${LIB_CPPREST_LIB_DIR}/${LIB_CPPREST}"
119+
${SIM_BINARY_LIB}
87120
${SIM64_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/${LIB_CPPREST}
88121
${ARM_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/${LIB_CPPREST}
89122
COMMAND cp -R "${CMAKE_CURRENT_SOURCE_DIR}/../Release/include" "${CMAKE_CURRENT_BINARY_DIR}"
90123
DEPENDS
124+
${SIM_TARGET}
91125
sim64
92126
arm
127+
${SIM_BINARY_LIB}
93128
"${SIM64_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/${LIB_CPPREST}"
94129
"${ARM_BINARY_DIR}/Binaries/${CMAKE_BUILD_TYPE}/${LIB_CPPREST}"
95130
VERBATIM

Build_iOS/configure.sh

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ usage() {
88
echo " -config_only only configures cmake (no make invoked)."
99
echo " -include_32bit includes the 32-bit arm architectures."
1010
echo " -no_bitcode disables bitcode"
11+
echo " -clean deletes build directory prior to configuring"
1112
}
1213

1314
ABS_PATH="`dirname \"$0\"`" # relative
@@ -22,6 +23,7 @@ CONFIG_ONLY=0
2223
INCLUDE_32BIT=""
2324
DISABLE_BITCODE=""
2425
DEPLOYMENT_TARGET=""
26+
CLEAN=0
2527

2628
# Command line argument parsing
2729
while (( "$#" )); do
@@ -58,6 +60,10 @@ while (( "$#" )); do
5860
DISABLE_BITCODE="-DDISABLE_BITCODE=ON"
5961
shift 1
6062
;;
63+
-clean)
64+
CLEAN=1
65+
shift 1
66+
;;
6167
*)
6268
usage
6369
echo "Error: unsupported argument $1"
@@ -134,14 +140,26 @@ if [ ! -e ${ABS_PATH}/ios-cmake/ios.toolchain.cmake ]; then
134140
fi
135141

136142
## Build CPPRestSDK
143+
if [ -d "${ABS_PATH}/build.${CPPRESTSDK_BUILD_TYPE}.ios" ]; then
144+
if [ "$CLEAN" -eq 1 ]; then
145+
echo "Removing directory ${ABS_PATH}/build.${CPPRESTSDK_BUILD_TYPE}.ios prior to configuring."
146+
rm -rf "${ABS_PATH}/build.${CPPRESTSDK_BUILD_TYPE}.ios"
147+
else
148+
printf "WARNING: Running configure on an already existing configuration.\nAny changes to the existing configuration will not be picked up.\nEither remove the directory and re-run configure or run configure with the -clean flag.\n\n"
149+
fi
150+
fi
137151

138152
mkdir -p ${ABS_PATH}/build.${CPPRESTSDK_BUILD_TYPE}.ios
139153
pushd ${ABS_PATH}/build.${CPPRESTSDK_BUILD_TYPE}.ios
140154
cmake -DCMAKE_BUILD_TYPE=${CPPRESTSDK_BUILD_TYPE} .. ${INCLUDE_32BIT} ${DISABLE_BITCODE} ${DEPLOYMENT_TARGET}
141155
if [ "$CONFIG_ONLY" -eq 0 ]; then
142156
make
157+
printf "\n\n===================================================================================\n"
158+
echo ">>>> The final library is available in 'build.${CPPRESTSDK_BUILD_TYPE}.ios/lib/libcpprest.a'"
159+
printf "===================================================================================\n\n"
160+
else
161+
printf "\n\n===================================================================================\n"
162+
echo ">>>> Configuration complete. Run 'make' in 'build.${CPPRESTSDK_BUILD_TYPE}.ios' to build."
163+
printf "===================================================================================\n\n"
143164
fi
144165
popd
145-
printf "\n\n===================================================================================\n"
146-
echo ">>>> The final library is available in 'build.${CPPRESTSDK_BUILD_TYPE}.ios/lib/libcpprest.a'"
147-
printf "===================================================================================\n\n"

0 commit comments

Comments
 (0)