mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-14 02:27:39 -04:00
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
This commit is contained in:
parent
3478bc5d6d
commit
cae4ae2c71
142 changed files with 372 additions and 341 deletions
|
@ -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, $+) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue