A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
1# __________ __ ___.
2# Open \______ \ ____ ____ | | _\_ |__ _______ ___
3# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
4# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
6# \/ \/ \/ \/ \/
7# $Id$
8#
9
10INCLUDES += -I$(FIRMDIR) -I$(FIRMDIR)/export -I$(FIRMDIR)/drivers \
11 -I$(FIRMDIR)/include -I$(FIRMDIR)/kernel/include
12ifndef APP_TYPE
13INCLUDES += -I$(FIRMDIR)/libc/include
14endif
15
16include $(FIRMDIR)/asm/asm.make
17
18FIRMLIB_SRC += $(call preprocess, $(FIRMDIR)/SOURCES)
19FIRMLIB_OBJ := $(call c2obj, $(FIRMLIB_SRC))
20FIRMLIB_OBJ += $(BUILDDIR)/sysfont.o
21OTHER_SRC += $(FIRMLIB_SRC)
22
23FIRMLIB = $(BUILDDIR)/firmware/libfirmware.a
24
25ifeq ($(SYSFONT),)
26SYSFONT = 08-Schumacher-Clean
27endif
28SYSFONTX = $(ROOTDIR)/fonts/$(SYSFONT).bdf
29
30CLEANOBJS += $(BUILDDIR)/sysfont.* $(BUILDDIR)/version.*
31
32# Limits for the built-in sysfont: ASCII for bootloaders, ISO8859-1 for normal builds
33ifneq (,$(findstring -DBOOTLOADER,$(EXTRA_DEFINES)))
34 MAXCHAR = 127
35else
36 MAXCHAR = 255
37endif
38
39$(FIRMLIB): $(FIRMLIB_OBJ)
40 $(SILENT)$(shell rm -f $@)
41 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null
42
43$(BUILDDIR)/sysfont.h: $(SYSFONTX) $(TOOLS) $(BUILDDIR)/firmware/common/config.o
44 $(call PRINTS,CONVBDF $(subst $(ROOTDIR)/,,$<))$(TOOLSDIR)/convbdf -l $(MAXCHAR) -h -o $@ $<
45
46$(BUILDDIR)/sysfont.o: $(SYSFONTX) $(BUILDDIR)/sysfont.h
47 $(call PRINTS,CONVBDF $(subst $(ROOTDIR)/,,$<))$(TOOLSDIR)/convbdf -l $(MAXCHAR) -c -o $(BUILDDIR)/sysfont.c $<
48 $(call PRINTS,CC $(subst $(ROOTDIR)/,,$(BUILDDIR)/sysfont.c))$(CC) $(CFLAGS) -c $(BUILDDIR)/sysfont.c -o $@
49
50ifdef USE_LTO
51$(BUILDDIR)/firmware/asm/%.o: CFLAGS += -fno-lto
52$(BUILDDIR)/firmware/kernel/thread.o: CFLAGS += -fno-lto
53endif
54
55# GNU make (at least) has a bug/feature that exported variable are not available
56# in the shell function (but are in recipe). Thus we need to explicitely pass
57# the VERSION environement variable
58SVNVERSION:=$(shell VERSION='$(VERSION)' $(TOOLSDIR)/version.sh $(ROOTDIR))
59OLDSVNVERSION:=$(shell grep 'RBVERSION' $(BUILDDIR)/rbversion.h 2>/dev/null|cut -d '"' -f 2 || echo "NOREVISION")
60
61CORE_LIBS:=$(FIRMLIB)
62
63ifneq ($(SVNVERSION),$(OLDSVNVERSION))
64.PHONY: $(BUILDDIR)/rbversion.h
65endif
66
67$(BUILDDIR)/rbversion.h:
68 $(call PRINTS,GEN $(@F))$(TOOLSDIR)/genversion.sh $(BUILDDIR) $(SVNVERSION)