X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=configure;h=2352ec6aa182f1d84304a714912b59150aac5445;hp=c3ff68fa2740017657f12db7706c41f545a9d93f;hb=HEAD;hpb=bebe989ba22f0bac230a0b8a75617ae895ea274f diff --git a/configure b/configure index c3ff68fa..64bb76af 100755 --- a/configure +++ b/configure @@ -24,37 +24,43 @@ compile_binary() check_define() { - $CC -E -dD $CFLAGS include/arm_features.h | grep -q "$1" || return 1 + $CC -E -dD $CFLAGS include/arm_features.h | grep -v '#undef' | grep -q "$1" || return 1 return 0 } check_define_val() { - $CC -E -dD $CFLAGS include/arm_features.h | grep "$1" | awk '{print $3}' + $CC -E -dD $CFLAGS include/arm_features.h | grep -v '#undef' | grep "$1" | awk '{print $3}' return 0 } # setting options to "yes" or "no" will make that choice default, # "" means "autodetect". -platform_list="generic pandora maemo caanoo libretro" +platform_list="generic pandora maemo caanoo" platform="generic" -builtin_gpu_list="peops unai neon" +builtin_gpu_list="neon peops unai" +dynarec_list="ari64 lightrec none" builtin_gpu="" -sound_driver_list="oss alsa pulseaudio sdl libretro" +sound_driver_list="oss alsa pulseaudio sdl" sound_drivers="" -plugins="plugins/spunull/spunull.so \ -plugins/dfxvideo/gpu_peops.so plugins/gpu_unai/gpu_unai.so" -ram_fixed="no" +plugins="" drc_cache_base="no" have_armv5="" have_armv6="" have_armv7="" have_arm_neon="" +have_arm_neon_asm="" +have_neon_gpu="" have_tslib="" +have_evdev="" have_gles="" have_c64x_dsp="" -enable_dynarec="yes" +have_fsections="yes" +have_dynamic="yes" +gnu_linker="yes" +dynarec="" +multithreading="yes" need_sdl="no" need_xlib="no" need_libpicofe="yes" @@ -66,16 +72,47 @@ optimize_cortexa8="no" optimize_arm926ej="no" # hardcoded stuff -CC="${CC-${CROSS_COMPILE}gcc}" -CXX="${CXX-${CROSS_COMPILE}g++}" +case "${OSTYPE}" in + *BSD*|*darwin*) + CC="clang" + CXX="clang++" + if test -d /opt/local/include; then + # MacPorts + CFLAGS="$CFLAGS -I/opt/local/include" + LDFLAGS="$LDFLAGS -L/opt/local/lib" + fi + if test -d /opt/local/include; then + CFLAGS="$CFLAGS -I/usr/local/include" + LDFLAGS="$LDFLAGS -L/usr/local/lib" + fi + MAKE=gmake + gnu_linker="no" + ;; + *) + CC="${CC-${CROSS_COMPILE}gcc}" + CXX="${CXX-${CROSS_COMPILE}g++}" + ;; +esac AS="${AS-${CROSS_COMPILE}as}" AR="${AS-${CROSS_COMPILE}ar}" MAIN_LDLIBS="$LDLIBS -ldl -lm -lpthread" config_mak="config.mak" +case "${OSTYPE}" in + *BSD*|*darwin*) + SYSROOT="$sysroot" + [ "x${SDL_CONFIG}" = "x" ] && SDL_CONFIG="${SYSROOT}/usr/local/bin/sdl-config" + ;; + *) + SYSROOT="$(${CC} --print-sysroot 2> /dev/null || true)" + [ "x${SDL_CONFIG}" = "x" ] && SDL_CONFIG="${SYSROOT}/usr/bin/sdl-config" + ;; +esac + fail() { echo "$@" + if test -n "$DUMP_CONFIG_LOG"; then cat config.log; fi exit 1 } @@ -88,28 +125,26 @@ set_platform() ;; pandora) sound_drivers="oss alsa" - ram_fixed="yes" drc_cache_base="yes" optimize_cortexa8="yes" have_arm_neon="yes" + have_neon_gpu="yes" need_xlib="yes" + multithreading="no" ;; maemo) - ram_fixed="yes" drc_cache_base="yes" optimize_cortexa8="yes" have_arm_neon="yes" + have_neon_gpu="yes" + multithreading="no" ;; caanoo) sound_drivers="oss" - ram_fixed="yes" drc_cache_base="yes" optimize_arm926ej="yes" need_warm="yes" - ;; - libretro) - sound_drivers="libretro" - need_libpicofe="no" + multithreading="no" ;; *) fail "unsupported platform: $platform" @@ -132,7 +167,17 @@ for opt do ;; --disable-neon) have_arm_neon="no" ;; - --disable-dynarec) enable_dynarec="no" + --enable-threads) multithreading="yes" + ;; + --disable-threads) multithreading="no" + ;; + --enable-dynamic) have_dynamic="yes" + ;; + --disable-dynamic) have_dynamic="no" + ;; + --dynarec=*) dynarec="$optarg" + ;; + --disable-dynarec) dynarec="no" ;; *) echo "ERROR: unknown option $opt"; show_help="yes" ;; @@ -150,8 +195,12 @@ if [ "$show_help" = "yes" ]; then echo " available: $sound_driver_list" echo " --enable-neon" echo " --disable-neon enable/disable ARM NEON optimizations [guessed]" - echo " --disable-dynarec disable dynamic recompiler" - echo " (dynarec is only available and enabled on ARM)" + echo " --enable-threads" + echo " --disable-threads enable/disable multithreaded features [guessed]" + echo " --enable-dynamic" + echo " --disable-dynamic enable/disable dynamic loading obj. eg.plugins [guessed]" + echo " --dynarec=NAME select dynamic recompiler [guessed]" + echo " available: $dynarec_list" echo "influential environment variables:" echo " CROSS_COMPILE CC CXX AS AR CFLAGS ASFLAGS LDFLAGS LDLIBS" exit 1 @@ -198,6 +247,14 @@ if [ -z "$ARCH" ]; then fi case "$ARCH" in +aarch64|arm64) + have_arm_neon="yes" + have_neon_gpu="yes" + have_arm_neon_asm="no" + if [ "x$dynarec" = "x" ]; then + dynarec="ari64" + fi + ;; arm*) # ARM stuff ARCH="arm" @@ -212,7 +269,7 @@ arm*) fi if [ "x$have_arm_neon" = "x" ]; then - # detect NEON from user-supplied cflags to enable asm code + # detect NEON from user-supplied cflags to enable neon code have_arm_neon=`check_define __ARM_NEON__ && echo yes` || true fi if [ "x$have_armv7" = "x" ]; then @@ -232,23 +289,17 @@ arm*) have_armv5=`check_define HAVE_ARMV5 && echo yes` || true fi - if [ "x$builtin_gpu" = "x" ]; then - if [ "$have_arm_neon" = "yes" ]; then - builtin_gpu="neon" - elif [ "$have_armv7" != "yes" ]; then - # pre-ARMv7 hardware is usually not fast enough for peops - builtin_gpu="unai" - else - builtin_gpu="peops" - fi + if [ "x$dynarec" = "x" ]; then + dynarec="ari64" fi - # automatically set mfpu and mfloat-abi if they are not set if [ "$have_arm_neon" = "yes" ]; then + have_neon_gpu="yes" fpu="neon" elif [ "$have_armv6" = "yes" ]; then fpu="vfp" fi + # automatically set mfpu and mfloat-abi if they are not set if [ "x$fpu" != "x" ]; then echo "$CFLAGS" | grep -q -- '-mfpu=' || CFLAGS="$CFLAGS -mfpu=$fpu" echo "$ASFLAGS" | grep -q -- '-mfpu=' || ASFLAGS="$ASFLAGS -mfpu=$fpu" @@ -277,24 +328,37 @@ arm*) echo "You probably want to specify -mcpu= or -march= like this:" echo " CFLAGS=-march=armv7-a ./configure ..." fi + have_arm_neon_asm=$have_arm_neon + ;; +x86_64) + if [ "x$dynarec" = "x" ]; then + dynarec="lightrec" + fi + have_neon_gpu="yes" ;; *) - # dynarec only available on ARM - enable_dynarec="no" + if [ "x$dynarec" = "x" ]; then + dynarec="lightrec" + fi ;; esac if [ "x$builtin_gpu" = "x" ]; then - builtin_gpu="peops" + if [ "$have_neon_gpu" = "yes" ]; then + builtin_gpu="neon" + elif [ "$ARCH" = "arm" -a "$have_armv7" != "yes" ]; then + # pre-ARMv7 hardware is usually not fast enough for peops + builtin_gpu="unai" + else + builtin_gpu="peops" + fi fi # supposedly we can avoid -fPIC on armv5 for slightly better performace? if [ "$ARCH" != "arm" -o "$have_armv6" = "yes" ]; then PLUGIN_CFLAGS="$PLUGIN_CFLAGS -fPIC" -fi - -if [ "$ram_fixed" = "yes" ]; then - CFLAGS="$CFLAGS -DRAM_FIXED" +else + PLUGIN_CFLAGS="$PLUGIN_CFLAGS -fno-PIC" fi case "$platform" in @@ -304,10 +368,6 @@ generic) maemo) CFLAGS="$CFLAGS -DMAEMO -DMAEMO_CHANGES" ;; -libretro) - CFLAGS="$CFLAGS -fPIC" - MAIN_LDFLAGS="$MAIN_LDFLAGS -shared -Wl,--no-undefined" - ;; esac # header/library presence tests @@ -361,7 +421,7 @@ check_sdl() { cat > $TMPC < - void main() { SDL_OpenAudio(0, 0); } + int main(int argc, char *argv[]) { SDL_OpenAudio(0, 0); } EOF compile_binary "$@" } @@ -402,7 +462,7 @@ if [ "x$sound_drivers" = "x" ]; then sound_drivers="$sound_drivers pulseaudio" MAIN_LDLIBS="-lpulse $MAIN_LDLIBS" fi - if [ "$need_sdl" = "yes" ] || check_sdl `sdl-config --cflags --libs`; then + if [ "$need_sdl" = "yes" ] || check_sdl `${SDL_CONFIG} --cflags --libs`; then sound_drivers="$sound_drivers sdl" need_sdl="yes" fi @@ -421,10 +481,10 @@ else fi if [ "$need_sdl" = "yes" ]; then - which sdl-config > /dev/null || \ + which ${SDL_CONFIG} > /dev/null || \ fail "sdl-config is missing; please install libsdl (libsdl1.2-dev)" - CFLAGS="$CFLAGS `sdl-config --cflags`" - MAIN_LDLIBS="`sdl-config --libs` $MAIN_LDLIBS" + CFLAGS="$CFLAGS `${SDL_CONFIG} --cflags`" + MAIN_LDLIBS="`${SDL_CONFIG} --libs` $MAIN_LDLIBS" check_sdl || fail "please install libsdl (libsdl1.2-dev)" fi @@ -441,15 +501,22 @@ EOF fi fi -# check for VideoCore stuff for Raspberry Pi -if [ -d /opt/vc/include -a -d /opt/vc/lib -a "$VIDEOCORE" != "no" ]; then - CFLAGS_GLES="$CFLAGS_GLES -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux" - LDLIBS_GLES="$LDLIBS_GLES -L/opt/vc/lib" - if [ -f /opt/vc/lib/libbcm_host.so ]; then - LDLIBS_GLES="$LDLIBS_GLES -lbcm_host" +# evdev +if [ "x$have_evdev" = "x" ]; then + cat > $TMPC < +EOF + have_evdev="no" + if compile_object; then + have_evdev="yes" + else + cat > $TMPC < +EOF + if compile_object; then + have_evdev="yes" + fi fi - need_xlib="yes" - VIDEOCORE="yes" fi # check for GLES headers @@ -460,26 +527,39 @@ int main(void) { return (int)eglGetDisplay( (EGLNativeDisplayType)0 ); } EOF -if [ "$VIDEOCORE" = "yes" ] && compile_binary $CFLAGS_GLES -lbrcmEGL -lbrcmGLESv2 $LDLIBS_GLES; then - have_gles="yes" - LDLIBS_GLES="-lbrcmEGL -lbrcmGLESv2 $LDLIBS_GLES" -elif compile_binary $CFLAGS_GLES -lEGL -lGLES_CM $LDLIBS_GLES; then +if compile_binary $CFLAGS_GLES -lEGL -lGLES_CM $LDLIBS_GLES; then have_gles="yes" LDLIBS_GLES="-lEGL -lGLES_CM $LDLIBS_GLES" elif compile_binary $CFLAGS_GLES -lEGL -lGLESv1_CM $LDLIBS_GLES; then have_gles="yes" LDLIBS_GLES="-lEGL -lGLESv1_CM $LDLIBS_GLES" +elif compile_object $CFLAGS_GLES; then + have_gles="yes" fi if check_c64_tools; then have_c64x_dsp="yes" fi -if [ "$have_gles" = "yes" ]; then - plugins="$plugins plugins/gpu-gles/gpu_gles.so" -fi -if [ "$have_arm_neon" = "yes" -a "$builtin_gpu" != "neon" ]; then - plugins="$plugins plugins/gpu_neon/gpu_neon.so" +# declare available dynamic plugins +if [ "$have_dynamic" = "yes" ]; then + plugins="plugins/spunull/spunull.so" + + if [ "$builtin_gpu" != "peops" ]; then + plugins="$plugins plugins/dfxvideo/gpu_peops.so" + fi + if [ "$builtin_gpu" != "unai" ]; then + plugins="$plugins plugins/gpu_unai/gpu_unai.so" + fi + if [ "$have_gles" = "yes" -a "x$LDLIBS_GLES" != "x" ]; then + plugins="$plugins plugins/gpu-gles/gpu_gles.so" + fi + if [ "$have_neon_gpu" = "yes" -a "$builtin_gpu" != "neon" ]; then + plugins="$plugins plugins/gpu_neon/gpu_neon.so" + fi +else + have_dynamic="no" + CFLAGS="$CFLAGS -DNO_DYLIB" fi # check for xlib (only headers needed) @@ -509,6 +589,7 @@ done test "x$have_armv6" != "x" || have_armv6="no" test "x$have_armv7" != "x" || have_armv7="no" test "x$have_arm_neon" != "x" || have_arm_neon="no" +test "x$have_arm_neon_asm" != "x" || have_arm_neon_asm="no" test "x$have_gles" != "x" || have_gles="no" test "x$have_c64x_dsp" != "x" || have_c64x_dsp="no" @@ -521,16 +602,23 @@ echo "C compiler $CC" echo "C compiler flags $CFLAGS" echo "libraries $MAIN_LDLIBS" echo "linker flags $LDFLAGS$MAIN_LDFLAGS" -echo "enable dynarec $enable_dynarec" +echo "dynarec $dynarec" +if [ "$ARCH" = "arm" -o "$ARCH" = "aarch64" ]; then + echo "enable ARM NEON $have_arm_neon" +fi if [ "$ARCH" = "arm" ]; then echo "ARMv7 optimizations $have_armv7" - echo "enable ARM NEON $have_arm_neon" echo "TI C64x DSP support $have_c64x_dsp" fi -echo "tslib support $have_tslib" +if [ "$have_dynamic" = "yes" ]; then + echo "tslib support $have_tslib" +else + echo "tslib does NOT support staticly linked build" +fi if [ "$platform" = "generic" ]; then echo "OpenGL ES output $have_gles" fi +echo "multithreading $multithreading" echo "# Automatically generated by configure" > $config_mak printf "# Configured with:" >> $config_mak @@ -548,34 +636,48 @@ echo "MAIN_LDLIBS += $MAIN_LDLIBS" >> $config_mak echo "PLUGIN_CFLAGS += $PLUGIN_CFLAGS" >> $config_mak echo >> $config_mak -if [ "$platform" = "libretro" ]; then - echo "TARGET = libretro.so" >> $config_mak -fi echo "ARCH = $ARCH" >> $config_mak echo "PLATFORM = $platform" >> $config_mak echo "BUILTIN_GPU = $builtin_gpu" >> $config_mak echo "SOUND_DRIVERS = $sound_drivers" >> $config_mak echo "PLUGINS = $plugins" >> $config_mak +if [ "$have_neon_gpu" = "yes" ]; then + echo "HAVE_NEON_GPU = 1" >> $config_mak +fi if [ "$have_arm_neon" = "yes" ]; then echo "HAVE_NEON = 1" >> $config_mak fi -if [ "$have_tslib" = "yes" ]; then +if [ "$have_arm_neon_asm" = "yes" ]; then + echo "HAVE_NEON_ASM = 1" >> $config_mak +fi +if [ "$have_tslib" = "yes" -a "$have_dynamic" = "yes" ]; then echo "HAVE_TSLIB = 1" >> $config_mak fi +if [ "$have_evdev" = "yes" ]; then + echo "HAVE_EVDEV = 1" >> $config_mak +fi if [ "$have_gles" = "yes" ]; then echo "HAVE_GLES = 1" >> $config_mak echo "CFLAGS_GLES = $CFLAGS_GLES" >> $config_mak echo "LDLIBS_GLES = $LDLIBS_GLES" >> $config_mak fi -if [ "$enable_dynarec" = "yes" ]; then - echo "USE_DYNAREC = 1" >> $config_mak +if [ "$have_fsections" = "no" ]; then + echo "NO_FSECTIONS = 1" >> $config_mak +fi +if [ "$gnu_linker" = "yes" ]; then + echo "GNU_LINKER = 1" >> $config_mak fi +echo "DYNAREC = $dynarec" >> $config_mak if [ "$drc_cache_base" = "yes" ]; then - echo "DRC_CACHE_BASE = 1" >> $config_mak + echo "BASE_ADDR_DYNAMIC = 1" >> $config_mak fi if [ "$have_c64x_dsp" = "yes" ]; then echo "HAVE_C64_TOOLS = 1" >> $config_mak fi +if [ "$multithreading" = "yes" ]; then + echo "USE_ASYNC_CDROM = 1" >> $config_mak + echo "NDRC_THREAD = 1" >> $config_mak +fi # use pandora's skin (for now) test -e skin || ln -s frontend/pandora/skin skin