1AC_PREREQ([2.69]) 2AC_INIT([detroit], [0.2.3], [salojan@goto10.co]) 3AC_CONFIG_HEADERS([engine/config.h]) 4AC_CANONICAL_HOST 5 6PROG_N="`cat ./PROJECT | head -1`" 7PROG_X="`cat ./PROJECT | head -2 | tail -1`" 8PROG_Y="`cat ./PROJECT | head -3 | tail -1`" 9PROG_V="`cat ./PROJECT | head -4 | tail -1`" 10 11dnl 12dnl Adjust default installation prefix by operating system. 13dnl 14 15AC_PREFIX_DEFAULT([` 16 if [[ "$(uname -s)" = "NetBSD" ]]; then 17 echo "/usr/pkg" 18 else 19 echo "/usr/local" 20 fi 21`]) 22 23dnl 24dnl Check the existence of needed programs. 25dnl 26 27AC_PROG_CC 28AC_PROG_INSTALL 29AC_PROG_LN_S 30AC_LANG_C 31AC_CHECK_PROGS(RM, rm) 32AC_CHECK_PROGS(LN, ln) 33 34dnl 35dnl Check for compiler parameters. 36dnl 37 38C_FLAGS="\ 39-W -Wall \ 40`/bin/sh ./build/opt.sh \"$CC\" -Wextra` \ 41`/bin/sh ./build/opt.sh \"$CC\" -Wfloat-equal` \ 42`/bin/sh ./build/opt.sh \"$CC\" -Wformat` \ 43`/bin/sh ./build/opt.sh \"$CC\" -Wimplicit-fallthrough=3` \ 44`/bin/sh ./build/opt.sh \"$CC\" -Wmissing-braces` \ 45`/bin/sh ./build/opt.sh \"$CC\" -Wno-unknown-pragmas` \ 46`/bin/sh ./build/opt.sh \"$CC\" -Wparentheses` \ 47`/bin/sh ./build/opt.sh \"$CC\" -Wstack-larger-than-2047` \ 48`/bin/sh ./build/opt.sh \"$CC\" -fdiagnostics-generate-patch` \ 49`/bin/sh ./build/opt.sh \"$CC\" -fno-diagnostics-color` \ 50`/bin/sh ./build/att.sh \"$CC\" -fvisibility=hidden` \ 51`/bin/sh ./build/opt.sh \"$CC\" -pipe` \ 52`/bin/sh ./build/opt.sh \"$CC\" -pthread` \ 53-c -I." 54D_FLAGS="`/bin/sh ./build/sym.sh \"$CC\"`" 55E_FLAGS="" 56F_FLAGS="" 57LD_FLAGS="" 58 59AC_ARG_ENABLE(debug, 60 [AS_HELP_STRING( 61 [--enable-debug], 62 [build with debug information (slower and bigger binary)])], 63 [C_FLAGS=$C_FLAGS" -DPROG_HAS_DEBUG -D_FORTIFY_SOURCE=1 -O -g" PROG_X=$PROG_X".debug" PROG_N=$PROG_N" (debug build)"], 64 [C_FLAGS=$C_FLAGS" -O2"]) 65 66AC_ARG_ENABLE(profiling, 67 [AS_HELP_STRING( 68 [--enable-profiling], 69 [build with profiling information (even more slower and bigger binary)])], 70 [C_FLAGS=$C_FLAGS" -pg `/bin/sh ./build/opt.sh \"$CC\" -fprofile-arcs` `/bin/sh ./build/opt.sh \"$CC\" -ftest-coverage`" PROG_X=$PROG_X".profiling" PROG_N=$PROG_N" (profiling build)" L_LIBS=$L_LIBS" -pg -lgcov"], 71 []) 72 73AC_ARG_ENABLE(lto, 74 [AS_HELP_STRING( 75 [--enable-lto], 76 [build with link time optimizations, LTO capable linker is needed for this, like gold (see --with-linker below)])], 77 [C_FLAGS=$C_FLAGS" -flto"], 78 []) 79 80AC_ARG_ENABLE(largefile, 81 [AS_HELP_STRING( 82 [--disable-largefile], 83 [disable support for 64 bit file offsets on 32 bit machine])], 84 [], 85 [C_FLAGS=$C_FLAGS" `/bin/sh ./build/lfs_c.sh 2>/dev/null`" LD_FLAGS=$LD_FLAGS" `/bin/sh ./build/lfs_ld.sh 2>/dev/null`"]) 86 87AC_ARG_ENABLE(builtin, 88 [AS_HELP_STRING( 89 [--disable-builtin], 90 [disable substituting functions with compiler built-in equivalents])], 91 [C_FLAGS=$C_FLAGS" -fno-builtin"], 92 []) 93 94AC_ARG_ENABLE(native, 95 [AS_HELP_STRING( 96 [--enable-native], 97 [enable optimization flags suitable for this host])], 98 [C_FLAGS=$C_FLAGS" -march=native"], 99 []) 100 101AC_ARG_ENABLE(altivec, 102 [AS_HELP_STRING( 103 [--enable-altivec], 104 [enable AltiVec CPU extensions (PowerPC)])], 105 [C_FLAGS=$C_FLAGS" -maltivec"], 106 []) 107 108AC_ARG_ENABLE(isel, 109 [AS_HELP_STRING( 110 [--enable-isel], 111 [enable ISEL CPU extensions (PowerPC)])], 112 [C_FLAGS=$C_FLAGS" -misel"], 113 []) 114 115AC_ARG_ENABLE(spe, 116 [AS_HELP_STRING( 117 [--enable-spe], 118 [enable SPE CPU extensions (PowerPC)])], 119 [C_FLAGS=$C_FLAGS" -mspe"], 120 []) 121 122AC_ARG_ENABLE(vsx, 123 [AS_HELP_STRING( 124 [--enable-vsx], 125 [enable VSX CPU extensions (PowerPC)])], 126 [C_FLAGS=$C_FLAGS" -mvsx"], 127 []) 128 129AC_ARG_ENABLE(vis, 130 [AS_HELP_STRING( 131 [--enable-vis], 132 [enable VIS CPU extensions (SPARC)])], 133 [C_FLAGS=$C_FLAGS" -mvis"], 134 []) 135 136AC_ARG_ENABLE(vis2, 137 [AS_HELP_STRING( 138 [--enable-vis2], 139 [enable VIS2 CPU extensions (SPARC)])], 140 [C_FLAGS=$C_FLAGS" -mvis2"], 141 []) 142 143AC_ARG_ENABLE(vis3, 144 [AS_HELP_STRING( 145 [--enable-vis3], 146 [enable VIS3 CPU extensions (SPARC)])], 147 [C_FLAGS=$C_FLAGS" -mvis3"], 148 []) 149 150AC_ARG_ENABLE(vis4, 151 [AS_HELP_STRING( 152 [--enable-vis4], 153 [enable VIS4 CPU extensions (SPARC)])], 154 [C_FLAGS=$C_FLAGS" -mvis4"], 155 []) 156 157AC_ARG_ENABLE(vis4b, 158 [AS_HELP_STRING( 159 [--enable-vis4b], 160 [enable VIS4b CPU extensions (SPARC)])], 161 [C_FLAGS=$C_FLAGS" -mvis4b"], 162 []) 163 164AC_ARG_ENABLE(fmaf, 165 [AS_HELP_STRING( 166 [--enable-fmaf], 167 [enable use of FMAF CPU instruction (SPARC)])], 168 [C_FLAGS=$C_FLAGS" -mfmaf"], 169 []) 170 171AC_ARG_ENABLE(sse, 172 [AS_HELP_STRING( 173 [--enable-sse], 174 [enable SSE CPU extensions (x86)])], 175 [C_FLAGS=$C_FLAGS" -msse"], 176 []) 177 178AC_ARG_ENABLE(sse2, 179 [AS_HELP_STRING( 180 [--enable-sse2], 181 [enable SSE2 CPU extensions (x86)])], 182 [C_FLAGS=$C_FLAGS" -msse2"], 183 []) 184 185AC_ARG_ENABLE(sse3, 186 [AS_HELP_STRING( 187 [--enable-sse3], 188 [enable SSE3 CPU extensions (x86)])], 189 [C_FLAGS=$C_FLAGS" -msse3"], 190 []) 191 192AC_ARG_ENABLE(ssse3, 193 [AS_HELP_STRING( 194 [--enable-ssse3], 195 [enable Supplemental SSE3 CPU extensions (x86)])], 196 [C_FLAGS=$C_FLAGS" -mssse3"], 197 []) 198 199AC_ARG_ENABLE(sse4, 200 [AS_HELP_STRING( 201 [--enable-sse4], 202 [enable SSE4 CPU extensions (x86)])], 203 [C_FLAGS=$C_FLAGS" -msse4"], 204 []) 205 206AC_ARG_ENABLE(sse4a, 207 [AS_HELP_STRING( 208 [--enable-sse4a], 209 [enable SSE4a CPU extensions (x86)])], 210 [C_FLAGS=$C_FLAGS" -msse4a"], 211 []) 212 213AC_ARG_ENABLE(sse4.1, 214 [AS_HELP_STRING( 215 [--enable-sse4.1], 216 [enable SSE4.1 CPU extensions (x86)])], 217 [C_FLAGS=$C_FLAGS" -msse4.1"], 218 []) 219 220AC_ARG_ENABLE(sse4.2, 221 [AS_HELP_STRING( 222 [--enable-sse4.2], 223 [enable SSE4.2 CPU extensions (x86)])], 224 [C_FLAGS=$C_FLAGS" -msse4.2"], 225 []) 226 227AC_ARG_ENABLE(avx, 228 [AS_HELP_STRING( 229 [--enable-avx], 230 [enable AVX CPU extensions (x86)])], 231 [C_FLAGS=$C_FLAGS" -mavx"], 232 []) 233 234AC_ARG_ENABLE(avx2, 235 [AS_HELP_STRING( 236 [--enable-avx2], 237 [enable AVX2 CPU extensions (x86)])], 238 [C_FLAGS=$C_FLAGS" -mavx2"], 239 []) 240 241AC_ARG_ENABLE(bmi, 242 [AS_HELP_STRING( 243 [--enable-bmi], 244 [enable BMI CPU extensions (x86)])], 245 [C_FLAGS=$C_FLAGS" -mbmi"], 246 []) 247 248AC_ARG_ENABLE(bmi2, 249 [AS_HELP_STRING( 250 [--enable-bmi2], 251 [enable BMI2 CPU extensions (x86)])], 252 [C_FLAGS=$C_FLAGS" -mbmi2"], 253 []) 254 255AC_ARG_ENABLE(fma, 256 [AS_HELP_STRING( 257 [--enable-fma], 258 [enable use of FMA3 CPU instruction (x86)])], 259 [C_FLAGS=$C_FLAGS" -mfma"], 260 []) 261 262AC_ARG_ENABLE(fma4, 263 [AS_HELP_STRING( 264 [--enable-fma4], 265 [enable use of FMA4 CPU instruction (x86)])], 266 [C_FLAGS=$C_FLAGS" -mfma4"], 267 []) 268 269AC_ARG_ENABLE(abm, 270 [AS_HELP_STRING( 271 [--enable-abm], 272 [enable ABM CPU extensions (x86)])], 273 [C_FLAGS=$C_FLAGS" -mabm"], 274 []) 275 276AC_ARG_ENABLE(tbm, 277 [AS_HELP_STRING( 278 [--enable-tbm], 279 [enable TBM CPU extensions (x86)])], 280 [C_FLAGS=$C_FLAGS" -mtbm"], 281 []) 282 283AC_ARG_ENABLE(rdrand, 284 [AS_HELP_STRING( 285 [--enable-rdrand], 286 [enable use of rdrand CPU instruction to get random numbers (x86)])], 287 [E_FLAGS=$E_FLAGS" -DPROG_HAS_RDRAND"], 288 []) 289 290AC_ARG_ENABLE(rdtsc_seed, 291 [AS_HELP_STRING( 292 [--enable-rdtsc_seed], 293 [enable use of rdtsc CPU instruction for seeding srand[om]() (x86)])], 294 [E_FLAGS=$E_FLAGS" -DPROG_HAS_RDTSC_SEED"], 295 []) 296 297AC_ARG_ENABLE(rdrand_seed, 298 [AS_HELP_STRING( 299 [--enable-rdrand_seed], 300 [enable use of rdrand CPU instruction for seeding srand[om](), overrides --enable-rdtsc_seed (x86)])], 301 [E_FLAGS=$E_FLAGS" -DPROG_HAS_RDRAND -DPROG_HAS_RDRAND_SEED"], 302 []) 303 304AC_ARG_ENABLE(rdseed, 305 [AS_HELP_STRING( 306 [--enable-rdseed], 307 [enable use of rdseed CPU instruction for seeding srand[om](), overrides --enable-rdrand_seed (x86)])], 308 [E_FLAGS=$E_FLAGS" -DPROG_HAS_RDSEED"], 309 []) 310 311dnl AC_ARG_ENABLE(drawpixels, 312dnl [AS_HELP_STRING( 313dnl [--enable-drawpixels], 314dnl [enable use of old glDrawPixels() instead of texture based framebuffer, use of glDrawPixels() may be marginally faster, but some people say its legacy and bad (affects to gui/windowing subsystem)])], 315dnl [E_FLAGS=$E_FLAGS" -DPROG_HAS_DRAWPIXELS"], 316dnl []) 317 318AC_ARG_ENABLE(sslv23, 319 [AS_HELP_STRING( 320 [--enable-sslv23], 321 [enable support for weak SSLv2/3 and TLS, otherwise support only TLS (affects to remote control subsystem)])], 322 [E_FLAGS=$E_FLAGS" -DPROG_HAS_SSL"], 323 []) 324 325AC_ARG_ENABLE(safemem, 326 [AS_HELP_STRING( 327 [--enable-safemem], 328 [enable substituting some memory comparing and clearing functions with safer ones if they are available])], 329 [E_FLAGS=$E_FLAGS" -DPROG_HAS_SAFEMEM"], 330 []) 331 332AC_ARG_WITH(libdlmalloc, 333 [AS_HELP_STRING( 334 [--with-libdlmalloc=DIR], 335 [enable support for dlmalloc library, installed in DIR])], 336 [C_FLAGS=$C_FLAGS" -I$withval/include" LD_FLAGS=$LD_FLAGS" -L$withval/lib" L_LIBS=$L_LIBS" -ldlmalloc"], 337 []) 338 339AC_ARG_WITH(libiconv, 340 [AS_HELP_STRING( 341 [--with-libiconv=DIR], 342 [enable support for iconv library, installed in DIR])], 343 [C_FLAGS=$C_FLAGS" -I$withval/include" LD_FLAGS=$LD_FLAGS" -L$withval/lib" L_LIBS=$L_LIBS" -liconv"], 344 []) 345 346AC_ARG_WITH(libintl, 347 [AS_HELP_STRING( 348 [--with-libintl=DIR], 349 [enable support for intl library, installed in DIR])], 350 [C_FLAGS=$C_FLAGS" -I$withval/include" LD_FLAGS=$LD_FLAGS" -L$withval/lib" L_LIBS=$L_LIBS" -lintl" E_FLAGS=$E_FLAGS" -DHAVE_GETTEXT"], 351 []) 352 353AC_ARG_WITH(libltdl, 354 [AS_HELP_STRING( 355 [--with-libltdl=DIR], 356 [enable support for libtool for runtime symbol loading (otherwise use dl-family of functions), installed in DIR])], 357 [C_FLAGS=$C_FLAGS" -I$withval/include" LD_FLAGS=$LD_FLAGS" -L$withval/lib" L_LIBS=$L_LIBS" -lltdl" E_FLAGS=$E_FLAGS" -DHAVE_LIBTOOL"], 358 []) 359 360AC_ARG_WITH(linker, 361 [AS_HELP_STRING( 362 [--with-linker=LINKER], 363 [enable use of this linker instead of default one])], 364 [C_FLAGS=$C_FLAGS" -fuse-ld=$withval"], 365 []) 366 367dnl 368dnl Build with selective things. 369dnl 370 371AC_ARG_WITH(color-db-tiny, 372 [AS_HELP_STRING( 373 [--with-color-db-tiny], 374 [use tiny (vga) color database, otherwise use standard (x11) color database])], 375 [E_FLAGS=$E_FLAGS" -DCOLOR_DB_VGA"], 376 []) 377 378AC_ARG_WITH(color-db-small, 379 [AS_HELP_STRING( 380 [--with-color-db-small], 381 [use small (w3c) color database, otherwise use standard (x11) color database])], 382 [E_FLAGS=$E_FLAGS" -DCOLOR_DB_W3C"], 383 []) 384 385AC_ARG_WITH(color-db-large, 386 [AS_HELP_STRING( 387 [--with-color-db-large], 388 [use large (complete) color database, otherwise use standard (x11) color database])], 389 [E_FLAGS=$E_FLAGS" -DCOLOR_DB_COMPLETE"], 390 []) 391 392dnl 393dnl Build extra libraries. 394dnl 395 396AC_ARG_WITH(redtools, 397 [AS_HELP_STRING( 398 [--with-redtools], 399 [enable building and support for Redtools requester library])], 400 [test "with_redtools" = "yes"], 401 []) 402 403if test "${with_redtools+set}" = set; then 404 BUILD_REDTOOLS="engine/redtools" 405fi 406 407AC_ARG_WITH(motif, 408 [AS_HELP_STRING( 409 [--with-motif=DIR], 410 [use Motif installed in DIR for Redtools requester library])], 411 [C_FLAGS=$C_FLAGS" -I$withval/include" LD_FLAGS=$LD_FLAGS" -L$withval/lib" F_LIBS=$F_LIBS" -lXm" F_FLAGS=$F_FLAGS], 412 [C_FLAGS=$C_FLAGS LD_FLAGS=$LD_FLAGS F_LIBS=$F_LIBS" -lXm" F_FLAGS=$F_FLAGS]) 413 414AC_ARG_WITH(redtools-xft, 415 [AS_HELP_STRING( 416 [--with-redtools-xft], 417 [use Xft fonts by default, comes with antialias and unicode support])], 418 [F_FLAGS=$F_FLAGS" -DREDTOOLS_FONT_XFT"], 419 []) 420 421AC_ARG_WITH(redtools-xft-serif, 422 [AS_HELP_STRING( 423 [--with-redtools-xft-serif], 424 [use Serif typeface by default with Xft, otherwise use Sans])], 425 [F_FLAGS=$F_FLAGS" -DREDTOOLS_FONT_FACE_SERIF"], 426 []) 427 428AC_ARG_WITH(redtools-xft-typeface, 429 [AS_HELP_STRING( 430 [--with-redtools-xft-typeface=TYPEFACE], 431 [use TYPEFACE name by default with Xft, overrides other typeface settings])], 432 [F_FLAGS=$F_FLAGS" -DREDTOOLS_FONT_FACE_CUSTOM=\\\"$withval\\\""], 433 []) 434 435AC_ARG_WITH(redtools-xft-small, 436 [AS_HELP_STRING( 437 [--with-redtools-xft-small], 438 [use small fonts (fontsize 8, good for VGA displays) by default with Xft, otherwise use medium])], 439 [F_FLAGS=$F_FLAGS" -DREDTOOLS_FONT_SIZE_SMALL"], 440 []) 441 442AC_ARG_WITH(redtools-xft-large, 443 [AS_HELP_STRING( 444 [--with-redtools-xft-large], 445 [use large fonts (fontsize 12, good for Full HD displays) by default with Xft, otherwise use medium])], 446 [F_FLAGS=$F_FLAGS" -DREDTOOLS_FONT_SIZE_LARGE"], 447 []) 448 449AC_ARG_WITH(redtools-xft-huge, 450 [AS_HELP_STRING( 451 [--with-redtools-xft-huge], 452 [use huge fonts (fontsize 14, good for 4K UHD displays) by default with Xft, otherwise use medium])], 453 [F_FLAGS=$F_FLAGS" -DREDTOOLS_FONT_SIZE_HUGE"], 454 []) 455 456AC_ARG_WITH(redtools-xft-fontsize, 457 [AS_HELP_STRING( 458 [--with-redtools-xft-fontsize=FONTSIZE], 459 [use FONTSIZE number by default with Xft, overrides other fontsize settings])], 460 [F_FLAGS=$F_FLAGS" -DREDTOOLS_FONT_SIZE_CUSTOM=\\\"$withval\\\""], 461 []) 462 463AC_SUBST(BUILD_REDTOOLS, [$BUILD_REDTOOLS]) 464 465AC_ARG_WITH(usb_classic_nes_gamepad, 466 [AS_HELP_STRING( 467 [--with-usb_classic_nes_gamepad], 468 [enable building of USB classic NES gamepad input driver])], 469 [test "with_usb_classic_nes_gamepad" = "yes"], 470 []) 471 472if test "${with_usb_classic_nes_gamepad+set}" = set; then 473 BUILD_USB_CLASSIC_NES_GAMEPAD="engine/input/usb_classic_nes_gamepad" 474fi 475 476AC_SUBST(BUILD_USB_CLASSIC_NES_GAMEPAD, [$BUILD_USB_CLASSIC_NES_GAMEPAD]) 477 478dnl 479dnl Disable some parts of the engine. 480dnl 481 482AC_ARG_ENABLE(extended, 483 [AS_HELP_STRING( 484 [--disable-extended], 485 [disable extended script commands])], 486 [E_FLAGS=$E_FLAGS" -DPROG_DISABLE_EXTENDED"], 487 []) 488 489AC_ARG_ENABLE(color, 490 [AS_HELP_STRING( 491 [--disable-color], 492 [disable color functions])], 493 [E_FLAGS=$E_FLAGS" -DPROG_DISABLE_COLOR"], 494 []) 495 496AC_ARG_ENABLE(coords, 497 [AS_HELP_STRING( 498 [--disable-coords], 499 [disable coordinate functions])], 500 [E_FLAGS=$E_FLAGS" -DPROG_DISABLE_COORDS"], 501 []) 502 503AC_ARG_ENABLE(image, 504 [AS_HELP_STRING( 505 [--disable-image], 506 [disable image functions])], 507 [E_FLAGS=$E_FLAGS" -DPROG_DISABLE_IMAGE"], 508 []) 509 510AC_ARG_ENABLE(math, 511 [AS_HELP_STRING( 512 [--disable-math], 513 [disable math functions])], 514 [E_FLAGS=$E_FLAGS" -DPROG_DISABLE_MATH"], 515 []) 516 517AC_ARG_ENABLE(bob, 518 [AS_HELP_STRING( 519 [--disable-bob], 520 [disable bob subsystem])], 521 [E_FLAGS=$E_FLAGS" -DPROG_DISABLE_BOB"], 522 []) 523 524AC_ARG_ENABLE(input, 525 [AS_HELP_STRING( 526 [--disable-input], 527 [disable external input driver subsystem])], 528 [E_FLAGS=$E_FLAGS" -DPROG_DISABLE_INPUT"], 529 []) 530 531AC_ARG_ENABLE(draw, 532 [AS_HELP_STRING( 533 [--disable-draw], 534 [disable drawing operations subsystem])], 535 [E_FLAGS=$E_FLAGS" -DPROG_DISABLE_DRAW"], 536 []) 537 538AC_ARG_ENABLE(menu, 539 [AS_HELP_STRING( 540 [--disable-menu], 541 [disable window menu subsystem])], 542 [E_FLAGS=$E_FLAGS" -DPROG_DISABLE_MENU"], 543 []) 544 545AC_ARG_ENABLE(widget, 546 [AS_HELP_STRING( 547 [--disable-widget], 548 [disable widget subsystem])], 549 [E_FLAGS=$E_FLAGS" -DPROG_DISABLE_WIDGET"], 550 []) 551 552AC_ARG_ENABLE(gui, 553 [AS_HELP_STRING( 554 [--disable-gui], 555 [disable gui/windowing subsystem completely (also disables bob, menu and widget subsystems)])], 556 [E_FLAGS=$E_FLAGS" -DPROG_DISABLE_GUI"], 557 []) 558 559AC_ARG_ENABLE(audio, 560 [AS_HELP_STRING( 561 [--disable-audio], 562 [disable audio subsystem completely])], 563 [E_FLAGS=$E_FLAGS" -DPROG_DISABLE_AUDIO"], 564 []) 565 566AC_ARG_ENABLE(remote, 567 [AS_HELP_STRING( 568 [--disable-remote], 569 [disable remote control subsystem completely])], 570 [E_FLAGS=$E_FLAGS" -DPROG_DISABLE_REMOTE"], 571 []) 572 573dnl 574dnl Check for possible missing data types. 575dnl 576 577AC_TYPE_LONG_LONG_INT 578AC_TYPE_UNSIGNED_LONG_LONG_INT 579 580AC_TYPE_INT8_T 581AC_TYPE_INT16_T 582AC_TYPE_INT32_T 583AC_TYPE_INT64_T 584 585AC_TYPE_UINT8_T 586AC_TYPE_UINT16_T 587AC_TYPE_UINT32_T 588AC_TYPE_UINT64_T 589 590AC_TYPE_INTMAX_T 591AC_TYPE_INTPTR_T 592 593AC_TYPE_UINTMAX_T 594AC_TYPE_UINTPTR_T 595 596AC_TYPE_SIZE_T 597AC_TYPE_SSIZE_T 598 599AC_TYPE_MODE_T 600AC_TYPE_OFF_T 601AC_TYPE_PID_T 602 603AC_CHECK_TYPES([socklen_t], [], [], [#include <arpa/inet.h>]) 604AC_CHECK_TYPES([suseconds_t], [], [], [#include <sys/types.h>]) 605AC_CHECK_TYPES([ucontext_t], [], [], [#include <signal.h>]) 606 607dnl 608dnl Check for standard library functions. 609dnl 610 611AC_CHECK_FUNCS([\ 612 backtrace backtrace_symbols getenv getenv_r getenv_s getexecname \ 613 getpriority getrlimit getrusage numa_getaffinity numa_setaffinity \ 614 prctl processor_affinity setenv setpriority setprogname setrlimit \ 615 sysconf sysctlbyname]) 616AC_CHECK_FUNCS([\ 617 arc4random rand random]) 618AC_CHECK_FUNCS([\ 619 clock_gettime clock_nanosleep localtime_r nanosleep usleep]) 620AC_CHECK_FUNCS([\ 621 strncpy strnlen]) 622 623dnl 624dnl Check for math library functions. 625dnl 626 627AC_CHECK_FUNCS([\ 628 isfinite isinf isnormal signbit]) 629AC_CHECK_FUNCS([\ 630 exp2 fdim floorf fma fmax fmin ilogb lgamma log2 nan nearbyint \ 631 nextafter nexttoward powf remainder round roundf scalbn sinf sqrtf \ 632 tgamma trunc]) 633 634dnl 635dnl Check for platform specific library functions. 636dnl 637 638AC_CHECK_FUNCS([\ 639 gnu_get_libc_version gnu_get_libc_release mallinfo mallopt]) 640 641dnl 642dnl Check for secure library functions. 643dnl 644 645AC_CHECK_FUNCS([\ 646 explicit_bzero explicit_memset consttime_memequal timingsafe_bcmp \ 647 timingsafe_memcmp]) 648 649dnl 650dnl Check for more or less standard header files. 651dnl 652 653AC_CHECK_HEADERS([\ 654 inttypes.h stdint.h dlfcn.h paths.h]) 655AC_CHECK_HEADERS([\ 656 execinfo.h fenv.h sysexits.h]) 657AC_CHECK_HEADERS([\ 658 sched.h thread.h]) 659AC_CHECK_HEADERS([\ 660 curses.h term.h]) 661AC_CHECK_HEADERS([\ 662 soundcard.h]) 663AC_CHECK_HEADERS([\ 664 sys/ioctl.h sys/prctl.h sys/resource.h sys/rnd.h sys/soundcard.h \ 665 sys/sysctl.h sys/time.h]) 666AC_CHECK_HEADERS([\ 667 sys/mman.h sys/numa.h sys/processor.h sys/procset.h]) 668AC_CHECK_HEADERS([\ 669 bsd/stdlib.h]) 670AC_CHECK_HEADERS([\ 671 malloc.h gnu/libc-version.h]) 672AC_CHECK_HEADERS([\ 673 linux/random.h linux/soundcard.h]) 674AC_CHECK_HEADERS([\ 675 xmmintrin.h]) 676 677AC_CHECK_HEADERS([pthread_np.h], [], [], [#include <pthread.h>]) 678 679dnl 680dnl Check for compiler things. 681dnl 682 683AC_C_CONST 684AC_C_INLINE 685AC_C_VOLATILE 686AC_C_BIGENDIAN( 687 [C_FLAGS=$C_FLAGS" -DIS_BIGENDIAN"], 688 [C_FLAGS=$C_FLAGS" -DIS_LITTLEENDIAN"], 689 []) 690 691AX_C___ATTRIBUTE__ 692 693dnl 694dnl Check for possible missing library functions. 695dnl 696 697AC_SEARCH_LIBS(dlopen, dl, [], 698 [AC_MSG_NOTICE([run-time linker interface is required, engine will not work as expected.])], []) 699AC_SEARCH_LIBS(pthread_create, pthread pthreads, [], 700 [AC_MSG_NOTICE([pthread(s) library is required, engine will not work as expected.])], []) 701 702AC_SEARCH_LIBS(pthread_setaffinity_np, pthread pthreads, [E_FLAGS=$E_FLAGS" -DHAVE_PTHREAD_SETAFFINITY_NP"], [], []) 703AC_SEARCH_LIBS(pthread_setname_np, pthread pthreads, [E_FLAGS=$E_FLAGS" -DHAVE_PTHREAD_SETNAME_NP"], [], []) 704AC_SEARCH_LIBS(pthread_set_name_np, pthread pthreads, [E_FLAGS=$E_FLAGS" -DHAVE_PTHREAD_SET_NAME_NP"], [], []) 705AC_SEARCH_LIBS(_getfp, pthread pthreads, [], [], []) 706AC_SEARCH_LIBS(backtrace, execinfo, [E_FLAGS=$E_FLAGS" -DHAVE_BACKTRACE -DHAVE_BACKTRACE_SYMBOLS"], [], []) 707AC_SEARCH_LIBS(clock_gettime, rt, [E_FLAGS=$E_FLAGS" -DHAVE_CLOCK_GETTIME"], [], []) 708AC_SEARCH_LIBS(clock_nanosleep, rt, [E_FLAGS=$E_FLAGS" -DHAVE_CLOCK_NANOSLEEP"], [], []) 709AC_SEARCH_LIBS(gettext, intl, [E_FLAGS=$E_FLAGS" -DHAVE_GETTEXT"], [], []) 710AC_SEARCH_LIBS(setupterm, tinfo ncurses, [E_FLAGS=$E_FLAGS" -DHAVE_SETUPTERM"], [], []) 711 712AC_SEARCH_LIBS(sqrt, m, [], [], []) 713AC_SEARCH_LIBS(isfinite, m, [E_FLAGS=$E_FLAGS" -DHAVE_ISFINITE"], [], []) 714AC_SEARCH_LIBS(isinf, m, [E_FLAGS=$E_FLAGS" -DHAVE_ISINF"], [], []) 715AC_SEARCH_LIBS(isnormal, m, [E_FLAGS=$E_FLAGS" -DHAVE_ISNORMAL"], [], []) 716AC_SEARCH_LIBS(signbit, m, [E_FLAGS=$E_FLAGS" -DHAVE_SIGNBIT"], [], []) 717AC_SEARCH_LIBS(exp2, m, [E_FLAGS=$E_FLAGS" -DHAVE_EXP2"], [], []) 718AC_SEARCH_LIBS(fdim, m, [E_FLAGS=$E_FLAGS" -DHAVE_FDIM"], [], []) 719AC_SEARCH_LIBS(floorf, m, [E_FLAGS=$E_FLAGS" -DHAVE_FLOORF"], [], []) 720AC_SEARCH_LIBS(fma, m, [E_FLAGS=$E_FLAGS" -DHAVE_FMA"], [], []) 721AC_SEARCH_LIBS(fmax, m, [E_FLAGS=$E_FLAGS" -DHAVE_FMAX"], [], []) 722AC_SEARCH_LIBS(fmin, m, [E_FLAGS=$E_FLAGS" -DHAVE_FMIN"], [], []) 723AC_SEARCH_LIBS(ilogb, m, [E_FLAGS=$E_FLAGS" -DHAVE_ILOGB"], [], []) 724AC_SEARCH_LIBS(lgamma, m, [E_FLAGS=$E_FLAGS" -DHAVE_LGAMMA"], [], []) 725AC_SEARCH_LIBS(log2, m, [E_FLAGS=$E_FLAGS" -DHAVE_LOG2"], [], []) 726AC_SEARCH_LIBS(nan, m, [E_FLAGS=$E_FLAGS" -DHAVE_NAN"], [], []) 727AC_SEARCH_LIBS(nearbyint, m, [E_FLAGS=$E_FLAGS" -DHAVE_NEARBYINT"], [], []) 728AC_SEARCH_LIBS(nextafter, m, [E_FLAGS=$E_FLAGS" -DHAVE_NEXTAFTER"], [], []) 729AC_SEARCH_LIBS(nexttoward, m, [E_FLAGS=$E_FLAGS" -DHAVE_NEXTTOWARD"], [], []) 730AC_SEARCH_LIBS(powf, m, [E_FLAGS=$E_FLAGS" -DHAVE_POWF"], [], []) 731AC_SEARCH_LIBS(remainder, m, [E_FLAGS=$E_FLAGS" -DHAVE_REMAINDER"], [], []) 732AC_SEARCH_LIBS(round, m, [E_FLAGS=$E_FLAGS" -DHAVE_ROUND"], [], []) 733AC_SEARCH_LIBS(roundf, m, [E_FLAGS=$E_FLAGS" -DHAVE_ROUNDF"], [], []) 734AC_SEARCH_LIBS(scalbn, m, [E_FLAGS=$E_FLAGS" -DHAVE_SCALBN"], [], []) 735AC_SEARCH_LIBS(sinf, m, [E_FLAGS=$E_FLAGS" -DHAVE_SINF"], [], []) 736AC_SEARCH_LIBS(sqrtf, m, [E_FLAGS=$E_FLAGS" -DHAVE_SQRTF"], [], []) 737AC_SEARCH_LIBS(tgamma, m, [E_FLAGS=$E_FLAGS" -DHAVE_TGAMMA"], [], []) 738AC_SEARCH_LIBS(trunc, m, [E_FLAGS=$E_FLAGS" -DHAVE_TRUNC"], [], []) 739 740AC_SEARCH_LIBS(gzclearerr, z, [E_FLAGS=$E_FLAGS" -DPROG_HAS_ZLIB"], 741 [AC_MSG_NOTICE([zlib seems to be missing, loading of supplied files will most likely not going to work.])], []) 742 743AC_SEARCH_LIBS(arc4random, bsd, [E_FLAGS=$E_FLAGS" -DPROG_HAS_LIBBSD"], [], []) 744 745AC_SEARCH_LIBS(getnetname, nsl, [], [], []) 746AC_SEARCH_LIBS(inet_ntop, nsl, [E_FLAGS=$E_FLAGS" -DHAVE_INET_NTOP"], [], []) 747AC_SEARCH_LIBS(socket, socket nsl, [], [], []) 748 749AC_SEARCH_LIBS(_oss_ioctl, ossaudio, [], [], []) 750AC_SEARCH_LIBS(sio_open, sndio, [E_FLAGS=$E_FLAGS" -DPROG_HAS_SNDIO"], [], []) 751 752AC_SEARCH_LIBS(__stack_chk_fail, ssp, [], [], []) 753AC_SEARCH_LIBS(__fixdfti, gcc, [], [], []) 754 755dnl 756dnl Check for package dependencies. 757dnl 758 759PKG_PROG_PKG_CONFIG([]) 760 761PKG_CHECK_EXISTS([freetype2 gl xext x11], [E_FLAGS=$E_FLAGS" -DPROG_HAS_X11"], []) 762PKG_CHECK_MODULES([FREETYPE2], [freetype2], [], [AC_MSG_NOTICE([No support for FREETYPE2/windowing system])]) 763PKG_CHECK_MODULES([GL], [gl], [], [AC_MSG_NOTICE([No support for GL/windowing system])]) 764PKG_CHECK_MODULES([XEXT], [xext], [], [AC_MSG_NOTICE([No support for XEXT/windowing system])]) 765PKG_CHECK_MODULES([X11], [x11], [], [AC_MSG_NOTICE([No support for X11/windowing system])]) 766 767PKG_CHECK_EXISTS([xrandr], [E_FLAGS=$E_FLAGS" -DPROG_HAS_XRANDR"], []) 768PKG_CHECK_MODULES([XRANDR], [xrandr], [], [AC_MSG_NOTICE([No support for XRandR extension])]) 769 770PKG_CHECK_EXISTS([alsa], [E_FLAGS=$E_FLAGS" -DPROG_HAS_ALSA"], []) 771PKG_CHECK_EXISTS([ao], [E_FLAGS=$E_FLAGS" -DPROG_HAS_AO"], []) 772PKG_CHECK_EXISTS([portaudio-2.0], [E_FLAGS=$E_FLAGS" -DPROG_HAS_PORTAUDIO"], []) 773PKG_CHECK_EXISTS([libpulse-simple], [E_FLAGS=$E_FLAGS" -DPROG_HAS_PULSEAUDIO"], []) 774PKG_CHECK_MODULES([ALSA], [alsa], [], [AC_MSG_NOTICE([No support for ALSA])]) 775PKG_CHECK_MODULES([AO], [ao], [], [AC_MSG_NOTICE([No support for AO])]) 776PKG_CHECK_MODULES([PORTAUDIO], [portaudio-2.0], [], [AC_MSG_NOTICE([No support for PORTAUDIO])]) 777PKG_CHECK_MODULES([PULSEAUDIO], [libpulse-simple], [], [AC_MSG_NOTICE([No support for PULSEAUDIO])]) 778 779PKG_CHECK_EXISTS([flac], [E_FLAGS=$E_FLAGS" -DPROG_HAS_FLAC"], []) 780PKG_CHECK_EXISTS([samplerate], [E_FLAGS=$E_FLAGS" -DPROG_HAS_SAMPLERATE"], []) 781PKG_CHECK_MODULES([FLAC], [flac], [], [AC_MSG_NOTICE([No support for FLAC])]) 782PKG_CHECK_MODULES([SAMPLERATE], [samplerate], [], [AC_MSG_NOTICE([No support for SAMPLERATE])]) 783 784PKG_CHECK_EXISTS([gnutls], [E_FLAGS=$E_FLAGS" -DPROG_HAS_GNUTLS"], []) 785PKG_CHECK_MODULES([GNUTLS], [gnutls], [], [AC_MSG_NOTICE([No support for GNUTLS])]) 786PKG_CHECK_EXISTS([openssl], [E_FLAGS=$E_FLAGS" -DPROG_HAS_OPENSSL"], []) 787PKG_CHECK_MODULES([OPENSSL], [openssl], [], [AC_MSG_NOTICE([No support for OPENSSL])]) 788 789PKG_CHECK_EXISTS([librsvg-2.0], [E_FLAGS=$E_FLAGS" -DPROG_HAS_LIBRSVG"], []) 790PKG_CHECK_MODULES([LIBRSVG], [librsvg-2.0], [], [AC_MSG_NOTICE([No support for LIBRSVG])]) 791 792E_FLAGS="$C_FLAGS $E_FLAGS" 793F_FLAGS="$C_FLAGS $F_FLAGS" 794 795CFLAGS=$C_FLAGS 796LDFLAGS=$LD_FLAGS 797LIBS=$LIBS" $L_LIBS -lc" 798 799AC_SUBST(PROG_N, [$PROG_N]) 800AC_SUBST(PROG_X, [$PROG_X]) 801AC_SUBST(PROG_Y, [$PROG_Y]) 802AC_SUBST(PROG_V, [$PROG_V]) 803 804AC_SUBST(D_FLAGS, [$D_FLAGS]) 805AC_SUBST(E_FLAGS, [$E_FLAGS]) 806AC_SUBST(F_FLAGS, [$F_FLAGS]) 807 808AC_SUBST(F_LIBS, [$F_LIBS]) 809 810dnl 811dnl Store configuration parameters for later use. 812dnl 813 814LOCAL_CONFIG_NICE([reconfig/config.nice-${PROG_X}-$(uname -s -r -m 2>/dev/null | tr ' ' '_')]) 815 816LOCAL_CONFIG_ARGS([engine/config.args]) 817LOCAL_CONFIG_OPTS([engine/config.opts], [$E_FLAGS]) 818 819LOCAL_CONFIG_MACH([engine/config.mach]) 820LOCAL_CONFIG_USER([engine/config.user]) 821LOCAL_CONFIG_VERC([engine/config.verc]) 822LOCAL_CONFIG_WHEN([engine/config.when]) 823 824LOCAL_CONFIG_VARS([engine/dynvars.h]) 825 826dnl 827dnl Generate output files. 828dnl 829 830AC_CONFIG_FILES([Makefile \ 831 etc/$PROG_X.conf etc/$PROG_X.res \ 832 engine/Makefile engine/defines.h engine/_doxygen.conf \ 833 engine/tools/Makefile \ 834 engine/redtools/Makefile \ 835 engine/input/usb_classic_nes_gamepad/Makefile]) 836 837AC_OUTPUT 838 839dnl 840dnl Display summary 841dnl 842 843AC_MSG_NOTICE([ 844------------------------------------------------------------------------------ 845 846 CONFIGURATION SUMMARY 847 848 install prefix ..................... ${prefix-no} 849 850 enable debug build ................. ${enable_debug-no} 851 enable profiling build ............. ${enable_profiling-no} 852 853 enable weak SSLv23 support ......... ${enable_sslv23-no} 854 enable safemem functions ........... ${enable_safemem-no} 855 856 with libdlmalloc ................... ${with_libdlmalloc-no} 857 with libiconv ...................... ${with_libiconv-no} 858 with libintl ....................... ${with_libintl-no} 859 with libltdl ....................... ${with_libltdl-no} 860 enabling this may not be as good idea as it sounds as libtool is not 861 thread safe which may cause problems 862 863 build libredtools .................. ${with_redtools-no} 864 with Motif ................... ${with_motif-no} 865 Xft fonts .................... ${with_redtools_xft-no} 866 Xft serif typeface ........... ${with_redtools_xft_serif-no} 867 Xft custom typeface .......... ${with_redtools_xft_typeface-no} 868 Xft small fonts .............. ${with_redtools_xft_small-no} 869 Xft large fonts .............. ${with_redtools_xft_large-no} 870 Xft huge fonts ............... ${with_redtools_xft_huge-no} 871 Xft custom fontsize .......... ${with_redtools_xft_fontsize-no} 872 873 build external input drivers 874 USB classic NES gamepad ...... ${with_usb_classic_nes_gamepad-no} 875 876 color database to use with Ano script and for resource options 877 tiny (vga) ................... ${with_color_db_tiny-no} 878 small (w3c) .................. ${with_color_db_small-no} 879 large (complete) ............. ${with_color_db_large-no} 880 881------------------------------------------------------------------------------ 882]) 883 884dnl 885dnl Suggest disabling unneeded subsystems. 886dnl 887 888./build/subsys 2>/dev/null 889 890AC_MSG_NOTICE([Now type `make' to build the project.]) 891