diff options
author | Thomas Martitz <kugel@rockbox.org> | 2010-08-24 14:30:46 +0000 |
---|---|---|
committer | Thomas Martitz <kugel@rockbox.org> | 2010-08-24 14:30:46 +0000 |
commit | cae4ae2c71ae10ff67d39a78a705136e740dc07e (patch) | |
tree | b5bb5e1879493f67d7c7ad977fba90eb49b743d7 /apps/plugins/plugins.make | |
parent | 3478bc5d6dc0a081c3aeb4f501c8b4cb4f53a78d (diff) | |
download | rockbox-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.make | 8 |
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 | |||
33 | PLUGINLINK_LDS := $(BUILDDIR)/apps/plugins/plugin.link | 33 | PLUGINLINK_LDS := $(BUILDDIR)/apps/plugins/plugin.link |
34 | OVERLAYREF_LDS := $(BUILDDIR)/apps/plugins/overlay_ref.link | 34 | OVERLAYREF_LDS := $(BUILDDIR)/apps/plugins/overlay_ref.link |
35 | endif | 35 | endif |
36 | 36 | PLUGIN_CRT0 := $(BUILDDIR)/apps/plugins/plugin_crt0.o | |
37 | # multifile plugins (subdirs): | 37 | # multifile plugins (subdirs): |
38 | PLUGINSUBDIRS := $(call preprocess, $(APPSDIR)/plugins/SUBDIRS) | 38 | PLUGINSUBDIRS := $(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 | |||
89 | endif | 89 | endif |
90 | PLUGINLDFLAGS += $(GLOBAL_LDOPTS) | 90 | PLUGINLDFLAGS += $(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, $+) \ |