From cae4ae2c71ae10ff67d39a78a705136e740dc07e Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Tue, 24 Aug 2010 14:30:46 +0000 Subject: Second try: Introduce plugin_crt0.c that every plugin links. It handles exit() properly, calling the handler also when the plugin returns normally (also make exit() more standard compliant while at it). It also holds PLUGIN_HEADER, so that it doesn't need to be in each plugin anymore. To work better together with callbacks passed to rb->default_event_handler_ex() introduce exit_on_usb() which will call the exit handler before showing the usb screen and exit() after it. In most cases rb->default_event_handler_ex() was passed a callback which was manually called at all other return points. This can now be done via atexit(). In future plugin_crt0.c could also handle clearing bss, initializing iram and more. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27873 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/plugins.make | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'apps/plugins/plugins.make') diff --git a/apps/plugins/plugins.make b/apps/plugins/plugins.make index 532dba68c0..ed432d92be 100644 --- a/apps/plugins/plugins.make +++ b/apps/plugins/plugins.make @@ -33,7 +33,7 @@ PLUGIN_LDS := $(APPSDIR)/plugins/plugin.lds PLUGINLINK_LDS := $(BUILDDIR)/apps/plugins/plugin.link OVERLAYREF_LDS := $(BUILDDIR)/apps/plugins/overlay_ref.link endif - +PLUGIN_CRT0 := $(BUILDDIR)/apps/plugins/plugin_crt0.o # multifile plugins (subdirs): PLUGINSUBDIRS := $(call preprocess, $(APPSDIR)/plugins/SUBDIRS) @@ -49,7 +49,7 @@ PLUGINFLAGS = -I$(APPSDIR)/plugins -DPLUGIN $(CFLAGS) $(ROCKS1): $(BUILDDIR)/%.rock: $(BUILDDIR)/%.o # dependency for all plugins -$(ROCKS): $(APPSDIR)/plugin.h $(PLUGINLINK_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) +$(ROCKS): $(APPSDIR)/plugin.h $(PLUGINLINK_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) $(PLUGIN_CRT0) $(LIBSETJMP) $(PLUGINLIB): $(PLUGINLIB_OBJ) $(SILENT)$(shell rm -f $@) @@ -89,7 +89,7 @@ else endif PLUGINLDFLAGS += $(GLOBAL_LDOPTS) -$(BUILDDIR)/%.rock: $(LIBSETJMP) +$(BUILDDIR)/%.rock: $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o $(BUILDDIR)/$*.elf \ $(filter %.o, $^) \ $(filter %.a, $+) \ @@ -103,7 +103,7 @@ endif $(BUILDDIR)/apps/plugins/%.lua: $(ROOTDIR)/apps/plugins/%.lua $(call PRINTS,CP $(subst $(ROOTDIR)/,,$<))cp $< $(BUILDDIR)/apps/plugins/ -$(BUILDDIR)/%.refmap: $(APPSDIR)/plugin.h $(OVERLAYREF_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) +$(BUILDDIR)/%.refmap: $(APPSDIR)/plugin.h $(OVERLAYREF_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) $(LIBSETJMP) $(PLUGIN_CRT0) $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o /dev/null \ $(filter %.o, $^) \ $(filter %.a, $+) \ -- cgit v1.2.3