X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=picodrive.git;a=blobdiff_plain;f=configure;h=1310ab2c9994f93abb4dbaa95cff6ee957bd52b8;hp=c3309b5fe93db800c1e747856f53666be06f7743;hb=HEAD;hpb=720bfc5d9f6fa22a1ff7bdf00193f20d6be91ca7 diff --git a/configure b/configure index c3309b5..1310ab2 100755 --- a/configure +++ b/configure @@ -2,9 +2,9 @@ # some elements originated from qemu configure set -e -TMPC="/tmp/pcsx-conf-${RANDOM}-$$-${RANDOM}.c" -TMPO="/tmp/pcsx-conf-${RANDOM}-$$-${RANDOM}.o" -TMPB="/tmp/pcsx-conf-${RANDOM}-$$-${RANDOM}" +TMPC="/tmp/picodrive-conf-${RANDOM}-$$-${RANDOM}.c" +TMPO="/tmp/picodrive-conf-${RANDOM}-$$-${RANDOM}.o" +TMPB="/tmp/picodrive-conf-${RANDOM}-$$-${RANDOM}" trap "rm -f $TMPC $TMPO $TMPB" EXIT INT QUIT TERM rm -f config.log @@ -17,7 +17,7 @@ compile_object() compile_binary() { - c="$CC $CFLAGS $TMPC -o $TMPB $LDFLAGS $MAIN_LDLIBS $@" + c="$CC $CFLAGS $TMPC -o $TMPB $LDFLAGS $@" echo $c >> config.log $c >> config.log 2>&1 } @@ -31,7 +31,7 @@ check_define() # setting options to "yes" or "no" will make that choice default, # "" means "autodetect". -platform_list="generic pandora" +platform_list="generic pandora gp2x opendingux rpi1 rpi2" platform="generic" sound_driver_list="oss alsa sdl" sound_drivers="" @@ -39,18 +39,22 @@ have_armv5="" have_armv6="" have_armv7="" have_arm_neon="" -have_tslib="" -enable_dynarec="yes" +have_libavcodec="" need_sdl="no" need_xlib="no" # these are for known platforms optimize_cortexa8="no" +optimize_cortexa7="no" +optimize_arm1176jzf="no" optimize_arm926ej="no" +optimize_arm920="no" # hardcoded stuff CC="${CC-${CROSS_COMPILE}gcc}" CXX="${CXX-${CROSS_COMPILE}g++}" AS="${AS-${CROSS_COMPILE}as}" +STRIP="${STRIP-${CROSS_COMPILE}strip}" +test -n "$SDL_CONFIG" || SDL_CONFIG="`$CC --print-sysroot 2> /dev/null || true`/usr/bin/sdl-config" MAIN_LDLIBS="$LDLIBS -lm" config_mak="config.mak" @@ -65,13 +69,33 @@ set_platform() { platform=$1 case "$platform" in + rpi1) + optimize_arm1176jzf="yes" + ;; + rpi2) + optimize_cortexa7="yes" + have_arm_neon="yes" + ;; generic) ;; + opendingux) + sound_drivers="sdl" + ;; pandora) sound_drivers="oss alsa" optimize_cortexa8="yes" have_arm_neon="yes" ;; + gp2x) + sound_drivers="oss" + optimize_arm920="yes" + CFLAGS="$CFLAGS -D__GP2X__" + if [ "$CROSS_COMPILE" = "arm-linux-" ]; then + # still using static, dynamic linking slows Wiz 1-10% + # also libm on F100 is not compatible + MAIN_LDLIBS="$MAIN_LDLIBS -static" + fi + ;; *) fail "unsupported platform: $platform" ;; @@ -87,12 +111,6 @@ for opt do ;; --sound-drivers=*) sound_drivers="$optarg" ;; - --enable-neon) have_arm_neon="yes" - ;; - --disable-neon) have_arm_neon="no" - ;; - --disable-dynarec) enable_dynarec="no" - ;; *) echo "ERROR: unknown option $opt"; show_help="yes" ;; esac @@ -105,12 +123,8 @@ if [ "$show_help" = "yes" ]; then echo " available: $platform_list" echo " --sound-drivers=LIST sound output drivers [guessed]" 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 "influential environment variables:" - echo " CROSS_COMPILE CC CXX AS CFLAGS ASFLAGS LDFLAGS LDLIBS" + echo " CROSS_COMPILE CC CXX AS STRIP CFLAGS ASFLAGS LDFLAGS LDLIBS" exit 1 fi @@ -154,10 +168,22 @@ arm*) CFLAGS="$CFLAGS -mcpu=cortex-a8 -mtune=cortex-a8" ASFLAGS="$ASFLAGS -mcpu=cortex-a8" fi + if [ "$optimize_cortexa7" = "yes" ]; then + CFLAGS="$CFLAGS -mcpu=cortex-a7" + ASFLAGS="$ASFLAGS -mcpu=cortex-a7" + fi + if [ "$optimize_arm1176jzf" = "yes" ]; then + CFLAGS="$CFLAGS -mcpu=arm1176jzf-s -mfloat-abi=hard" + ASFLAGS="$ASFLAGS -mcpu=arm1176jzf-s -mfloat-abi=hard" + fi if [ "$optimize_arm926ej" = "yes" ]; then CFLAGS="$CFLAGS -mcpu=arm926ej-s -mtune=arm926ej-s" ASFLAGS="$ASFLAGS -mcpu=arm926ej-s -mfloat-abi=softfp" fi + if [ "$optimize_arm920" = "yes" ]; then + CFLAGS="$CFLAGS -mcpu=arm920t -mtune=arm920t" + ASFLAGS="$ASFLAGS -mcpu=arm920t -mfloat-abi=soft" + fi if [ "x$have_arm_neon" = "x" ]; then # detect NEON from user-supplied cflags to enable asm code @@ -202,7 +228,7 @@ arm*) fi # warn about common mistakes - if [ "$have_armv5" != "yes" ]; then + if [ "$platform" != "gp2x" -a "$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:" @@ -216,13 +242,11 @@ arm*) fi ;; *) - # dynarec only available on ARM - enable_dynarec="no" ;; esac case "$platform" in -generic) +rpi1 | rpi2 | generic | opendingux) need_sdl="yes" ;; esac @@ -234,7 +258,7 @@ check_zlib() #include int main(void) { uncompress(0, 0, 0, 0); } EOF - compile_binary + compile_binary "$@" } check_libpng() @@ -243,7 +267,8 @@ check_libpng() #include void main() { png_init_io(0, 0); } EOF - compile_binary +# compile_binary + compile_object } check_oss() @@ -274,12 +299,30 @@ EOF compile_binary "$@" } -#MAIN_LDLIBS="$MAIN_LDLIBS -lz" -#check_zlib || fail "please install zlib (libz-dev)" +check_libavcodec() +{ + cat > $TMPC < + void main() { avcodec_decode_audio3(0, 0, 0, 0); } +EOF + compile_object "$@" +} + +MAIN_LDLIBS="$MAIN_LDLIBS -lz" +check_zlib -lz || fail "please install zlib (libz-dev)" MAIN_LDLIBS="-lpng $MAIN_LDLIBS" check_libpng || fail "please install libpng (libpng-dev)" +if check_libavcodec; then + have_libavcodec="yes" + # add -ldl if needed + case "$MAIN_LDLIBS" in + *"-ldl"*) ;; + *) MAIN_LDLIBS="-ldl $MAIN_LDLIBS" ;; + esac +fi + # find what audio support we can compile if [ "x$sound_drivers" = "x" ]; then if check_oss; then sound_drivers="$sound_drivers oss"; fi @@ -287,7 +330,7 @@ if [ "x$sound_drivers" = "x" ]; then sound_drivers="$sound_drivers alsa" MAIN_LDLIBS="-lasound $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 @@ -297,16 +340,16 @@ else fi if echo $sound_drivers | grep -q "\"; then MAIN_LDLIBS="-lasound $MAIN_LDLIBS" - check_alsa || fail "please install libasound2-dev" + check_alsa -lasound || fail "please install libasound2-dev" fi fi if [ "$need_sdl" = "yes" ]; then - which sdl-config > /dev/null || \ + [ -x "$SDL_CONFIG" ] || \ 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 libsdl (libsdl1.2-dev)" + CFLAGS="$CFLAGS `$SDL_CONFIG --cflags`" + MAIN_LDLIBS="`$SDL_CONFIG --libs` $MAIN_LDLIBS" + check_sdl `$SDL_CONFIG --libs` || fail "please install libsdl (libsdl1.2-dev)" fi cat > $TMPC < $config_mak printf "# Configured with:" >> $config_mak @@ -340,6 +382,7 @@ echo >> $config_mak echo "CC = $CC" >> $config_mak echo "CXX = $CXX" >> $config_mak echo "AS = $AS" >> $config_mak +echo "STRIP = $STRIP" >> $config_mak echo "CFLAGS += $CFLAGS" >> $config_mak echo "ASFLAGS += $ASFLAGS" >> $config_mak echo "LDFLAGS += $LDFLAGS" >> $config_mak @@ -349,11 +392,17 @@ echo >> $config_mak echo "ARCH = $ARCH" >> $config_mak echo "PLATFORM = $platform" >> $config_mak echo "SOUND_DRIVERS = $sound_drivers" >> $config_mak -if [ "$have_arm_neon" = "yes" ]; then - echo "HAVE_NEON = 1" >> $config_mak +if [ "$have_libavcodec" = "yes" ]; then + echo "HAVE_LIBAVCODEC = 1" >> $config_mak fi -if [ "$enable_dynarec" = "yes" ]; then - echo "USE_DYNAREC = 1" >> $config_mak + +# GP2X toolchains are too old for UAL asm, +# so add this here to not litter main Makefile +if [ "$platform" = "g1p2x" ]; then + echo >> $config_mak + echo "%.o: %.S" >> $config_mak + echo " $(CC) $(CFLAGS) -E -c $^ -o /tmp/$(notdir $@).s" >> $config_mak + echo " $(AS) $(ASFLAGS) /tmp/$(notdir $@).s -o $@" >> $config_mak fi # use pandora's skin (for now)