# Use this file with make to compile and install Yoink.
#
# This makefile supports these targets:
-# all, install, clean, cleandist, run, debug
+# all, install, clean, distclean, run, debug, dist, dist-gzip, dist-bzip2
#
# This build system incorporates the ideas written by Emile van Bergen:
# http://www.xs4all.nl/~evbergen/nonrecursive-make.html
#
-# Set this to `yes' to echo each build command in full.
-verbose := no
+# Set this to `true' to echo each build command in full.
+verbose := false
+
+# Set this to `false' to avoid installing manual pages.
+install_man := true
#
ifneq ($(strip $(have_config)),)
include config.mk
else
-no_config:
- $(error You must run the configure script before you can make anything)
+$(error You must run the configure script before you can make anything)
endif
#
ifeq ($(DEP_TRACKING),true)
-COMPILE = ./tools/compile.lua
+COMPILE = ./tools/compile.lua
+endif
+
+ifeq ($(DEP_MINIMIZING),true)
+LINK = ./tools/link.lua
endif
+INSTALL = ./tools/install.lua
+
+# Include current directory to allow sources to #include "config.h".
+CFLAGS += -I.
+CXXFLAGS += -I.
+
COMMAND_CC = $(COMPILE) $(CC) $(CFLAGS) $(CF_TGT) -o $@ -c $<
COMMAND_CXX = $(COMPILE) $(CXX) $(CXXFLAGS) $(CF_TGT) -o $@ -c $<
-COMMAND_LD = $(CC) $(LDFLAGS) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LIBS)
-COMMAND_LDX = $(CXX) $(LDFLAGS) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LIBS)
+COMMAND_LD = $(LINK) $(CC) $(LDFLAGS) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LIBS)
+COMMAND_LDX = $(LINK) $(CXX) $(LDFLAGS) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LIBS)
COMMAND_CCLD = $(COMPILE) $(CC) $(CFLAGS) $(CF_TGT) $(LDFLAGS) $(LF_TGT) -o $@ $< $(LL_TGT) $(LIBS)
COMMAND_CXXLD = $(COMPILE) $(CXX) $(CXXFLAGS) $(CF_TGT) $(LDFLAGS) $(LF_TGT) -o $@ $< $(LL_TGT) $(LIBS)
COMMAND_AR = $(AR) rcs $@ $^; $(RANLIB) $@
-COMMAND_RC = $(WINDRES) $(DDEFINES) $(DF_TGT) -o $@ -i $<
-COMMAND_INSTALL = ./tools/install.sh -m $1 $2 -d $3
+COMMAND_RC = $(WINDRES) -I. $(DF_TGT) -o $@ -i $<
+COMMAND_INSTALL = $(INSTALL) -m $1 $2 $3/
COMMAND_RM = rm -f $1
COMMAND_IN = sed -f config.sed <"$1" >"$2"
-ifeq ($(verbose),yes)
+ifeq ($(verbose),true)
DO_CC = $(COMMAND_CC)
DO_CXX = $(COMMAND_CXX)
DO_LD = $(COMMAND_LD)
DO_IN = $(COMMAND_IN)
SHELL_LINE_PREFIX =
else
-DO_CC = @echo -e " CC \t$@"; $(COMMAND_CC)
-DO_CXX = @echo -e " CXX \t$@"; $(COMMAND_CXX)
-DO_LD = @echo -e " LD \t$@"; $(COMMAND_LD)
-DO_LDX = @echo -e " LD \t$@"; $(COMMAND_LDX)
-DO_CCLD = @echo -e " CCLD \t$@"; $(COMMAND_CCLD)
-DO_CXXLD = @echo -e " CXXLD \t$@"; $(COMMAND_CXXLD)
-DO_AR = @echo -e " AR \t$@"; $(COMMAND_AR)
-DO_RC = @echo -e " RC \t$@"; $(COMMAND_RC)
-DO_INSTALL = @echo -e " CP \t$2"; $(COMMAND_INSTALL)
-DO_RM = @echo -e " RM \t$1"; $(COMMAND_RM)
-DO_IN = @echo -e " MAKE \t$2"; $(COMMAND_IN)
+DO_CC = @echo " CC $@"; $(COMMAND_CC)
+DO_CXX = @echo " CXX $@"; $(COMMAND_CXX)
+DO_LD = @echo " LINK $@"; $(COMMAND_LD)
+DO_LDX = @echo " LINK $@"; $(COMMAND_LDX)
+DO_CCLD = @echo " LINK $@"; $(COMMAND_CCLD)
+DO_CXXLD = @echo " LINK $@"; $(COMMAND_CXXLD)
+DO_AR = @echo " AR $@"; $(COMMAND_AR)
+DO_RC = @echo " RC $@"; $(COMMAND_RC)
+DO_INSTALL = @echo " CP $2"; $(COMMAND_INSTALL)
+DO_RM = @echo " RM $1"; $(COMMAND_RM)
+DO_IN = @echo " GEN $2"; $(COMMAND_IN)
SHELL_LINE_PREFIX = @
endif
$(DO_CXX)
%.o: %.rc
$(DO_RC)
-%: %.o
+%$(EXEEXT): %.o
$(DO_LD)
-%: %.c
+%$(EXEEXT): %.c
$(DO_CCLD)
-%: %.cc
+%$(EXEEXT): %.cc
$(DO_CXXLD)
-%: %.cpp
+%$(EXEEXT): %.cpp
$(DO_CXXLD)
%.a: %.o
$(DO_AR)
-%: %.in
+%: %.in config.sed
$(call DO_IN,$<,$@)
do \
$(call remove_silencer,$(call DO_INSTALL,755,$$file,$(DESTDIR)$(bindir))); \
done
+ifeq ($(install_man),true)
$(SHELL_LINE_PREFIX)files='$(MANPAGES)'; for file in $$files; \
do \
$(call remove_silencer,$(call DO_INSTALL,644,$$file,$(DESTDIR)$(mandir))); \
done
+endif
.PHONY: uninstall
uninstall:
$(call remove_silencer,$(call DO_RM,$(DESTDIR)$(datadir)$$base)); \
done
+.PHONY: dist-bzip2
+dist-bzip2:
+ $(SHELL_LINE_PREFIX)git archive HEAD --prefix='$(TARNAME)/' | bzip2 > "$(TARNAME).tar.bz2"
+
+.PHONY: dist-gzip
+dist-gzip:
+ $(SHELL_LINE_PREFIX)git archive HEAD --prefix='$(TARNAME)/' | gzip > "$(TARNAME).tar.gz"
+
+.PHONY: dist
+dist: dist-bzip2
+
#
# Prevent make from removing any build targets.