diff --git a/backends/platform/ds/arm9/makefile b/backends/platform/ds/arm9/makefile index b2512d788e6..df7063c08a8 100644 --- a/backends/platform/ds/arm9/makefile +++ b/backends/platform/ds/arm9/makefile @@ -237,7 +237,7 @@ CXXFLAGS= $(CFLAGS) -Wno-non-virtual-dtor -Wno-unknown-pragmas -Wno-reorder \ ASFLAGS = -mcpu=arm9tdmi -mthumb-interwork -DEFINES += -D__DS__ -DNDS -DARM9 -DNONSTANDARD_PORT -DDISABLE_TEXT_CONSOLE -DDISABLE_FANCY_THEMES -DVECTOR_RENDERER_FORMAT=1555 -DDISABLE_DOSBOX_OPL -DDISABLE_DEFAULT_SAVEFILEMANAGER -DELF_LOADER_TARGET -DARM -DARM_TARGET -DONE_PLUGIN_AT_A_TIME +DEFINES += -D__DS__ -DNDS -DARM9 -DNONSTANDARD_PORT -DDISABLE_TEXT_CONSOLE -DDISABLE_FANCY_THEMES -DVECTOR_RENDERER_FORMAT=1555 -DDISABLE_DOSBOX_OPL -DDISABLE_DEFAULT_SAVEFILEMANAGER -DUSE_ELF_LOADER -DARM -DARM_TARGET -DONE_PLUGIN_AT_A_TIME ifdef USE_MAD DEFINES += -DUSE_MAD endif diff --git a/backends/platform/ps2/Makefile.ps2 b/backends/platform/ps2/Makefile.ps2 index 7319fcb21df..8c813412537 100644 --- a/backends/platform/ps2/Makefile.ps2 +++ b/backends/platform/ps2/Makefile.ps2 @@ -78,7 +78,7 @@ DEPDIR = .deps TARGET = elf/scummvm.elf DEFINES += -DUSE_VORBIS -DUSE_TREMOR -DUSE_MAD -DUSE_ZLIB -DFORCE_RTL -DDISABLE_SAVEGAME_SORTING -D_EE -D__PLAYSTATION2__ -G2 -O2 -Wall -Wno-multichar -fno-rtti -fno-exceptions -DNO_ADAPTOR -DEFINES += -DELF_LOADER_TARGET -DMIPS_TARGET -DONE_PLUGIN_AT_A_TIME +DEFINES += -DUSE_ELF_LOADER -DMIPS_TARGET -DONE_PLUGIN_AT_A_TIME INCLUDES = $(addprefix -I$(PS2_EXTRA),$(PS2_EXTRA_INCS)) INCLUDES += -I $(PS2SDK)/ee/include -I $(PS2SDK)/common/include -I ./common -I . -I $(srcdir) -I $(srcdir)/engines diff --git a/backends/platform/psp/Makefile b/backends/platform/psp/Makefile index 96816348fd0..e5642008977 100644 --- a/backends/platform/psp/Makefile +++ b/backends/platform/psp/Makefile @@ -67,7 +67,7 @@ endif # Variables for common Scummvm makefile CXX = psp-g++ CXXFLAGS = -O3 -Wall -Wno-multichar -fno-exceptions -fno-rtti -DEFINES = -D__PSP__ -DNONSTANDARD_PORT -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE -DUSE_ZLIB -DDISABLE_DOSBOX_OPL -DUSE_RGB_COLOR -DELF_LOADER_TARGET -DMIPS_TARGET +DEFINES = -D__PSP__ -DNONSTANDARD_PORT -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE -DUSE_ZLIB -DDISABLE_DOSBOX_OPL -DUSE_RGB_COLOR -DUSE_ELF_LOADER -DMIPS_TARGET LDFLAGS := INCDIR := $(srcdir) . $(srcdir)/engines/ $(PSPSDK)/include diff --git a/backends/plugins/elf/arm-loader.cpp b/backends/plugins/elf/arm-loader.cpp index 5dbbe3ff04f..93d3c60f846 100644 --- a/backends/plugins/elf/arm-loader.cpp +++ b/backends/plugins/elf/arm-loader.cpp @@ -23,9 +23,10 @@ * */ -#if defined(DYNAMIC_MODULES) && defined(ARM_TARGET) +#include "common/scummsys.h" + +#if defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(ARM_TARGET) -#include "backends/plugins/elf/elf-loader.h" #include "backends/plugins/elf/arm-loader.h" #include "common/debug.h" @@ -128,5 +129,5 @@ bool ARMDLObject::relocateRels(Elf32_Ehdr *ehdr, Elf32_Shdr *shdr) { return true; } -#endif /* defined(DYNAMIC_MODULES) && defined(ARM_TARGET) */ +#endif /* defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(ARM_TARGET) */ diff --git a/backends/plugins/elf/arm-loader.h b/backends/plugins/elf/arm-loader.h index acc05cb143d..e08f8cd0a52 100644 --- a/backends/plugins/elf/arm-loader.h +++ b/backends/plugins/elf/arm-loader.h @@ -23,11 +23,13 @@ * */ -#if defined(DYNAMIC_MODULES) && defined(ARM_TARGET) - #ifndef BACKENDS_PLUGINS_ARM_LOADER_H #define BACKENDS_PLUGINS_ARM_LOADER_H +#include "common/scummsys.h" + +#if defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(ARM_TARGET) + #include "backends/plugins/elf/elf-loader.h" class ARMDLObject : public DLObject { @@ -41,6 +43,7 @@ public: } }; +#endif /* defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(ARM_TARGET) */ + #endif /* BACKENDS_PLUGINS_ARM_LOADER_H */ -#endif /* defined(DYNAMIC_MODULES) && defined(ARM_TARGET) */ diff --git a/backends/plugins/elf/elf-loader.cpp b/backends/plugins/elf/elf-loader.cpp index 32eae2cba88..f8f1987b137 100644 --- a/backends/plugins/elf/elf-loader.cpp +++ b/backends/plugins/elf/elf-loader.cpp @@ -23,7 +23,9 @@ * */ -#if defined(DYNAMIC_MODULES) && defined(ELF_LOADER_TARGET) +#include "common/scummsys.h" + +#if defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) #include "backends/plugins/elf/elf-loader.h" @@ -423,5 +425,5 @@ void *DLObject::symbol(const char *name) { return 0; } -#endif /* defined(DYNAMIC_MODULES) && defined(ELF_LOADER_TARGET) */ +#endif /* defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) */ diff --git a/backends/plugins/elf/elf-loader.h b/backends/plugins/elf/elf-loader.h index ac190327f7c..87907d67c9f 100644 --- a/backends/plugins/elf/elf-loader.h +++ b/backends/plugins/elf/elf-loader.h @@ -23,11 +23,13 @@ * */ -#if defined(DYNAMIC_MODULES) && defined(ELF_LOADER_TARGET) - #ifndef BACKENDS_PLUGINS_ELF_LOADER_H #define BACKENDS_PLUGINS_ELF_LOADER_H +#include "common/scummsys.h" + +#if defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) + #include #include "backends/plugins/elf/elf32.h" @@ -96,7 +98,7 @@ public: void discard_symtab(); }; +#endif /* defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) */ + #endif /* BACKENDS_PLUGINS_ELF_LOADER_H */ -#endif /* defined(DYNAMIC_MODULES) && defined(ELF_LOADER_TARGET) */ - diff --git a/backends/plugins/elf/elf-provider.cpp b/backends/plugins/elf/elf-provider.cpp index ddffde3e38f..8629de6c45f 100644 --- a/backends/plugins/elf/elf-provider.cpp +++ b/backends/plugins/elf/elf-provider.cpp @@ -23,7 +23,9 @@ * */ -#if defined(DYNAMIC_MODULES) && defined(ELF_LOADER_TARGET) +#include "common/scummsys.h" + +#if defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) #ifdef ELF_LOADER_CXA_ATEXIT #include @@ -158,4 +160,5 @@ bool ELFPluginProvider::isPluginFilename(const Common::FSNode &node) const { return true; } -#endif // defined(DYNAMIC_MODULES) && defined(ELF_LOADER_TARGET) +#endif // defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) + diff --git a/backends/plugins/elf/elf-provider.h b/backends/plugins/elf/elf-provider.h index 6918183f1ff..92fe5d63d12 100644 --- a/backends/plugins/elf/elf-provider.h +++ b/backends/plugins/elf/elf-provider.h @@ -23,11 +23,13 @@ * */ -#if defined(DYNAMIC_MODULES) && defined(ELF_LOADER_TARGET) - #ifndef BACKENDS_PLUGINS_ELF_PROVIDER_H #define BACKENDS_PLUGINS_ELF_PROVIDER_H +#include "common/scummsys.h" + +#if defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) + #include "backends/plugins/elf/elf-loader.h" #include "common/fs.h" @@ -74,6 +76,7 @@ protected: bool isPluginFilename(const Common::FSNode &node) const; }; +#endif // defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) + #endif /* BACKENDS_PLUGINS_ELF_PROVIDER_H */ -#endif // defined(DYNAMIC_MODULES) && defined(ELF_LOADER_TARGET) diff --git a/backends/plugins/elf/elf32.h b/backends/plugins/elf/elf32.h index c59f158d6e4..d3a8d2e4361 100644 --- a/backends/plugins/elf/elf32.h +++ b/backends/plugins/elf/elf32.h @@ -28,6 +28,8 @@ #include "common/scummsys.h" +#if defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) + /** * ELF stuff: * The contents of this file were gathered mainly from the SYSTEM V APPLICATION BINARY INTERFACE. @@ -250,5 +252,7 @@ typedef struct { __valgp; \ } +#endif // defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) + #endif /* BACKENDS_ELF_H */ diff --git a/backends/plugins/elf/mips-loader.cpp b/backends/plugins/elf/mips-loader.cpp index 9ec71fe4f34..75db067158a 100644 --- a/backends/plugins/elf/mips-loader.cpp +++ b/backends/plugins/elf/mips-loader.cpp @@ -23,7 +23,9 @@ * */ -#if defined(DYNAMIC_MODULES) && defined(MIPS_TARGET) +#include "common/scummsys.h" + +#if defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(MIPS_TARGET) #include "backends/plugins/elf/mips-loader.h" @@ -331,5 +333,5 @@ void MIPSDLObject::unload() { } } -#endif /* defined(DYNAMIC_MODULES) && defined(MIPS_TARGET) */ +#endif /* defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(MIPS_TARGET) */ diff --git a/backends/plugins/elf/mips-loader.h b/backends/plugins/elf/mips-loader.h index 1a0974d153c..ef6efda21f8 100644 --- a/backends/plugins/elf/mips-loader.h +++ b/backends/plugins/elf/mips-loader.h @@ -24,11 +24,13 @@ * */ -#if defined(DYNAMIC_MODULES) && defined(MIPS_TARGET) - #ifndef BACKENDS_PLUGINS_MIPS_LOADER_H #define BACKENDS_PLUGINS_MIPS_LOADER_H +#include "common/scummsys.h" + +#if defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(MIPS_TARGET) + #include "backends/plugins/elf/elf-loader.h" #include "backends/plugins/elf/shorts-segment-manager.h" @@ -51,7 +53,7 @@ public: } }; +#endif /* defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(MIPS_TARGET) */ + #endif /* BACKENDS_PLUGINS_MIPS_LOADER_H */ -#endif /* defined(DYNAMIC_MODULES) && defined(MIPS_TARGET) */ - diff --git a/backends/plugins/elf/ppc-loader.cpp b/backends/plugins/elf/ppc-loader.cpp index 4be27ac9fc5..ec6d4428761 100644 --- a/backends/plugins/elf/ppc-loader.cpp +++ b/backends/plugins/elf/ppc-loader.cpp @@ -23,7 +23,9 @@ * */ -#if defined(DYNAMIC_MODULES) && defined(PPC_TARGET) +#include "common/scummsys.h" + +#if defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(PPC_TARGET) #include "backends/plugins/elf/elf-loader.h" #include "backends/plugins/elf/ppc-loader.h" @@ -123,5 +125,5 @@ bool PPCDLObject::relocateRels(Elf32_Ehdr *ehdr, Elf32_Shdr *shdr) { return true; } -#endif /* defined(DYNAMIC_MODULES) && defined(PPC_TARGET) */ +#endif /* defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(PPC_TARGET) */ diff --git a/backends/plugins/elf/ppc-loader.h b/backends/plugins/elf/ppc-loader.h index 5af96824572..f9340a6a7b0 100644 --- a/backends/plugins/elf/ppc-loader.h +++ b/backends/plugins/elf/ppc-loader.h @@ -23,11 +23,13 @@ * */ -#if defined(DYNAMIC_MODULES) && defined(PPC_TARGET) - #ifndef BACKENDS_PLUGINS_PPC_LOADER_H #define BACKENDS_PLUGINS_PPC_LOADER_H +#include "common/scummsys.h" + +#if defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(PPC_TARGET) + #include "backends/plugins/elf/elf-loader.h" class PPCDLObject : public DLObject { @@ -41,7 +43,7 @@ public: } }; +#endif /* defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(PPC_TARGET) */ + #endif /* BACKENDS_PLUGINS_PPC_LOADER_H */ -#endif /* defined(DYNAMIC_MODULES) && defined(PPC_TARGET) */ - diff --git a/backends/plugins/elf/shorts-segment-manager.cpp b/backends/plugins/elf/shorts-segment-manager.cpp index f444e9e7170..17fe650c310 100644 --- a/backends/plugins/elf/shorts-segment-manager.cpp +++ b/backends/plugins/elf/shorts-segment-manager.cpp @@ -23,7 +23,9 @@ * */ -#if defined(DYNAMIC_MODULES) && defined(MIPS_TARGET) +#include "common/scummsys.h" + +#if defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(MIPS_TARGET) #include "backends/plugins/elf/shorts-segment-manager.h" @@ -82,5 +84,6 @@ void ShortSegmentManager::deleteSegment(ShortSegmentManager::Segment *seg) { delete seg; } -#endif /* DYNAMIC_MODULES && MIPS_TARGET */ +#endif // defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(MIPS_TARGET) + diff --git a/backends/plugins/elf/shorts-segment-manager.h b/backends/plugins/elf/shorts-segment-manager.h index c7cdcfe1f7a..219648d91d9 100644 --- a/backends/plugins/elf/shorts-segment-manager.h +++ b/backends/plugins/elf/shorts-segment-manager.h @@ -23,11 +23,13 @@ * */ -#if defined(DYNAMIC_MODULES) && defined(MIPS_TARGET) - #ifndef SHORTS_SEGMENT_MANAGER_H #define SHORTS_SEGMENT_MANAGER_H +#include "common/scummsys.h" + +#if defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(MIPS_TARGET) + #include "backends/plugins/elf/elf32.h" #include "common/singleton.h" @@ -109,7 +111,7 @@ private: char *_highestAddress; }; +#endif // defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER) && defined(MIPS_TARGET) + #endif /* SHORTS_SEGMENT_MANAGER_H */ -#endif /* defined(DYNAMIC_MODULES) && defined(MIPS_TARGET) */ - diff --git a/base/plugins.h b/base/plugins.h index d4728d8a4c4..0893312102e 100644 --- a/base/plugins.h +++ b/base/plugins.h @@ -91,10 +91,11 @@ extern int pluginTypeVersions[PLUGIN_TYPE_MAX]; (ENABLE_##ID && (ENABLE_##ID == DYNAMIC_PLUGIN) && DYNAMIC_MODULES) // see comments in backends/plugins/elf/elf-provider.cpp -#if defined(ELF_LOADER_TARGET) && defined(ELF_LOADER_CXA_ATEXIT) -#define PLUGIN_DYNAMIC_EXTRA_DECL uint32 __dso_handle __attribute__((visibility ("hidden"))) = 0 +#if defined(USE_ELF_LOADER) && defined(ELF_LOADER_CXA_ATEXIT) +#define PLUGIN_DYNAMIC_DSO_HANDLE \ + uint32 __dso_handle __attribute__((visibility("hidden"))) = 0; #else -#define PLUGIN_DYNAMIC_EXTRA_DECL void dummyFuncToAllowTrailingSemicolon() +#define PLUGIN_DYNAMIC_DSO_HANDLE #endif /** @@ -126,7 +127,7 @@ extern int pluginTypeVersions[PLUGIN_TYPE_MAX]; */ #define REGISTER_PLUGIN_DYNAMIC(ID,TYPE,PLUGINCLASS) \ extern "C" { \ - PLUGIN_DYNAMIC_EXTRA_DECL; \ + PLUGIN_DYNAMIC_DSO_HANDLE \ PLUGIN_EXPORT int32 PLUGIN_getVersion() { return PLUGIN_VERSION; } \ PLUGIN_EXPORT int32 PLUGIN_getType() { return TYPE; } \ PLUGIN_EXPORT int32 PLUGIN_getTypeVersion() { return TYPE##_VERSION; } \ diff --git a/configure b/configure index db903cf83c7..a12a37540ff 100755 --- a/configure +++ b/configure @@ -137,6 +137,7 @@ _indeo3=auto _enable_prof=no _unix=no _global_constructors=no +_elf_loader=no # Default vkeybd/keymapper options _vkeybd=no _keymapper=no @@ -1617,7 +1618,6 @@ if test -n "$_host"; then DEFINES="$DEFINES -DREDUCE_MEMORY_USAGE -DSTREAM_AUDIO_FROM_DISK" DEFINES="$DEFINES -DDISABLE_DOSBOX_OPL -DDISABLE_SID -DDISABLE_NES_APU" DEFINES="$DEFINES -DDISABLE_COMMAND_LINE" - DEFINES="$DEFINES -DARM_TARGET" _need_memalign=yes add_line_to_config_mk 'USE_ARM_SOUND_ASM = 1' add_line_to_config_mk 'USE_ARM_SMUSH_ASM = 1' @@ -2007,20 +2007,10 @@ POST_OBJS_FLAGS := -Wl,--no-whole-archive ' ;; ds) -DEFINES="$DEFINES -DELF_LOADER_TARGET -DELF_LOADER_CXA_ATEXIT -DONE_PLUGIN_AT_A_TIME" -_def_plugin=' -#define PLUGIN_PREFIX "" -#define PLUGIN_SUFFIX ".plg" -' + _elf_loader=yes + DEFINES="$DEFINES -DARM_TARGET -DELF_LOADER_CXA_ATEXIT -DONE_PLUGIN_AT_A_TIME" _mak_plugins=' -DYNAMIC_MODULES := 1 -PLUGIN_PREFIX := -PLUGIN_SUFFIX := .plg -PLUGIN_EXTRA_DEPS = $(EXECUTABLE) -CXXFLAGS += -DDYNAMIC_MODULES -PLUGIN_LDFLAGS = -nostartfiles -Wl,-q,--just-symbols,$(EXECUTABLE),-T$(srcdir)/backends/plugins/ds/plugin.ld -mthumb-interwork -mno-fpu -Wl,--retain-symbols-file,$(srcdir)/backends/plugins/elf/plugin.syms -PRE_OBJS_FLAGS := -Wl,--whole-archive -POST_OBJS_FLAGS := -Wl,--no-whole-archive +PLUGIN_LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/ds/plugin.ld -mthumb-interwork -mno-fpu ' ;; freebsd*) @@ -2041,20 +2031,10 @@ POST_OBJS_FLAGS := -Wl,-no-whole-archive ' ;; gamecube | wii) -DEFINES="$DEFINES -DELF_LOADER_TARGET -DPPC_TARGET -DELF_LOADER_CXA_ATEXIT -DONE_PLUGIN_AT_A_TIME" -_def_plugin=' -#define PLUGIN_PREFIX "" -#define PLUGIN_SUFFIX ".plg" -' + _elf_loader=yes + DEFINES="$DEFINES -DPPC_TARGET -DELF_LOADER_CXA_ATEXIT -DONE_PLUGIN_AT_A_TIME" _mak_plugins=' -DYNAMIC_MODULES := 1 -PLUGIN_PREFIX := -PLUGIN_SUFFIX := .plg -PLUGIN_EXTRA_DEPS = $(EXECUTABLE) -CXXFLAGS += -DDYNAMIC_MODULES -PLUGIN_LDFLAGS = -nostartfiles -Wl,-q,--just-symbols,$(EXECUTABLE),-T$(srcdir)/backends/plugins/wii/plugin.ld -Wl,--retain-symbols-file,$(srcdir)/backends/plugins/elf/plugin.syms -PRE_OBJS_FLAGS := -Wl,--whole-archive -POST_OBJS_FLAGS := -Wl,--no-whole-archive +PLUGIN_LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/wii/plugin.ld ' ;; linux*|android) @@ -2092,40 +2072,19 @@ POST_OBJS_FLAGS := -Wl,--export-all-symbols -Wl,--no-whole-archive -Wl,--out-im ' ;; ps2) -DEFINES="$DEFINES -DELF_LOADER_TARGET -DMIPS_TARGET" -_def_plugin=' -#define PLUGIN_PREFIX "" -#define PLUGIN_SUFFIX ".plg" -' + _elf_loader=yes + DEFINES="$DEFINES -DMIPS_TARGET" _mak_plugins=' -DYNAMIC_MODULES := 1 -PLUGIN_PREFIX := -PLUGIN_SUFFIX := .plg -PLUGIN_EXTRA_DEPS = $(EXECUTABLE) -CXXFLAGS += -DDYNAMIC_MODULES -LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -T$(srcdir)/backends/plugins/ps2/main_prog.ld -PLUGIN_LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -PLUGIN_LDFLAGS += -nostartfiles -Wl,-q,--just-symbols,$(EXECUTABLE),-T$(srcdir)/backends/plugins/ps2/plugin.ld,--retain-symbols-file,$(srcdir)/backends/plugins/elf/plugin.syms -lstdc++ -lc -PRE_OBJS_FLAGS := -Wl,--whole-archive -POST_OBJS_FLAGS := -Wl,--no-whole-archive +LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -T$(srcdir)/backends/plugins/ps2/main_prog.ld +PLUGIN_LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/plugin.ld -lstdc++ -lc ' ;; psp) -DEFINES="$DEFINES -DELF_LOADER_TARGET -DMIPS_TARGET -DELF_LOADER_CXA_ATEXIT" -_def_plugin=' -#define PLUGIN_PREFIX "" -#define PLUGIN_SUFFIX ".plg" -' + _elf_loader=yes + DEFINES="$DEFINES -DMIPS_TARGET -DELF_LOADER_CXA_ATEXIT" _mak_plugins=' -DYNAMIC_MODULES := 1 -PLUGIN_PREFIX := -PLUGIN_SUFFIX := .plg -PLUGIN_EXTRA_DEPS = $(EXECUTABLE) -CXXFLAGS += -DDYNAMIC_MODULES -LDFLAGS += -Wl,-T$(srcdir)/backends/platform/psp/main_prog.ld -PLUGIN_LDFLAGS = -nostartfiles -Wl,-q,--just-symbols,$(EXECUTABLE),--retain-symbols-file,$(srcdir)/backends/plugins/elf/plugin.syms,-T$(srcdir)/backends/plugins/psp/plugin.ld -lc -Wl,--wrap,memcpy -PRE_OBJS_FLAGS := -Wl,--whole-archive -POST_OBJS_FLAGS := -Wl,--no-whole-archive +LDFLAGS += -Wl,-T$(srcdir)/backends/platform/psp/main_prog.ld +PLUGIN_LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/psp/plugin.ld -lc -Wl,--wrap,memcpy ' ;; *) @@ -2137,6 +2096,27 @@ POST_OBJS_FLAGS := -Wl,--no-whole-archive echo "$_dynamic_modules" fi +# +# Check whether integrated ELF loader support is requested +# +define_in_config_if_yes "$_elf_loader" 'USE_ELF_LOADER' + +if test "$_elf_loader" = yes; then + CXXFLAGS="$CXXFLAGS -DDYNAMIC_MODULES" + _def_plugin=' +#define PLUGIN_PREFIX "" +#define PLUGIN_SUFFIX ".plg" +' + _mak_plugins=' +DYNAMIC_MODULES := 1 +PLUGIN_PREFIX := +PLUGIN_SUFFIX := .plg +PLUGIN_EXTRA_DEPS = $(EXECUTABLE) +PLUGIN_LDFLAGS = -nostartfiles -Wl,-q,--just-symbols,$(EXECUTABLE),--retain-symbols-file,$(srcdir)/backends/plugins/elf/plugin.syms +PRE_OBJS_FLAGS := -Wl,--whole-archive +POST_OBJS_FLAGS := -Wl,--no-whole-archive +'"$_mak_plugins" +fi # # Check whether integrated MT-32 emulator support is requested