mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 10:07:38 -04:00
Refactor and unify objcopy calls in the build system. Also now properly handles DEBUG builds on hosted targets to keep debug symbols if necessary.
Change-Id: I884031b79c6d49479e4d95752f35ced68872dd5d
This commit is contained in:
parent
a54072e299
commit
4b56ee048a
16 changed files with 30 additions and 35 deletions
|
@ -116,7 +116,7 @@ classes: $(R_OBJ) $(JAVA_OBJ)
|
|||
|
||||
$(BUILDDIR)/$(BINARY): $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS) $(CPUFEAT_BUILD)/cpu-features.o
|
||||
$(call PRINTS,LD $(BINARY))$(CC) -o $@ $^ $(LDOPTS) $(GLOBAL_LDOPTS) -Wl,-Map,$(BUILDDIR)/rockbox.map
|
||||
$(call PRINTS,OC $(@F))$(OC) -S -x $@
|
||||
$(call PRINTS,OC $(@F))$(call objcopy,$@,$@)
|
||||
|
||||
$(BINLIB_DIR)/$(BINARY): $(BUILDDIR)/$(BINARY)
|
||||
$(call PRINTS,CP $(BINARY))cp $^ $@
|
||||
|
|
|
@ -202,10 +202,4 @@ $(CODECDIR)/%.codec: $(CODECDIR)/%.o
|
|||
$(filter %.o, $^) \
|
||||
$(filter %.a, $+) \
|
||||
-lgcc $(CODECLDFLAGS)
|
||||
ifndef APP_TYPE
|
||||
$(SILENT)$(OC) -O binary $(CODECDIR)/$*.elf $@ # objcopy native
|
||||
else ifeq (,$(findstring sdl-sim,$(APP_TYPE)))
|
||||
$(SILENT)$(OC) -S -x $(CODECDIR)/$*.elf $@ # objcopy hosted
|
||||
else
|
||||
$(SILENT)cp $(CODECDIR)/$*.elf $@ # no objcopy, keep debug symbols
|
||||
endif
|
||||
$(SILENT)$(call objcopy,$(CODECDIR)/$*.elf,$@)
|
||||
|
|
|
@ -44,7 +44,7 @@ $(CHESSBOX_OBJDIR)/chessbox.ovl: $(CHESSBOX_OBJ) $(CHESSBOX_OUTLDS)
|
|||
$(filter %.o, $^) \
|
||||
$(filter %.a, $+) \
|
||||
-lgcc $(CHESSBOX_OVLFLAGS)
|
||||
$(call PRINTS,LD $(@F))$(OC) -O binary $(basename $@).elf $@
|
||||
$(call PRINTS,LD $(@F))$(call objcopy,$(basename $@).elf,$@)
|
||||
|
||||
# special pattern rule for compiling chessbox with extra flags
|
||||
$(CHESSBOX_OBJDIR)/%.o: $(CHESSBOX_SRCDIR)/%.c $(CHESSBOX_SRCDIR)/chessbox.make
|
||||
|
|
|
@ -43,4 +43,4 @@ $(GOBAN_BUILDDIR)/goban.ovl: $(GOBAN_OBJ) $(GOBAN_OUTLDS)
|
|||
$(filter %.o, $^) \
|
||||
$(filter %.a, $+) \
|
||||
-lgcc $(GOBAN_OVLFLAGS)
|
||||
$(call PRINTS,LD $(@F))$(OC) -O binary $(basename $@).elf $@
|
||||
$(call PRINTS,LD $(@F))$(call objcopy,$(basename $@).elf,$@)
|
||||
|
|
|
@ -40,11 +40,7 @@ $(IMGVBUILDDIR)/%.ovl: $(IMGDEC_OUTLDS)
|
|||
$(filter-out $(PLUGIN_CRT0),$(filter %.o, $^)) \
|
||||
$(filter %.a, $+) \
|
||||
-lgcc $(IMGDEC_OVLFLAGS)
|
||||
ifdef APP_TYPE
|
||||
$(SILENT)cp $(IMGVBUILDDIR)/$*.elf $@
|
||||
else
|
||||
$(SILENT)$(OC) -O binary $(IMGVBUILDDIR)/$*.elf $@
|
||||
endif
|
||||
$(SILENT)$(call objcopy,$(IMGVBUILDDIR)/$*.elf,$@)
|
||||
|
||||
# rule to create reference map for image decoder
|
||||
$(IMGVBUILDDIR)/%.refmap: $(APPSDIR)/plugin.h $(IMGVSRCDIR)/imageviewer.h $(PLUGINLINK_LDS) $(PLUGIN_LIBS)
|
||||
|
|
|
@ -56,4 +56,4 @@ $(LUA_BUILDDIR)/lua.ovl: $(LUA_OBJ) $(LUA_OUTLDS)
|
|||
$(filter %.o, $^) \
|
||||
$(filter %.a, $+) \
|
||||
-lgcc $(LUA_OVLFLAGS)
|
||||
$(call PRINTS,LD $(@F))$(OC) -O binary $(basename $@).elf $@
|
||||
$(call PRINTS,LD $(@F))$(call objcopy,$(basename $@).elf,$@)
|
||||
|
|
|
@ -36,10 +36,6 @@ $(PDBOXBUILDDIR)/pdbox.rock:
|
|||
$(filter %.o, $^) \
|
||||
$(filter %.a, $+) \
|
||||
-lgcc $(PDBOXLDFLAGS)
|
||||
ifdef APP_TYPE
|
||||
$(SILENT)cp $*.elf $@
|
||||
else
|
||||
$(SILENT)$(OC) -O binary $*.elf $@
|
||||
endif
|
||||
$(SILENT)$(call objcopy,$*.elf,$@)
|
||||
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ $(PICTUREFLOW_OBJDIR)/pictureflow.ovl: $(PICTUREFLOW_OBJ) $(PICTUREFLOW_OUTLDS)
|
|||
$(filter %.o, $^) \
|
||||
$(filter %.a, $+) \
|
||||
-lgcc $(PICTUREFLOW_OVLFLAGS)
|
||||
$(call PRINTS,LD $(@F))$(OC) -O binary $(basename $@).elf $@
|
||||
$(call PRINTS,LD $(@F))$(call objcopy,$(basename $@).elf,$@)
|
||||
|
||||
# special pattern rule for compiling pictureflow with extra flags
|
||||
$(PICTUREFLOW_OBJDIR)/%.o: $(PICTUREFLOW_SRCDIR)/%.c $(PICTUREFLOW_SRCDIR)/pictureflow.make
|
||||
|
|
|
@ -120,13 +120,7 @@ $(BUILDDIR)/%.rock:
|
|||
$(filter %.o, $^) \
|
||||
$(filter %.a, $+) \
|
||||
-lgcc $(PLUGINLDFLAGS)
|
||||
ifndef APP_TYPE
|
||||
$(SILENT)$(OC) -O binary $(BUILDDIR)/$*.elf $@ # objcopy native
|
||||
else ifeq (,$(findstring sdl-sim,$(APP_TYPE)))
|
||||
$(SILENT)$(OC) -S -x $(BUILDDIR)/$*.elf $@ # objcopy hosted
|
||||
else
|
||||
$(SILENT)cp $(BUILDDIR)/$*.elf $@ # no objcopy, keep debug symbols
|
||||
endif
|
||||
$(SILENT)$(call objcopy,$(BUILDDIR)/$*.elf,$@)
|
||||
|
||||
$(BUILDDIR)/apps/plugins/%.lua: $(ROOTDIR)/apps/plugins/%.lua
|
||||
$(call PRINTS,CP $(subst $(ROOTDIR)/,,$<))cp $< $(BUILDDIR)/apps/plugins/
|
||||
|
|
|
@ -37,4 +37,4 @@ $(ROCKBOY_OBJDIR)/rockboy.ovl: $(ROCKBOY_OBJ) $(ROCKBOY_OUTLDS)
|
|||
$(filter %.o, $^) \
|
||||
$(filter %.a, $+) \
|
||||
-lgcc $(ROCKBOY_OVLFLAGS)
|
||||
$(call PRINTS,LD $(@F))$(OC) -O binary $(basename $@).elf $@
|
||||
$(call PRINTS,LD $(@F))$(call objcopy,$(basename $@).elf,$@)
|
||||
|
|
|
@ -45,7 +45,7 @@ $(ZXBOX_OBJDIR)/zxbox.ovl: $(ZXBOX_OBJ) $(ZXBOX_OUTLDS)
|
|||
$(filter %.o, $^) \
|
||||
$(filter %.a, $+) \
|
||||
-lgcc $(ZXBOX_LDFLAGS)
|
||||
$(call PRINTS,LD $(@F))$(OC) -O binary $(basename $@).elf $@
|
||||
$(call PRINTS,LD $(@F))$(call objcopy,$(basename $@).elf,$@)
|
||||
|
||||
# special pattern rule for compiling zxbox with extra flags
|
||||
$(ZXBOX_OBJDIR)/%.o: $(ZXBOX_SRCDIR)/%.c $(ZXBOX_SRCDIR)/zxbox.make
|
||||
|
|
|
@ -30,7 +30,7 @@ $(BUILDDIR)/bootloader.elf: $$(OBJ) $(FIRMLIB) $(CORE_LIBS) $$(BOOTLINK)
|
|||
-Wl,--gc-sections -Wl,-Map,$(BUILDDIR)/bootloader.map
|
||||
|
||||
$(BUILDDIR)/bootloader.bin : $(BUILDDIR)/bootloader.elf
|
||||
$(call PRINTS,OBJCOPY $(@F))$(OC) $(if $(filter yes, $(USE_ELF)), -S -x, -O binary) $< $@
|
||||
$(call PRINTS,OC $(@F))$(call objcopy,$<,$@)
|
||||
|
||||
$(BUILDDIR)/bootloader.asm: $(BUILDDIR)/bootloader.bin
|
||||
$(TOOLSDIR)/sh2d -sh1 $< > $@
|
||||
|
|
|
@ -21,4 +21,4 @@ $(BUILDDIR)/rockbox.elf : $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS)
|
|||
$(LDOPTS) $(GLOBAL_LDOPTS) -Wl,-Map,$(BUILDDIR)/rockbox.map
|
||||
|
||||
$(BUILDDIR)/rockbox : $(BUILDDIR)/rockbox.elf
|
||||
$(call PRINTS,OC $(@F))$(OC) -S -x $< $@
|
||||
$(call PRINTS,OC $(@F))$(call objcopy,$^,$@)
|
||||
|
|
|
@ -28,6 +28,20 @@ c2obj = $(addsuffix .o,$(basename $(subst $(ROOTDIR),$(BUILDDIR),$(1))))
|
|||
|
||||
a2lnk = $(patsubst lib%.a,-l%,$(notdir $(1)))
|
||||
|
||||
# objcopy wrapper that keeps debug symbols in DEBUG builds
|
||||
# handles the $(1) == $(2) case too
|
||||
ifndef APP_TYPE
|
||||
objcopy = $(OC) $(if $(filter yes, $(USE_ELF)), -S -x, -O binary) $(1) $(2) # objcopy native
|
||||
else ifneq (,$(findstring sdl-sim,$(APP_TYPE)))
|
||||
objcopy = cp $(1) $(1).tmp;mv -f $(1).tmp $(2) # objcopy simulator
|
||||
else
|
||||
ifdef DEBUG
|
||||
objcopy = cp $(1) $(1).tmp;mv -f $(1).tmp $(2) # objcopy hosted (DEBUG)
|
||||
else
|
||||
objcopy = $(OC) -S -x $(1) $(2) # objcopy hosted (!DEBUG)
|
||||
endif
|
||||
endif
|
||||
|
||||
# calculate dependencies for a list of source files $(2) and output them to $(1)
|
||||
mkdepfile = $(SILENT)perl $(TOOLSDIR)/multigcc.pl $(CC) $(PPCFLAGS) $(OTHER_INC) -MG -MM -include config.h -- $(2) | \
|
||||
sed -e "s: lang.h: lang/lang.h:" \
|
||||
|
|
|
@ -220,10 +220,10 @@ $(BUILDDIR)/rombox.elf : $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS) $$(LIN
|
|||
-T$(LINKROM) -Wl,-Map,$(BUILDDIR)/rombox.map
|
||||
|
||||
$(BUILDDIR)/rockbox.bin : $(BUILDDIR)/rockbox.elf
|
||||
$(call PRINTS,OC $(@F))$(OC) $(if $(filter yes, $(USE_ELF)), -S -x, -O binary) $< $@
|
||||
$(call PRINTS,OC $(@F))$(call objcopy,$<,$@)
|
||||
|
||||
$(BUILDDIR)/rombox.bin : $(BUILDDIR)/rombox.elf
|
||||
$(call PRINTS,OC $(@F))$(OC) -O binary $< $@
|
||||
$(call PRINTS,OC $(@F))$(call objcopy,$<,$@)
|
||||
|
||||
#
|
||||
# If there's a flashfile defined for this target (rockbox.ucl for Archos
|
||||
|
|
|
@ -33,6 +33,7 @@ $(SIMLIB): $$(SIMOBJ) $(UIBMP)
|
|||
$(BUILDDIR)/$(BINARY): $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS) $(SIMLIB)
|
||||
$(call PRINTS,LD $(BINARY))$(CC) -o $@ $^ $(SIMLIB) $(LDOPTS) $(GLOBAL_LDOPTS) \
|
||||
-Wl,-Map,$(BUILDDIR)/rockbox.map
|
||||
$(SILENT)$(call objcopy,$@,$@)
|
||||
|
||||
$(BUILDDIR)/uisimulator/%.o: $(ROOTDIR)/uisimulator/%.c
|
||||
$(SILENT)mkdir -p $(dir $@)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue