From f82c9449121617386884b3047fba3e18a1c7bc76 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Wed, 4 Mar 2009 23:41:58 +0000 Subject: Use a static pattern rule to restrict the dependency on [pluginname].o to single-file plugins. This allows the pattern rule for %.rock (with all dependencies defined elsewhere) to pick up multi-file plugins with no [pluginname].o file, and get rid of the duplication in (doom|midi|reversi).make. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20205 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/doom/doom.make | 12 ------------ apps/plugins/midi/midi.make | 12 ------------ apps/plugins/plugins.make | 14 ++++++++++---- apps/plugins/reversi/reversi.make | 12 ------------ 4 files changed, 10 insertions(+), 40 deletions(-) (limited to 'apps/plugins') diff --git a/apps/plugins/doom/doom.make b/apps/plugins/doom/doom.make index fc73729c22..adec5432e7 100644 --- a/apps/plugins/doom/doom.make +++ b/apps/plugins/doom/doom.make @@ -34,18 +34,6 @@ else endif $(DOOMBUILDDIR)/doom.rock: $(DOOM_OBJ) -# for some reason, this doesn't match the implicit rule in plugins.make, -# so we have to duplicate the link command here - $(call PRINTS,LD $(@F)) - $(SILENT)$(CC) $(PLUGINFLAGS) -o $*.elf \ - $(filter %.o, $^) \ - $(filter %.a, $^) \ - -lgcc $(PLUGINLDFLAGS) -ifdef SIMVER - $(SILENT)cp $*.elf $@ -else - $(SILENT)$(OC) -O binary $*.elf $@ -endif # new rule needed to use extra compile flags $(DOOMBUILDDIR)/%.o: $(DOOMSRCDIR)/%.c diff --git a/apps/plugins/midi/midi.make b/apps/plugins/midi/midi.make index 9de8496d90..549d8e7c0a 100644 --- a/apps/plugins/midi/midi.make +++ b/apps/plugins/midi/midi.make @@ -21,18 +21,6 @@ OTHER_SRC += $(MIDI_SRC) MIDICFLAGS = $(PLUGINFLAGS) -O2 $(MIDIBUILDDIR)/midi.rock: $(MIDI_OBJ) -# for some reason, this doesn't match the implicit rule in plugins.make, -# so we have to duplicate the link command here - $(call PRINTS,LD $(@F)) - $(SILENT)$(CC) $(PLUGINFLAGS) -o $*.elf \ - $(filter %.o, $^) \ - $(filter %.a, $^) \ - -lgcc $(PLUGINLDFLAGS) -ifdef SIMVER - $(SILENT)cp $*.elf $@ -else - $(SILENT)$(OC) -O binary $*.elf $@ -endif # new rule needed to use extra compile flags $(MIDIBUILDDIR)/%.o: $(MIDISRCDIR)/%.c diff --git a/apps/plugins/plugins.make b/apps/plugins/plugins.make index f6b1b003a0..0d486c6fe3 100644 --- a/apps/plugins/plugins.make +++ b/apps/plugins/plugins.make @@ -10,8 +10,10 @@ # single-file plugins: PLUGINS_SRC = $(call preprocess, $(APPSDIR)/plugins/SOURCES) OTHER_SRC += $(PLUGINS_SRC) -ROCKS := $(PLUGINS_SRC:.c=.rock) -ROCKS := $(subst $(ROOTDIR),$(BUILDDIR),$(ROCKS)) +ROCKS1 := $(PLUGINS_SRC:.c=.rock) +ROCKS1 := $(subst $(ROOTDIR),$(BUILDDIR),$(ROCKS1)) + +ROCKS := $(ROCKS1) # libplugin.a PLUGINLIB := $(BUILDDIR)/apps/plugins/libplugin.a @@ -44,6 +46,10 @@ OTHER_INC += -I$(APPSDIR)/plugins -I$(APPSDIR)/plugins/lib # special compile flags for plugins: PLUGINFLAGS = -I$(APPSDIR)/plugins -DPLUGIN $(CFLAGS) +# single-file plugins depend on their respective .o +$(ROCKS1): $(BUILDDIR)/%.rock: $(BUILDDIR)/%.o + +# dependency for all plugins $(ROCKS): $(APPSDIR)/plugin.h $(PLUGINLINK_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) $(PLUGINLIB): $(PLUGINLIB_OBJ) @@ -83,7 +89,7 @@ else OVERLAYLDFLAGS = -T$(OVERLAYREF_LDS) -Wl,--gc-sections -Wl,-Map,$*.refmap endif -$(BUILDDIR)/%.rock: $(BUILDDIR)/%.o +$(BUILDDIR)/%.rock: $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o $(BUILDDIR)/$*.elf \ $(filter %.o, $^) \ $(filter %.a, $+) \ @@ -94,7 +100,7 @@ else $(SILENT)$(OC) -O binary $(BUILDDIR)/$*.elf $@ endif -$(BUILDDIR)/%.refmap: $(BUILDDIR)/%.o $(APPSDIR)/plugin.h $(OVERLAYREF_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) +$(BUILDDIR)/%.refmap: $(APPSDIR)/plugin.h $(OVERLAYREF_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o /dev/null \ $(filter %.o, $^) \ $(filter %.a, $+) \ diff --git a/apps/plugins/reversi/reversi.make b/apps/plugins/reversi/reversi.make index 0e7b38842b..52a97fa1ba 100644 --- a/apps/plugins/reversi/reversi.make +++ b/apps/plugins/reversi/reversi.make @@ -19,15 +19,3 @@ REVERSI_OBJ := $(call c2obj, $(REVERSI_SRC)) OTHER_SRC += $(REVERSI_SRC) $(REVERSIBUILDDIR)/reversi.rock: $(REVERSI_OBJ) -# for some reason, this doesn't match the implicit rule in plugins.make, -# so we have to duplicate the link command here - $(call PRINTS,LD $(@F)) - $(SILENT)$(CC) $(PLUGINFLAGS) -o $*.elf \ - $(filter %.o, $^) \ - $(filter %.a, $^) \ - -lgcc $(PLUGINLDFLAGS) -ifdef SIMVER - $(SILENT)cp $*.elf $@ -else - $(SILENT)$(OC) -O binary $*.elf $@ -endif -- cgit v1.2.3