Something went wrong. Try again.
A modern, network-enabled music player platform built on Rockbox technology. rockboxd.tsiry-sandratraina.com
rust deno navidrome airplay libadwaita zig mpris snapcast mpd rockbox audio subsonic
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184# __________ __ ___.# Open \______ \ ____ ____ | | _\_ |__ _______ ___# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \# \/ \/ \/ \/ \/# libtools.make## Common Makefile for tools used by Rockbox Utility.# Provides rules for building as library, universal library (OS X) and# standalone binary.## LIBSOURCES is a list of files to build the lib# SOURCES is a list of files to build for the main binary# EXTRADEPS is a list of make targets dependencies#ifndef VSILENT = @endif# Get directory this Makefile is in for relative paths.TOP := $(dir $(lastword $(MAKEFILE_LIST)))ifeq ($(OS),Windows_NT)SHELL = cmd.exemkdir = if not exist $(subst /,\,$(1)) mkdir $(subst /,\,$(1))rm = if exist $(subst /,\,$(1)) del /q /s $(subst /,\,$(1))elsemkdir = mkdir -p $(1)rm = rm -rf $(1)endif# overwrite for releasesAPPVERSION ?= $(shell $(TOP)/../tools/version.sh $(TOP)/..)GCCFLAGS += -DVERSION=\"$(APPVERSION)\"TARGET_DIR ?= $(abspath .)/CC := gccCXX := g++# use either CC or CXX to link: this makes sure the compiler knows about its# internal dependencies. Use CXX if we have at least one c++ file, since we# then need to link the c++ standard library (which CXX does for us).ifeq ($(strip $(filter %.cpp,$(SOURCES) $(LIBSOURCES))),)LD := $(CC)elseLD := $(CXX)endifCPPDEFINES := $(shell echo foo | $(CROSS)$(CC) -dM -E -)BINARY = $(OUTPUT)# when building a Windows binary add the correct file suffixifeq ($(findstring CYGWIN,$(CPPDEFINES)),CYGWIN)BINARY = $(OUTPUT).exeGCCFLAGS += -mno-cygwinCOMPILETARGET = cygwinelseifeq ($(findstring MINGW,$(CPPDEFINES)),MINGW)BINARY = $(OUTPUT).exeCOMPILETARGET = mingw# use POSIX/C99 printf on windowsGCCFLAGS += -D__USE_MINGW_ANSI_STDIO=1elseifeq ($(findstring APPLE,$(CPPDEFINES)),APPLE)COMPILETARGET = darwinLDOPTS += $(LDOPTS_OSX)elseCOMPILETARGET = posixendifendifendif$(info Compiler creates $(COMPILETARGET) binaries)# OS X specifics. Needs to consider cross compiling for Windows.ifeq ($(findstring APPLE,$(CPPDEFINES)),APPLE)# When building for 10.4+ we need to use gcc. Otherwise clang is used, so use# that to determine if we need to set arch and isysroot.ifeq ($(findstring __clang__,$(CPPDEFINES)),__clang__)GCCFLAGS += -mmacosx-version-min=10.5ifneq ($(ISYSROOT),)GCCFLAGS += -isysroot $(ISYSROOT)endifelse# when building libs for OS X 10.4+ build for both i386 and ppc at the same time.# This creates fat objects, and ar can only create the archive but not operate# on it. As a result the ar call must NOT use the u (update) flag.ARCHFLAGS += -arch ppc -arch i386# building against SDK 10.4 is not compatible with gcc-4.2 (default on newer Xcode)# might need adjustment for older Xcode.CC = gcc-4.0GCCFLAGS += -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4endifendifBUILD_DIR ?= $(TARGET_DIR)build$(COMPILETARGET)OBJDIR = $(abspath $(BUILD_DIR))/all: $(BINARY)OBJS := $(addsuffix .o,$(addprefix $(OBJDIR),$(notdir $(SOURCES))))LIBOBJS := $(addsuffix .o,$(addprefix $(OBJDIR),$(notdir $(LIBSOURCES))))# create dependency files. Make sure to use the same prefix as with OBJS!$(foreach src,$(SOURCES) $(LIBSOURCES),$(eval $(addprefix $(OBJDIR),$(notdir $(src).o)): $(src)))$(foreach src,$(SOURCES) $(LIBSOURCES),$(eval $(addprefix $(OBJDIR),$(notdir $(src).d)): $(src)))DEPS = $(addprefix $(OBJDIR),$(addsuffix .d,$(notdir $(SOURCES) $(LIBSOURCES))))-include $(DEPS)# additional link dependencies for the standalone executable# extra dependencies: libuclLIBUCL = libucl.a$(LIBUCL): $(OBJDIR)$(LIBUCL)$(OBJDIR)$(LIBUCL): $(SILENT)$(MAKE) -C $(TOP)/../tools/ucl/src TARGET_DIR=$(OBJDIR) CC=$(CC) $@LIBBZIP2 = libbz2.a$(LIBBZIP2): $(OBJDIR)$(LIBBZIP2)$(OBJDIR)$(LIBBZIP2): $(SILENT)$(MAKE) -C $(TOP)/bzip2 TARGET_DIR=$(OBJDIR) CC=$(CC) $@LIBMICROTAR = libmicrotar.a$(LIBMICROTAR): $(OBJDIR)$(LIBMICROTAR)$(OBJDIR)$(LIBMICROTAR): $(SILENT)$(MAKE) -C $(TOP)/../lib/microtar/src TARGET_DIR=$(OBJDIR) CC=$(CC) $@# building the standalone executable$(BINARY): $(OBJS) $(EXTRADEPS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS)) $(TARGET_DIR)lib$(OUTPUT).a $(info LD $@) $(SILENT)$(call mkdir,$(dir $@))# EXTRADEPS need to be built into OBJDIR. $(SILENT)$(CROSS)$(LD) $(ARCHFLAGS) $(LDFLAGS) -o $(BINARY) \ $(OBJS) $(addprefix $(OBJDIR),$(EXTRADEPS)) \ $(addprefix $(OBJDIR),$(EXTRALIBOBJS)) lib$(OUTPUT).a $(addprefix $(OBJDIR),$(EXTRADEPS)) $(LDOPTS)# common rules$(OBJDIR)%.c.o: $(info CC $<) $(SILENT)$(call mkdir,$(dir $@)) $(SILENT)$(CROSS)$(CC) $(ARCHFLAGS) $(GCCFLAGS) $(CFLAGS) -MMD -c -o $@ $<$(OBJDIR)%.cpp.o: $(info CXX $<) $(SILENT)$(call mkdir,$(dir $@)) $(SILENT)$(CROSS)$(CXX) $(ARCHFLAGS) $(GCCFLAGS) $(CXXFLAGS) -MMD -c -o $@ $<# lib ruleslib$(OUTPUT).a: $(TARGET_DIR)lib$(OUTPUT).alib$(OUTPUT): $(TARGET_DIR)lib$(OUTPUT).a$(TARGET_DIR)lib$(OUTPUT).a: $(LIBOBJS) \ $(addprefix $(OBJDIR),$(EXTRALIBOBJS))# rules to build a DLL. Only works for W32 as target (i.e. MinGW toolchain)dll: $(OUTPUT).dll$(OUTPUT).dll: $(TARGET_DIR)$(OUTPUT).dll$(TARGET_DIR)$(OUTPUT).dll: $(LIBOBJS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS)) $(info DLL $(notdir $@)) $(SILENT)$(call mkdir,$(dir $@)) $(SILENT)$(CROSS)$(CC) $(ARCHFLAGS) $(GCCFLAGS) -shared -o $@ $^ \ -Wl,--output-def,$(TARGET_DIR)$(OUTPUT).def# create lib file from objects$(TARGET_DIR)lib$(OUTPUT).a: $(LIBOBJS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS)) $(info AR $(notdir $@)) $(SILENT)$(call mkdir,$(dir $@)) $(SILENT)$(call rm,$@) $(SILENT)$(CROSS)$(AR) rcs $@ $^clean: $(call rm, $(OBJS) $(OUTPUT) $(TARGET_DIR)lib$(OUTPUT)*.a $(OUTPUT).dmg) $(call rm, $(OUTPUT)-* i386 ppc $(OBJDIR))# extra toolsBIN2C = $(TOP)/tools/bin2c$(BIN2C): $(MAKE) -C $(TOP)/tools# OS X specifics$(OUTPUT).dmg: $(OUTPUT) $(info DMG $@) $(SILENT)$(call mkdir,"$(OUTPUT)-$(APPVERSION)") $(SILENT)cp -p $(OUTPUT) "$(OUTPUT)-$(APPVERSION)" $(SILENT)hdiutil create -srcfolder "$(OUTPUT)-$(APPVERSION)" $@