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
10# 3ds_rules
11export DEVKITARM ?= /opt/devkitpro/devkitARM
12export DEVKITPRO ?= /opt/devkitpro
13
14PORTLIBS := $(DEVKITPRO)/portlibs/3ds
15
16CTRULIB ?= $(DEVKITPRO)/libctru
17
18export PATH := $(DEVKITPRO)/portlibs/3ds/bin:$(PATH)
19
20# base_rules
21export SHELL := /usr/bin/env bash
22
23DEVKITPATH=$(shell echo "$(DEVKITPRO)" | sed -e 's/^\([a-zA-Z]\):/\/\1/')
24
25export PATH := $(DEVKITPATH)/tools/bin:$(DEVKITPATH)/devkitARM/bin:$(PATH)
26
27# 3DSX
28VERSION_MAJOR := 1
29VERSION_MINOR := 0
30VERSION_MICRO := 0
31
32APP_TITLE := rockbox
33APP_DESCRIPTION := Open Source Jukebox Firmware
34APP_AUTHOR := rockbox.org
35APP_ICON := $(ROOTDIR)/packaging/ctru/res/icon.png
36
37# CIA
38BANNER_AUDIO := $(ROOTDIR)/packaging/ctru/res/banner.wav
39BANNER_IMAGE := $(ROOTDIR)/packaging/ctru/res/banner.cgfx
40RSF_PATH := $(ROOTDIR)/packaging/ctru/res/app.rsf
41#LOGO := $(ROOTDIR)/packaging/ctru/logo.lz11
42UNIQUE_ID := 0xCB001
43PRODUCT_CODE := CTR-ROCKBOX
44ICON_FLAGS := nosavebackups,visible
45
46# CIA Configuration
47USE_ON_SD := true
48APP_ENCRYPTED := false
49CATEGORY := Application
50USE_ON_SD := true
51MEMORY_TYPE := Application
52SYSTEM_MODE := 64MB
53SYSTEM_MODE_EXT := Legacy
54CPU_SPEED := 268MHz
55ENABLE_L2_CACHE := false
56
57.SECONDEXPANSION: # $$(OBJ) is not populated until after this
58
59MAKEROM ?= makerom
60MAKEROM_ARGS := -elf "$(BINARY).elf" -rsf "$(RSF_PATH)" -banner "$(BUILDDIR)/banner.bnr" -icon "$(BUILDDIR)/icon.icn" -DAPP_TITLE="$(APP_TITLE)" -DAPP_PRODUCT_CODE="$(PRODUCT_CODE)" -DAPP_UNIQUE_ID="$(UNIQUE_ID)" -DAPP_ENCRYPTED="$(APP_ENCRYPTED)" -DAPP_SYSTEM_MODE="$(SYSTEM_MODE)" -DAPP_SYSTEM_MODE_EXT="$(SYSTEM_MODE_EXT)" -DAPP_CATEGORY="$(CATEGORY)" -DAPP_USE_ON_SD="$(USE_ON_SD)" -DAPP_MEMORY_TYPE="$(MEMORY_TYPE)" -DAPP_CPU_SPEED="$(CPU_SPEED)" -DAPP_ENABLE_L2_CACHE="$(ENABLE_L2_CACHE)"
61MAKEROM_ARGS += -major $(VERSION_MAJOR) -minor $(VERSION_MINOR) -micro $(VERSION_MICRO)
62
63ifneq ($(strip $(LOGO)),)
64 MAKEROM_ARGS += -logo "$(LOGO)"
65endif
66ifneq ($(strip $(ROMFS)),)
67 MAKEROM_ARGS += -DAPP_ROMFS="$(ROMFS)"
68endif
69
70BANNERTOOL ?= bannertool
71
72ifeq ($(suffix $(BANNER_IMAGE)),.cgfx)
73 BANNER_IMAGE_ARG := -ci
74else
75 BANNER_IMAGE_ARG := -i
76endif
77
78ifeq ($(suffix $(BANNER_AUDIO)),.cwav)
79 BANNER_AUDIO_ARG := -ca
80else
81 BANNER_AUDIO_ARG := -a
82endif
83
84# main binary
85$(BUILDDIR)/$(BINARY): $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS)
86ifeq ($(UNAME), Darwin)
87 $(call PRINTS,LD $(BINARY))$(CC) -o $@ $^ $(LDOPTS) $(GLOBAL_LDOPTS) -Wl,$(LDMAP_OPT),$(BUILDDIR)/rockbox.map
88else
89 $(call PRINTS,LD $(BINARY))$(CC) -o $@ -Wl,--start-group $^ -Wl,--end-group $(LDOPTS) $(GLOBAL_LDOPTS) \
90 -Wl,$(LDMAP_OPT),$(BUILDDIR)/rockbox-.map
91 @mv $(BINARY) $(BINARY).elf
92 smdhtool --create "$(APP_TITLE)" "$(APP_DESCRIPTION)" "$(APP_AUTHOR)" $(APP_ICON) "rockbox.smdh"
93 3dsxtool $(BINARY).elf $(BINARY).3dsx --smdh="rockbox.smdh"
94 $(BANNERTOOL) makebanner $(BANNER_IMAGE_ARG) "$(BANNER_IMAGE)" $(BANNER_AUDIO_ARG) "$(BANNER_AUDIO)" -o "$(BUILDDIR)/banner.bnr"
95 $(BANNERTOOL) makesmdh -s "$(APP_TITLE)" -l "$(APP_DESCRIPTION)" -p "$(APP_AUTHOR)" -i "$(APP_ICON)" -f "$(ICON_FLAGS)" -o "$(BUILDDIR)/icon.icn"
96 $(MAKEROM) -f cia -o "$(BINARY).cia" -target t -exefslogo $(MAKEROM_ARGS)
97ifndef DEBUG
98 $(SILENT)rm $(BINARY).elf
99endif
100endif
101