aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/ds/arm9
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/ds/arm9')
-rw-r--r--backends/platform/ds/arm9/makefile76
-rw-r--r--backends/platform/ds/arm9/source/dsmain.cpp5
2 files changed, 48 insertions, 33 deletions
diff --git a/backends/platform/ds/arm9/makefile b/backends/platform/ds/arm9/makefile
index eedf75c256..407df8243c 100644
--- a/backends/platform/ds/arm9/makefile
+++ b/backends/platform/ds/arm9/makefile
@@ -1,10 +1,13 @@
srcdir ?= .
DEPDIR := .deps
-#DYNAMIC_MODULES = 1
+VERBOSE_BUILD = 1
+DYNAMIC_MODULES = 1
libndsdir = $(DEVKITPRO)/libnds
#libndsdir = /home/neil/devkitpror21/libnds
+ENABLED = DYNAMIC_PLUGIN
+
# Select the build by setting SCUMM_BUILD to a,b,c,d,e,f or g.
# Anything else gets build a.
@@ -12,7 +15,7 @@ ifeq ($(SCUMM_BUILD),k)
DS_BUILD_K = 1
else
ifeq ($(SCUMM_BUILD),j)
- DS_BUILD_J = 1
+ DS_BUILD_J = 1
else
ifeq ($(SCUMM_BUILD),i)
DS_BUILD_I = 1
@@ -64,9 +67,7 @@ ifdef DS_BUILD_F
else
ifdef DS_BUILD_E
# TODO: Inherit the earth uses so much RAM that I have removed libmad in order to
- # claw some back.
-
-
+ # claw some back.
else
ifdef DS_BUILD_I
@@ -75,7 +76,7 @@ else
ifdef DS_BUILD_K
else
- # USE_MAD = 1
+ #USE_MAD = 1
endif
endif
endif
@@ -112,7 +113,7 @@ USE_ARM_COSTUME_ASM = 1
ifdef DS_BUILD_A
DEFINES = -DDS_BUILD_A -DUSE_ARM_GFX_ASM -DUSE_ARM_COSTUME_ASM
LOGO = logoa.bmp
- ENABLE_SCUMM = STATIC_PLUGIN
+ ENABLE_SCUMM = $(ENABLED)
USE_ARM_GFX_ASM = 1
BUILD=scummvm-A
endif
@@ -120,66 +121,66 @@ endif
ifdef DS_BUILD_B
DEFINES = -DDS_BUILD_B
LOGO = logob.bmp
- ENABLE_SKY = STATIC_PLUGIN
- ENABLE_QUEEN = STATIC_PLUGIN
+ ENABLE_SKY = $(ENABLED)
+ ENABLE_QUEEN = $(ENABLED)
BUILD=scummvm-B
endif
ifdef DS_BUILD_C
DEFINES = -DDS_BUILD_C
LOGO = logoc.bmp
- ENABLE_AGOS = STATIC_PLUGIN
+ ENABLE_AGOS = $(ENABLED)
BUILD=scummvm-C
endif
ifdef DS_BUILD_D
DEFINES = -DDS_BUILD_D
LOGO = logod.bmp
- ENABLE_GOB = STATIC_PLUGIN
- ENABLE_CINE = STATIC_PLUGIN
- ENABLE_AGI = STATIC_PLUGIN
+ ENABLE_GOB = $(ENABLED)
+ ENABLE_CINE = $(ENABLED)
+ ENABLE_AGI = $(ENABLED)
BUILD=scummvm-D
endif
ifdef DS_BUILD_E
DEFINES = -DDS_BUILD_E
LOGO = logoe.bmp
- ENABLE_SAGA = STATIC_PLUGIN
+ ENABLE_SAGA = $(ENABLED)
BUILD=scummvm-E
endif
ifdef DS_BUILD_F
DEFINES = -DDS_BUILD_F
LOGO = logof.bmp
- ENABLE_KYRA = STATIC_PLUGIN
+ ENABLE_KYRA = $(ENABLED)
BUILD=scummvm-F
endif
ifdef DS_BUILD_G
DEFINES = -DDS_BUILD_G
LOGO = logog.bmp
- ENABLE_LURE = STATIC_PLUGIN
+ ENABLE_LURE = $(ENABLED)
BUILD=scummvm-G
endif
ifdef DS_BUILD_H
DEFINES = -DDS_BUILD_H
LOGO = logoh.bmp
- ENABLE_PARALLACTION = STATIC_PLUGIN
+ ENABLE_PARALLACTION = $(ENABLED)
BUILD=scummvm-H
endif
ifdef DS_BUILD_I
DEFINES = -DDS_BUILD_I
LOGO = logoi.bmp
- ENABLE_MADE = STATIC_PLUGIN
+ ENABLE_MADE = $(ENABLED)
BUILD=scummvm-I
endif
ifdef DS_BUILD_K
DEFINES = -DDS_BUILD_K
LOGO = logok.bmp
- ENABLE_CRUISE = STATIC_PLUGIN
+ ENABLE_CRUISE = $(ENABLED)
BUILD=scummvm-K
endif
@@ -187,18 +188,18 @@ endif
#ifdef DS_BUILD_L
# DEFINES = -DDS_BUILD_L
# LOGO = logog.bmp
-# ENABLE_DRASCULA = STATIC_PLUGIN
+# ENABLE_DRASCULA = $(ENABLED)
# BUILD=scummvm-K
#endif
#ifdef DS_BUILD_M
# DEFINES = -DDS_BUILD_M
# LOGO = logog.bmp
-# ENABLE_TUCKER = STATIC_PLUGIN
+# ENABLE_TUCKER = $(ENABLED)
# BUILD=scummvm-K
#endif
-ARM7BIN := -7 $(CURDIR)/../../arm7/arm7.bin
+ARM7BIN := -7 $(CURDIR)/../arm7/arm7.bin
CC = arm-eabi-gcc
CXX = arm-eabi-g++
@@ -236,14 +237,14 @@ CXXFLAGS= $(CFLAGS) -Wno-non-virtual-dtor -Wno-unknown-pragmas -Wno-reorder \
ASFLAGS = -mcpu=arm9tdmi -mthumb-interwork
-DEFINES += -D__DS__ -DNDS -DARM9 -DNONSTANDARD_PORT -DDISABLE_FANCY_THEMES -DVECTOR_RENDERER_FORMAT=1555 -DDISABLE_DOSBOX_OPL -DDISABLE_DEFAULT_SAVEFILEMANAGER -DARM
+DEFINES += -D__DS__ -DNDS -DARM9 -DNONSTANDARD_PORT -DDISABLE_FANCY_THEMES -DVECTOR_RENDERER_FORMAT=1555 -DDISABLE_DOSBOX_OPL -DDISABLE_DEFAULT_SAVEFILEMANAGER -DELF_LOADER_TARGET -DARM -DARM_TARGET#-DNEW_PLUGIN_DESIGN_FIRST_REFINEMENT
ifdef USE_MAD
DEFINES += -DUSE_MAD
endif
DEFINES += -DREDUCE_MEMORY_USAGE
-LDFLAGS = -specs=ds_arm9.specs -mthumb-interwork -mno-fpu -Wl,-Map,map.txt -Wl,--gc-sections
+LDFLAGS = -specs=ds_arm9.specs -mthumb-interwork -mno-fpu -Wl,--target1-abs,-Map,map.txt#-Wl,--gc-sections
ifdef WRAP_MALLOC
LDFLAGS += -Wl,--wrap,malloc
@@ -252,12 +253,11 @@ endif
BACKEND := ds
-INCLUDES= -I$(portdir)/$(BUILD) -I$(srcdir) -I$(srcdir)/engines \
+INCLUDES= -I$(portdir) -I$(srcdir) -I$(srcdir)/engines \
-I$(portdir)/data -I$(portdir)/../commoninclude \
-I$(portdir)/source -I$(portdir)/source/mad \
-I$(libndsdir)/include -include $(srcdir)/common/scummsys.h
-
LIBS = -lm -L$(libndsdir)/lib -L$(portdir)/lib -lnds9
ifdef USE_MAD
LIBS += -lmad
@@ -266,7 +266,19 @@ ifdef USE_DEBUGGER
LIBS += -ldsdebugger -ldswifi9
endif
+ifeq ($(DYNAMIC_MODULES),1)
+DEFINES += -DDYNAMIC_MODULES
+PRE_OBJS_FLAGS = -Wl,--whole-archive
+POST_OBJS_FLAGS = -Wl,--no-whole-archive
+endif
+
EXECUTABLE = scummvm.elf
+
+PLUGIN_PREFIX =
+PLUGIN_SUFFIX = .plg
+PLUGIN_EXTRA_DEPS = $(srcdir)/backends/plugins/ds/plugin.ld $(srcdir)/backends/plugins/plugin.syms $(EXECUTABLE)
+PLUGIN_LDFLAGS += -nostartfiles -Wl,-q,--target1-abs,--just-symbols,$(EXECUTABLE),-T$(srcdir)/backends/plugins/ds/plugin.ld,--retain-symbols-file,$(srcdir)/backends/plugins/plugin.syms -lstdc++ -lc -mthumb-interwork -mno-fpu#-Wl,--gc-sections -mno-crt0 $(DEVKITPRO)/devkitARM/arm-eabi/lib/ds_arm9_crt0.o
+
MKDIR = mkdir -p
RM = rm -f
RM_REC = rm -rf
@@ -340,12 +352,10 @@ OPT_SIZE := -Os -mthumb
OBJS := $(DATA_OBJS) $(PORT_OBJS) $(FAT_OBJS)
-
MODULE_DIRS += .
-ndsall:
- @[ -d $(BUILD) ] || mkdir -p $(BUILD)
- make -C ./$(BUILD) -f ../makefile scummvm.nds scummvm.ds.gba
+ndsall: plugins
+ make -f makefile scummvm.nds scummvm.ds.gba
include $(srcdir)/Makefile.common
@@ -354,11 +364,10 @@ semiclean:
clean:
$(RM) $(OBJS) $(EXECUTABLE)
- rm -fr $(BUILD)
+ rm -rf *.h engines plugins scummvm.nds scummvm.ds.gba
dist : SCUMMVM.BIN plugins plugin_dist
-
#---------------------------------------------------------------------------------
# canned command sequence for binary data
#---------------------------------------------------------------------------------
@@ -400,13 +409,14 @@ endef
#---------------------------------------------------------------------------------
%.nds: %.bin
- ndstool -c $@ -9 $< $(ARM7BIN) -b ../../$(LOGO) "$(@F);ScummVM $(VERSION);DS Port"
+ ndstool -c $@ -9 $< $(ARM7BIN) -b ../$(LOGO) "$(@F);ScummVM $(VERSION);DS Port"
%.ds.gba: %.nds
dsbuild $< -o $@ -l $(portdir)/ndsloader.bin
padbin 16 $@
#---------------------------------------------------------------------------------
+
%.bin: %.elf
$(OBJCOPY) -S -O binary $< $@
diff --git a/backends/platform/ds/arm9/source/dsmain.cpp b/backends/platform/ds/arm9/source/dsmain.cpp
index 95bfdfe40a..4c7d6b89ae 100644
--- a/backends/platform/ds/arm9/source/dsmain.cpp
+++ b/backends/platform/ds/arm9/source/dsmain.cpp
@@ -105,6 +105,8 @@
#endif
#include "engine.h"
+#include "backends/plugins/ds/ds-provider.h"
+#include "backends/plugins/elf-provider.h"
#include "backends/fs/ds/ds-fs.h"
#include "base/version.h"
#include "common/util.h"
@@ -3213,6 +3215,9 @@ int main(void) {
const char *argv[] = {"/scummvmds"};
#endif
+#ifdef DYNAMIC_MODULES
+ PluginManager::instance().addPluginProvider(new DSPluginProvider());
+#endif
while (1) {
scummvm_main(ARRAYSIZE(argv), (char **) &argv);