DS: Started work on a new build system for the Nintendo DS port, based on configure (and thus suitable for buildbot). Currently only the ARM7 part is 'done'
svn-id: r42939
This commit is contained in:
parent
25d83581dc
commit
f5112efa11
3 changed files with 220 additions and 8 deletions
111
backends/platform/ds/ds.mk
Normal file
111
backends/platform/ds/ds.mk
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
# Repeat "all" target here, to make sure it is the first target
|
||||||
|
# Currently disabled, so only arm7.bin gets build
|
||||||
|
#all:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Files in this list will be optimisied for speed, otherwise they will be optimised for space
|
||||||
|
OPTLIST := actor.cpp ds_main.cpp osystem_ds.cpp blitters.cpp fmopl.cpp rate.cpp isomap.cpp image.cpp gfx.cpp sprite.cpp actor_path.cpp actor_walk.cpp
|
||||||
|
#OPTLIST :=
|
||||||
|
|
||||||
|
# Compiler options for files which should be optimised for speed
|
||||||
|
OPT_SPEED := -O3
|
||||||
|
|
||||||
|
# Compiler options for files which should be optimised for space
|
||||||
|
OPT_SIZE := -Os -mthumb
|
||||||
|
|
||||||
|
|
||||||
|
#-mthumb -fno-gcse -fno-schedule-insns2
|
||||||
|
|
||||||
|
|
||||||
|
OBJS := $(DATA_OBJS) $(LIBCARTRESET_OBJS) $(PORT_OBJS) $(COMPRESSOR_OBJS) $(FAT_OBJS)
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: Handle files in OPTLIST.
|
||||||
|
# For this, the list should be made explicit. So, replace actor.cpp by path/to/actor.cpp --
|
||||||
|
# in fact, there are several actor.cpp files, and right now all are "optimized", but
|
||||||
|
# I think Neil only had the SAGA one in mind. Same for gfx.cpp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
#############################################################################
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
#ndsdir = $(srcdir)/backends/platform/ds
|
||||||
|
ndsdir = backends/platform/ds
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
#
|
||||||
|
# ARM7 rules.
|
||||||
|
# For ARM7 files, we need different compiler flags, which leads to the
|
||||||
|
# extra rules for .o files below
|
||||||
|
#
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
$(ndsdir)/arm7/arm7.bin: $(ndsdir)/arm7/arm7.elf
|
||||||
|
|
||||||
|
$(ndsdir)/arm7/arm7.elf: \
|
||||||
|
$(ndsdir)/arm7/source/libcartreset/cartreset.o \
|
||||||
|
$(ndsdir)/arm7/source/main.o
|
||||||
|
|
||||||
|
# HACK/FIXME: C compiler, for cartreset.c -- we should switch this to use CXX
|
||||||
|
# as soon as possible.
|
||||||
|
CC := $(DEVKITARM)/bin/arm-eabi-gcc
|
||||||
|
|
||||||
|
# HACK/TODO: Pointer to objcopy. This should really be set by configure
|
||||||
|
OBJCOPY := $(DEVKITARM)/bin/arm-eabi-objcopy
|
||||||
|
|
||||||
|
#
|
||||||
|
# Set various flags
|
||||||
|
#
|
||||||
|
ARM7_ARCH := -mthumb-interwork
|
||||||
|
|
||||||
|
# note: arm9tdmi isn't the correct CPU arch, but anything newer and LD
|
||||||
|
# *insists* it has a FPU or VFP, and it won't take no for an answer!
|
||||||
|
ARM7_CFLAGS := -g -Wall -O2\
|
||||||
|
-mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer\
|
||||||
|
-ffast-math \
|
||||||
|
$(ARM7_ARCH) \
|
||||||
|
-I$(srcdir)/$(ndsdir)/arm7/source/libcartreset \
|
||||||
|
-I$(srcdir)/$(ndsdir)/commoninclude \
|
||||||
|
-I$(DEVKITPRO)/libnds/include \
|
||||||
|
-I$(DEVKITPRO)/libnds/include/nds \
|
||||||
|
-DARM7
|
||||||
|
|
||||||
|
ARM7_CXXFLAGS := $(ARM7_CFLAGS) -fno-exceptions -fno-rtti
|
||||||
|
|
||||||
|
ARM7_LDFLAGS := -g $(ARM7_ARCH) -mno-fpu
|
||||||
|
|
||||||
|
# HACK/FIXME: Define a custom build rule for cartreset.c.
|
||||||
|
# We do this because it is a .c file, not a .cpp file and so is outside our
|
||||||
|
# regular build system anyway. But this is *bad*. It should be changed into a
|
||||||
|
# .cpp file and this rule be removed.
|
||||||
|
%.o: %.c
|
||||||
|
$(MKDIR) $(*D)/$(DEPDIR)
|
||||||
|
$(CC) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
|
||||||
|
|
||||||
|
|
||||||
|
# Set custom build flags for cartreset.o
|
||||||
|
$(ndsdir)/arm7/source/libcartreset/cartreset.o: CXXFLAGS=$(ARM7_CFLAGS)
|
||||||
|
$(ndsdir)/arm7/source/libcartreset/cartreset.o: CPPFLAGS=
|
||||||
|
|
||||||
|
# Set custom build flags for main.o
|
||||||
|
$(ndsdir)/arm7/source/main.o: CXXFLAGS=$(ARM7_CXXFLAGS)
|
||||||
|
$(ndsdir)/arm7/source/main.o: CPPFLAGS=
|
||||||
|
|
||||||
|
# Rule for creating ARM7 .bin files from .elf files
|
||||||
|
%.bin: %.elf
|
||||||
|
@echo ------
|
||||||
|
@echo Building $@...
|
||||||
|
$(OBJCOPY) -O binary $< $@
|
||||||
|
|
||||||
|
# Rule for creating ARM7 .elf files by linking .o files together with a special linker script
|
||||||
|
%.elf:
|
||||||
|
@echo ------
|
||||||
|
@echo Building $@...
|
||||||
|
$(CXX) $(ARM7_LDFLAGS) -specs=ds_arm7.specs $+ -L/opt/devkitPro/libnds/lib -lnds7 -o $@
|
71
backends/platform/ds/module.mk
Normal file
71
backends/platform/ds/module.mk
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
MODULE := backends/platform/ds
|
||||||
|
|
||||||
|
ARM7_MODULE_OBJS := \
|
||||||
|
arm7/source/main.o \
|
||||||
|
arm7/source/libcartreset/cartreset.o \
|
||||||
|
|
||||||
|
PORT_OBJS := \
|
||||||
|
arm9/source/blitters_arm.o \
|
||||||
|
arm9/source/cdaudio.o \
|
||||||
|
arm9/source/dsmain.o \
|
||||||
|
../../fs/ds/ds-fs.o \
|
||||||
|
arm9/source/gbampsave.o \
|
||||||
|
arm9/source/scummhelp.o \
|
||||||
|
arm9/source/osystem_ds.o \
|
||||||
|
arm9/source/portdefs.o \
|
||||||
|
arm9/source/ramsave.o \
|
||||||
|
arm9/source/touchkeyboard.o \
|
||||||
|
arm9/source/zipreader.o \
|
||||||
|
arm9/source/dsoptions.o \
|
||||||
|
arm9/source/keys.o \
|
||||||
|
arm9/source/wordcompletion.o \
|
||||||
|
arm9/source/interrupt.o
|
||||||
|
|
||||||
|
ifdef USE_PROFILER
|
||||||
|
PORT_OBJS += arm9/source/profiler/cyg-profile.o
|
||||||
|
endif
|
||||||
|
|
||||||
|
DATA_OBJS := \
|
||||||
|
arm9/data/icons.o \
|
||||||
|
arm9/data/keyboard.o \
|
||||||
|
arm9/data/keyboard_pal.o \
|
||||||
|
arm9/data/default_font.o \
|
||||||
|
arm9/data/8x8font_tga.o
|
||||||
|
|
||||||
|
COMPRESSOR_OBJS := #arm9/source/compressor/lz.o
|
||||||
|
|
||||||
|
FAT_OBJS := arm9/source/fat/disc_io.o arm9/source/fat/gba_nds_fat.o\
|
||||||
|
arm9/source/fat/io_fcsr.o \
|
||||||
|
arm9/source/fat/io_m3cf.o \
|
||||||
|
arm9/source/fat/io_mpcf.o \
|
||||||
|
arm9/source/fat/io_sccf.o \
|
||||||
|
arm9/source/fat/io_m3sd.o \
|
||||||
|
arm9/source/fat/io_nmmc.o \
|
||||||
|
arm9/source/fat/io_scsd.o \
|
||||||
|
arm9/source/fat/io_scsd_asm.o \
|
||||||
|
arm9/source/fat/io_njsd.o \
|
||||||
|
arm9/source/fat/io_mmcf.o \
|
||||||
|
arm9/source/fat/io_sd_common.o \
|
||||||
|
arm9/source/fat/io_m3_common.o \
|
||||||
|
arm9/source/fat/io_dldi.o \
|
||||||
|
arm9/source/fat/m3sd.o
|
||||||
|
|
||||||
|
|
||||||
|
# arm9/source/fat/io_cf_common.o arm9/source/fat/io_m3_common.o\
|
||||||
|
# arm9/source/fat/io_sd_common.o arm9/source/fat/io_scsd_s.o \
|
||||||
|
# arm9/source/fat/io_sc_common.o arm9/source/fat/io_sd_common.o
|
||||||
|
|
||||||
|
LIBCARTRESET_OBJS :=
|
||||||
|
#arm9/source/libcartreset/cartreset.o
|
||||||
|
|
||||||
|
|
||||||
|
MODULE_OBJS :=
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: Should add more dirs to MODULE_DIRS so that "make distclean" can remove .deps dirs.
|
||||||
|
MODULE_DIRS += \
|
||||||
|
backends/platform/ds/
|
||||||
|
|
||||||
|
# We don't use the rules.mk here on purpose
|
||||||
|
OBJS := $(addprefix $(MODULE)/, $(MODULE_OBJS)) $(OBJS)
|
46
configure
vendored
46
configure
vendored
|
@ -279,7 +279,7 @@ get_system_exe_extension() {
|
||||||
gp2x-linux)
|
gp2x-linux)
|
||||||
_exeext=".gp2x"
|
_exeext=".gp2x"
|
||||||
;;
|
;;
|
||||||
dreamcast | wii | gamecube | psp)
|
dreamcast | wii | gamecube | nds | psp)
|
||||||
_exeext=".elf"
|
_exeext=".elf"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
@ -553,7 +553,7 @@ Usage: $0 [OPTIONS]...
|
||||||
|
|
||||||
Configuration:
|
Configuration:
|
||||||
-h, --help display this help and exit
|
-h, --help display this help and exit
|
||||||
--backend=BACKEND backend to build (sdl, morphos, dc, gp2x, gp2xwiz, iphone, wince, wii, psp, null) [sdl]
|
--backend=BACKEND backend to build (sdl, dc, gp2x, gp2xwiz, iphone, morphos, nds, psp, wii, wince, null) [sdl]
|
||||||
|
|
||||||
Installation directories:
|
Installation directories:
|
||||||
--prefix=DIR use this prefix for installing ScummVM [/usr/local]
|
--prefix=DIR use this prefix for installing ScummVM [/usr/local]
|
||||||
|
@ -568,6 +568,7 @@ Special configuration feature:
|
||||||
dreamcast for Sega Dreamcast
|
dreamcast for Sega Dreamcast
|
||||||
wii for Nintendo Wii
|
wii for Nintendo Wii
|
||||||
gamecube for Nintendo Gamecube
|
gamecube for Nintendo Gamecube
|
||||||
|
nds for Nintendo DS
|
||||||
iphone for Apple iPhone
|
iphone for Apple iPhone
|
||||||
wince for Windows CE
|
wince for Windows CE
|
||||||
psp for PlayStation Portable
|
psp for PlayStation Portable
|
||||||
|
@ -841,17 +842,22 @@ wii)
|
||||||
_host_cpu=ppc
|
_host_cpu=ppc
|
||||||
_host_alias=powerpc-gekko
|
_host_alias=powerpc-gekko
|
||||||
;;
|
;;
|
||||||
|
gamecube)
|
||||||
|
_host_os=gamecube
|
||||||
|
_host_cpu=ppc
|
||||||
|
_host_alias=powerpc-gekko
|
||||||
|
;;
|
||||||
|
nds)
|
||||||
|
_host_os=nds
|
||||||
|
_host_cpu=arm
|
||||||
|
_host_alias=arm-eabi
|
||||||
|
;;
|
||||||
psp)
|
psp)
|
||||||
_host_os=psp
|
_host_os=psp
|
||||||
_host_cpu=mipsallegrexel
|
_host_cpu=mipsallegrexel
|
||||||
_host_alias=psp
|
_host_alias=psp
|
||||||
LDFLAGS="$LDFLAGS -L$PSPDEV/psp/sdk/lib -specs=$_srcdir/backends/platform/psp/psp.spec"
|
LDFLAGS="$LDFLAGS -L$PSPDEV/psp/sdk/lib -specs=$_srcdir/backends/platform/psp/psp.spec"
|
||||||
;;
|
;;
|
||||||
gamecube)
|
|
||||||
_host_os=gamecube
|
|
||||||
_host_cpu=ppc
|
|
||||||
_host_alias=powerpc-gekko
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
if test -n "$_host"; then
|
if test -n "$_host"; then
|
||||||
guessed_host=`$_srcdir/config.sub $_host`
|
guessed_host=`$_srcdir/config.sub $_host`
|
||||||
|
@ -888,7 +894,7 @@ esac
|
||||||
# Platform specific sanity checks
|
# Platform specific sanity checks
|
||||||
#
|
#
|
||||||
case $_host_os in
|
case $_host_os in
|
||||||
wii | gamecube)
|
wii | gamecube | nds)
|
||||||
if test -z "$DEVKITPRO"; then
|
if test -z "$DEVKITPRO"; then
|
||||||
echo "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to devkitPRO>"
|
echo "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to devkitPRO>"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -1168,6 +1174,9 @@ case $_host_os in
|
||||||
CXXFLAGS="$CXXFLAGS -I$DEVKITPRO/libogc/include"
|
CXXFLAGS="$CXXFLAGS -I$DEVKITPRO/libogc/include"
|
||||||
LDFLAGS="$LDFLAGS -mogc -mcpu=750 -L$DEVKITPRO/libogc/lib/cube"
|
LDFLAGS="$LDFLAGS -mogc -mcpu=750 -L$DEVKITPRO/libogc/lib/cube"
|
||||||
;;
|
;;
|
||||||
|
nds)
|
||||||
|
# TODO nds
|
||||||
|
;;
|
||||||
psp)
|
psp)
|
||||||
CXXFLAGS="$CXXFLAGS -O2 -G0 -I$PSPDEV/psp/sdk/include -D_PSP_FW_VERSION=150"
|
CXXFLAGS="$CXXFLAGS -O2 -G0 -I$PSPDEV/psp/sdk/include -D_PSP_FW_VERSION=150"
|
||||||
;;
|
;;
|
||||||
|
@ -1399,6 +1408,24 @@ if test -n "$_host"; then
|
||||||
add_line_to_config_h "/* #define DEBUG_WII_MEMSTATS */"
|
add_line_to_config_h "/* #define DEBUG_WII_MEMSTATS */"
|
||||||
add_line_to_config_h "/* #define DEBUG_WII_GDB */"
|
add_line_to_config_h "/* #define DEBUG_WII_GDB */"
|
||||||
;;
|
;;
|
||||||
|
nds)
|
||||||
|
echo "Cross-compiling to $_host, forcing endianness, alignment and type sizes"
|
||||||
|
# TODO: complete this
|
||||||
|
# TODO: Maybe rename nds -> ds (would be more consistent with other backends)
|
||||||
|
DEFINES="$DEFINES -DUSE_ARM_SMUSH_ASM"
|
||||||
|
_endian=little
|
||||||
|
_need_memalign=yes
|
||||||
|
type_1_byte='char'
|
||||||
|
type_2_byte='short'
|
||||||
|
type_4_byte='int'
|
||||||
|
_backend="nds"
|
||||||
|
_build_hq_scalers="no"
|
||||||
|
_mt32emu="no"
|
||||||
|
add_line_to_config_mk 'include $(srcdir)/backends/platform/ds/ds.mk'
|
||||||
|
# TODO: Enable more ARM optimizations -- requires testing!
|
||||||
|
add_line_to_config_mk 'USE_ARM_SOUND_ASM = 1'
|
||||||
|
add_line_to_config_mk 'USE_ARM_SMUSH_ASM = 1'
|
||||||
|
;;
|
||||||
psp)
|
psp)
|
||||||
echo "Cross-compiling to $_host, forcing endianness, alignment and type sizes"
|
echo "Cross-compiling to $_host, forcing endianness, alignment and type sizes"
|
||||||
_endian=little
|
_endian=little
|
||||||
|
@ -2046,6 +2073,9 @@ case $_backend in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
nds)
|
||||||
|
# TODO nds
|
||||||
|
;;
|
||||||
psp)
|
psp)
|
||||||
DEFINES="$DEFINES -D__PSP__ -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE"
|
DEFINES="$DEFINES -D__PSP__ -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE"
|
||||||
INCLUDES="$INCLUDES -I$PSPDEV/psp/include/SDL"
|
INCLUDES="$INCLUDES -I$PSPDEV/psp/include/SDL"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue