aboutsummaryrefslogtreecommitdiff
path: root/backends
diff options
context:
space:
mode:
authorTony Puccinelli2010-07-07 01:55:11 +0000
committerTony Puccinelli2010-07-07 01:55:11 +0000
commit07faa734cedc04427820fbe0c7cdcb9c197567cd (patch)
treeb54293e007df941fd595285f077428b69ac096e3 /backends
parent41663da28211bad526752f187b141f40515ec75c (diff)
downloadscummvm-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')
-rw-r--r--backends/platform/ds/arm9/makefile29
-rw-r--r--backends/platform/ds/arm9/source/dsloader.cpp2
-rw-r--r--backends/platform/ds/arm9/source/plugin.syms8
-rw-r--r--backends/platform/ds/makefile2
-rw-r--r--backends/platform/ds/module.mk76
-rw-r--r--backends/plugins/ds/ds-provider.cpp2
6 files changed, 82 insertions, 37 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)
diff --git a/backends/plugins/ds/ds-provider.cpp b/backends/plugins/ds/ds-provider.cpp
index c200e212cc..53987ff3fa 100644
--- a/backends/plugins/ds/ds-provider.cpp
+++ b/backends/plugins/ds/ds-provider.cpp
@@ -29,7 +29,7 @@
#include "backends/plugins/dynamic-plugin.h"
#include "common/fs.h"
-#include "backends/platform/ds/dsloader.h"
+#include "backends/platform/ds/arm9/source/dsloader.h"
class DSPlugin : public DynamicPlugin {