1 <project name="gdx-bullet-IOS-32" basedir="." default="postcompile"> 2 <!-- include the environment --> 3 <property environment="env"/> 4 <!-- output directory for temporary object files --> 5 <property name="buildDir" value="target/ios32" /> 6 <!-- output directory for the shared library --> 7 <property name="libsDir" value="../libs/ios32" /> 8 <!-- the name of the shared library --> 9 <property name="libName" value="libgdx-bullet.a"/> 10 <!-- the jni header jniPlatform to use --> 11 <property name="jniPlatform" value="mac"/> 12 <!-- the compilerPrefix for the C & C++ compilers --> 13 <property name="compilerPrefix" value=""/> 14 <property name="iphoneos-sdk" value="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/"/> 15 <property name="iphonesimulator-sdk" value="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.3.sdk"/> 16 <property name="tvos-sdk" value="/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/"/> 17 <property name="tvossimulator-sdk" value="/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator9.2.sdk"/> 18 19 20 <!-- define gcc compiler, options and files to compile --> 21 <property name="gcc" value="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"/> 22 <property name="gcc-opts" value="-c -Wall -O2"/> 23 <fileset id="gcc-files" dir="./"> 24 <exclude name="target/"/> 25 <include name="memcpy_wrap.c"/> 26 <include name="**/*.c"/> 27 28 <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/> 29 30 </fileset> 31 32 <!-- define g++ compiler, options and files to compile --> 33 <property name="g++" value="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"/> 34 <property name="g++-opts" value="-c -Wall -O2 -fno-strict-aliasing -fno-rtti -DBT_NO_PROFILE"/> 35 <fileset id="g++-files" dir="./"> 36 <exclude name="target/"/> 37 <include name="**/*.cpp"/> 38 39 <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/> 40 41 </fileset> 42 43 <!-- define linker and options --> 44 <property name="linker" value="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar"/> 45 <property name="linker-opts" value="rcs"/> 46 <property name="libraries" value=""/> 47 48 <!-- cleans the build directory, removes all object files and shared libs --> 49 <target name="clean"> 50 <delete includeemptydirs="true" quiet="true"> 51 <fileset dir="${buildDir}"/> 52 <fileset dir="${libsDir}" includes="**/*" excludes="**/.svn"/> 53 </delete> 54 </target> 55 56 <target name="clean-objfiles"> 57 <delete> 58 <fileset dir="${buildDir}"> 59 <include name="**/*.o"/> 60 </fileset> 61 </delete> 62 </target> 63 64 <target name="create-build-dir"> 65 <!-- FIXME this is pretty nasty :/ --> 66 <copy todir="${buildDir}"> 67 <fileset refid="g++-files"/> 68 <fileset refid="gcc-files"/> 69 </copy> 70 <delete> 71 <fileset dir="${buildDir}"> 72 <include name="*"/> 73 <exclude name="*.o"/> 74 </fileset> 75 </delete> 76 </target> 77 78 <!-- compiles all C and C++ files to object files in the build directory, for 386 builds--> 79 <target name="compile-386" depends="clean,create-build-dir"> 80 <mkdir dir="${buildDir}"/> 81 <apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true"> 82 <arg line="-isysroot ${iphonesimulator-sdk} -arch i386 -miphoneos-version-min=6.0 ${g++-opts}"/> 83 <arg value="-Ijni-headers"/> 84 <arg value="-Ijni-headers/${jniPlatform}"/> 85 <arg value="-I."/> 86 <arg value="-Isrc/bullet/"/> 87 <arg value="-Isrc/custom/"/> 88 <arg value="-Isrc/extras/Serialize/"/> 89 90 <srcfile/> 91 <arg value="-o"/> 92 <targetfile/> 93 <fileset refid="g++-files"/> 94 <compositemapper> 95 <mapper type="glob" from="*.cpp" to="*.o"/> 96 <mapper type="glob" from="*.mm" to="*.o"/> 97 </compositemapper> 98 </apply> 99 <apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true"> 100 <arg line="-isysroot ${iphonesimulator-sdk} -arch i386 -miphoneos-version-min=6.0 ${gcc-opts}"/> 101 <arg value="-Ijni-headers"/> 102 <arg value="-Ijni-headers/${jniPlatform}"/> 103 <arg value="-I."/> 104 <arg value="-Isrc/bullet/"/> 105 <arg value="-Isrc/custom/"/> 106 <arg value="-Isrc/extras/Serialize/"/> 107 108 <srcfile/> 109 <arg value="-o"/> 110 <targetfile/> 111 <fileset refid="gcc-files"/> 112 <compositemapper> 113 <mapper type="glob" from="*.c" to="*.o"/> 114 </compositemapper> 115 </apply> 116 </target> 117 118 <!-- links the shared library based on the previously compiled object files --> 119 <target name="link-386" depends="compile-386"> 120 <fileset dir="${buildDir}" id="objFileSet"> 121 <patternset> 122 <include name="**/*.o" /> 123 </patternset> 124 </fileset> 125 <pathconvert pathsep=" " property="objFiles" refid="objFileSet" /> 126 <mkdir dir="${libsDir}" /> 127 <exec executable="${linker}" failonerror="true" dir="${buildDir}"> 128 <arg line="${linker-opts}" /> 129 <arg path="${libsDir}/${libName}.386" /> 130 <arg line="${objFiles}"/> 131 <arg line="${libraries}" /> 132 </exec> 133 </target> 134 135 <!-- compiles all C and C++ files to object files in the build directory, for x86_64 builds--> 136 <target name="compile-x86_64" depends="create-build-dir"> 137 <mkdir dir="${buildDir}"/> 138 <antcall target="clean-objfiles"/> 139 <apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true"> 140 <arg line="-isysroot ${iphonesimulator-sdk} -arch x86_64 -miphoneos-version-min=6.0 ${g++-opts}"/> 141 <arg value="-Ijni-headers"/> 142 <arg value="-Ijni-headers/${jniPlatform}"/> 143 <arg value="-I."/> 144 <arg value="-Isrc/bullet/"/> 145 <arg value="-Isrc/custom/"/> 146 <arg value="-Isrc/extras/Serialize/"/> 147 148 <srcfile/> 149 <arg value="-o"/> 150 <targetfile/> 151 <fileset refid="g++-files"/> 152 <compositemapper> 153 <mapper type="glob" from="*.cpp" to="*.o"/> 154 <mapper type="glob" from="*.mm" to="*.o"/> 155 </compositemapper> 156 </apply> 157 <apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true"> 158 <arg line="-isysroot ${iphonesimulator-sdk} -arch x86_64 -miphoneos-version-min=6.0 ${gcc-opts}"/> 159 <arg value="-Ijni-headers"/> 160 <arg value="-Ijni-headers/${jniPlatform}"/> 161 <arg value="-I."/> 162 <arg value="-Isrc/bullet/"/> 163 <arg value="-Isrc/custom/"/> 164 <arg value="-Isrc/extras/Serialize/"/> 165 166 <srcfile/> 167 <arg value="-o"/> 168 <targetfile/> 169 <fileset refid="gcc-files"/> 170 <compositemapper> 171 <mapper type="glob" from="*.c" to="*.o"/> 172 </compositemapper> 173 </apply> 174 </target> 175 176 <!-- links the shared library based on the previously compiled object files --> 177 <target name="link-x86_64" depends="compile-x86_64"> 178 <fileset dir="${buildDir}" id="objFileSet"> 179 <patternset> 180 <include name="**/*.o" /> 181 </patternset> 182 </fileset> 183 <pathconvert pathsep=" " property="objFiles" refid="objFileSet" /> 184 <mkdir dir="${libsDir}" /> 185 <exec executable="${linker}" failonerror="true" dir="${buildDir}"> 186 <arg line="${linker-opts}" /> 187 <arg path="${libsDir}/${libName}.x86_64" /> 188 <arg line="${objFiles}"/> 189 <arg line="${libraries}" /> 190 </exec> 191 </target> 192 193 <!-- compiles all C and C++ files to object files in the build directory, for armv7 builds--> 194 <target name="compile-arm" depends="create-build-dir"> 195 <mkdir dir="${buildDir}"/> 196 <antcall target="clean-objfiles"/> 197 <apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true"> 198 <arg line="-isysroot ${iphoneos-sdk} -arch armv7 -miphoneos-version-min=6.0 -fembed-bitcode ${g++-opts}"/> 199 <arg value="-Ijni-headers"/> 200 <arg value="-Ijni-headers/${jniPlatform}"/> 201 <arg value="-I."/> 202 <arg value="-Isrc/bullet/"/> 203 <arg value="-Isrc/custom/"/> 204 <arg value="-Isrc/extras/Serialize/"/> 205 206 <srcfile/> 207 <arg value="-o"/> 208 <targetfile/> 209 <fileset refid="g++-files"/> 210 <compositemapper> 211 <mapper type="glob" from="*.cpp" to="*.o"/> 212 <mapper type="glob" from="*.mm" to="*.o"/> 213 </compositemapper> 214 </apply> 215 <apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true"> 216 <arg line="-isysroot ${iphoneos-sdk} -arch armv7 -miphoneos-version-min=6.0 -fembed-bitcode ${gcc-opts}"/> 217 <arg value="-Ijni-headers"/> 218 <arg value="-Ijni-headers/${jniPlatform}"/> 219 <arg value="-I."/> 220 <arg value="-Isrc/bullet/"/> 221 <arg value="-Isrc/custom/"/> 222 <arg value="-Isrc/extras/Serialize/"/> 223 224 <srcfile/> 225 <arg value="-o"/> 226 <targetfile/> 227 <fileset refid="gcc-files"/> 228 <compositemapper> 229 <mapper type="glob" from="*.c" to="*.o"/> 230 </compositemapper> 231 </apply> 232 </target> 233 234 <!-- links the shared library based on the previously compiled object files --> 235 <target name="link-arm" depends="compile-arm"> 236 <fileset dir="${buildDir}" id="objFileSet"> 237 <patternset> 238 <include name="**/*.o" /> 239 </patternset> 240 </fileset> 241 <pathconvert pathsep=" " property="objFiles" refid="objFileSet" /> 242 <mkdir dir="${libsDir}" /> 243 <exec executable="${linker}" failonerror="true" dir="${buildDir}"> 244 <arg line="${linker-opts}" /> 245 <arg path="${libsDir}/${libName}.armv7" /> 246 <arg line="${objFiles}"/> 247 <arg line="${libraries}" /> 248 </exec> 249 </target> 250 251 <!-- compiles all C and C++ files to object files in the build directory, for arm64 builds--> 252 <target name="compile-arm64" depends="create-build-dir,clean-objfiles"> 253 <mkdir dir="${buildDir}"/> 254 <antcall target="clean-objfiles"/> 255 <apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true"> 256 <arg line="-isysroot ${iphoneos-sdk} -arch arm64 -miphoneos-version-min=6.0 -fembed-bitcode ${g++-opts}"/> 257 <arg value="-Ijni-headers"/> 258 <arg value="-Ijni-headers/${jniPlatform}"/> 259 <arg value="-I."/> 260 <arg value="-Isrc/bullet/"/> 261 <arg value="-Isrc/custom/"/> 262 <arg value="-Isrc/extras/Serialize/"/> 263 264 <srcfile/> 265 <arg value="-o"/> 266 <targetfile/> 267 <fileset refid="g++-files"/> 268 <compositemapper> 269 <mapper type="glob" from="*.cpp" to="*.o"/> 270 <mapper type="glob" from="*.mm" to="*.o"/> 271 </compositemapper> 272 </apply> 273 <apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true"> 274 <arg line="-isysroot ${iphoneos-sdk} -arch arm64 -miphoneos-version-min=6.0 -fembed-bitcode ${gcc-opts}"/> 275 <arg value="-Ijni-headers"/> 276 <arg value="-Ijni-headers/${jniPlatform}"/> 277 <arg value="-I."/> 278 <arg value="-Isrc/bullet/"/> 279 <arg value="-Isrc/custom/"/> 280 <arg value="-Isrc/extras/Serialize/"/> 281 282 <srcfile/> 283 <arg value="-o"/> 284 <targetfile/> 285 <fileset refid="gcc-files"/> 286 <compositemapper> 287 <mapper type="glob" from="*.c" to="*.o"/> 288 </compositemapper> 289 </apply> 290 </target> 291 292 <!-- links the shared library based on the previously compiled object files --> 293 <target name="link-arm64" depends="compile-arm64"> 294 <fileset dir="${buildDir}" id="objFileSet"> 295 <patternset> 296 <include name="**/*.o" /> 297 </patternset> 298 </fileset> 299 <pathconvert pathsep=" " property="objFiles" refid="objFileSet" /> 300 <mkdir dir="${libsDir}" /> 301 <exec executable="${linker}" failonerror="true" dir="${buildDir}"> 302 <arg line="${linker-opts}" /> 303 <arg path="${libsDir}/${libName}.arm64" /> 304 <arg line="${objFiles}"/> 305 <arg line="${libraries}" /> 306 </exec> 307 </target> 308 309 <!-- compiles all C and C++ files to object files in the build directory, for tvOS x86_64 builds--> 310 <target name="compile-tvos-x86_64" depends="create-build-dir"> 311 <mkdir dir="${buildDir}"/> 312 <antcall target="clean-objfiles"/> 313 <apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true"> 314 <arg line="-isysroot ${tvossimulator-sdk} -arch x86_64 -mtvos-version-min=9.0 ${g++-opts}"/> 315 <arg value="-Ijni-headers"/> 316 <arg value="-Ijni-headers/${jniPlatform}"/> 317 <arg value="-I."/> 318 <arg value="-Isrc/bullet/"/> 319 <arg value="-Isrc/custom/"/> 320 <arg value="-Isrc/extras/Serialize/"/> 321 322 <srcfile/> 323 <arg value="-o"/> 324 <targetfile/> 325 <fileset refid="g++-files"/> 326 <compositemapper> 327 <mapper type="glob" from="*.cpp" to="*.o"/> 328 <mapper type="glob" from="*.mm" to="*.o"/> 329 </compositemapper> 330 </apply> 331 <apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true"> 332 <arg line="-isysroot ${tvossimulator-sdk} -arch x86_64 -mtvos-version-min=9.0 ${gcc-opts}"/> 333 <arg value="-Ijni-headers"/> 334 <arg value="-Ijni-headers/${jniPlatform}"/> 335 <arg value="-I."/> 336 <arg value="-Isrc/bullet/"/> 337 <arg value="-Isrc/custom/"/> 338 <arg value="-Isrc/extras/Serialize/"/> 339 340 <srcfile/> 341 <arg value="-o"/> 342 <targetfile/> 343 <fileset refid="gcc-files"/> 344 <compositemapper> 345 <mapper type="glob" from="*.c" to="*.o"/> 346 </compositemapper> 347 </apply> 348 </target> 349 350 <!-- links the shared library based on the previously compiled object files --> 351 <target name="link-tvos-x86_64" depends="compile-tvos-x86_64"> 352 <fileset dir="${buildDir}" id="objFileSet"> 353 <patternset> 354 <include name="**/*.o" /> 355 </patternset> 356 </fileset> 357 <pathconvert pathsep=" " property="objFiles" refid="objFileSet" /> 358 <mkdir dir="${libsDir}" /> 359 <exec executable="${linker}" failonerror="true" dir="${buildDir}"> 360 <arg line="${linker-opts}" /> 361 <arg path="${libsDir}/${libName}.tvos.x86_64" /> 362 <arg line="${objFiles}"/> 363 <arg line="${libraries}" /> 364 </exec> 365 </target> 366 367 <!-- compiles all C and C++ files to object files in the build directory, for tvOS arm64 builds--> 368 <target name="compile-tvos-arm64" depends="create-build-dir,clean-objfiles"> 369 <mkdir dir="${buildDir}"/> 370 <antcall target="clean-objfiles"/> 371 <apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true"> 372 <arg line="-isysroot ${tvos-sdk} -arch arm64 -mtvos-version-min=9.0 -fembed-bitcode ${g++-opts}"/> 373 <arg value="-Ijni-headers"/> 374 <arg value="-Ijni-headers/${jniPlatform}"/> 375 <arg value="-I."/> 376 <arg value="-Isrc/bullet/"/> 377 <arg value="-Isrc/custom/"/> 378 <arg value="-Isrc/extras/Serialize/"/> 379 380 <srcfile/> 381 <arg value="-o"/> 382 <targetfile/> 383 <fileset refid="g++-files"/> 384 <compositemapper> 385 <mapper type="glob" from="*.cpp" to="*.o"/> 386 <mapper type="glob" from="*.mm" to="*.o"/> 387 </compositemapper> 388 </apply> 389 <apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true"> 390 <arg line="-isysroot ${tvos-sdk} -arch arm64 -mtvos-version-min=9.0 -fembed-bitcode ${gcc-opts}"/> 391 <arg value="-Ijni-headers"/> 392 <arg value="-Ijni-headers/${jniPlatform}"/> 393 <arg value="-I."/> 394 <arg value="-Isrc/bullet/"/> 395 <arg value="-Isrc/custom/"/> 396 <arg value="-Isrc/extras/Serialize/"/> 397 398 <srcfile/> 399 <arg value="-o"/> 400 <targetfile/> 401 <fileset refid="gcc-files"/> 402 <compositemapper> 403 <mapper type="glob" from="*.c" to="*.o"/> 404 </compositemapper> 405 </apply> 406 </target> 407 408 <!-- links the shared library based on the previously compiled object files --> 409 <target name="link-tvos-arm64" depends="compile-tvos-arm64"> 410 <fileset dir="${buildDir}" id="objFileSet"> 411 <patternset> 412 <include name="**/*.o" /> 413 </patternset> 414 </fileset> 415 <pathconvert pathsep=" " property="objFiles" refid="objFileSet" /> 416 <mkdir dir="${libsDir}" /> 417 <exec executable="${linker}" failonerror="true" dir="${buildDir}"> 418 <arg line="${linker-opts}" /> 419 <arg path="${libsDir}/${libName}.tvos.arm64" /> 420 <arg line="${objFiles}"/> 421 <arg line="${libraries}" /> 422 </exec> 423 </target> 424 425 <target name="link-fat"> 426 <exec executable="lipo" failonerror="true" dir="${libsDir}"> 427 <arg line="-create -output ${libName} ${libName}.386 ${libName}.x86_64 ${libName}.armv7 ${libName}.arm64"/> 428 </exec> 429 <exec executable="lipo" failonerror="true" dir="${libsDir}"> 430 <arg line="-create -output ${libName}.tvos ${libName}.tvos.x86_64 ${libName}.tvos.arm64"/> 431 </exec> 432 </target> 433 434 <target name="postcompile" depends="link-386,link-x86_64,link-arm,link-arm64,link-tvos-x86_64,link-tvos-arm64,link-fat"> 435 436 </target> 437 </project> 438