diff options
-rwxr-xr-x | configure | 251 |
1 files changed, 127 insertions, 124 deletions
@@ -134,21 +134,19 @@ _mpeg2=no _png=auto _theoradec=auto _fluidsynth=auto -_16bit=auto _opengl=auto _opengles=auto _readline=auto # Default option behaviour yes/no _debug_build=auto _release_build=auto +_verbose_build=no _text_console=no _mt32emu=yes _build_scalers=yes _build_hq_scalers=yes _enable_prof=no -_posix=no _global_constructors=no -_elf_loader=no # Default vkeybd/keymapper options _vkeybd=no _keymapper=no @@ -156,12 +154,9 @@ _keymapper=no _translation=yes # Default platform settings _backend=sdl -_endian=unknown -_need_memalign=yes -_have_x86=no -_arm_asm=no -_verbose_build=no +_16bit=auto _dynamic_modules=no +_elf_loader=no _plugins_default=static _plugin_prefix= _plugin_suffix= @@ -180,6 +175,15 @@ _sdlpath="$PATH" _nasmpath="$PATH" NASMFLAGS="" NASM="" +# The following variables are automatically detected, and should not +# be modified otherwise. Consider them read-only. +_posix=no +_endian=unknown +_need_memalign=yes +_have_x86=no +_arm_asm=no + + # Directories for installing ScummVM. # This list is closely based on what GNU autoconf does, @@ -1469,6 +1473,20 @@ fi echo $_endian; cc_check_clean tmp_endianness_check.cpp +case $_endian in + big) + add_line_to_config_h '#undef SCUMM_LITTLE_ENDIAN' + add_line_to_config_h '#define SCUMM_BIG_ENDIAN' + ;; + little) + add_line_to_config_h '#define SCUMM_LITTLE_ENDIAN' + add_line_to_config_h '#undef SCUMM_BIG_ENDIAN' + ;; + *) + exit 1 + ;; +esac + # # Determine a data type with the given length # @@ -1518,6 +1536,85 @@ echo "$type_4_byte" test $TMPR -eq 0 || exit 1 # check exit code of subshell # +# Check whether memory alignment is required +# +# For some CPU types, unaligned memory access is either not supported at +# all (and so leads to a crash), requires a super-slow emulation via an +# exception handler, or just results in incorrect results. +# On the other hand, accessing data in a manner that works regardless of +# alignment can be a lot slower than regular access, so we don't want +# to use it if we don't have to. +# +# So we do the following: For CPU families where we know whether unaligned +# access is safe & fast, we enable / disable unaligned access accordingly. +# Otherwise, we just disable memory alignment. +# +# NOTE: In the past, for non-cross compiled builds, we would also run some code +# which would try to test whether unaligned access worked or not. But this test +# could not reliably determine whether unaligned access really worked in all +# situations (and across different implementations of the target CPU arch), nor +# whether it was fast (as opposed to slowly emulated by fault handlers). Hence, +# we do not use this approach anymore. +# +# NOTE: The only kinds of unaligned access we allow are for 2 byte and 4 +# byte loads / stores. No promises are made for bigger sizes, such as 8 +# or 16 byte loads, for which architectures may behave differently than +# for the smaller sizes. +echo_n "Alignment required... " +case $_host_cpu in + i[3-6]86 | x86_64 | ppc*) + # Unaligned access should work + _need_memalign=no + ;; + alpha* | arm* | bfin* | hp* | mips* | sh* | sparc* | ia64 | nv1*) + # Unaligned access is not supported or extremely slow. + _need_memalign=yes + ;; + *) + # Status of unaligned access is unknown, so assume the worst. + _need_memalign=yes + ;; +esac +echo "$_need_memalign" + +define_in_config_h_if_yes $_need_memalign 'SCUMM_NEED_ALIGNMENT' + +# +# Check whether we can use x86 asm routines +# +echo_n "Compiling for x86... " +case $_host_cpu in + i386|i486|i586|i686) + _have_x86=yes + ;; + *) + _have_x86=no + ;; +esac +echo "$_have_x86" +define_in_config_h_if_yes $_have_x86 'HAVE_X86' + +# +# Check whether to use optimized ARM asm +# +echo_n "Compiling for ARM... " +case $_host_cpu in + arm*) + _arm_asm=yes + ;; + *) + _arm_asm=no + ;; +esac +echo "$_arm_asm" +define_in_config_if_yes "$_arm_asm" 'USE_ARM_SCALER_ASM' +define_in_config_if_yes "$_arm_asm" 'USE_ARM_SOUND_ASM' +define_in_config_if_yes "$_arm_asm" 'USE_ARM_SMUSH_ASM' +define_in_config_if_yes "$_arm_asm" 'USE_ARM_GFX_ASM' +define_in_config_if_yes "$_arm_asm" 'USE_ARM_COSTUME_ASM' + + +# # Determine build settings # echo_n "Checking hosttype... " @@ -1715,35 +1812,6 @@ case $_host_os in ;; esac -# -# Determine whether host is POSIX compliant, or at least POSIX -# compatible enough to support our POSIX code (including dlsym(), -# mkdir() and some other APIs). -# -# TODO: Instead of basing this on the host name, we should really base -# this on the presence of features (such as the dlsym and mkdir APIs). -# -echo_n "Checking if host is POSIX compliant... " -case $_host_os in - amigaos* | cygwin* | dreamcast | ds | gamecube | mingw* | n64 | ps2 | psp | wii | wince) - ;; - android | beos* | bsd* | darwin* | freebsd* | gph-linux | haiku* | hpux* | iphone | irix* | linux* | mint* | netbsd* | openbsd* | solaris* | sunos* | uclinux* | webos) - _posix=yes - ;; - os2-emx*) - _posix=yes # FIXME: Really??? - ;; - *) - # given this is a shell script, we might assume some type of posix. - # However, the host system might be a totally different one, so - # we can assume nothing about it. - # Indeed, as mentioned further above, we really should test for the - # presences of relevant APIs on the host anyway... - _posix=no - ;; -esac -echo $_posix - if test -n "$_host"; then # Cross-compiling mode - add your target here if needed echo "Cross-compiling to $_host" @@ -2059,50 +2127,6 @@ if test -n "$_host"; then fi # -# Check whether memory alignment is required -# -# For some CPU types, unaligned memory access is either not supported at -# all (and so leads to a crash), requires a super-slow emulation via an -# exception handler, or just results in incorrect results. -# On the other hand, accessing data in a manner that works regardless of -# alignment can be a lot slower than regular access, so we don't want -# to use it if we don't have to. -# -# So we do the following: For CPU families where we know whether unaligned -# access is safe & fast, we enable / disable unaligned access accordingly. -# Otherwise, we just disable memory alignment. -# -# NOTE: In the past, for non-cross compiled builds, we would also run some code -# which would try to test whether unaligned access worked or not. But this test -# could not reliably determine whether unaligned access really worked in all -# situations (and across different implementations of the target CPU arch), nor -# whether it was fast (as opposed to slowly emulated by fault handlers). Hence, -# we do not use this approach anymore. -# -# NOTE: The only kinds of unaligned access we allow are for 2 byte and 4 -# byte loads / stores. No promises are made for bigger sizes, such as 8 -# or 16 byte loads, for which architectures may behave differently than -# for the smaller sizes. -echo_n "Alignment required... " -case $_host_cpu in - i[3-6]86 | x86_64 | ppc*) - # Unaligned access should work - _need_memalign=no - ;; - alpha* | arm* | bfin* | hp* | mips* | sh* | sparc* | ia64 | nv1*) - # Unaligned access is not supported or extremely slow. - _need_memalign=yes - ;; - *) - # Status of unaligned access is unknown, so assume the worst. - _need_memalign=yes - ;; -esac -echo "$_need_memalign" - -define_in_config_h_if_yes $_need_memalign 'SCUMM_NEED_ALIGNMENT' - -# # Backend related stuff # case $_backend in @@ -2238,21 +2262,34 @@ esac # -# Add the results of the above checks to config.h +# Determine whether host is POSIX compliant, or at least POSIX +# compatible enough to support our POSIX code (including dlsym(), +# mkdir() and some other APIs). +# +# TODO: Instead of basing this on the host name, we should really base +# this on the presence of features (such as the dlsym and mkdir APIs). # -case $_endian in - big) - add_line_to_config_h '#undef SCUMM_LITTLE_ENDIAN' - add_line_to_config_h '#define SCUMM_BIG_ENDIAN' +echo_n "Checking if host is POSIX compliant... " +case $_host_os in + amigaos* | cygwin* | dreamcast | ds | gamecube | mingw* | n64 | ps2 | psp | wii | wince) + _posix=no ;; - little) - add_line_to_config_h '#define SCUMM_LITTLE_ENDIAN' - add_line_to_config_h '#undef SCUMM_BIG_ENDIAN' + android | beos* | bsd* | darwin* | freebsd* | gph-linux | haiku* | hpux* | iphone | irix* | linux* | mint* | netbsd* | openbsd* | solaris* | sunos* | uclinux* | webos) + _posix=yes + ;; + os2-emx*) + _posix=yes # FIXME: Really??? ;; *) - exit 1 + # given this is a shell script, we might assume some type of posix. + # However, the host system might be a totally different one, so + # we can assume nothing about it. + # Indeed, as mentioned further above, we really should test for the + # presences of relevant APIs on the host anyway... + _posix=no ;; esac +echo $_posix if test "$_posix" = yes ; then DEFINES="$DEFINES -DPOSIX" @@ -2900,40 +2937,6 @@ define_in_config_if_yes "$_opengles" "USE_GLES" # -# Check whether we can use x86 asm routines -# -echo_n "Compiling for x86... " -case $_host_cpu in - i386|i486|i586|i686) - _have_x86=yes - ;; - *) - _have_x86=no - ;; -esac -echo "$_have_x86" -define_in_config_h_if_yes $_have_x86 'HAVE_X86' - -# -# Check whether to use optimized ARM asm -# -echo_n "Compiling for ARM... " -case $_host_cpu in - arm*) - _arm_asm=yes - ;; - *) - _arm_asm=no - ;; -esac -echo "$_arm_asm" -define_in_config_if_yes "$_arm_asm" 'USE_ARM_SCALER_ASM' -define_in_config_if_yes "$_arm_asm" 'USE_ARM_SOUND_ASM' -define_in_config_if_yes "$_arm_asm" 'USE_ARM_SMUSH_ASM' -define_in_config_if_yes "$_arm_asm" 'USE_ARM_GFX_ASM' -define_in_config_if_yes "$_arm_asm" 'USE_ARM_COSTUME_ASM' - -# # Check for nasm # if test "$_have_x86" = yes ; then |