104 lines
2.7 KiB
Makefile
Executable File
104 lines
2.7 KiB
Makefile
Executable File
#!/usr/bin/make -f
|
|
# default target
|
|
all:
|
|
|
|
# output directory can be set with O:=dir
|
|
ifeq ($(O),)
|
|
O := .
|
|
endif
|
|
srcdir := src
|
|
include src/Makefile.am
|
|
mpd_SRC := $(addprefix src/,$(filter %.c,$(mpd_SOURCES)))
|
|
mpd_HDR := $(addprefix src/,$(filter %.h,$(mpd_SOURCES)))
|
|
mpd_OBJ := $(subst .c,.o,$(addprefix $(O)/,$(mpd_SRC)))
|
|
mpd_DEP := $(subst .o,.d,$(mpd_OBJ))
|
|
|
|
-include $(mpd_DEP)
|
|
|
|
uname_s := $(shell uname -s | tr A-Z a-z 2>/dev/null || echo unknown)
|
|
uname_m := $(shell uname -m | tr A-Z a-z 2>/dev/null || echo unknown)
|
|
|
|
# build: the machine type this builds on
|
|
# HOST: the machine this runs on
|
|
build := $(uname_s)-$(uname_m)
|
|
HOST ?= $(build)
|
|
-include $(O)/config.mk
|
|
-include $(O)/config_detected.mk
|
|
include bs/deps-audio.mk
|
|
include bs/deps-input.mk
|
|
include bs/deps-misc.mk
|
|
include bs/deps-conflicts.mk
|
|
|
|
RANLIB ?= ranlib
|
|
ifneq ($(HOST),$(build))
|
|
ifeq ($(origin CC),default)
|
|
CC := $(HOST)-$(CC)
|
|
endif
|
|
ifeq ($(origin RANLIB),default)
|
|
RANLIB := $(HOST)-$(RANLIB)
|
|
endif
|
|
ifeq ($(origin AR),default)
|
|
AR := $(HOST)-$(AR)
|
|
endif
|
|
endif
|
|
|
|
mpd_CFLAGS += -I$(O)/src -I$(O)
|
|
mpd_LDFLAGS += -lm
|
|
mpd_DIRS := $(O)/src/inputPlugins $(O)/src/audioOutputs
|
|
|
|
STRIP ?= strip
|
|
export O CC CPPFLAGS CFLAGS HOST SHELL
|
|
|
|
defconfig: $(O)/config.mk
|
|
|
|
$(O)/config.mk:
|
|
@test -d "$(@D)" || $(SHELL) ./bs/mkdir_p.sh "$(@D)"
|
|
@if ! test -e $@; then \
|
|
sed -e 's/@@HOST@@/$(HOST)/g' \
|
|
< bs/config.mk.default > $@+ && mv $@+ $@ && \
|
|
echo Please edit $(O)/config.mk to your liking; fi
|
|
@touch $@
|
|
|
|
$(O)/src/../config.h: $(O)/config.h
|
|
$(O)/config.h: $(O)/config.mk $(O)/config_detected.h
|
|
$(MAKE) -f bs/mkconfig.h.mk $(O)/config.h
|
|
|
|
$(O)/config_detected.h:
|
|
@test -d "$(@D)" || $(SHELL) ./bs/mkdir_p.sh "$(@D)"
|
|
> $@+ && $(SHELL) ./bs/mkconfig-header.sh >> $@+ && \
|
|
$(SHELL) ./bs/cross-arch.sh >> $@+ && mv $@+ $@
|
|
|
|
all: $(O)/src/mpd
|
|
@echo OK $<
|
|
strip: $(O)/src/mpd
|
|
$(STRIP) $(STRIP_OPTS) $<
|
|
$(O)/src/mpd: $(mpd_OBJ)
|
|
$(CC) -o $@ $^ $(CFLAGS) $(mpd_CFLAGS) $(LDFLAGS) $(mpd_LDFLAGS)
|
|
$(O)/src/%.o: src/%.c $(O)/config.h
|
|
@HDR_DEP_HACK="$(O)/config.h $(mpd_HDR)" \
|
|
CFLAGS="$(CFLAGS) $(mpd_CFLAGS)" \
|
|
$(SHELL) ./bs/mkdep.sh $< $(dir $<) $(subst .o,.d,$@)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) $(mpd_CFLAGS) -c -o $@ $<
|
|
$(mpd_SRC): $(O)/config.h
|
|
clean:
|
|
$(RM) $(O)/src/mpd $(mpd_OBJ)
|
|
reallyclean: clean
|
|
$(RM) $(mpd_DEP) $(O)/depmode $(O)/config.h
|
|
|
|
# in case a .d file had a dep on a deleted file, we have this:
|
|
src/%.h src/%.c::
|
|
@true
|
|
# we only do static linking in bs (since our main goal is cross-compiling),
|
|
# if you want dynamic linking, use autotools
|
|
$(O)/%.a::
|
|
$(RM) $@
|
|
$(AR) cru $@ $^
|
|
$(RANLIB) $@
|
|
dist:
|
|
$(SHELL) ./bs/mkdist.sh
|
|
|
|
.PHONY: clean reallyclean defconfig all
|
|
.PRECIOUS: $(O)/%.h
|
|
.SUFFIXES:
|
|
.SUFFIXES: .c .o .h .d
|