X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=configure;h=e401902e2a4826bac0e699802abb0d2a40968730;hp=053dba90400546ca9fc90cdb6074c0c38799c2cb;hb=db1262095fed1b02260cc4ae4a42cdd31b8ef0a4;hpb=665f33e1e8ce2e40a7939a33075c3bce1c90790c diff --git a/configure b/configure index 053dba90..e401902e 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,20 +35,25 @@ 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_xlib="no" need_libpicofe="yes" need_warm="no" +CFLAGS_GLES="" +LDLIBS_GLES="" # these are for known platforms optimize_cortexa8="no" optimize_arm926ej="no" @@ -59,7 +63,7 @@ CC="${CC-${CROSS_COMPILE}gcc}" CXX="${CXX-${CROSS_COMPILE}g++}" AS="${AS-${CROSS_COMPILE}as}" AR="${AS-${CROSS_COMPILE}ar}" -MAIN_LDLIBS="$LDLIBS -ldl -lm" +MAIN_LDLIBS="$LDLIBS -ldl -lm -lpthread" config_mak="config.mak" fail() @@ -81,6 +85,7 @@ set_platform() drc_cache_base="yes" optimize_cortexa8="yes" have_arm_neon="yes" + need_xlib="yes" ;; maemo) ram_fixed="yes" @@ -172,13 +177,24 @@ if [ "$need_warm" = "yes" ]; then 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 CFLAGS="$CFLAGS -mcpu=cortex-a8 -mtune=cortex-a8" ASFLAGS="$ASFLAGS -mcpu=cortex-a8" @@ -192,15 +208,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 @@ -215,26 +238,44 @@ if [ "$ARCH" = "arm" ]; then # 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 - floatabi_set_by_gcc=`$CC -v 2>&1 | grep -q -- --with-float= && echo yes` || true - if [ "$floatabi_set_by_gcc" != "yes" -a "$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 thumb as recompiler can't handle it if check_define __thumb__; then CFLAGS="$CFLAGS -marm" fi -else + + # 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 + 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" @@ -254,10 +295,7 @@ generic) need_sdl="yes" ;; maemo) - maemo_cflags=`pkg-config --cflags hildon-1` - maemo_ldlibs=`pkg-config --libs hildon-1` - CFLAGS="$CFLAGS -DMAEMO -DMAEMO_CHANGES $maemo_cflags" - MAIN_LDLIBS="$MAIN_LDLIBS $maemo_ldlibs" + CFLAGS="$CFLAGS -DMAEMO -DMAEMO_CHANGES" ;; libretro) CFLAGS="$CFLAGS -fPIC" @@ -303,6 +341,15 @@ EOF compile_binary "$@" } +check_pulseaudio() +{ + cat > $TMPC < + void main() { pa_threaded_mainloop_new(); } +EOF + compile_binary "$@" +} + check_sdl() { cat > $TMPC < $TMPC < + void *f() { return XOpenDisplay(0); } +EOF + compile_object "$@" +} + MAIN_LDLIBS="$MAIN_LDLIBS -lz" check_zlib || fail "please install zlib (libz-dev)" @@ -325,6 +381,10 @@ if [ "x$sound_drivers" = "x" ]; then sound_drivers="$sound_drivers alsa" MAIN_LDLIBS="-lasound $MAIN_LDLIBS" fi + if check_pulseaudio -lpulse; then + sound_drivers="$sound_drivers pulseaudio" + MAIN_LDLIBS="-lpulse $MAIN_LDLIBS" + fi if [ "$need_sdl" = "yes" ] || check_sdl `sdl-config --cflags --libs`; then sound_drivers="$sound_drivers sdl" need_sdl="yes" @@ -337,6 +397,10 @@ else MAIN_LDLIBS="-lasound $MAIN_LDLIBS" check_alsa || fail "please install libasound2-dev" fi + if echo $sound_drivers | grep -q "\"; then + MAIN_LDLIBS="-lpulse $MAIN_LDLIBS" + check_pulseaudio || fail "pulseaudio support is missing" + fi fi if [ "$need_sdl" = "yes" ]; then @@ -360,23 +424,41 @@ 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 -I/opt/vc/include/interface/vmcs_host/linux" + LDLIBS_GLES="$LDLIBS_GLES -L/opt/vc/lib" + need_xlib="yes" +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 +# check for xlib (only headers needed) +if [ "x$need_xlib" = "xyes" ]; then + check_xlib_headers || fail "please install libx11-dev" +fi + cat > $TMPC < $config_mak printf "# Configured with:" >> $config_mak @@ -439,6 +525,11 @@ 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