configuration changes and README

This commit is contained in:
kub 2019-08-21 18:27:26 +02:00
parent 906a1d1820
commit 0f7a30ede3
11 changed files with 196 additions and 56 deletions

View file

@ -238,8 +238,8 @@ pico/cd/LC89510.o: CFLAGS += -fno-strict-aliasing
pico/cd/gfx_cd.o: CFLAGS += -fno-strict-aliasing pico/cd/gfx_cd.o: CFLAGS += -fno-strict-aliasing
ifeq (1,$(use_sh2drc)) ifeq (1,$(use_sh2drc))
ifneq (,$(findstring -flto,$(CFLAGS))) ifneq (,$(findstring -flto,$(CFLAGS)))
# if using the DRC, memory and sh2soc use a global register variable to avoid # if using the DRC, memory and sh2soc directly use the DRC register for SH2 SR
# saving and reloading the SH2 SR. However, this collides with the use of LTO. # to avoid saving and reloading it. However, this collides with the use of LTO.
pico/32x/memory.o: CFLAGS += -fno-lto pico/32x/memory.o: CFLAGS += -fno-lto
pico/32x/sh2soc.o: CFLAGS += -fno-lto pico/32x/sh2soc.o: CFLAGS += -fno-lto
endif endif

112
README.md Normal file
View file

