]> Dogcows Code - chaz/yoink/blobdiff - Makefile
testing new non-autotools build system
[chaz/yoink] / Makefile
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..0ca002b
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,149 @@
+
+#
+# Yoink
+# Use this file with make to compile and install Yoink.
+#
+# This makefile supports these targets:
+#   all, install, clean, cleandist, run, debug
+#
+# This build system incorporates the ideas written by Emile van Bergen:
+# http://www.xs4all.nl/~evbergen/nonrecursive-make.html
+#
+
+#
+# Define some options.
+#
+
+# Set this to `yes' to echo each build command.
+verbose := no
+
+
+#
+# Include the configuration file, config.mk.
+#
+
+have_config := $(wildcard config.mk)
+ifneq ($(strip $(have_config)),)
+include config.mk
+else
+no_config:
+       @echo "You must run the configure script before you can make anything."
+       @exit 1
+endif
+
+
+#
+# Some standard stuff.
+#
+
+.SUFFIXES:
+.SUFFIXES: .a .c .cc .cpp .o .rc
+
+all: targets
+
+
+#
+# Include the subdirectories--order is not important.
+#
+
+dir := src
+include $(dir)/rules.mk
+
+dir := data
+include $(dir)/rules.mk
+
+dir := doc
+include $(dir)/rules.mk
+
+
+#
+# Define some common rules.
+#
+
+CC_WRAPPER  = ./build/compile.sh $(CC)
+CXX_WRAPPER = ./build/compile.sh $(CXX)
+
+ifeq ($(verbose),no)
+DO_CC    = @echo "  CC    $@";
+DO_CXX   = @echo "  CXX   $@";
+DO_LD    = @echo "  LD    $@";
+DO_LDX   = @echo "  LD    $@";
+DO_CCLD  = @echo "  CCLD  $@";
+DO_CXXLD = @echo "  CXXLD $@";
+DO_AR    = @echo "  AR    $@";
+DO_RC    = @echo "  RC    $@";
+endif
+
+DO_CC    += $(CC_WRAPPER)  $(CFLAGS)   $(CF_TGT) -o $@ -c $<
+DO_CXX   += $(CXX_WRAPPER) $(CXXFLAGS) $(CF_TGT) -o $@ -c $<
+DO_LD    += $(CC_WRAPPER)  $(LDFLAGS)  $(LF_TGT) -o $@ $^ $(LL_TGT) $(LIBS)
+DO_LDX   += $(CXX_WRAPPER) $(LDFLAGS)  $(LF_TGT) -o $@ $^ $(LL_TGT) $(LIBS)
+DO_CCLD  += $(CC_WRAPPER)  $(CFLAGS)   $(CF_TGT) $(LDFLAGS) $(LF_TGT) -o $@ $< $(LL_TGT) $(LIBS)
+DO_CXXLD += $(CXX_WRAPPER) $(CXXFLAGS) $(CF_TGT) $(LDFLAGS) $(LF_TGT) -o $@ $< $(LL_TGT) $(LIBS)
+DO_AR    += $(AR) rcs $@ $^; $(RANLIB) $@
+DO_RC    += $(WINDRES)     $(DDEFINES) $(DF_TGT) -o $@ -i $<
+
+%.o: %.c
+       $(DO_CC)
+%.o: %.cc
+       $(DO_CXX)
+%.o: %.cpp
+       $(DO_CXX)
+%.o: %.rc
+       $(DO_RC)
+%: %.o
+       $(DO_LD)
+%: %.c
+       $(DO_CCLD)
+%: %.cc
+       $(DO_CXXLD)
+%: %.cpp
+       $(DO_CXXLD)
+%.a: %.o
+       $(DO_AR)
+
+
+#
+# Stuff.
+#
+
+#TGT_BIN := $(addsuffix $(EXEEXT),$(TGT_BIN))
+
+
+#
+# Define the phony targets.
+#
+
+.PHONY: targets
+targets: $(TGT_BIN) $(TGT_LIB)
+
+.PHONY: clean
+clean:
+ifeq ($(verbose),yes)
+       rm -f $(CLEAN)
+else
+       @echo "  CLEAN"; rm -f $(CLEAN)
+endif
+
+.PHONY: distclean
+distclean: clean
+ifeq ($(verbose),yes)
+       rm -f config.mk
+else
+       @rm -f config.mk
+endif
+
+.PHONY: install
+install: targets 
+       $(INSTALL) $(TGT_BIN)  -m 755 -d $(DESTDIR)$(bindir)
+       $(INSTALL) $(TGT_DATA) -m 644 -d $(DESTDIR)$(datadir)
+       $(INSTALL) $(TGT_LIB)  -m 750 -d $(DESTDIR)$(libdir)
+       $(INSTALL) $(TGT_MAN)  -m 644 -d $(DESTDIR)$(mandir)
+
+
+#
+# Prevent make from removing any build targets.
+#
+
+.SECONDARY:    $(CLEAN)
+
This page took 0.01858 seconds and 4 git commands to generate.