aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile135
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*