X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=configure;h=4d3bb5f8bf629f6a8cb824460ca4e5f02ed23d60;hp=0618ac2119dfecfbdd4db3324217adefeaaf8dc9;hb=92ca1ba64e939942ab05aaa3d578f0d165634275;hpb=f89fa2d9b2c3e90a361a38656cb45e20cf7cf097 diff --git a/configure b/configure index 0618ac21..4d3bb5f8 100755 --- a/configure +++ b/configure @@ -24,8 +24,7 @@ compile_binary() check_define() { - echo "" > $TMPC - $CC -E -dD $CFLAGS $TMPC | grep -q $1 || return 1 + $CC -E -dD $CFLAGS include/arm_features.h | grep -q $1 || return 1 return 0 } @@ -36,18 +35,24 @@ platform_list="generic pandora maemo caanoo libretro" platform="generic" builtin_gpu_list="peops unai neon" builtin_gpu="" -sound_driver_list="oss alsa sdl pulseaudio libretro" +sound_driver_list="oss alsa pulseaudio sdl libretro" sound_drivers="" plugins="plugins/spunull/spunull.so \ plugins/dfxvideo/gpu_peops.so plugins/gpu_unai/gpu_unai.so" ram_fixed="no" drc_cache_base="no" +have_armv5="" have_armv6="" have_armv7="" have_arm_neon="" have_tslib="" +have_gles="" enable_dynarec="yes" need_sdl="no" +need_libpicofe="yes" +need_warm="no" +CFLAGS_GLES="" +LDLIBS_GLES="" # these are for known platforms optimize_cortexa8="no" optimize_arm926ej="no" @@ -91,9 +96,11 @@ set_platform() ram_fixed="yes" drc_cache_base="yes" optimize_arm926ej="yes" + need_warm="yes" ;; libretro) sound_drivers="libretro" + need_libpicofe="no" ;; *) fail "unsupported platform: $platform" @@ -156,15 +163,37 @@ if [ "x$sound_drivers" != "x" ]; then done fi +if [ "$need_libpicofe" = "yes" ]; then + if ! test -f "frontend/libpicofe/README"; then + fail "libpicofe is missing, please run 'git submodule init && git submodule update'" + fi +fi + +if [ "$need_warm" = "yes" ]; then + if ! test -f "frontend/warm/README"; then + fail "wARM is missing, please run 'git submodule init && git submodule update'" + fi +fi + +# basic compiler test +cat > $TMPC < +int main(void) { return 0; } +EOF +if ! compile_binary; then + fail "compiler test failed, please check config.log" +fi + if [ -z "$ARCH" ]; then - ARCH=`$CC -v 2>&1 | grep -i 'target:' | awk '{print $2}' \ - | awk -F '-' '{print $1}'` + ARCH=`$CC -dumpmachine | awk -F '-' '{print $1}'` fi -# ARM stuff -if [ "$ARCH" = "arm" ]; then +case "$ARCH" in +arm*) + # ARM stuff + ARCH="arm" + if [ "$optimize_cortexa8" = "yes" ]; then - # both: -mfpu=neon CFLAGS="$CFLAGS -mcpu=cortex-a8 -mtune=cortex-a8" ASFLAGS="$ASFLAGS -mcpu=cortex-a8" fi @@ -177,15 +206,22 @@ if [ "$ARCH" = "arm" ]; then # detect NEON from user-supplied cflags to enable asm code have_arm_neon=`check_define __ARM_NEON__ && echo yes` || true fi - if [ "x$have_armv6" = "x" ]; then - have_armv6=`check_define __ARM_ARCH_6 && echo yes` || true - fi if [ "x$have_armv7" = "x" ]; then - if check_define __ARM_ARCH_7A__; then - have_armv6="yes" + if check_define HAVE_ARMV7; then have_armv7="yes" + have_armv6="yes" + have_armv5="yes" fi fi + if [ "x$have_armv6" = "x" ]; then + if check_define HAVE_ARMV6; then + have_armv6="yes" + have_armv5="yes" + fi + fi + if [ "x$have_armv5" = "x" ]; then + have_armv5=`check_define HAVE_ARMV5 && echo yes` || true + fi if [ "x$builtin_gpu" = "x" ]; then if [ "$have_arm_neon" = "yes" ]; then @@ -198,45 +234,51 @@ if [ "$ARCH" = "arm" ]; then fi fi - # set mfpu and mfloat-abi if they are not set + # automatically set mfpu and mfloat-abi if they are not set if [ "$have_arm_neon" = "yes" ]; then - echo "$CFLAGS" | grep -q -- '-mfpu=' || CFLAGS="$CFLAGS -mfpu=neon" - echo "$ASFLAGS" | grep -q -- '-mfpu=' || ASFLAGS="$ASFLAGS -mfpu=neon" + fpu="neon" elif [ "$have_armv6" = "yes" ]; then - echo "$CFLAGS" | grep -q -- '-mfpu=' || CFLAGS="$CFLAGS -mfpu=vfp" - echo "$ASFLAGS" | grep -q -- '-mfpu=' || ASFLAGS="$ASFLAGS -mfpu=vfp" + fpu="vfp" fi - if [ "$have_armv6" = "yes" ]; then - echo "$CFLAGS" | grep -q -- '-mfloat-abi=' || CFLAGS="$CFLAGS -mfloat-abi=softfp" - echo "$ASFLAGS" | grep -q -- '-mfloat-abi=' || ASFLAGS="$ASFLAGS -mfloat-abi=softfp" + if [ "x$fpu" != "x" ]; then + echo "$CFLAGS" | grep -q -- '-mfpu=' || CFLAGS="$CFLAGS -mfpu=$fpu" + echo "$ASFLAGS" | grep -q -- '-mfpu=' || ASFLAGS="$ASFLAGS -mfpu=$fpu" + floatabi_set_by_gcc=`$CC -v 2>&1 | grep -q -- --with-float= && echo yes` || true + if [ "$floatabi_set_by_gcc" != "yes" ]; then + echo "$CFLAGS" | grep -q -- '-mfloat-abi=' || CFLAGS="$CFLAGS -mfloat-abi=softfp" + echo "$ASFLAGS" | grep -q -- '-mfloat-abi=' || ASFLAGS="$ASFLAGS -mfloat-abi=softfp" + fi fi - # must disable -mthumb as recompiler can't handle it + # must disable thumb as recompiler can't handle it if check_define __thumb__; then - CFLAGS="$CFLAGS -mno-thumb" + CFLAGS="$CFLAGS -marm" fi - if [ "$have_armv7" = "yes" ]; then - ASFLAGS="$ASFLAGS --defsym HAVE_ARMV7=1" - else - ASFLAGS="$ASFLAGS --defsym HAVE_ARMV7=0" + # warn about common mistakes + if [ "$have_armv5" != "yes" ]; then + if ! echo "$CFLAGS" | grep -q -- '-mcpu=\|-march='; then + echo "Warning: compiling for ARMv4, is that really what you want?" + echo "You probably should specify -mcpu= or -march= like this:" + echo " CFLAGS=-march=armv6 ./configure ..." + fi fi -else + if [ "$have_arm_neon" = "yes" -a "$have_armv7" != "yes" ]; then + echo "Warning: compiling for NEON, but not ARMv7?" + echo "You probably want to specify -mcpu= or -march= like this:" + echo " CFLAGS=-march=armv7-a ./configure ..." + fi + ;; +*) # dynarec only available on ARM enable_dynarec="no" -fi + ;; +esac if [ "x$builtin_gpu" = "x" ]; then builtin_gpu="peops" fi -if [ "$ARCH" = "x86_64" ]; then - # currently we are full of 32bit assumptions, - # at least savestate compatibility will break without these - CFLAGS="$CFLAGS -m32" - LDFLAGS="$LDFLAGS -m32" -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" @@ -258,7 +300,7 @@ maemo) ;; libretro) CFLAGS="$CFLAGS -fPIC" - LDFLAGS="$LDFLAGS -shared" + MAIN_LDFLAGS="$MAIN_LDFLAGS -shared -Wl,--no-undefined" ;; esac @@ -267,20 +309,11 @@ check_zlib() { cat > $TMPC < - void main() { uncompress(0, 0, 0, 0); } + int main(void) { uncompress(0, 0, 0, 0); } EOF compile_binary } -check_bzlib() -{ - cat > $TMPC < - void main() { BZ2_bzBuffToBuffDecompress(0, 0, 0, 0, 0, 0); } -EOF - compile_object -} - check_libpng() { cat > $TMPC < $TMPC < + void main() { pa_threaded_mainloop_new(); } +EOF + compile_binary "$@" +} + check_sdl() { cat > $TMPC <"; then + MAIN_LDLIBS="-lpulse $MAIN_LDLIBS" + check_pulseaudio || fail "pulseaudio support is missing" + fi fi -if [ "$need_sdl" == "yes" ]; then +if [ "$need_sdl" = "yes" ]; then + 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" - check_sdl || fail "please install libsdl1.2-dev" + check_sdl || fail "please install libsdl (libsdl1.2-dev)" fi # check for tslib (only headers needed) @@ -366,23 +416,42 @@ EOF fi fi +# check for VideoCore stuff for Raspberry Pi +if [ -d /opt/vc/include -a -d /opt/vc/lib ]; then + CFLAGS_GLES="$CFLAGS_GLES -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads" + LDLIBS_GLES="$LDLIBS_GLES -L/opt/vc/lib" +fi + # check for GLES headers cat > $TMPC < -#include #include -void *test(void) { - return eglGetDisplay( (EGLNativeDisplayType)0 ); +int main(void) { + return (int)eglGetDisplay( (EGLNativeDisplayType)0 ); } EOF -if compile_object; then - plugins="$plugins plugins/gpu-gles/gpu_gles.so" +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" 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" fi +cat > $TMPC < $config_mak printf "# Configured with:" >> $config_mak @@ -419,6 +492,7 @@ echo "AS = $AS" >> $config_mak echo "CFLAGS += $CFLAGS" >> $config_mak echo "ASFLAGS += $ASFLAGS" >> $config_mak echo "LDFLAGS += $LDFLAGS" >> $config_mak +echo "MAIN_LDFLAGS += $MAIN_LDFLAGS" >> $config_mak echo "MAIN_LDLIBS += $MAIN_LDLIBS" >> $config_mak echo "PLUGIN_CFLAGS += $PLUGIN_CFLAGS" >> $config_mak echo >> $config_mak @@ -430,27 +504,18 @@ echo "ARCH = $ARCH" >> $config_mak echo "PLATFORM = $platform" >> $config_mak echo "BUILTIN_GPU = $builtin_gpu" >> $config_mak echo "SOUND_DRIVERS = $sound_drivers" >> $config_mak -if [ "$ARCH" = "arm" ]; then - echo "PLUGINS = $plugins" >> $config_mak -else - echo -n "PLUGINS =" >> $config_mak - for p in $plugins; do - echo -n " ${p}.${ARCH}" >> $config_mak - done - echo >> $config_mak -fi -if [ "$have_armv6" = "yes" ]; then - echo "HAVE_ARMV6 = 1" >> $config_mak -fi -if [ "$have_armv7" = "yes" ]; then - echo "HAVE_ARMV7 = 1" >> $config_mak -fi +echo "PLUGINS = $plugins" >> $config_mak if [ "$have_arm_neon" = "yes" ]; then echo "HAVE_NEON = 1" >> $config_mak fi if [ "$have_tslib" = "yes" ]; then echo "HAVE_TSLIB = 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 fi