David 'Digit' Turner | 46be487 | 2009-06-04 16:07:01 +0200 | [diff] [blame] | 1 | #/bin/sh |
| 2 | # |
| 3 | # this script is used to rebuild SDL from sources in the current |
| 4 | # directory. It depends on the Android emulator build scripts |
| 5 | # that should normally be located in ../emulator/android/build |
| 6 | # but you can also use ANDROID_QEMU_PATH in your environment |
| 7 | # to point to the top of the Android emulator sources |
| 8 | # |
| 9 | # |
| 10 | |
| 11 | # first, let's see which system we're running this on |
| 12 | cd `dirname $0` |
| 13 | |
| 14 | # try to find the Android build directory automatically |
| 15 | if [ -z "$ANDROID_QEMU_PATH" ] ; then |
| 16 | if [ -f ../../android/build/common.sh ] ; then |
| 17 | ANDROID_QEMU_PATH=../.. |
| 18 | else |
| 19 | echo "You must define ANDROID_QEMU_PATH in your environment to point" |
| 20 | echo "to the directory containing the Android emulator's sources." |
| 21 | exit 1 |
| 22 | fi |
| 23 | fi |
| 24 | |
| 25 | if [ ! -d $ANDROID_QEMU_PATH ] ; then |
| 26 | echo "Your ANDROID_QEMU_PATH does not point to a valid directory." |
| 27 | exit 1 |
| 28 | fi |
| 29 | |
| 30 | if [ ! -f $ANDROID_QEMU_PATH/android/build/common.sh ] ; then |
| 31 | echo "Your ANDROID_QEMU_PATH does not point to a directory that" |
| 32 | echo "contains the Android emulator build scripts." |
| 33 | exit 1 |
| 34 | fi |
| 35 | |
| 36 | # source common functions definitions |
| 37 | . $ANDROID_QEMU_PATH/android/build/common.sh |
| 38 | |
| 39 | # Parse options |
| 40 | OPTION_TRY_64=no |
| 41 | OPTION_HELP=no |
| 42 | OPTION_TARGETS= |
| 43 | OPTION_FORCE_AUTODETECT=no |
| 44 | OPTION_NO_TIGER=no |
| 45 | |
| 46 | if [ -z "$CC" ] ; then |
| 47 | CC=gcc |
| 48 | fi |
| 49 | |
| 50 | for opt do |
| 51 | optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` |
| 52 | case "$opt" in |
| 53 | --help|-h|-\?) OPTION_HELP=yes |
| 54 | ;; |
| 55 | --verbose) |
| 56 | if [ "$VERBOSE" = "yes" ] ; then |
| 57 | VERBOSE2=yes |
| 58 | else |
| 59 | VERBOSE=yes |
| 60 | fi |
| 61 | ;; |
| 62 | --cc=*) CC="$optarg" ; HOSTCC=$CC |
| 63 | ;; |
| 64 | --try-64) OPTION_TRY_64=yes |
| 65 | ;; |
| 66 | --prefix=*) OPTION_TARGETS="$OPTION_TARGETS $optarg" |
| 67 | ;; |
| 68 | --force-autodetect) OPTION_FORCE_AUTODETECT=yes |
| 69 | ;; |
| 70 | --no-tiger) OPTION_NO_TIGER=yes |
| 71 | ;; |
| 72 | *) |
| 73 | echo "unknown option '$opt', use --help" |
| 74 | exit 1 |
| 75 | esac |
| 76 | done |
| 77 | |
| 78 | # Print the help message |
| 79 | # |
| 80 | if [ "$OPTION_HELP" = "yes" ] ; then |
| 81 | cat << EOF |
| 82 | |
| 83 | Usage: rebuild.sh [options] |
| 84 | Options: [defaults in brackets after descriptions] |
| 85 | EOF |
| 86 | echo "Standard options:" |
| 87 | echo " --help print this message" |
| 88 | echo " --cc=PATH specify C compiler [$CC]" |
| 89 | echo " --try-64 try to build a 64-bit executable (may crash)" |
| 90 | echo " --verbose verbose configuration" |
| 91 | echo " --force-autodetect force feature auto-detection" |
| 92 | echo " --no-tiger do not generate Tiger-compatible binaries (OS X only)" |
| 93 | echo "" |
| 94 | exit 1 |
| 95 | fi |
| 96 | |
| 97 | # we only support generating 32-bit binaris on 64-bit systems. |
| 98 | # And we may need to add a -Wa,--32 to CFLAGS to let the assembler |
| 99 | # generate 32-bit binaries on Linux x86_64. |
| 100 | # |
| 101 | if [ "$OPTION_TRY_64" != "yes" ] ; then |
| 102 | force_32bit_binaries |
| 103 | fi |
| 104 | |
| 105 | # default target |
| 106 | if [ -z "$OPTION_TARGETS" ] ; then |
| 107 | OPTION_TARGETS=out/$OS |
| 108 | fi |
| 109 | |
| 110 | # we can build SDL with Cygwin, so enable it |
| 111 | enable_cygwin |
| 112 | |
| 113 | setup_toolchain |
| 114 | |
| 115 | ### |
| 116 | ### Special compiler and linker flags |
| 117 | ### |
| 118 | |
| 119 | case "$OS" in |
| 120 | linux-*) |
| 121 | BUILD_CFLAGS="-D_GNU_SOURCE=1 -fvisibility=hidden -DXTHREADS -D_REENTRANT" |
| 122 | # prevent -fstack-protector or the generated binaries will not link |
| 123 | BUILD_CFLAGS="$BUILD_CFLAGS -fno-stack-protector" |
| 124 | ;; |
| 125 | darwin-*) |
| 126 | BUILD_CFLAGS="-D_GNU_SOURCE=1 -fvisibility=hidden -DTARGET_API_MAC_CARBON -DTARGET_API_MAC_OSX -D_THREAD_SAFE -force_cpusubtype_ALL -fpascal-strings" |
| 127 | # detect the 10.4 SDK and use it automatically |
| 128 | TIGER_SDK=/Developer/SDKs/MacOSX10.4u.sdk |
| 129 | if [ ! -d $TIGER_SDK -a $OPTION_NO_TIGER = no ] ; then |
| 130 | echo "Please install the 10.4 SDK at $TIGER_SDK to generate Tiger-compatible binaries." |
| 131 | echo "If you don't want compatibility, use --no-tiger option instead." |
| 132 | exit 1 |
| 133 | fi |
| 134 | if [ -d $TIGER_SDK ] ; then |
| 135 | TIGER_OPTS="-isysroot $TIGER_SDK -mmacosx-version-min=10.4" |
| 136 | BUILD_CFLAGS="$BUILD_CFLAGS $TIGER_OPTS" |
| 137 | BUILD_LDFLAGS="$BUILD_LDFLAGS $TIGER_OPTS -Wl,-syslibroot,$(TIGER_SDK)" |
| 138 | echo "Using OS X 10.4 SDK to generate Tiger-compatible binaries." |
| 139 | else |
| 140 | echo "Warning: the generated binaries will not be compatible with Tiger." |
| 141 | fi |
| 142 | ;; |
| 143 | windows) |
| 144 | BUILD_CFLAGS="-D_GNU_SOURCE=1" |
| 145 | ;; |
| 146 | *) |
| 147 | BUILD_CFLAGS= |
| 148 | esac |
| 149 | |
| 150 | # BUILD_CFLAGS are used to build SDL, but SDL_CFLAGS are used |
| 151 | # when clients want to use its facilities |
| 152 | # |
| 153 | case "$HOST_OS" in |
| 154 | linux) |
| 155 | SDL_CFLAGS="-D_GNU_SOURCE=1 -D_REENTRANT" |
| 156 | SDL_STATIC_LIBS="-lm -ldl -lpthread -lrt" |
| 157 | ;; |
| 158 | darwin) |
| 159 | SDL_CFLAGS="-D_GNU_SOURCE=1 -D_THREAD_SAFE" |
David 'Digit' Turner | 34d1651 | 2010-05-18 17:02:33 -0700 | [diff] [blame] | 160 | SDL_STATIC_LIBS="-Wl,-framework,OpenGL -Wl,-framework,Cocoa -Wl,-framework,QuickTime -Wl,-framework,ApplicationServices -Wl,-framework,Carbon -Wl,-framework,IOKit" |
David 'Digit' Turner | 46be487 | 2009-06-04 16:07:01 +0200 | [diff] [blame] | 161 | ;; |
| 162 | windows) |
| 163 | SDL_CFLAGS="-D_GNU_SOURCE=1 -Dmain=SDL_main" |
| 164 | SDL_STATIC_LIBS="-luser32 -lgdi32 -lwinmm" |
| 165 | ;; |
| 166 | *) |
| 167 | SDL_CFLAGS= |
| 168 | SDL_STATIC_LIBS= |
| 169 | esac |
| 170 | |
| 171 | DOLLAR="$" |
| 172 | SDL_STATIC_LIBS="$DOLLAR{libdir}/libSDLmain.a $DOLLAR{libdir}/libSDL.a $SDL_STATIC_LIBS" |
| 173 | |
| 174 | ### |
| 175 | ### Features probes |
| 176 | ### |
| 177 | |
| 178 | CONFIG_LIBC=yes |
| 179 | |
| 180 | ### |
| 181 | ### Configuration files generation |
| 182 | ### |
| 183 | |
| 184 | # create the objs directory that is going to contain all generated files |
| 185 | # including the configuration ones |
| 186 | # |
| 187 | mkdir -p objs |
| 188 | |
| 189 | config_add () |
| 190 | { |
| 191 | echo "$1" >> $config_h |
| 192 | } |
| 193 | |
| 194 | # used to add a macro define/undef line to the configuration |
| 195 | # $1: macro name |
| 196 | # $2: 1, 0, yes or no |
| 197 | # $3: optional log prefix |
| 198 | config_add_macro () |
| 199 | { |
| 200 | local logname |
| 201 | logname="${3:-CfgMacro }" |
| 202 | case "$2" in |
| 203 | 0|no|false) |
| 204 | config_add "/* #undef $1 */" |
| 205 | log "$logname: $1=0" |
| 206 | ;; |
| 207 | 1|yes|true) |
| 208 | config_add "#define $1 1" |
| 209 | log "$logname: $1=1" |
| 210 | ;; |
| 211 | esac |
| 212 | } |
| 213 | |
| 214 | # used to add host-os-specific driver macros to the config file |
David 'Digit' Turner | 63e644f | 2010-05-14 14:02:19 -0700 | [diff] [blame] | 215 | # $1 : driver prefix, e.g. DRIVERS_VIDEO |
David 'Digit' Turner | 46be487 | 2009-06-04 16:07:01 +0200 | [diff] [blame] | 216 | # $2 : macro prefix |
David 'Digit' Turner | 63e644f | 2010-05-14 14:02:19 -0700 | [diff] [blame] | 217 | # this will look for DRIVERS_VIDEO_${HOST_OS}, and, if it is not |
| 218 | # defined in DRIVERS_VIDEO_default |
David 'Digit' Turner | 46be487 | 2009-06-04 16:07:01 +0200 | [diff] [blame] | 219 | # |
| 220 | # then this will call 'config_add ${2}_${driver}' for each driver listed |
| 221 | # |
| 222 | config_add_driver_macros () |
| 223 | { |
| 224 | local driver_list="`var_value ${1}_${HOST_OS}`" |
| 225 | local driver_name |
| 226 | if [ -z "$driver_list" ] ; then |
| 227 | driver_list="`var_value ${1}_default`" |
| 228 | fi |
| 229 | for driver_name in $driver_list; do |
| 230 | config_add_macro "${2}_${driver_name}" yes |
| 231 | done |
| 232 | } |
| 233 | |
| 234 | config_h=objs/SDL_config.h |
| 235 | |
| 236 | # a function used to check the availability of a given Standard C header |
| 237 | # $1 : header name, without the .h suffix nor enclosing brackets (e.g. 'memory' for <memory.h>) |
| 238 | # this will update the configuration with a relevant line |
| 239 | sdl_check_header () |
| 240 | { |
| 241 | local result |
| 242 | local header |
| 243 | local macro |
| 244 | header="<$1.h>" |
| 245 | macro=`to_uppercase $1` |
| 246 | macro=`echo $macro | tr '/' '_'` |
| 247 | feature_check_header result "$header" |
| 248 | config_add_macro HAVE_${macro}_H $result "StdCHeader " |
| 249 | } |
| 250 | |
| 251 | # call sdl_check_header with a list of header names |
| 252 | sdl_check_headers () |
| 253 | { |
| 254 | for hh in $*; do |
| 255 | sdl_check_header "$hh" |
| 256 | done |
| 257 | } |
| 258 | |
| 259 | # a function used to check that a given function is available in the C library |
| 260 | # this will update the configuration with a relevant line |
| 261 | # $1: function name |
| 262 | # $2: optional, libraries to link against |
| 263 | # |
| 264 | sdl_check_func () |
| 265 | { |
| 266 | local result |
| 267 | local funcname |
| 268 | local macro |
| 269 | funcname="$1" |
| 270 | macro=`to_uppercase $1` |
| 271 | rm -f $TMPC |
| 272 | cat > $TMPC <<EOF |
| 273 | #undef $funcname |
| 274 | #define $funcname _innocuous_$funcname |
| 275 | #include <assert.h> |
| 276 | #undef $funcname |
| 277 | |
| 278 | typedef void (*func_t)(void); |
| 279 | extern void $funcname(void); |
| 280 | func_t _dummy = $funcname; |
| 281 | int main(void) |
| 282 | { |
| 283 | return _dummy == $funcname; |
| 284 | } |
| 285 | EOF |
| 286 | EXTRA_LDFLAGS="$2" |
| 287 | feature_check_link result |
| 288 | config_add_macro HAVE_${macro} $result "StdCFunc " |
| 289 | } |
| 290 | |
| 291 | # call sdl_check_func with a list of functions |
| 292 | sdl_check_funcs () |
| 293 | { |
| 294 | for ff in $*; do |
| 295 | sdl_check_func "$ff" |
| 296 | done |
| 297 | } |
| 298 | |
| 299 | # check endianess of the host platform |
| 300 | sdl_check_endianess () |
| 301 | { |
| 302 | cat > $TMPC <<EOF |
| 303 | int main(void) |
| 304 | { |
| 305 | union { |
| 306 | unsigned short v; |
| 307 | unsigned char b[2]; |
| 308 | } u; |
| 309 | |
| 310 | u.v = 0x1234; |
| 311 | return (u.b[0] == 0x12); |
| 312 | } |
| 313 | EOF |
| 314 | feature_run_exec test_e |
| 315 | if [ "$test_e" = "1" ] ; then |
| 316 | eval $1=4321 |
| 317 | else |
| 318 | eval $1=1234 |
| 319 | fi |
| 320 | } |
| 321 | |
| 322 | |
| 323 | generate_SDL_config_h () |
| 324 | { |
| 325 | echo "/* This file was autogenerated by '$PROGNAME' - do not edit */" > $config_h |
| 326 | |
| 327 | config_add "#ifndef _SDL_config_h" |
| 328 | config_add "#define _SDL_config_h" |
| 329 | config_add "" |
| 330 | config_add "#include \"SDL_platform.h\"" |
| 331 | config_add "" |
| 332 | |
| 333 | # true for all architectures these days |
| 334 | config_add_macro SDL_HAS_64BIT_TYPE 1 |
| 335 | |
| 336 | sdl_check_endianess ENDIANESS |
| 337 | config_add "#define SDL_BYTEORDER $ENDIANESS" |
| 338 | config_add "" |
| 339 | |
| 340 | config_add_macro HAVE_LIBC $CONFIG_LIBC |
| 341 | |
| 342 | config_add "#if HAVE_LIBC" |
| 343 | config_add "" |
| 344 | config_add "/* Useful headers */" |
| 345 | |
| 346 | sdl_check_headers alloca sys/types stdio |
| 347 | |
| 348 | # just like configure - force it to 1 |
| 349 | config_add "#define STDC_HEADERS 1" |
| 350 | |
| 351 | sdl_check_headers stdlib stdarg malloc memory string strings inttypes stdint ctype math iconv signal altivec |
| 352 | |
| 353 | config_add "/* C library functions */" |
| 354 | |
| 355 | sdl_check_funcs malloc calloc realloc free alloc |
| 356 | |
| 357 | config_add "#ifndef _WIN32 /* Don't use on Windows */" |
| 358 | |
| 359 | sdl_check_funcs getenv putenv unsetenv |
| 360 | |
| 361 | config_add "#endif" |
| 362 | sdl_check_funcs qsort abs bcopy memset memcpy memmove memcmp strlen strlcpy strlcat |
| 363 | sdl_check_funcs strdup _strrev _strupr _strlwr index rindex strchr strrchr itoa _ltoa |
| 364 | sdl_check_funcs _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull |
| 365 | sdl_check_funcs strtod atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp |
| 366 | sdl_check_funcs vsnprintf iconv sigaction setjmp nanosleep |
| 367 | |
| 368 | sdl_check_func clock_gettime -lrt |
| 369 | sdl_check_func dlvsym -ldl |
| 370 | |
| 371 | sdl_check_funcs getpagesize |
| 372 | |
| 373 | config_add "#else" |
| 374 | config_add "/* We may need some replacement for stdarg.h here */" |
| 375 | config_add "#include <stdarg.h>" |
| 376 | config_add "#endif /* HAVE_LIBC */" |
| 377 | config_add "" |
| 378 | |
| 379 | config_add "/* Allow disabling of core subsystems */" |
| 380 | |
David 'Digit' Turner | 63e644f | 2010-05-14 14:02:19 -0700 | [diff] [blame] | 381 | config_add_macro SDL_AUDIO_DISABLED yes |
David 'Digit' Turner | 46be487 | 2009-06-04 16:07:01 +0200 | [diff] [blame] | 382 | config_add_macro SDL_CDROM_DISABLED yes |
| 383 | config_add_macro SDL_CPUINFO_DISABLED no |
| 384 | config_add_macro SDL_EVENTS_DISABLED no |
| 385 | config_add_macro SDL_FILE_DISABLED yes |
| 386 | config_add_macro SDL_JOYSTICK_DISABLED yes |
| 387 | config_add_macro SDL_LOADSO_DISABLED no |
| 388 | config_add_macro SDL_THREADS_DISABLED no |
| 389 | config_add_macro SDL_TIMERS_DISABLED no |
| 390 | config_add_macro SDL_VIDEO_DISABLED no |
| 391 | |
| 392 | config_add "" |
David 'Digit' Turner | 46be487 | 2009-06-04 16:07:01 +0200 | [diff] [blame] | 393 | config_add "/* Enable various shared object loading systems */" |
| 394 | |
| 395 | config_add_driver_macros DRIVERS_LOADSO SDL_LOADSO |
| 396 | |
| 397 | config_add "" |
| 398 | config_add "/* Enable various threading systems */" |
| 399 | |
| 400 | config_add_driver_macros DRIVERS_THREAD SDL_THREAD |
| 401 | |
| 402 | config_add "" |
| 403 | config_add "/* Enable various timer systems */" |
| 404 | |
| 405 | config_add_driver_macros DRIVERS_TIMER SDL_TIMER |
| 406 | |
| 407 | config_add "" |
| 408 | config_add "/* Enable various video drivers */" |
| 409 | |
| 410 | config_add_driver_macros DRIVERS_VIDEO SDL_VIDEO_DRIVER |
| 411 | |
| 412 | config_add_driver_macros DRIVERS_MAIN SDL_MAIN |
| 413 | |
| 414 | # the following defines are good enough for all recent Unix distributions |
| 415 | config_add "#define SDL_VIDEO_DRIVER_X11_DYNAMIC \"libX11.so.6\"" |
| 416 | config_add "#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT \"libXext.so.6\"" |
| 417 | config_add "#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR \"libXrandr.so.2\"" |
| 418 | config_add "#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER \"libXrender.so.1\"" |
| 419 | |
| 420 | # todo: OpenGL support ? |
| 421 | # todo: Assembly routines support ? |
| 422 | |
| 423 | config_add "#endif /* _SDL_config_h */" |
| 424 | } |
| 425 | |
| 426 | ### Build the config sub-makefile |
| 427 | ### |
| 428 | |
| 429 | make_add () |
| 430 | { |
| 431 | echo "$1" >> $config_mk |
| 432 | } |
| 433 | |
| 434 | make_add_driver_macros () |
| 435 | { |
| 436 | local driver_list="`var_value ${1}_${HOST_OS}`" |
| 437 | local driver_name |
| 438 | if [ -z "$driver_list" ] ; then |
| 439 | driver_list="`var_value ${1}_default`" |
| 440 | fi |
| 441 | for driver_name in $driver_list; do |
David 'Digit' Turner | 34d1651 | 2010-05-18 17:02:33 -0700 | [diff] [blame] | 442 | make_add "SDL_$2_${driver_name} := yes" |
David 'Digit' Turner | 46be487 | 2009-06-04 16:07:01 +0200 | [diff] [blame] | 443 | done |
| 444 | } |
| 445 | |
| 446 | generate_sdl_config_mk () |
| 447 | { |
| 448 | CFLAGS="$CFLAGS $BUILD_CFLAGS" |
| 449 | LDFLAGS="$LDFLAGS $BUILD_LDFLAGS" |
| 450 | create_config_mk |
| 451 | |
| 452 | make_add "" |
| 453 | PWD=`pwd` |
| 454 | make_add "SRC_PATH=$PWD" |
| 455 | make_add "BUILD_SYSTEM=$ANDROID_QEMU_PATH/android/build" |
| 456 | |
David 'Digit' Turner | 34d1651 | 2010-05-18 17:02:33 -0700 | [diff] [blame] | 457 | make_add "SDL_CONFIG_LIBC := $CONFIG_LIBC" |
| 458 | make_add "SDL_CONFIG_CPUINFO := yes" |
David 'Digit' Turner | 46be487 | 2009-06-04 16:07:01 +0200 | [diff] [blame] | 459 | |
David 'Digit' Turner | 46be487 | 2009-06-04 16:07:01 +0200 | [diff] [blame] | 460 | make_add_driver_macros DRIVERS_LOADSO CONFIG_LOADSO |
| 461 | make_add_driver_macros DRIVERS_THREAD CONFIG_THREAD |
| 462 | make_add_driver_macros DRIVERS_TIMER CONFIG_TIMER |
| 463 | make_add_driver_macros DRIVERS_VIDEO CONFIG_VIDEO |
| 464 | |
| 465 | make_add_driver_macros DRIVERS_MAIN CONFIG_MAIN |
| 466 | |
| 467 | make_add "INSTALL_TARGETS := $OPTION_TARGETS" |
| 468 | } |
| 469 | |
| 470 | ### Build the final sdl-config script from the template |
| 471 | ### |
| 472 | |
| 473 | generate_sdl_config () |
| 474 | { |
| 475 | # build a sed script that will replace all @VARIABLES@ in the template |
| 476 | # with appropriate values |
| 477 | rm -f $TMPC |
| 478 | |
| 479 | # replace @exec_prefix@ with "{prefix}", and @libdir@ with "{libdir}" |
| 480 | cat > $TMPC <<EOF |
| 481 | s!@exec_prefix@!\$\{prefix\}!g |
Stefan Hilzinger | fb16987 | 2011-02-22 12:00:40 +0000 | [diff] [blame] | 482 | s!@libdir@!\$\{exec_prefix\}/libs!g |
David 'Digit' Turner | 46be487 | 2009-06-04 16:07:01 +0200 | [diff] [blame] | 483 | s!@includedir@!\$\{prefix\}/include!g |
| 484 | EOF |
| 485 | |
| 486 | # we want to enable static linking, do @ENABLE_STATIC_FALSE@ and @ENABLE_STATIC_TRUE@ |
| 487 | cat >> $TMPC <<EOF |
| 488 | s!@ENABLE_STATIC_FALSE@!\#!g |
| 489 | s!@ENABLE_STATIC_TRUE@!!g |
| 490 | s!@ENABLE_SHARED_TRUE@!\#!g |
| 491 | s!@ENABLE_SHARED_FALSE@!!g |
| 492 | EOF |
| 493 | |
| 494 | # set the version to 1.2.12 |
| 495 | cat >> $TMPC <<EOF |
| 496 | s!@SDL_VERSION@!1.2.12!g |
| 497 | EOF |
| 498 | |
| 499 | # |
| 500 | cat >> $TMPC <<EOF |
| 501 | s!@SDL_CFLAGS@!$SDL_CFLAGS!g |
| 502 | s!@SDL_STATIC_LIBS@!$SDL_STATIC_LIBS!g |
| 503 | EOF |
| 504 | |
| 505 | cat sdl-config.in | sed -f $TMPC > objs/sdl-config |
| 506 | chmod +x objs/sdl-config |
| 507 | } |
| 508 | |
| 509 | # copy a configuration file or perform auto-detection if one is not available |
| 510 | # or the --force-autodetect option was used |
| 511 | # $1: basename of config file |
| 512 | # $2: command to run to perform auto-detection/generation |
| 513 | # |
| 514 | copy_or_autodetect () |
| 515 | { |
| 516 | if [ "$OPTION_FORCE_AUTODETECT" != "yes" -a -f android/build/$OS/$1 ] ; then |
| 517 | log "Setup : Copying $1 from android/build/$OS" |
| 518 | cp -f android/build/$OS/$1 objs/$1 |
| 519 | else |
| 520 | log "Setup : Auto-generating $1" |
| 521 | eval $2 |
| 522 | fi |
| 523 | } |
| 524 | |
| 525 | generate_all () |
| 526 | { |
| 527 | copy_or_autodetect SDL_config.h generate_SDL_config_h |
| 528 | generate_sdl_config_mk |
| 529 | copy_or_autodetect sdl-config generate_sdl_config |
| 530 | } |
| 531 | |
David 'Digit' Turner | 46be487 | 2009-06-04 16:07:01 +0200 | [diff] [blame] | 532 | DRIVERS_LOADSO_default=DLOPEN |
| 533 | DRIVERS_LOADSO_darwin=DLCOMPAT |
| 534 | DRIVERS_LOADSO_windows=WIN32 |
| 535 | |
| 536 | # TODO: determine if PTHREAD_RECURSIVE or PTHREAD_RECURSIVE_NP is valid for the platform |
| 537 | DRIVERS_THREAD_default="PTHREAD PTHREAD_RECURSIVE_MUTEX" |
| 538 | DRIVERS_THREAD_linux="PTHREAD PTHREAD_RECURSIVE_MUTEX_NP" |
| 539 | DRIVERS_THREAD_windows=WIN32 |
| 540 | |
| 541 | DRIVERS_TIMER_default=UNIX |
| 542 | DRIVERS_TIMER_windows=WIN32 |
| 543 | |
| 544 | # TODO: actually compute this properly for X11 and dynamic loading !! |
| 545 | DRIVERS_VIDEO_default="X11 X11_DPMS X11_XINERAMA X11_XME" |
| 546 | DRIVERS_VIDEO_darwin="QUARTZ" |
| 547 | DRIVERS_VIDEO_windows="WINDIB" |
| 548 | |
| 549 | DRIVERS_MAIN_default=DUMMY |
| 550 | DRIVERS_MAIN_darwin=MACOSX |
| 551 | DRIVERS_MAIN_windows=WIN32 |
| 552 | |
| 553 | generate_all |