1# -*- Autoconf -*- 2# Process this file with autoconf to produce a configure script. 3 4AC_PREREQ([2.67]) 5 6m4_define([fsbuild_version], [3.1.35]) 7m4_define([fsbuild_version_major], [3]) 8m4_define([fsbuild_version_minor], [1]) 9m4_define([fsbuild_version_revision], [35]) 10m4_define([fsbuild_commit], []) 11 12AC_INIT([FS-UAE], [fsbuild_version], 13 [frode@fs-uae.net], [fs-uae], [https://fs-uae.net]) 14AC_CONFIG_AUX_DIR([.]) 15AC_CANONICAL_HOST 16AC_CONFIG_SRCDIR([src/main.cpp]) 17AC_CONFIG_HEADERS([config.h]) 18 19# AC_CONFIG_MACRO_DIRS requires newer autoconf/automake than is found in 20# Debian 7.0 21# AC_CONFIG_MACRO_DIRS([m4]) 22m4_include([m4/ax_c___builtin_expect.m4]) 23m4_include([m4/ax_check_compile_flag.m4]) 24m4_include([m4/ax_check_link_flag.m4]) 25m4_include([m4/ax_gcc_var_attribute.m4]) 26m4_include([m4/ax_gcc_func_attribute.m4]) 27 28AM_INIT_AUTOMAKE([tar-ustar subdir-objects]) 29 30AC_SUBST([PACKAGE_SERIES], [devel]) 31 32AC_DEFINE_UNQUOTED([UAE_BASE_VERSION], ["WinUAE 3300b2"], 33[Which UAE core this version is based on.]) 34 35PACKAGE_MAJOR=`echo ${PACKAGE_VERSION} | sed -e 's,\(\.*\)\..*\..*,\1,g'` 36PACKAGE_MINOR=`echo ${PACKAGE_VERSION} | sed -e 's,.*\.\(.*\)\..*,\1,g'` 37PACKAGE_REVISION=`echo ${PACKAGE_VERSION} | sed -e 's,.*\..*\.\([[0-9]]*\).*,\1,g'` 38AC_SUBST(PACKAGE_MAJOR) 39AC_DEFINE_UNQUOTED([PACKAGE_MAJOR], [$PACKAGE_MAJOR], [Package major version]) 40AC_SUBST(PACKAGE_MINOR) 41AC_DEFINE_UNQUOTED([PACKAGE_MINOR], [$PACKAGE_MINOR], [Package minor version]) 42AC_SUBST(PACKAGE_REVISION) 43AC_DEFINE_UNQUOTED([PACKAGE_REVISION], [$PACKAGE_REVISION], [Package revision]) 44 45 46# Checks for programs 47 48AC_PROG_CC 49AC_PROG_CXX 50AC_PROG_CPP 51AC_PROG_INSTALL 52# AC_PROG_LIBTOOL 53AC_PROG_LN_S 54AC_PROG_MAKE_SET 55AC_PROG_RANLIB 56AM_PROG_CC_C_O 57# AC_PATH_TOOL(OBJCOPY, objcopy) 58AC_PATH_PROG([MSGFMT], [msgfmt], [not found]) 59if test "$MSGFMT" = "not found"; then 60 AC_MSG_ERROR([msgfmt not found on path]) 61fi 62AC_PATH_PROG([ZIP], [zip], [not found]) 63if test "$ZIP" = "not found"; then 64 AC_MSG_ERROR([zip not found on path]) 65fi 66PKG_PROG_PKG_CONFIG 67 68 69# Feature test macros 70 71AC_DEFUN([OPT_FEATURE], [ 72AC_ARG_ENABLE([$3], [AS_HELP_STRING([--disable-$3], [$4])]) 73AS_IF([test x$enable_$2 != xno], [AC_DEFINE([$1], [1], [$4])]) 74AM_CONDITIONAL([$1], [test x$enable_$2 != xno]) 75]) 76 77AC_DEFUN([DIS_FEATURE], [ 78AC_ARG_ENABLE([$3], [AS_HELP_STRING([--enable-$3], [$4])]) 79AS_IF([test x$enable_$2 = xyes], [AC_DEFINE([$1], [1], [$4])]) 80AM_CONDITIONAL([$1], [test x$enable_$2 = xyes]) 81]) 82 83AC_DEFUN([REQ_FEATURE], [ 84AC_DEFINE([$1], [1], [$4]) 85AM_CONDITIONAL([$1], [true]) 86]) 87 88 89# Misc system checks 90 91AC_SYS_LARGEFILE 92# AC_LTDL_SHLIBEXT 93 94 95# Static build 96 97DIS_FEATURE([STATIC_BUILD], [static], [static], 98 [static build (works on Windows)]) 99 100AS_IF([test "x$enable_static" = xyes], 101 [PKG_CONFIG="$PKG_CONFIG --static"]) 102 103 104# Compiler / linker feature checks 105 106AX_CHECK_COMPILE_FLAG(-fno-strict-overflow, 107[f_no_strict_overflow=yes], 108[f_no_strict_overflow=no]) 109AM_CONDITIONAL([F_NO_STRICT_OVERFLOW], 110[test x$f_no_strict_overflow = xyes]) 111 112AX_CHECK_COMPILE_FLAG(-fno-strict-aliasing, 113[f_no_strict_aliasing=yes], 114[f_no_strict_aliasing=no]) 115AM_CONDITIONAL([F_NO_STRICT_ALIASING], 116[test x$f_no_strict_aliasing = xyes]) 117 118AX_CHECK_COMPILE_FLAG(-Wmissing-declarations, 119[w_missing_declarations=yes], 120[w_missing_declarations=no]) 121AM_CONDITIONAL([W_MISSING_DECLARATIONS], 122[test x$w_missing_declarations = xyes]) 123 124AX_CHECK_COMPILE_FLAG(-Waddress, 125[w_address=yes], 126[w_address=no]) 127AM_CONDITIONAL([W_ADDRESS], 128[test x$w_address = xyes]) 129 130AX_CHECK_COMPILE_FLAG(-Wmissing-format-attribute, 131[w_missing_format_attribute=yes], 132[w_missing_format_attribute=no]) 133AM_CONDITIONAL([W_MISSING_FORMAT_ATTRIBUTE], 134[test x$w_missing_format_attribute = xyes]) 135 136AX_CHECK_COMPILE_FLAG(-fno-pie, 137[fno_pie=yes], 138[fno_pie=no]) 139AM_CONDITIONAL([FNO_PIE], 140[test x$fno_pie = xyes]) 141 142AX_CHECK_COMPILE_FLAG(-fno-PIE, 143[fno_pie_cap=yes], 144[fno_pie_cap=no]) 145AM_CONDITIONAL([FNO_PIE_CAP], 146[test x$fno_pie_cap = xyes]) 147 148AX_CHECK_LINK_FLAG(-no-pie, 149[no_pie=yes], 150[no_pie=no]) 151AM_CONDITIONAL([NO_PIE], 152[test x$no_pie = xyes]) 153 154# AX_CHECK_LINK_FLAG([-Wl,-Tdata=0x10000000], 155# [wl_tdata=yes], 156# [wl_tdata=no]) 157# AM_CONDITIONAL([WL_TDATA], 158# [test x$wl_tdata = xyes]) 159 160AX_C___BUILTIN_EXPECT 161 162# Checks for libraries. 163 164AC_SUBST([CARBON_LIBS]) 165AS_CASE([$host_os], 166[darwin*], [ 167 AC_MSG_NOTICE([Using Carbon.framework]) 168 CARBON_LIBS="-framework Carbon" 169]) 170 171AC_ARG_WITH(cef, AS_HELP_STRING( 172 [--with-cef], [use Chromium Embedded Framework (experimental)])) 173AM_CONDITIONAL([BUILTIN_CEF], [test x$with_cef = xyes]) 174AS_IF([test "x$with_cef" = xyes], [ 175 AC_DEFINE([WITH_CEF], [1], [Define to 1 to use CEF]) 176]) 177 178AC_CHECK_LIB([compat], [ftime]) 179 180AC_CHECK_LIB([dl], [dlopen]) 181 182# not using freetype right now 183# AC_DEFINE([USE_FREETYPE], [1], [Define to 1 to use FreeType]) 184# PKG_CHECK_MODULES([FREETYPE], [freetype2]) 185AC_SUBST([FREETYPE_CFLAGS]) 186AC_SUBST([FREETYPE_LIBS]) 187 188AC_CHECK_LIB([gdi32], [main]) 189 190AC_DEFINE([USE_GLIB], [1], [Define to 1 to use GLib]) 191PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.32 gthread-2.0]) 192 193AC_CHECK_LIB([Iphlpapi], [main]) 194 195AC_ARG_WITH(glad, AS_HELP_STRING( 196 [--without-glad], [use GLAD OpenGL loader])) 197AS_IF([test "x$with_glad" != xno], [ 198 AC_DEFINE([WITH_GLAD], [1], [Define to 1 to use GLAD]) 199]) 200AM_CONDITIONAL([WITH_GLAD], [test x$with_glad != xno]) 201 202AC_ARG_WITH(glew, AS_HELP_STRING( 203 [--with-glew], [use GLEW library])) 204AS_IF([test "x$with_glew" = xyes], [ 205 PKG_CHECK_MODULES([GLEW], [glew]) 206 AC_DEFINE([WITH_GLEW], [1], [Define to 1 to use GLEW]) 207]) 208 209AC_ARG_WITH(libmpeg2, AS_HELP_STRING( 210 [--without-libmpeg2], [or --with-libmpeg2=builtin to use included version])) 211AM_CONDITIONAL([BUILTIN_LIBMPEG2], [test x$with_libmpeg2 = xbuiltin]) 212AS_IF([test "x$with_libmpeg2" != xno], [ 213 AS_IF([test "x$with_libmpeg2" = xbuiltin], [ 214 ], [ 215 PKG_CHECK_MODULES([LIBMPEG2], [libmpeg2 libmpeg2convert]) 216 ]) 217 AC_DEFINE([WITH_LIBMPEG2], [1], [Define to 1 to use libmpeg2]) 218]) 219 220AM_CONDITIONAL([BUILTIN_MANYMOUSE], [true]) 221 222# The built-in Lua has been sandboxed, which is why we do not 223# want to pick up the system lua, if present. 224 225AC_SUBST([LUA_CFLAGS]) 226AS_CASE([$host_os], 227 [mingw*], [], 228 [LUA_CFLAGS="-DLUA_USE_POSIX"] 229) 230 231AC_SUBST([IOKIT_LIBS]) 232AS_CASE([$host_os], 233[darwin*], [ 234 AC_MSG_NOTICE([Using IOKit.framework]) 235 IOKIT_LIBS="-framework IOKit" 236]) 237 238AC_CHECK_LIB([m], [floor]) 239 240# Workaround for bug in libsdl2-dev / ubuntu, SDL headers 241# depend on mirclient/mircommon headers. 242# https://bugs.launchpad.net/ubuntu/+source/libsdl2/+bug/1306629 243PKG_CHECK_MODULES([MIR], [mirclient], [ 244], [ 245 AC_SUBST([MIR_CFLAGS]) 246]) 247 248# AC_SUBST([USE_OPENAL], [1]) 249AC_DEFINE([WITH_OPENAL], [1], [Define to 1 to use OpenAL]) 250PKG_CHECK_MODULES([OPENAL], [openal], [ 251], [ 252 AS_CASE([$host_os], 253 [darwin*], [ 254 AC_MSG_NOTICE([Using OpenAL.framework]) 255 OPENAL_LIBS="-framework OpenAL" 256 ], 257 [ 258 AC_CHECK_LIB([openal], [alcOpenDevice], [ 259 OPENAL_LIBS="-lopenal" 260 ], [ 261 AC_MSG_FAILURE([OpenAL not found]) 262 ]) 263 ]) 264 AC_SUBST([OPENAL_CFLAGS]) 265 AC_SUBST([OPENAL_LIBS]) 266 267]) 268 269# AC_SUBST([USE_OPENGL], [1]) 270AC_DEFINE([USE_OPENGL], [1], [Define to 1 to use OpenGL]) 271PKG_CHECK_MODULES([OPENGL], [gl], [ 272], [ 273 AS_CASE([$host_os], 274 [darwin*], [ 275 AC_MSG_NOTICE([Using OpenGL.framework]) 276 OPENGL_LIBS="-framework OpenGL" 277 278 ], 279 [ 280 AC_CHECK_LIB([GL], [glViewport]) 281 AC_CHECK_LIB([OpenGL32], [main], [OPENGL_LIBS=-lOpenGL32]) 282 ]) 283 AC_SUBST([OPENGL_CFLAGS]) 284 AC_SUBST([OPENGL_LIBS]) 285]) 286 287AC_DEFINE([USE_PNG], [1], [Define to 1 to use libpng]) 288PKG_CHECK_MODULES([PNG], [libpng]) 289 290AC_ARG_WITH(qt, AS_HELP_STRING( 291 [--with-qt], [use QT])) 292AS_IF([test "x$with_qt" = xyes], [ 293 AC_DEFINE([WITH_QT], [1], [Define to 1 to use QT]) 294 PKG_CHECK_MODULES([QT], [Qt5Gui]) 295]) 296 297AC_DEFINE([USE_SDL2], [1], [Define to 1 to use SDL 2.0]) 298PKG_CHECK_MODULES([SDL2], [sdl2]) 299AC_DEFINE([USE_SDL_VIDEO], [1], [Define to 1 to use SDL for video]) 300AC_DEFINE([USE_SDL_INPUT], [1], [Define to 1 to use SDL for input]) 301 302AS_CASE([$host_os], 303[mingw*], [], 304[darwin*], [], 305[ 306 X11_LIBS="-lX11" 307 AC_DEFINE([USE_X11], [1], [Define to 1 to use X11]) 308 309# X11_LIBS="$X11_LIBS -lXtst" 310# AC_DEFINE([USE_X11_XTEST], [1], [Define to 1 to use X11 XTEST extension]) 311]) 312AC_SUBST([X11_LIBS]) 313 314AC_DEFINE([USE_ZLIB], [1], [Define to 1 to use zlib]) 315PKG_CHECK_MODULES([ZLIB], [zlib], [ 316], [ 317 AC_CHECK_LIB([z], [compress]) 318 AC_SUBST([ZLIB_CFLAGS]) 319 AC_SUBST([ZLIB_LIBS]) 320]) 321 322AC_CHECK_LIB([Winmm], [main]) 323 324AC_CHECK_LIB([Ws2_32], [main]) 325 326 327# Operating system 328 329AC_SUBST([OS_CPPFLAGS]) 330AC_SUBST([OS_LDFLAGS]) 331AC_SUBST([OS_NAME]) 332AC_SUBST([OS_NAME_2]) 333AC_SUBST([OS_NAME_3]) 334AC_SUBST([PACKAGE_ARCH]) 335AS_CASE([$host_os], 336[mingw*], [ 337 OS_NAME="windows" 338 OS_NAME_2="Windows" 339 OS_NAME_3="Windows" 340 OS_CPPFLAGS="-DWINDOWS" 341 AS_CASE([$host_cpu], 342 [x86_64], [ 343 OS_LDFLAGS="-mwindows -Wl,--image-base=0x400000" 344 PACKAGE_ARCH="x86-64" 345 ], [ 346 OS_LDFLAGS="-mwindows -Wl,--large-address-aware" 347 PACKAGE_ARCH="x86" 348 ]) 349 LOADABLE_MODULE_EXT=".dll" 350], 351[linux*], [ 352 OS_NAME="linux" 353 OS_NAME_2="Linux" 354 OS_NAME_3="Linux" 355 OS_CPPFLAGS="-DLINUX" 356 LOADABLE_MODULE_EXT=".so" 357], 358[darwin*], [ 359 OS_NAME="macos" 360 OS_NAME_2="macOS" 361 OS_NAME_3="macOS" 362 OS_CPPFLAGS="-DMACOSX -DMACOS" 363 LOADABLE_MODULE_EXT=".so" 364 AS_CASE([$host_cpu], 365 [x86_64], [ 366 OS_LDFLAGS="-headerpad_max_install_names -pagezero_size 0x2000 -rpath @executable_path/../Frameworks" 367 ], [ 368 OS_LDFLAGS="-headerpad_max_install_names -rpath @executable_path/../Frameworks" 369 ]) 370], 371[freebsd*], [ 372 OS_NAME="freebsd" 373 OS_NAME_2="FreeBSD" 374 OS_NAME_3="FreeBSD" 375 OS_CPPFLAGS="-DFREEBSD" 376 LOADABLE_MODULE_EXT=".so" 377], 378[openbsd*], [ 379 OS_NAME="openbsd" 380 OS_NAME_2="OpenBSD" 381 OS_NAME_3="OpenBSD" 382 OS_CPPFLAGS="-DOPENBSD" 383 LOADABLE_MODULE_EXT=".so" 384], 385[dragonfly*], [ 386 OS_NAME="dragonflybsd" 387 OS_NAME_2="DragonFlyBSD" 388 OS_NAME_3="DragonFlyBSD" 389 OS_CPPFLAGS="-DDRAGONFLYBSD" 390 LOADABLE_MODULE_EXT=".so" 391], 392[ 393 OS_NAME="unknown" 394 OS_NAME_2="Unknown OS" 395 OS_NAME_3="Unknown" 396 LOADABLE_MODULE_EXT=".unknown" 397]) 398 399AM_CONDITIONAL([LINUX], [test x$OS_NAME = xlinux]) 400AM_CONDITIONAL([MACOS], [test x$OS_NAME = xmacos]) 401AM_CONDITIONAL([WINDOWS], [test x$OS_NAME = xwindows]) 402 403# Not using libtool right now, but use name LT_MODULE_EXT anyway in case 404# transitioning to libtool later. 405AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$LOADABLE_MODULE_EXT"], 406[Define to the extension used for runtime loadable modules, say, ".so".]) 407 408AC_DEFINE_UNQUOTED([OS_NAME], ["$OS_NAME"], 409[Define to a name identifier for the operating system, "linux".]) 410 411AC_DEFINE_UNQUOTED([OS_NAME_2], ["$OS_NAME_2"], 412[Define to a nicely formatted name for the operating system, "Linux".]) 413 414AC_DEFINE_UNQUOTED([OS_NAME_3], ["$OS_NAME_3"], 415[New name identifier for the operating system, "Linux".]) 416 417# Checks for header files. 418 419AC_CHECK_HEADERS([AL/al.h]) 420AC_CHECK_HEADERS([AL/alc.h]) 421AC_CHECK_HEADERS([arpa/inet.h]) 422AC_CHECK_HEADERS([byteswap.h]) 423AC_CHECK_HEADERS([dlfcn.h]) 424AC_CHECK_HEADERS([endian.h]) 425AC_CHECK_HEADERS([fcntl.h]) 426AC_CHECK_HEADERS([fenv.h]) 427AC_CHECK_HEADERS([float.h]) 428AC_CHECK_HEADERS([inttypes.h]) 429# AC_CHECK_HEADERS([sys/ipc.h]) 430AC_CHECK_HEADERS([libkern/OSByteOrder.h]) 431AC_CHECK_HEADERS([limits.h]) 432AC_CHECK_HEADERS([locale.h]) 433AC_CHECK_HEADERS([malloc.h]) 434AC_CHECK_HEADERS([netdb.h]) 435AC_CHECK_HEADERS([netinet/in.h]) 436AC_CHECK_HEADERS([OpenAL/al.h]) 437AC_CHECK_HEADERS([OpenAL/alc.h]) 438AC_CHECK_HEADERS([stddef.h]) 439AC_CHECK_HEADERS([stdint.h]) 440AC_CHECK_HEADERS([stdlib.h]) 441AC_CHECK_HEADERS([string.h]) 442AC_CHECK_HEADERS([strings.h]) 443AC_CHECK_HEADERS([sys/endian.h]) 444AC_CHECK_HEADERS([sys/filsys.h]) 445AC_CHECK_HEADERS([sys/fs/s5param.h]) 446AC_CHECK_HEADERS([sys/ioctl.h]) 447# AC_CHECK_HEADERS([sys/mman.h]) 448AC_CHECK_HEADERS([sys/mount.h]) 449AC_CHECK_HEADERS([sys/param.h]) 450AC_CHECK_HEADERS([sys/socket.h]) 451AC_CHECK_HEADERS([sys/statfs.h]) 452AC_CHECK_HEADERS([sys/statvfs.h]) 453AC_CHECK_HEADERS([sys/time.h]) 454AC_CHECK_HEADERS([sys/timeb.h]) 455AC_CHECK_HEADERS([sys/vfs.h]) 456AC_CHECK_HEADERS([termios.h]) 457AC_CHECK_HEADERS([unistd.h]) 458AC_CHECK_HEADERS([utime.h]) 459AC_CHECK_HEADERS([values.h]) 460AC_CHECK_HEADERS([wchar.h]) 461 462 463# Checks for typedefs, structures, and compiler characteristics. 464 465AC_C_BIGENDIAN 466AC_C_CONST 467AC_C_INLINE 468AC_C_RESTRICT 469AC_C_VOLATILE 470 471AX_GCC_FUNC_ATTRIBUTE(always_inline) 472AX_GCC_FUNC_ATTRIBUTE(fastcall) 473AX_GCC_FUNC_ATTRIBUTE(format) 474AX_GCC_FUNC_ATTRIBUTE(noinline) 475AX_GCC_FUNC_ATTRIBUTE(noreturn) 476AX_GCC_FUNC_ATTRIBUTE(regparm) 477AX_GCC_FUNC_ATTRIBUTE(unused) 478 479AX_GCC_VAR_ATTRIBUTE(unused) 480 481# FIXME: not found on the mingw box 482# AC_CHECK_HEADER_STDBOOL 483 484AC_CHECK_MEMBERS([struct stat.st_rdev]) 485AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec]) 486AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec]) 487AC_CHECK_MEMBERS([struct stat.st_mtime_nsec]) 488AC_CHECK_MEMBERS([struct in_addr.S_un]) 489AC_CHECK_MEMBERS([struct ucontext.uc_mcontext.gregs], 490 [], [], [[#include <sys/ucontext.h>]]) 491AC_CHECK_MEMBERS([struct ucontext_t.uc_mcontext.gregs], 492 [], [], [[#include <sys/ucontext.h>]]) 493 494AC_CHECK_TYPES([ptrdiff_t]) 495AC_STRUCT_ST_BLOCKS 496AC_TYPE_INT16_T 497AC_TYPE_INT32_T 498AC_TYPE_INT64_T 499AC_TYPE_INT8_T 500AC_TYPE_MODE_T 501AC_TYPE_OFF_T 502AC_TYPE_SIZE_T 503AC_TYPE_SSIZE_T 504AC_TYPE_UID_T 505AC_TYPE_UINT16_T 506AC_TYPE_UINT32_T 507AC_TYPE_UINT64_T 508AC_TYPE_UINT8_T 509AC_CHECK_TYPES([__uint128_t]) 510AC_TYPE_LONG_LONG_INT 511 512AC_CHECK_SIZEOF(int) 513AC_CHECK_SIZEOF(long) 514AC_CHECK_SIZEOF(long long) 515AC_CHECK_SIZEOF(long long int) 516AC_CHECK_SIZEOF(short) 517AC_CHECK_SIZEOF(void *) 518 519# Checks for library functions. 520 521AC_FUNC_ALLOCA 522AC_FUNC_CHOWN 523AC_FUNC_ERROR_AT_LINE 524AC_FUNC_FORK 525AC_FUNC_FSEEKO 526AC_FUNC_MKTIME 527AC_FUNC_MMAP 528AC_FUNC_REALLOC 529AC_FUNC_STRCOLL 530AC_FUNC_STRTOD 531AC_CHECK_FUNCS([atexit]) 532AC_CHECK_FUNCS([bzero]) 533 534# AC_CHECK_FUNCS([bswap_16]) 535# AC_CHECK_FUNCS([bswap_32]) 536 537AC_CHECK_FUNCS([dlopen]) 538AC_CHECK_FUNCS([dup2]) 539AC_CHECK_FUNCS([floor]) 540AC_CHECK_FUNCS([fseeko64]) 541AC_CHECK_FUNCS([ftello64]) 542AC_CHECK_FUNCS([ftime]) 543AC_CHECK_FUNCS([ftruncate]) 544AC_CHECK_FUNCS([getcwd]) 545AC_CHECK_FUNCS([gethostbyaddr]) 546AC_CHECK_FUNCS([gethostbyname]) 547AC_CHECK_FUNCS([gethostname]) 548AC_CHECK_FUNCS([getpagesize]) 549AC_CHECK_FUNCS([gmtime_r]) 550AC_CHECK_FUNCS([index]) 551AC_CHECK_FUNCS([inet_aton]) 552AC_CHECK_FUNCS([inet_ntoa]) 553AC_CHECK_FUNCS([localeconv]) 554AC_CHECK_FUNCS([localtime_r]) 555AC_CHECK_FUNCS([memchr]) 556AC_CHECK_FUNCS([memmove]) 557AC_CHECK_FUNCS([memset]) 558AC_CHECK_FUNCS([mkdir]) 559AC_CHECK_FUNCS([munmap]) 560AC_CHECK_FUNCS([pow]) 561AC_CHECK_FUNCS([putenv]) 562AC_CHECK_FUNCS([rmdir]) 563AC_CHECK_FUNCS([posix_memalign]) 564AC_CHECK_FUNCS([select]) 565AC_CHECK_FUNCS([setenv]) 566AC_CHECK_FUNCS([setlocale]) 567AC_CHECK_FUNCS([socket]) 568AC_CHECK_FUNCS([sqrt]) 569AC_CHECK_FUNCS([stpcpy]) 570AC_CHECK_FUNCS([strcasecmp]) 571AC_CHECK_FUNCS([strchr]) 572AC_CHECK_FUNCS([strcspn]) 573AC_CHECK_FUNCS([strdup]) 574AC_CHECK_FUNCS([strerror]) 575AC_CHECK_FUNCS([strlcpy]) 576AC_CHECK_FUNCS([strncasecmp]) 577AC_CHECK_FUNCS([strpbrk]) 578AC_CHECK_FUNCS([strrchr]) 579AC_CHECK_FUNCS([strspn]) 580AC_CHECK_FUNCS([strstr]) 581AC_CHECK_FUNCS([strtol]) 582AC_CHECK_FUNCS([strtoul]) 583AC_CHECK_FUNCS([strtoull]) 584AC_CHECK_FUNCS([tzset]) 585AC_CHECK_FUNCS([utime]) 586 587 588# Check for time functions and whether we have support for monotonic clock. 589 590AC_CHECK_FUNCS([clock_gettime]) 591AC_CHECK_FUNCS([gettimeofday]) 592AC_CHECK_DECLS([CLOCK_MONOTONIC], [], [], [#include <time.h>]) 593 594 595# Check for POSIX support. 596 597AS_CASE([$host_os], 598 [mingw*], [], 599 [ 600 AC_DEFINE([POSIX_SERIAL], [1], 601 [Define to 1 if you have POSIX serial support]) 602 ] 603) 604#AC_CHECK_FUNC(ioctl, [ 605# AC_DEFINE(POSIX_SERIAL) 606#]) 607 608 609# Byte swapping 610 611AC_MSG_CHECKING(for bswap_16) 612AC_TRY_LINK([ 613 #if HAVE_BYTESWAP_H 614 # include <byteswap.h> 615 #endif 616], [ 617 bswap_16(0x12); 618], [ 619 AC_DEFINE(HAVE_BSWAP_16, 1, [Define to 1 if you have the 'bswap_16' function.]) 620 AC_MSG_RESULT(yes) 621], [ 622 AC_MSG_RESULT(no) 623]) 624AC_MSG_CHECKING(for bswap_32) 625AC_TRY_LINK([ 626 #if HAVE_BYTESWAP_H 627 # include <byteswap.h> 628 #endif 629], [ 630 bswap_32(0x1234); 631], [ 632 AC_DEFINE(HAVE_BSWAP_32, 1, [Define to 1 if you have the 'bswap_32' function.]) 633 AC_MSG_RESULT(yes) 634], [ 635 AC_MSG_RESULT(no) 636]) 637 638 639# More feature macros. Many of these are generally always enabled, and 640# compiling without them may not work (without further changes to 641# source code). 642 643OPT_FEATURE([A2065], [a2065], [a2065], 644 [A2065 ethernet card]) 645REQ_FEATURE([A2091], [a2091], [a2091], 646 [A590/A2091 SCSI]) 647OPT_FEATURE([ACTION_REPLAY], [action_replay], [action-replay], 648 [Action Replay 1/2/3 support]) 649OPT_FEATURE([AGA], [aga], [aga], 650 [AGA chipset emulation]) 651DIS_FEATURE([AHI], [ahi], [ahi], 652 [builtin AHI device (unsupported)]) 653OPT_FEATURE([ARCADIA], [arcadia], [arcadia], 654 [Arcadia arcade system]) 655REQ_FEATURE([AUTOCONFIG], [autoconfig], [autoconfig], 656 [autoconfig support, fast ram, harddrives etc...]) 657OPT_FEATURE([BSDSOCKET], [bsdsocket], [bsdsocket], 658 [built-in bsdsocket.library]) 659DIS_FEATURE([WITH_BUILTIN_SLIRP], [builtin_slirp], [builtin-slirp], 660 [built-in SLIRP implementation (unsupported)]) 661OPT_FEATURE([CAPS], [caps], [caps], 662 [IPF support via libcapsimage]) 663OPT_FEATURE([CD32], [cd32], [cd32], 664 [CD32 emulation]) 665OPT_FEATURE([CDTV], [cdtv], [cdtv], 666 [CDTV emulation]) 667OPT_FEATURE([CODEGEN], [codegen], [codegen], 668 [Code generation (disable for cross-compilation)]) 669OPT_FEATURE([CPUEMU_0], [cpuemu_0], [cpuemu-0], 670 [generic 680x0 emulation]) 671OPT_FEATURE([CPUEMU_11], [cpuemu_11], [cpuemu-11], 672 [68000/68010 prefetch emulation]) 673REQ_FEATURE([CPUEMU_13], [cpuemu_13], [cpuemu-13], 674 [68000/68010 cycle-exact cpu&blitter]) 675OPT_FEATURE([CPUEMU_20], [cpuemu_20], [cpuemu-20], 676 [68020 prefetch]) 677OPT_FEATURE([CPUEMU_21], [cpuemu_21], [cpuemu-21], 678 [68020 "cycle-exact" + blitter]) 679OPT_FEATURE([CPUEMU_22], [cpuemu_22], [cpuemu-22], 680 [68030 prefetch]) 681OPT_FEATURE([CPUEMU_23], [cpuemu_23], [cpuemu-23], 682 [68030 "cycle-exact" + blitter]) 683OPT_FEATURE([CPUEMU_24], [cpuemu_24], [cpuemu-24], 684 [68060 "cycle-exact" + blitter]) 685OPT_FEATURE([CPUEMU_25], [cpuemu_25], [cpuemu-25], 686 [68040 "cycle-exact" + blitter (needs cpuemu-24)]) 687OPT_FEATURE([CPUEMU_31], [cpuemu_31], [cpuemu-31], 688 [Aranym 68040 MMU]) 689OPT_FEATURE([CPUEMU_32], [cpuemu_32], [cpuemu-32], 690 [Previous 68030 MMU]) 691OPT_FEATURE([CPUEMU_33], [cpuemu_33], [cpuemu-33], 692 [68060 MMU]) 693OPT_FEATURE([CPUEMU_40], [cpuemu_40], [cpuemu-40], 694 [generic 680x0 with JIT direct memory access]) 695OPT_FEATURE([CPUEMU_50], [cpuemu_50], [cpuemu-50], 696 [generic 680x0 with indirect memory access]) 697REQ_FEATURE([WITH_CPUBOARD], [cpuboard], [cpuboard], 698 [cpu board emulation]) 699OPT_FEATURE([DEBUGGER], [debugger], [debugger], 700 [debugger support (cannot be disabled right now)]) 701OPT_FEATURE([A_DMS], [dms], [dms], 702 [DMS support]) 703OPT_FEATURE([DRIVESOUND], [drivesound], [drivesound], 704 [drive sound emulation]) 705OPT_FEATURE([FDI2RAW], [fdi2raw], [fdi2raw], 706 [FDI 1.0 and 2.x image support]) 707REQ_FEATURE([FILESYS], [filesys], [filesys], 708 [directory hard drives]) 709REQ_FEATURE([FPUEMU], [fpuemu], [fpuemu], 710 [FPU emulation]) 711DIS_FEATURE([FSE_DRIVERS], [drivers], [drivers], 712 [multiple driver backends (experimental)]) 713OPT_FEATURE([GFXBOARD], [gfxboard], [gfxboard], 714 [GFX hardware boards]) 715AC_ARG_ENABLE([jit], [AS_HELP_STRING([--disable-jit], [JIT compiler])]) 716AS_IF([test "x$enable_jit" != xno], [ 717 AC_TRY_COMPILE([ 718 ], [ 719 #if !defined(__i386__) && !defined(__x86_64__) 720 #error JIT is only supported on x86/x86-64 721 #endif 722 #if defined(__OpenBSD__) || defined(__FreeBSD__) 723 #error no JIT on OpenBSD/FreeBSD right now 724 #endif 725 ], [ 726 AC_DEFINE([JIT], [1], [Define to 1 to enable JIT compilation]) 727 ], [ 728 if test "x$enable_jit" = xyes; then 729 AC_MSG_FAILURE( 730 [JIT is not supported on $host]) 731 else 732 enable_jit=no 733 fi 734 ]) 735]) 736AM_CONDITIONAL([JIT], 737[test x$enable_jit != xno]) 738 739OPT_FEATURE([USE_JIT_FPU], [jit_fpu], [jit-fpu], 740 [JIT compilation of FPU instructions]) 741DIS_FEATURE([WITH_LUA], [lua], [lua], 742 [LUA scripting (unfinished)]) 743OPT_FEATURE([WITH_NETPLAY], [netplay], [netplay], 744 [netplay support]) 745OPT_FEATURE([NCR], [ncr], [ncr], 746 [A4000T/A4091, 53C710/53C770 SCSI]) 747OPT_FEATURE([NCR9X], [ncr9x], [ncr9x], 748 [53C9X SCSI]) 749OPT_FEATURE([PARALLEL_PORT], [parallel_port], [parallel-port], 750 [parallell port (printer) emulation]) 751DIS_FEATURE([WITH_PEARPC_CPU], [pearpc_cpu], [pearpc-cpu], 752 [use PearPC for PPC emulation (deprecated)]) 753REQ_FEATURE([PICASSO96], [picasso96], [picasso96], 754 [Picasso 96 (uaegfx.card)]) 755OPT_FEATURE([WITH_PPC], [ppc], [ppc], 756 [PPC (requires cpu board)]) 757OPT_FEATURE([PROWIZARD], [prowizard], [prowizard], 758 [prowizard]) 759OPT_FEATURE([SAVESTATE], [savestate], [savestate], 760 [save state support]) 761OPT_FEATURE([SCP], [scp], [scp], 762 [SuperCardPro floppy image support]) 763OPT_FEATURE([WITH_SEGTRACKER], [segtracker], [segtracker], 764 [segtracker support in debugger]) 765OPT_FEATURE([SERIAL_PORT], [serial_port], [serial-port], 766 [serial port emulation]) 767OPT_FEATURE([WITH_SLIRP], [slirp], [slirp], 768 [SLIRP (user mode NAT)]) 769OPT_FEATURE([WITH_SOFTFLOAT], [softfloat], [softfloat], 770 [use softfloat library]) 771OPT_FEATURE([WITH_QEMU_CPU], [qemu_cpu], [qemu-cpu], 772 [use QEMU plugin for PPC emulation]) 773OPT_FEATURE([WITH_QEMU_SLIRP], [qemu_slirp], [qemu-slirp], 774 [use QEMU plugin for SLIRP implementation]) 775REQ_FEATURE([WITH_TOCCATA], [toccata], [toccata], 776 [Toccata sound card emulation]) 777OPT_FEATURE([WITH_UAENATIVE], [uaenative], [uaenative], 778 [uaenative.library]) 779OPT_FEATURE([SANA2], [uaenet], [uaenet], 780 [uaenet.device]) 781OPT_FEATURE([SCSIEMU], [uaescsi], [uaescsi], 782 [uaescsi.device]) 783OPT_FEATURE([UAESERIAL], [uaeserial], [uaeserial], 784 [uaeserial.device]) 785OPT_FEATURE([WITH_UDIS86], [udis86], [udis86], 786 [UDIS86 x86/x86-64 disassembler]) 787OPT_FEATURE([WITH_VPAR], [vpar], [vpar], 788 [vpar virtual parallel port]) 789OPT_FEATURE([WITH_XML_SHADER], [xml_shader], [xml-shader], 790 [XML shader support]) 791OPT_FEATURE([A_ZIP], [zip], [zip], 792 [ZIP archive support]) 793 794AC_DEFINE([FPU_UAE], [1], [Define to 1]) 795 796AC_CONFIG_SUBDIRS([libmpeg2]) 797 798# Write Makefile 799 800AC_CONFIG_FILES([ 801 dist/linux/Makefile 802 dist/macos/Info.plist 803 dist/macos/Makefile 804 dist/steamos/Makefile 805 dist/windows/fs-uae.iss 806 dist/windows/Makefile 807 src/fs-uae/fs-uae.rc 808 Makefile 809]) 810AC_OUTPUT 811 812# Summary 813 814echo "" 815echo "Configuration summary for FS-UAE:" 816echo "" 817echo " Building for OS: $host_os (\"$OS_NAME\")" 818echo " Building for CPU: $host_cpu" 819echo " Module extension: $LOADABLE_MODULE_EXT" 820echo "" 821echo " LIBMPEG2_CFLAGS: $LIBMPEG2_CFLAGS" 822echo " LIBMPEG2_LIBS: $LIBMPEG2_LIBS" 823echo " OPENAL_CFLAGS: $OPENAL_CFLAGS" 824echo " OPENAL_LIBS: $OPENAL_LIBS" 825echo " OPENGL_CFLAGS: $OPENGL_CFLAGS" 826echo " OPENGL_LIBS: $OPENGL_LIBS" 827echo " OS_CPPFLAGS: $OS_CPPFLAGS" 828echo " OS_LDFLAGS: $OS_LDFLAGS" 829echo " SDL2_CFLAGS: $SDL2_CFLAGS" 830echo " SDL2_LIBS: $SDL2_LIBS" 831echo "" 832