rockbox/apps/bitmaps/bitmaps.make
Solomon Peachy 0dc670d25c build: Make bitmap object files position independent to silence linker warnings
Finally addresses the "warning: creating DT_TEXTREL in a shared object" warnings
seen when linking plugins that reference bitmaps.

This currently only happens with simulator builds using recent-ish
toolchains (GCC >= 12 IIRC).  However, binutils 2.46 promotes this
warning to an error, so it's finally tracked down and addressed.

Change-Id: I4b4926c14f7c0047496892c55009c26da2a4756d
2026-05-02 13:22:51 -04:00

60 lines
2.4 KiB
Makefile

# __________ __ ___.
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/
# $Id$
#
BITMAPDIR = $(ROOTDIR)/apps/bitmaps
BMPINCDIR = $(BUILDDIR)/bitmaps
INCLUDES += -I$(BMPINCDIR)
ifneq ($(strip $(BMP2RB_MONO)),)
BMP = $(call preprocess, $(BITMAPDIR)/mono/SOURCES)
endif
ifneq ($(strip $(BMP2RB_NATIVE)),)
BMP += $(call preprocess, $(BITMAPDIR)/native/SOURCES)
endif
ifneq ($(strip $(BMP2RB_REMOTEMONO)),)
BMP += $(call preprocess, $(BITMAPDIR)/remote_mono/SOURCES)
endif
ifneq ($(strip $(BMP2RB_REMOTENATIVE)),)
BMP += $(call preprocess, $(BITMAPDIR)/remote_native/SOURCES)
endif
BMPOBJ = $(call full_path_subst,$(ROOTDIR)/%.bmp,$(BUILDDIR)/%.o,$(BMP))
BMPHFILES = $(BMPINCDIR)/usblogo.h $(BMPINCDIR)/remote_usblogo.h \
$(BMPINCDIR)/default_icons.h $(BMPINCDIR)/remote_default_icons.h \
$(BMPINCDIR)/rockboxlogo.h $(BMPINCDIR)/remote_rockboxlogo.h \
$(BMPINCDIR)/rockboxicon.h $(BMPINCDIR)/toolsicon.h
$(BMPHFILES): $(BMPOBJ)
# pattern rules to create .c files from .bmp, one for each subdir:
$(BUILDDIR)/apps/bitmaps/mono/%.c: $(ROOTDIR)/apps/bitmaps/mono/%.bmp $(TOOLSDIR)/bmp2rb
$(SILENT)mkdir -p $(dir $@) $(BMPINCDIR)
$(call PRINTS,BMP2RB $(<F))$(BMP2RB_MONO) -b -h $(BMPINCDIR) $< > $@
$(BUILDDIR)/apps/bitmaps/native/%.c: $(ROOTDIR)/apps/bitmaps/native/%.bmp $(TOOLSDIR)/bmp2rb
$(SILENT)mkdir -p $(dir $@) $(BMPINCDIR)
$(call PRINTS,BMP2RB $(<F))$(BMP2RB_NATIVE) -b -h $(BMPINCDIR) $< > $@
$(BUILDDIR)/apps/bitmaps/remote_mono/%.c: $(ROOTDIR)/apps/bitmaps/remote_mono/%.bmp $(TOOLSDIR)/bmp2rb
$(SILENT)mkdir -p $(dir $@) $(BMPINCDIR)
$(call PRINTS,BMP2RB $(<F))$(BMP2RB_REMOTEMONO) -b -h $(BMPINCDIR) $< > $@
$(BUILDDIR)/apps/bitmaps/remote_native/%.c: $(ROOTDIR)/apps/bitmaps/remote_native/%.bmp $(TOOLSDIR)/bmp2rb
$(SILENT)mkdir -p $(dir $@) $(BMPINCDIR)
$(call PRINTS,BMP2RB $(<F))$(BMP2RB_REMOTENATIVE) -b -h $(BMPINCDIR) $< > $@
ifdef APP_TYPE
# Bitmaps must be explicitly Position independent to avoid linker warnings
$(BUILDDIR)/apps/bitmaps/native/%.o: CFLAGS += -fPIC
$(BUILDDIR)/apps/bitmaps/mono/%.o: CFLAGS += -fPIC
$(BUILDDIR)/apps/bitmaps/remote_mono/%.o: CFLAGS += -fPIC
$(BUILDDIR)/apps/bitmaps/remote_native/%.o: CFLAGS += -fPIC
endif