summaryrefslogtreecommitdiff
path: root/apps/plugins/plugins.make
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2010-08-24 14:30:46 +0000
committerThomas Martitz <kugel@rockbox.org>2010-08-24 14:30:46 +0000
commitcae4ae2c71ae10ff67d39a78a705136e740dc07e (patch)
treeb5bb5e1879493f67d7c7ad977fba90eb49b743d7 /apps/plugins/plugins.make
parent3478bc5d6dc0a081c3aeb4f501c8b4cb4f53a78d (diff)
downloadrockbox-cae4ae2c71ae10ff67d39a78a705136e740dc07e.tar.gz
rockbox-cae4ae2c71ae10ff67d39a78a705136e740dc07e.zip
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
Diffstat (limited to 'apps/plugins/plugins.make')
-rw-r--r--apps/plugins/plugins.make8
1 files changed, 4 insertions, 4 deletions
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
33PLUGINLINK_LDS := $(BUILDDIR)/apps/plugins/plugin.link 33PLUGINLINK_LDS := $(BUILDDIR)/apps/plugins/plugin.link
34OVERLAYREF_LDS := $(BUILDDIR)/apps/plugins/overlay_ref.link 34OVERLAYREF_LDS := $(BUILDDIR)/apps/plugins/overlay_ref.link
35endif 35endif
36 36PLUGIN_CRT0 := $(BUILDDIR)/apps/plugins/plugin_crt0.o
37# multifile plugins (subdirs): 37# multifile plugins (subdirs):
38PLUGINSUBDIRS := $(call preprocess, $(APPSDIR)/plugins/SUBDIRS) 38PLUGINSUBDIRS := $(call preprocess, $(APPSDIR)/plugins/SUBDIRS)
39 39
@@ -49,7 +49,7 @@ PLUGINFLAGS = -I$(APPSDIR)/plugins -DPLUGIN $(CFLAGS)
49$(ROCKS1): $(BUILDDIR)/%.rock: $(BUILDDIR)/%.o 49$(ROCKS1): $(BUILDDIR)/%.rock: $(BUILDDIR)/%.o
50 50
51# dependency for all plugins 51# dependency for all plugins
52$(ROCKS): $(APPSDIR)/plugin.h $(PLUGINLINK_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) 52$(ROCKS): $(APPSDIR)/plugin.h $(PLUGINLINK_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) $(PLUGIN_CRT0) $(LIBSETJMP)
53 53
54$(PLUGINLIB): $(PLUGINLIB_OBJ) 54$(PLUGINLIB): $(PLUGINLIB_OBJ)
55 $(SILENT)$(shell rm -f $@) 55 $(SILENT)$(shell rm -f $@)
@@ -89,7 +89,7 @@ else
89endif 89endif
90PLUGINLDFLAGS += $(GLOBAL_LDOPTS) 90PLUGINLDFLAGS += $(GLOBAL_LDOPTS)
91 91
92$(BUILDDIR)/%.rock: $(LIBSETJMP) 92$(BUILDDIR)/%.rock:
93 $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o $(BUILDDIR)/$*.elf \ 93 $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o $(BUILDDIR)/$*.elf \
94 $(filter %.o, $^) \ 94 $(filter %.o, $^) \
95 $(filter %.a, $+) \ 95 $(filter %.a, $+) \
@@ -103,7 +103,7 @@ endif
103$(BUILDDIR)/apps/plugins/%.lua: $(ROOTDIR)/apps/plugins/%.lua 103$(BUILDDIR)/apps/plugins/%.lua: $(ROOTDIR)/apps/plugins/%.lua
104 $(call PRINTS,CP $(subst $(ROOTDIR)/,,$<))cp $< $(BUILDDIR)/apps/plugins/ 104 $(call PRINTS,CP $(subst $(ROOTDIR)/,,$<))cp $< $(BUILDDIR)/apps/plugins/
105 105
106$(BUILDDIR)/%.refmap: $(APPSDIR)/plugin.h $(OVERLAYREF_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) 106$(BUILDDIR)/%.refmap: $(APPSDIR)/plugin.h $(OVERLAYREF_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) $(LIBSETJMP) $(PLUGIN_CRT0)
107 $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o /dev/null \ 107 $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o /dev/null \
108 $(filter %.o, $^) \ 108 $(filter %.o, $^) \
109 $(filter %.a, $+) \ 109 $(filter %.a, $+) \