diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..f17158d4 --- /dev/null +++ b/Makefile @@ -0,0 +1,135 @@ +include config.mak + +vpath %.c $(SRC_PATH) +vpath %.h $(SRC_PATH) + +ifndef V +Q = @ +ECHO = printf "$(1)\t%s\n" $(2) +BRIEF = CC HOSTCC HOSTLD AR LD +SILENT = DEPCC DEPHOSTCC RANLIB RM +MSG = $@ +M = @$(call ECHO,$(TAG),$@); +$(foreach VAR,$(BRIEF), \ + $(eval override $(VAR) = @$$(call ECHO,$(VAR),$$(MSG)); $($(VAR)))) +$(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR)))) +$(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_PATH)/%=%)); $(INSTALL)) +endif + +IFLAGS := -I. -I$(SRC_PATH) +CPPFLAGS := $(IFLAGS) $(CPPFLAGS) +CFLAGS += $(ECFLAGS) +CCFLAGS = $(CPPFLAGS) $(CFLAGS) +HOSTCCFLAGS = $(IFLAGS) $(HOSTCPPFLAGS) $(HOSTCFLAGS) +LDFLAGS := $(ALLFFLIBS:%=$(LD_PATH)lib%) $(LDFLAGS) + +define COMPILE + $(call $(1)DEP,$(1)) + $($(1)) $($(1)FLAGS) $($(1)_DEPFLAGS) $($(1)_C) $($(1)_O) $< +endef + +COMPILE_C = $(call COMPILE,CC) + +%.o: %.c + $(COMPILE_C) + +%.i: %.c + $(CC) $(CCFLAGS) $(CC_E) $< + +%.h.c: + $(Q)echo '#include "$*.h"' >$@ + +%.c %.h: TAG = GEN + +BASENAMES = mpd +PROGS = $(addprefix src/,$(BASENAMES:%=%$(EXESUF))) +OBJS := cmdutils.o $(EXEOBJS) +ALLMANPAGES = $(BASENAMES:%=%.1) + +DATA_FILES := $(wildcard $(SRC_PATH)/presets/*.avpreset) + +SKIPHEADERS = + +include $(SRC_PATH)/common.mak + +all: $(PROGS) + +config.h: .config +.config: $(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c)) + @-tput bold 2>/dev/null + @-printf '\nWARNING: $(?F) newer than config.h, rerun configure\n\n' + @-tput sgr0 2>/dev/null + +SUBDIR_VARS := CLEANFILES EXAMPLES HOSTPROGS TESTPROGS TOOLS \ + HEADERS ARCH_HEADERS BUILT_HEADERS SKIPHEADERS \ + OBJS HOSTOBJS TESTOBJS + +$(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V)))) +SUBDIR = src/ +include $(SRC_PATH)/src/Makefile +include $(SRC_PATH)/common.mak + +$(PROGS): %$(EXESUF): $(OBJS) + $(LD) $(LDFLAGS) $(LD_O) $(OBJS) $(EXTRALIBS) + +OBJDIRS += tools + +-include $(wildcard tools/*.d) + +VERSION_SH = $(SRC_PATH)/version.sh +GIT_LOG = $(SRC_PATH)/.git/logs/HEAD + +.version: $(wildcard $(GIT_LOG)) $(VERSION_SH) config.mak +.version: M=@ + +version.h .version: + $(M)$(VERSION_SH) $(SRC_PATH) version.h $(EXTRA_VERSION) + $(Q)touch .version + +# force version.sh to run whenever version might have changed +-include .version + +install: install-progs install-data + +install-progs: $(PROGS) + $(Q)mkdir -p "$(BINDIR)" + $(INSTALL) -c -m 755 $(PROGS) "$(BINDIR)" + +install-data: $(DATA_FILES) + $(Q)mkdir -p "$(DATADIR)" + $(INSTALL) -m 644 $(DATA_FILES) "$(DATADIR)" + +uninstall: uninstall-progs uninstall-data + +uninstall-progs: + $(RM) $(addprefix "$(BINDIR)/", $(ALLPROGS)) + +uninstall-data: + $(RM) -r "$(DATADIR)" + +clean:: + $(RM) $(ALLPROGS) + $(RM) $(CLEANSUFFIXES) + +distclean:: + $(RM) $(DISTCLEANSUFFIXES) + $(RM) config.* .config .version version.h + +config: + $(SRC_PATH)/configure $(value MPD_CONFIGURATION) + +check: all alltools checkheaders examples testprogs fate + +$(sort $(OBJDIRS)): + $(Q)mkdir -p $@ + +# Dummy rule to stop make trying to rebuild removed or renamed headers +%.h: + @: + +# Disable suffix rules. Most of the builtin rules are suffix rules, +# so this saves some time on slow systems. +.SUFFIXES: + +.PHONY: all all-yes alltools check *clean config examples install* +.PHONY: testprogs uninstall* |