diff options
author | Tony Puccinelli | 2010-07-07 01:55:11 +0000 |
---|---|---|
committer | Tony Puccinelli | 2010-07-07 01:55:11 +0000 |
commit | 07faa734cedc04427820fbe0c7cdcb9c197567cd (patch) | |
tree | b54293e007df941fd595285f077428b69ac096e3 /backends/platform | |
parent | 41663da28211bad526752f187b141f40515ec75c (diff) | |
download | scummvm-rg350-07faa734cedc04427820fbe0c7cdcb9c197567cd.tar.gz scummvm-rg350-07faa734cedc04427820fbe0c7cdcb9c197567cd.tar.bz2 scummvm-rg350-07faa734cedc04427820fbe0c7cdcb9c197567cd.zip |
various fixes for ds dynamic plugins
svn-id: r50732
Diffstat (limited to 'backends/platform')
-rw-r--r-- | backends/platform/ds/arm9/makefile | 29 | ||||
-rw-r--r-- | backends/platform/ds/arm9/source/dsloader.cpp | 2 | ||||
-rw-r--r-- | backends/platform/ds/arm9/source/plugin.syms | 8 | ||||
-rw-r--r-- | backends/platform/ds/makefile | 2 | ||||
-rw-r--r-- | backends/platform/ds/module.mk | 76 |
5 files changed, 81 insertions, 36 deletions
diff --git a/backends/platform/ds/arm9/makefile b/backends/platform/ds/arm9/makefile index 948aade30e..ec1aa12dba 100644 --- a/backends/platform/ds/arm9/makefile +++ b/backends/platform/ds/arm9/makefile @@ -5,7 +5,7 @@ DYNAMIC_MODULES = 1 libndsdir = $(DEVKITPRO)/libnds #libndsdir = /home/neil/devkitpror21/libnds -ifdef DYNAMIC_MODULES +ifeq ($(DYNAMIC_MODULES),1) ENABLED = DYNAMIC_PLUGIN else ENABLED = STATIC_PLUGIN @@ -81,7 +81,7 @@ else ifdef DS_BUILD_K else - USE_MAD = 1 + #USE_MAD = 1 endif endif endif @@ -208,7 +208,6 @@ endif #endif ARM7BIN := -7 $(CURDIR)/../../arm7/arm7.bin -ICON := -b ../../../logo.bmp "ScummVM;By Neil Millstone;" CC = arm-eabi-gcc CXX = arm-eabi-g++ @@ -254,9 +253,6 @@ endif DEFINES += -DREDUCE_MEMORY_USAGE -# Removed, as these are done in portdefs.h -# -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE - LDFLAGS = -specs=ds_arm9.specs -mthumb-interwork -mno-fpu -Wl,-Map,map.txt -Wl,--gc-sections ifdef WRAP_MALLOC @@ -269,6 +265,7 @@ INCLUDES= -I$(portdir)/$(BUILD) -I$(srcdir) -I$(srcdir)/engines \ -I$(portdir)/source -I$(portdir)/source/mad -I$(portdir)/source/libcartreset \ -I$(libndsdir)/include -include $(srcdir)/common/scummsys.h +CXX_UPDATE_DEP_FLAG = -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP LIBS = -lm -L$(libndsdir)/lib -L$(portdir)/lib -lnds9 ifdef USE_MAD @@ -282,8 +279,8 @@ endif EXECUTABLE = scummvm.elf PLUGIN_PREFIX = PLUGIN_SUFFIX = .plg -PLUGIN_EXTRA_DEPS = plugin.ld plugin.syms scummvm.elf -PLUGIN_LDFLAGS = -nostartfiles -Wl,-q,-Tplugin.ld,--just-symbols,scummvm.elf,--retain-symbols-file,plugin.syms +PLUGIN_EXTRA_DEPS = $(portdir)/plugin.ld $(portdir)/plugin.syms $(EXECUTABLE) +PLUGIN_LDFLAGS = -nostartfiles -Wl,-q,-T$(portdir)/plugin.ld,--just-symbols,$(EXECUTABLE),--retain-symbols-file,$(portdir)/plugin.syms -lstdc++ -lc MKDIR = mkdir -p RM = rm -f RM_REC = rm -rf @@ -293,7 +290,7 @@ OBJCOPY = arm-eabi-objcopy AS = arm-eabi-as HAVE_GCC3 = true -ifdef DYNAMIC_MODULES +ifeq ($(DYNAMIC_MODULES),1) DEFINES += -DDYNAMIC_MODULES PRE_OBJS_FLAGS = -Wl,--whole-archive POST_OBJS_FLAGS = -Wl,--no-whole-archive @@ -301,14 +298,11 @@ endif PORT_OBJS := $(portdir)/source/blitters_arm.o $(portdir)/source/cdaudio.o $(portdir)/source/dsmain.o \ $(portdir)/../../../fs/ds/ds-fs.o $(portdir)/source/gbampsave.o $(portdir)/source/scummhelp.o\ - $(portdir)/source/osystem_ds.o $(portdir)/source/portdefs.o $(portdir)/source/ramsave.o\ + $(portdir)/source/osystem_ds.o $(portdir)/source/ramsave.o\ $(portdir)/source/touchkeyboard.o $(portdir)/source/zipreader.o\ $(portdir)/source/dsoptions.o $(portdir)/source/keys.o $(portdir)/source/wordcompletion.o\ - $(portdir)/source/interrupt.o - -ifdef DYNAMIC_MODULES - PORT_OBJS += $(portdir)/source/dsloader.o -endif + $(portdir)/source/interrupt.o\ + $(portdir)/source/dsloader.o ifdef USE_PROFILER PORT_OBJS += $(portdir)/source/profiler/cyg-profile.o @@ -365,9 +359,7 @@ OPT_SIZE := -Os -mthumb OBJS := $(DATA_OBJS) $(LIBCARTRESET_OBJS) $(PORT_OBJS) $(COMPRESSOR_OBJS) $(FAT_OBJS) - - -MODULE_DIRS += . +MODULE_DIRS += ./ ndsall: @[ -d $(BUILD) ] || mkdir -p $(BUILD) @@ -489,6 +481,7 @@ endef #--------------------------------------------------------------------------------- # FIXME: The following rule hardcodes the input & output filename -- shouldn't it use $< and $@ instead? + %.bin: %.elf $(OBJCOPY) -S scummvm.elf scummvm-stripped.elf $(OBJCOPY) -O binary scummvm-stripped.elf scummvm.bin diff --git a/backends/platform/ds/arm9/source/dsloader.cpp b/backends/platform/ds/arm9/source/dsloader.cpp index 5b207b42d9..543d3648b5 100644 --- a/backends/platform/ds/arm9/source/dsloader.cpp +++ b/backends/platform/ds/arm9/source/dsloader.cpp @@ -33,7 +33,7 @@ #include <unistd.h> #include <sys/fcntl.h> -#include "backends/platform/ds/dsloader.h" +#include "backends/platform/ds/arm9/source/dsloader.h" #define __DS_DEBUG_PLUGINS__ diff --git a/backends/platform/ds/arm9/source/plugin.syms b/backends/platform/ds/arm9/source/plugin.syms new file mode 100644 index 0000000000..24ee1a19dc --- /dev/null +++ b/backends/platform/ds/arm9/source/plugin.syms @@ -0,0 +1,8 @@ +PLUGIN_getVersion +PLUGIN_getType +PLUGIN_getTypeVersion +PLUGIN_getObject +___plugin_ctors +___plugin_ctors_end +___plugin_dtors +___plugin_dtors_end diff --git a/backends/platform/ds/makefile b/backends/platform/ds/makefile index 58d6fd4c02..7bfd419c14 100644 --- a/backends/platform/ds/makefile +++ b/backends/platform/ds/makefile @@ -1,8 +1,6 @@ #SUBDIRS:= `ls | egrep -v '^(CVS|tools)$$'` - - export PATH := $(DEVKITARM)/bin:$(PATH) export portdir = $(CURDIR)/arm9 diff --git a/backends/platform/ds/module.mk b/backends/platform/ds/module.mk index bb874e7561..f2640c49e3 100644 --- a/backends/platform/ds/module.mk +++ b/backends/platform/ds/module.mk @@ -12,22 +12,14 @@ PORT_OBJS := \ 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 - -ifdef DYNAMIC_MODULES - PORT_OBJS += arm9/source/dsloader.o -endif + arm9/source/interrupt.o \ + arm9/source/dsloader.o DATA_OBJS := \ arm9/data/icons.o \ @@ -59,17 +51,71 @@ FAT_OBJS := arm9/source/fat/disc_io.o arm9/source/fat/gba_nds_fat.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 +LIBCARTRESET_OBJS := \ +# arm9/source/libcartreset/cartreset.o + + +#MODULE_OBJS := $(PORT_OBJS) $(DATA_OBJS) $(FAT_OBJS) +MODULE_OBJS := $(DATA_OBJS) $(LIBCARTRESET_OBJS) $(PORT_OBJS) $(COMPRESSOR_OBJS) $(FAT_OBJS) + + +#--------------------------------------------------------------------------------- +# canned command sequence for binary data +#--------------------------------------------------------------------------------- +define bin2o + $(MKDIR) $(*D) + bin2s $< | $(AS) -mthumb -mthumb-interwork -o $(@) +endef + +define bin2h + $(MKDIR) $(*D) + echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > $@ + echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> $@ + echo "extern const u32" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> $@ +endef + +vpath %.raw $(srcdir) +vpath %.pal $(srcdir) +vpath %.bin $(srcdir) + +%.o: %.raw + $(bin2o) + +%_raw.h: %.raw + $(bin2h) + +%.o: %.pal + $(bin2o) + +%_raw.h: %.pal + $(bin2h) + +%.o: %.bin + $(bin2o) + +%_raw.h: %.bin + $(bin2h) -MODULE_OBJS := +# Mark files which require the *_raw.h files manually (for now, at least) +$(MODULE)/arm9/source/dsmain.o: \ + $(MODULE)/arm9/data/icons_raw.h \ + $(MODULE)/arm9/data/keyboard_raw.h \ + $(MODULE)/arm9/data/keyboard_pal_raw.h +$(MODULE)/arm9/source/touchkeyboard.o: \ + $(MODULE)/arm9/data/keyboard_raw.h \ + $(MODULE)/arm9/data/keyboard_pal_raw.h \ + $(MODULE)/arm9/data/8x8font_tga_raw.h -# TODO: Should add more dirs to MODULE_DIRS so that "make distclean" can remove .deps dirs. MODULE_DIRS += \ - backends/platform/ds/ + backends/platform/ds/ \ + backends/platform/ds/arm7/source/ \ + backends/platform/ds/arm7/source/libcartreset/ \ + backends/platform/ds/arm9/source/ \ + backends/platform/ds/arm9/source/fat/ \ + backends/platform/ds/arm9/source/libcartreset/ # We don't use the rules.mk here on purpose OBJS := $(addprefix $(MODULE)/, $(MODULE_OBJS)) $(OBJS) |