@ -0,0 +1,112 @@
This is my foray into dynamic recompilation using PicoDrive, a
Megadrive / Genesis / Sega CD / Mega CD / 32X / SMS emulator.
I added support for MIPS (mips32r1) and ARM64 (aarch64) to the recompiler, as
well as spent much effort to optimize the code generated by the DRC.
I also optimized SH2 memory access inside the emulator, and did some work on
M68K/SH2 CPU synchronization to fix some problems and speed up the emulator.
It got a bit out of hand. I ended up doing fixes and optimzations all over the
place, mainly for 32X and CD, 32X graphics handling, and probably some more,
see the commit history.
### compiling
I mainly worked with standalone PicoDrive versions as created by configure/make.
A list of platforms for which this is possible can be obtained with
> configure --help
If you want to build an executable for a unixoid platform not listed in the
platform list, just use
> configure --platform=generic
If DRC is available for the platform, it should be enabled automatically.
For other platforms using a cross-compiling toolchain I used this,
assuming $TC points to the appropriate cross compile toolchain directory:
platform|toolchain|configure command
--------|---------|-----------------
gp2x,wiz,caanoo|open2x|CROSS_COMPILE=arm-open2x-linux- CFLAGS="-I$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/include -fno-stack-protector -fno-common -finline-limit=42" LDFLAGS="--sysroot $TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux -L$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/lib" ./configure --platform=gp2x
gp2x,wiz,caanoo|open2x with ubuntu arm gcc 4.7|CROSS_COMPILE=arm-linux-gnueabi- CFLAGS="-I$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/include -fno-stack-protector -fno-common -finline-limit=42 -fipa-pta" LDFLAGS="-B$TC/gcc-4.1.1-glibc-2.3.6/lib/gcc/arm-open2x-linux/4.1.1 -B$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/lib -L$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/lib" ./configure --platform=gp2x
opendingux|opendingux|CROSS_COMPILE=mipsel-linux- CFLAGS="-I$TC/usr/include -I$TC/usr/include/SDL -fno-stack-protector -fno-common -finline-limit=42 -fipa-pta" LDFLAGS="--sysroot $TC -L$TC/lib" ./configure --platform=opendingux
opendingux|opendingux with ubuntu mips gcc 5.4|CROSS_COMPILE=mipsel-linux-gnu- CFLAGS="-I$TC/usr/include -I$TC/usr/include/SDL -fno-stack-protector -fno-common -finline-limit=42 -fipa-pta" LDFLAGS="-B$TC/usr/lib -B$TC/lib -Wl,-rpath-link=$TC/usr/lib -Wl,-rpath-link=$TC/lib" ./configure --platform=opendingux
gcw0|gcw0|CROSS_COMPILE=mipsel-gcw0-linux-uclibc- CFLAGS="-I$TC/usr/mipsel-gcw0-linux-uclibc/sysroot/usr/include -I$TC/usr/mipsel-gcw0-linux-uclibc/sysroot/usr/include/SDL -fno-stack-protector -fno-common -finline-limit=42 -fipa-pta" LDFLAGS="--sysroot $TC/usr/mipsel-gcw0-linux-uclibc/sysroot" ./configure --platform=gcw0
For gp2x, wiz, and caanoo you may need to compile libpng first, and additionally
this patch may need to be applied to the cpu/cyclone submodule:
> diff --git a/OpArith.cpp b/OpArith.cpp
> index 96c7e0d..09517b8 100644
> --- a/OpArith.cpp
> +++ b/OpArith.cpp
> @@ -425,7 +425,7 @@ int OpAbcd(int op)
> ot(" add r1,r1,r0\n");
> ot(" add r1,r1,r6\n");
> ot(" mov r12,r1\n");
> - ot(" addhi r12,#6 ;@ Decimal adjust units\n");
> + ot(" addhi r12,r12,#6 ;@ Decimal adjust units\n");
> ot(" tst r1,#0x80\n");
> ot(" orreq r10,r10,#0x10000000 ;@ Undefined V behavior\n");
> ot(" cmp r12,#0x9f\n");
> @@ -452,7 +452,7 @@ int OpAbcd(int op)
> ot(" cmp r1,r12\n");
> ot(" orrlt r10,r10,#0x20000000 ;@ C\n");
> ot(" cmp r1,#0xff\n");
> - ot(" addhi r1,#0xa0\n");
> + ot(" addhi r1,r1,#0xa0\n");
> ot(" sub r12,r1,r12\n");
> ot(" movs r0,r12,lsl #24\n");
> ot(" bicmi r10,r10,#0x10000000 ;@ Undefined V behavior part II\n");
> diff --git a/OpLogic.cpp b/OpLogic.cpp
> index 012e35a..d40d814 100644
> --- a/OpLogic.cpp
> +++ b/OpLogic.cpp
> @@ -74,12 +74,12 @@ const char *TestCond(int m68k_cc, int invert)
> break;
> case 0x0e: // gt
> ot(" eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V\n");
> - ot(" orrs r0,r10,lsl #1\n");
> + ot(" orrs r0,r0,r10,lsl #1\n");
> cond="pl", icond="mi";
> break;
> case 0x0f: // le
> ot(" eor r0,r10,r10,lsl #3 ;@ le: Z || N != V\n");
> - ot(" orrs r0,r10,lsl #1\n");
> + ot(" orrs r0,r0,r10,lsl #1\n");
> cond="mi", icond="pl";
> break;
> default:
After configure, compile with
> make opk # for opendingux and gcw0
>
> make # for anything else
### helix MP3 decoder
For 32 bit ARM platforms, there is the possibility to compile the helix MP3
decoder into a shared library to be able to use MP3 audio files with CD games.
The helix source files aren't supplied because of licensing issues. However, if
you have obtained the sources, put them into the platform/common/helix
directory, set CROSS to your cross compiler prefix (e.g. arm-linux-gnueabi-)
and LIBGCC to your cross compiler's libgcc.a
(e.g. /usr/lib/gcc-cross/arm-linux-gnueabi/4.7/libgcc.a), and compile with
> make -C platform/common/helix CROSS=$CROSS LIBGCC=$LIBGCC
Copy the resulting ${CROSS}helix_mp3.so as libhelix.so to the directory where
the PicoDrive binary is.
### installing
You need to install the resulting binary onto your device manually.
For opendingux and gcw0, copy the opk to your SD card.
For gp2x, wiz and caanoo, the easiest way is to unpack
[PicoDrive_191.zip](http://notaz.gp2x.de/releases/PicoDrive/PicoDrive_191.zip)
on you SD card and replace the PicoDrive binary.
Send bug reports, fixes etc to <derkub@gmail.com>
Kai-Uwe Bloem

View file

@ -1,5 +1,5 @@
# Automatically generated by configure # Automatically generated by configure
# Configured with: './configure' '--platform=generic' # Configured with: './configure' '--platform=opendingux'
CC = mipsel-linux-gcc CC = mipsel-linux-gcc
CXX = mipsel-linux-g++ CXX = mipsel-linux-g++
AS = mipsel-linux-as AS = mipsel-linux-as

View file

@ -1,5 +1,5 @@
# Automatically generated by configure # Automatically generated by configure
# Configured with: './configure' '--platform=generic' # Configured with: './configure' '--platform=opendingux'
CC = mipsel-linux-gnu-gcc CC = mipsel-linux-gnu-gcc
CXX = mipsel-linux-gnu-g++ CXX = mipsel-linux-gnu-g++
AS = mipsel-linux-gnu-as AS = mipsel-linux-gnu-as

View file

@ -1,5 +1,5 @@
# Automatically generated by configure # Automatically generated by configure
# Configured with: './configure' '--platform=generic' # Configured with: './configure' '--platform=gcw0'
CC = mipsel-gcw0-linux-uclibc-gcc CC = mipsel-gcw0-linux-uclibc-gcc
CXX = mipsel-gcw0-linux-uclibc-g++ CXX = mipsel-gcw0-linux-uclibc-g++
AS = mipsel-gcw0-linux-uclibc-as AS = mipsel-gcw0-linux-uclibc-as

View file

@ -4,8 +4,8 @@ CC = arm-open2x-linux-gcc
CXX = arm-open2x-linux-g++ CXX = arm-open2x-linux-g++
AS = arm-open2x-linux-as AS = arm-open2x-linux-as
STRIP = arm-open2x-linux-strip STRIP = arm-open2x-linux-strip
CFLAGS += -I${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/include -I${HOME}/src/gp2x/armroot/include -D__GP2X__ -Wno-unused-result CFLAGS += -I${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/include -I${HOME}/src/gp2x/armroot/include -D__GP2X__
CFLAGS += -msoft-float -mcpu=arm920t -mtune=arm920t CFLAGS += -mfloat-abi=soft -mcpu=arm920t -mtune=arm920t -mno-thumb-interwork -fno-stack-protector -fno-common
CFLAGS += -finline-limit=42 -fipa-cp -fno-ipa-pure-const CFLAGS += -finline-limit=42 -fipa-cp -fno-ipa-pure-const
ASFLAGS += -mcpu=arm920t -mfloat-abi=soft ASFLAGS += -mcpu=arm920t -mfloat-abi=soft
LDFLAGS += --sysroot ${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux -L${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/lib -L${HOME}/src/gp2x/armroot/lib -static LDFLAGS += --sysroot ${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux -L${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/lib -L${HOME}/src/gp2x/armroot/lib -static

View file

@ -5,8 +5,7 @@ CXX = arm-linux-gnueabi-g++
AS = arm-linux-gnueabi-as AS = arm-linux-gnueabi-as
STRIP = arm-linux-gnueabi-strip STRIP = arm-linux-gnueabi-strip
CFLAGS += -I${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/include -I${HOME}/src/gp2x/armroot/include -D__GP2X__ -Wno-unused-result CFLAGS += -I${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/include -I${HOME}/src/gp2x/armroot/include -D__GP2X__ -Wno-unused-result
CFLAGS += -mabi=apcs-gnu -mfloat-abi=soft -mfpu=fpa -mcpu=arm920t -mtune=arm920t CFLAGS += -mabi=apcs-gnu -mfloat-abi=soft -mfpu=fpa -mcpu=arm920t -mtune=arm920t -mno-thumb-interwork -fno-stack-protector -fno-common
CFLAGS += -mno-thumb-interwork -fno-stack-protector -fno-common
CFLAGS += -finline-limit=42 -fipa-pta -fno-ipa-sra -fno-ipa-pure-const CFLAGS += -finline-limit=42 -fipa-pta -fno-ipa-sra -fno-ipa-pure-const
ASFLAGS += -mabi=apcs-gnu -mfloat-abi=soft -mfpu=fpa -mcpu=arm920t ASFLAGS += -mabi=apcs-gnu -mfloat-abi=soft -mfpu=fpa -mcpu=arm920t
LDFLAGS += -mabi=apcs-gnu -mfpu=fpa -B${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/lib/gcc/arm-open2x-linux/4.1.1 -B${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/lib -L${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/usr/lib -L${HOME}/src/gp2x/armroot/lib -static LDFLAGS += -mabi=apcs-gnu -mfpu=fpa -B${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/lib/gcc/arm-open2x-linux/4.1.1 -B${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/lib -L${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/usr/lib -L${HOME}/src/gp2x/armroot/lib -static

118
configure vendored
View file

@ -22,6 +22,13 @@ compile_binary()
$c >> config.log 2>&1 $c >> config.log 2>&1
} }
check_option()
{
echo 'void test(void) { }' >$TMPC
compile_object $1 || return 1
return 0
}
check_define() check_define()
{ {
$CC -E -dD $CFLAGS pico/arm_features.h | grep -q $1 || return 1 $CC -E -dD $CFLAGS pico/arm_features.h | grep -q $1 || return 1
@ -31,17 +38,18 @@ check_define()
# setting options to "yes" or "no" will make that choice default, # setting options to "yes" or "no" will make that choice default,
# "" means "autodetect". # "" means "autodetect".
platform_list="generic pandora gp2x opendingux rpi1 rpi2" platform_list="generic pandora gp2x wiz caanoo opendingux gcw0 rpi1 rpi2"
platform="generic" platform="generic"
sound_driver_list="oss alsa sdl" sound_driver_list="oss alsa sdl"
sound_drivers="" sound_drivers=""
have_armv5="" have_armv5=""
have_armv6="" have_armv6=""
have_armv7="" have_armv7=""
have_arm_oabi=""
have_arm_neon="" have_arm_neon=""
have_libavcodec="" have_libavcodec=""
need_sdl="no" need_sdl="no"
need_xlib="no" need_zlib="no"
# these are for known platforms # these are for known platforms
optimize_cortexa8="no" optimize_cortexa8="no"
optimize_cortexa7="no" optimize_cortexa7="no"
@ -54,7 +62,7 @@ CC="${CC-${CROSS_COMPILE}gcc}"
CXX="${CXX-${CROSS_COMPILE}g++}" CXX="${CXX-${CROSS_COMPILE}g++}"
AS="${AS-${CROSS_COMPILE}as}" AS="${AS-${CROSS_COMPILE}as}"
STRIP="${STRIP-${CROSS_COMPILE}strip}" STRIP="${STRIP-${CROSS_COMPILE}strip}"
test -n "$SDL_CONFIG" || SDL_CONFIG="`$CC --print-sysroot 2> /dev/null || true`/usr/bin/sdl-config" test -n "$SDL_CONFIG" || SDL_CONFIG="`$CC $CFLAGS $LDFLAGS --print-sysroot 2> /dev/null || true`/usr/bin/sdl-config"
MAIN_LDLIBS="$LDLIBS -lm" MAIN_LDLIBS="$LDLIBS -lm"
config_mak="config.mak" config_mak="config.mak"
@ -78,23 +86,27 @@ set_platform()
;; ;;
generic) generic)
;; ;;
opendingux) opendingux | gcw0)
sound_drivers="sdl" sound_drivers="sdl"
# both are really an opendingux
platform="opendingux"
;; ;;
pandora) pandora)
sound_drivers="oss alsa" sound_drivers="oss alsa"
optimize_cortexa8="yes" optimize_cortexa8="yes"
have_arm_neon="yes" have_arm_neon="yes"
;; ;;
gp2x) gp2x | wiz | caanoo)
sound_drivers="oss" sound_drivers="oss"
optimize_arm920="yes" optimize_arm920="yes"
# compile for OABI if toolchain provides it (faster code on caanoo)
have_arm_oabi="yes"
# always use static linking, since caanoo doesn't have OABI libs. Moreover,
# dynamic linking slows Wiz 1-10%, and libm on F100 isn't compatible
LDFLAGS="$LDFLAGS -static"
# unified binary for all of them
CFLAGS="$CFLAGS -D__GP2X__" CFLAGS="$CFLAGS -D__GP2X__"
if [ "$CROSS_COMPILE" = "arm-linux-" ]; then platform="gp2x"
# 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" fail "unsupported platform: $platform"
@ -147,18 +159,11 @@ fi
# fi # fi
#fi #fi
# basic compiler test
cat > $TMPC <<EOF
int main(void) { return 0; }
EOF
if ! compile_binary; then
fail "compiler test failed, please check config.log"
fi
if [ -z "$ARCH" ]; then if [ -z "$ARCH" ]; then
ARCH=`$CC -dumpmachine | awk -F '-' '{print $1}'` ARCH=`$CC -dumpmachine | awk -F '-' '{print $1}'`
fi fi
# CPU/ABI stuff first, else compile test may fail
case "$ARCH" in case "$ARCH" in
arm*) arm*)
# ARM stuff # ARM stuff
@ -206,26 +211,40 @@ arm*)
have_armv5=`check_define HAVE_ARMV5 && echo yes` || true have_armv5=`check_define HAVE_ARMV5 && echo yes` || true
fi fi
# automatically set mfpu and mfloat-abi if they are not set
if [ "$have_arm_neon" = "yes" ]; then
fpu="neon"
elif [ "$have_armv6" = "yes" ]; then
fpu="vfp"
fi
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 # must disable thumb as recompiler can't handle it
if check_define __thumb__; then if check_define __thumb__; then
CFLAGS="$CFLAGS -marm" CFLAGS="$CFLAGS -marm"
fi fi
# OABI/EABI selection
if [ "$have_arm_oabi" = "yes" ] && check_option -mabi=apcs-gnu; then
echo "$CFLAGS" | grep -q -- '-mabi=' || CFLAGS="$CFLAGS -mabi=apcs-gnu"
echo "$CFLAGS" | grep -q -- '-m\(no-\)*thumb-interwork' || CFLAGS="$CFLAGS -mno-thumb-interwork"
echo "$ASFLAGS" | grep -q -- '-mabi=' || ASFLAGS="$ASFLAGS -mabi=apcs-gnu"
fi
# automatically set mfpu and mfloat-abi if they are not set
if [ "$have_arm_neon" = "yes" ]; then
fpu="neon"
abi="hard"
elif [ "$have_armv6" = "yes" ]; then
fpu="vfp"
abi="softfp"
elif check_option -mfpu=fpa; then
fpu="fpa" # compatibility option for arm-linux-gnueabi-gcc on ubuntu
abi="soft"
fi
if [ "x$fpu" != "x" ]; then
echo "$CFLAGS" | grep -q -- '-mfpu=' || CFLAGS="$CFLAGS -mfpu=$fpu"
echo "$ASFLAGS" | grep -q -- '-mfpu=' || ASFLAGS="$ASFLAGS -mfpu=$fpu"
echo "$CFLAGS" | grep -q -- '-mfloat-abi=' || CFLAGS="$CFLAGS -mfloat-abi=$abi"
echo "$ASFLAGS" | grep -q -- '-mfloat-abi=' || ASFLAGS="$ASFLAGS -mfloat-abi=$abi"
fi
# add -ldl for helix support
case "$MAIN_LDLIBS" in
*"-ldl"*) ;;
*) MAIN_LDLIBS="-ldl $MAIN_LDLIBS" ;;
esac
# warn about common mistakes # warn about common mistakes
if [ "$platform" != "gp2x" -a "$have_armv5" != "yes" ]; then if [ "$platform" != "gp2x" -a "$have_armv5" != "yes" ]; then
@ -251,6 +270,14 @@ rpi1 | rpi2 | generic | opendingux)
;; ;;
esac esac
# basic compiler test
cat > $TMPC <<EOF
int main(void) { return 0; }
EOF
if ! compile_binary; then
fail "compiler test failed, please check config.log"
fi
# header/library presence tests # header/library presence tests
check_zlib() check_zlib()
{ {
@ -308,8 +335,7 @@ EOF
compile_object "$@" compile_object "$@"
} }
MAIN_LDLIBS="$MAIN_LDLIBS -lz" check_zlib -lz &&MAIN_LDLIBS="$MAIN_LDLIBS -lz" || need_zlib="yes"
check_zlib -lz || fail "please install zlib (libz-dev)"
MAIN_LDLIBS="-lpng $MAIN_LDLIBS" MAIN_LDLIBS="-lpng $MAIN_LDLIBS"
check_libpng || fail "please install libpng (libpng-dev)" check_libpng || fail "please install libpng (libpng-dev)"
@ -352,10 +378,7 @@ if [ "$need_sdl" = "yes" ]; then
check_sdl `$SDL_CONFIG --libs` || fail "please install libsdl (libsdl1.2-dev)" check_sdl `$SDL_CONFIG --libs` || fail "please install libsdl (libsdl1.2-dev)"
fi fi
cat > $TMPC <<EOF if check_option -Wno-unused_result; then
void test(void *f, void *d) { fread(d, 1, 1, f); }
EOF
if compile_object -Wno-unused-result; then
CFLAGS="$CFLAGS -Wno-unused-result" CFLAGS="$CFLAGS -Wno-unused-result"
fi fi
@ -395,15 +418,18 @@ echo "SOUND_DRIVERS = $sound_drivers" >> $config_mak
if [ "$have_libavcodec" = "yes" ]; then if [ "$have_libavcodec" = "yes" ]; then
echo "HAVE_LIBAVCODEC = 1" >> $config_mak echo "HAVE_LIBAVCODEC = 1" >> $config_mak
fi fi
if [ "$need_zlib" = "yes" ]; then
echo "PLATFORM_ZLIB = 1" >> $config_mak
fi
# GP2X toolchains are too old for UAL asm, # GP2X toolchains are too old for UAL asm,
# so add this here to not litter main Makefile # so add this here to not litter main Makefile
if [ "$platform" = "g1p2x" ]; then #if [ "$platform" = "gp2x" ]; then
echo >> $config_mak # echo >> $config_mak
echo "%.o: %.S" >> $config_mak # echo '%.o: %.S' >> $config_mak
echo " $(CC) $(CFLAGS) -E -c $^ -o /tmp/$(notdir $@).s" >> $config_mak # echo ' $(CC) $(CFLAGS) -E -c $^ -o /tmp/$(notdir $@).s' >> $config_mak
echo " $(AS) $(ASFLAGS) /tmp/$(notdir $@).s -o $@" >> $config_mak # echo ' $(AS) $(ASFLAGS) /tmp/$(notdir $@).s -o $@' >> $config_mak
fi #fi
# use pandora's skin (for now) # use pandora's skin (for now)
test -e skin || ln -s platform/pandora/skin skin test -e skin || ln -s platform/pandora/skin skin

View file

@ -1,6 +1,7 @@
/* /*
* Basic macros to emit ARM instructions and some utils * Basic macros to emit ARM instructions and some utils
* Copyright (C) 2008,2009,2010 notaz * Copyright (C) 2008,2009,2010 notaz
* Copyright (C) 2019 kub
* *
* This work is licensed under the terms of MAME license. * This work is licensed under the terms of MAME license.
* See COPYING file in the top-level directory. * See COPYING file in the top-level directory.

View file

@ -1,6 +1,7 @@
/* /*
* Basic macros to emit x86 instructions and some utils * Basic macros to emit x86 instructions and some utils
* Copyright (C) 2008,2009,2010 notaz * Copyright (C) 2008,2009,2010 notaz
* Copyright (C) 2019 kuv
* *
* This work is licensed under the terms of MAME license. * This work is licensed under the terms of MAME license.
* See COPYING file in the top-level directory. * See COPYING file in the top-level directory.

View file

@ -4,6 +4,7 @@ CC = $(CROSS)gcc
AS = $(CROSS)as AS = $(CROSS)as
AR = $(CROSS)ar AR = $(CROSS)ar
TOOLCHAIN = $(notdir $(CROSS)) TOOLCHAIN = $(notdir $(CROSS))
LIBGCC ?= ${HOME}/opt/open2x/gcc-4.1.1-glibc-2.3.6/lib/gcc/arm-open2x-linux/4.1.1/libgcc.a
CFLAGS += -Ipub -O2 -Wall -fstrict-aliasing -ffast-math CFLAGS += -Ipub -O2 -Wall -fstrict-aliasing -ffast-math
ifneq ($(findstring arm-,$(TOOLCHAIN)),) ifneq ($(findstring arm-,$(TOOLCHAIN)),)
@ -34,7 +35,7 @@ real/arm/asmpoly_gcc.o: real/arm/asmpoly_gcc.s
$(LIB) : $(OBJS) $(LIB) : $(OBJS)
$(AR) r $@ $^ $(AR) r $@ $^
$(SHLIB) : $(OBJS) /home/build/opt/open2x/gcc-4.1.1-glibc-2.3.6/lib/gcc/arm-open2x-linux/4.1.1/libgcc.a $(SHLIB) : $(OBJS) $(LIBGCC)
$(CC) -o $@ -nostdlib -shared $(CFLAGS) $^ $(CC) -o $@ -nostdlib -shared $(CFLAGS) $^
clean: clean: