1
0
Fork 0
forked from len0rd/rockbox
foxbox/apps/plugins/imageviewer/imageviewer.make
Christian Soffke 1745b74576 Make simulator compile on MacOS
Tested on MacOS Sequoia (Apple Silicon) with the
latest Xcode command line tools, gcc 14
(Homebrew GCC 14.2.0_1) and sdl2 (Homebrew 2.30.9)

Make sure 'gcc' (and 'gcc-ar') is in your PATH
ahead of the Xcode-provided "gcc"(clang). E.g.
by setting up symlinks in /usr/local/bin that
point to gcc-14 and gcc-ar-14.

Notes:
- The appropriate bmp from uisimulator/bitmaps
  has to be manually copied to your build folder
  and renamed to UI256.bmp, if you want the sim
  background to be displayed

Change-Id: I559f33d2165065f913f30c016b85906af380fb81
2024-11-30 22:19:02 -05:00

55 lines
2 KiB
Makefile

# __________ __ ___.
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/
# $Id$
#
IMGVSRCDIR := $(APPSDIR)/plugins/imageviewer
IMGVBUILDDIR := $(BUILDDIR)/apps/plugins/imageviewer
ROCKS += $(IMGVBUILDDIR)/imageviewer.rock
IMGV_SRC := $(call preprocess, $(IMGVSRCDIR)/SOURCES)
IMGV_OBJ := $(call c2obj, $(IMGV_SRC))
# add source files to OTHER_SRC to get automatic dependencies
OTHER_SRC += $(IMGV_SRC)
$(IMGVBUILDDIR)/imageviewer.rock: $(IMGV_OBJ)
IMGDECFLAGS = $(PLUGINFLAGS) -DIMGDEC
# include decoder's make from each subdir
IMGVSUBDIRS := $(call preprocess, $(IMGVSRCDIR)/SUBDIRS)
$(foreach dir,$(IMGVSUBDIRS),$(eval include $(dir)/$(notdir $(dir)).make))
IMGDECLDFLAGS = -T$(PLUGINLINK_LDS) -Wl,--gc-sections -Wl,-Map,$(IMGVBUILDDIR)/$*.refmap
ifndef APP_TYPE
IMGDEC_OUTLDS = $(IMGVBUILDDIR)/%.link
IMGDEC_OVLFLAGS = -T$(IMGVBUILDDIR)/$*.link -Wl,--gc-sections -Wl,-Map,$(IMGVBUILDDIR)/$*.map
else
IMGDEC_OVLFLAGS = $(PLUGINLDFLAGS) -Wl,$(LDMAP_OPT),$(IMGVBUILDDIR)/$*.map
endif
$(IMGVBUILDDIR)/%.ovl: $(IMGDEC_OUTLDS)
$(call PRINTS,LD $(@F))$(CC) $(IMGDECFLAGS) -o $(IMGVBUILDDIR)/$*.elf \
$(filter-out $(PLUGIN_CRT0),$(filter %.o, $^)) \
$(filter %.a, $+) \
-lgcc $(IMGDEC_OVLFLAGS)
$(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)
$(call PRINTS,LD $(@F))$(CC) $(IMGDECFLAGS) -o /dev/null \
$(filter %.o, $^) \
$(filter %.a, $+) \
-lgcc $(IMGDECLDFLAGS)
$(IMGVBUILDDIR)/%.link: $(PLUGIN_LDS) $(IMGVBUILDDIR)/%.refmap
$(call PRINTS,PP $(@F))$(call preprocess2file,$<,$@,-DIMGVDECODER_OFFSET=$(shell \
$(TOOLSDIR)/ovl_offset.pl $(IMGVBUILDDIR)/$*.refmap))