aboutsummaryrefslogtreecommitdiff
path: root/default.mk
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2007-11-19 13:48:43 +0000
committerRoy Marples <roy@marples.name>2007-11-19 13:48:43 +0000
commit5f8cf73b22b259658d92397f3e6478ef80ed5691 (patch)
tree56b3aee976fcb92d04d406860081daaed8c7208c /default.mk
parent2ef9c5c5208d6d911c3826d94ac72c2bd9813c2c (diff)
Our build chain now works with GNU and BSD make implementations
Diffstat (limited to 'default.mk')
-rw-r--r--default.mk79
1 files changed, 40 insertions, 39 deletions
diff --git a/default.mk b/default.mk
index 42851998..07335af5 100644
--- a/default.mk
+++ b/default.mk
@@ -6,50 +6,51 @@ ROOT = /
LIB = lib
RC_LIB = /$(LIB)/rc
-#
-# Recursive rules
-#
-
-SUBDIRS_ALL = $(patsubst %,%_all,$(SUBDIRS))
-SUBDIRS_CLEAN = $(patsubst %,%_clean,$(SUBDIRS))
-SUBDIRS_INSTALL = $(patsubst %,%_install,$(SUBDIRS))
-
-all:: $(SUBDIRS_ALL)
-clean:: $(SUBDIRS_CLEAN)
-install:: $(SUBDIRS_INSTALL)
-
-# Hmm ... possible to combine these three and not be ugly ?
-%_all:
- if test -d $(patsubst %_all,%,$@); then $(MAKE) -C $(patsubst %_all,%,$@).$(OS) all; fi
- if test -d $(patsubst %_all,%,$@).$(OS); then $(MAKE) -C $(patsubst %_all,%,$@).$(OS) all; fi
-%_clean:
- if test -d $(patsubst %_clean,%,$@) ; then $(MAKE) -C $(patsubst %_clean,%,$@) clean ; fi
- if test -d $(patsubst %_clean,%,$@).$(OS) ; then $(MAKE) -C $(patsubst %_clean,%,$@).$(OS) clean ; fi
-%_install:
- if test -d $(patsubst %_install,%,$@) ; then $(MAKE) -C $(patsubst %_install,%,$@) install ; fi
- if test -d $(patsubst %_install,%,$@).$(OS) ; then $(MAKE) -C $(patsubst %_install,%,$@).$(OS) install ; fi
+INSTALL ?= install
+_OS_SH = u=`uname -s`; case "$${u}" in *BSD|DragonFly) echo "BSD";; *) echo "$${u}";; esac
+_OS != $(_OS_SH)
+OS ?= $(_OS)$(shell $(_OS_SH))
#
-# Install rules
+# Recursive rules
+# Adapted from FreeBSDs bsd.subdir.mk
#
+ECHODIR ?= true
+_SUBDIR = \
+ @for x in $(SUBDIR); do \
+ if test -d $$x; then \
+ ${ECHODIR} "===> ${DIRPRFX}$$x ($@)"; \
+ ${MAKE} -C $$x $@ DIRPRFX=${DIRPRFX}$$x/; \
+ fi; \
+ if test -d $$x.${OS}; then \
+ ${ECHODIR} "===> ${DIRPRFX}$$x.${OS} ($@)"; \
+ ${MAKE} -C $$x.${OS} $@ DIRPRFX=${DIRPRFX}$$x/; \
+ fi; \
+ done
-INSTALL_DIR = install -m 0755 -d
-INSTALL_EXE = install -m 0755
-INSTALL_FILE = install -m 0644
-INSTALL_SECURE = install -m 0600
-
-install:: $(EXES) $(FILES) $(FILES_NOEXIST) $(MANS)
- test -n $(DIR) && $(INSTALL_DIR) $(DESTDIR)$(DIR)
- for x in $(EXES) ; do $(INSTALL_EXE) $$x $(DESTDIR)$(DIR) || exit $$? ; done
- for x in $(FILES) ; do $(INSTALL_FILE) $$x $(DESTDIR)$(DIR) || exit $$? ; done
- for x in $(FILES_APPEND) ; do if test -e $(DESTDIR)$(DIR)/$$x ; then cat $$x >> $(DESTDIR)$(DIR)/$$x || exit $$? ; else $(INSTALL_FILE) $$x $(DESTDIR)$(DIR) || exit $$? ; fi ; done
- for x in $(FILES_NOEXIST) ; do if ! test -e $(DESTDIR)$(DIR)/$$x ; then $(INSTALL_FILE) $$x $(DESTDIR)$(DIR) || exit $$? ; fi ; done
- for x in $(FILES_SECURE) ; do $(INSTALL_SECURE) $$x $(DESTDIR)$(DIR) || exit $$? ; done
- for x in $(MANS) ; do \
- ext=`echo $$x | sed -e 's/^.*\\.//'` ; \
- $(INSTALL_DIR) $(DESTDIR)$(DIR)/man$$ext || exit $$? ; \
- $(INSTALL_FILE) $$x $(DESTDIR)$(DIR)/man$$ext || exit $$? ; \
+all:
+ $(_SUBDIR)
+clean::
+ $(_SUBDIR)
+install::
+ $(_SUBDIR)
+
+install:: $(BIN) $(CONF) $(CONF_APPEND) $(MAN8)
+ if test -n "$(DIR)" ; then $(INSTALL) -d $(DESTDIR)$(DIR) || exit $$?; fi
+ if test -n "$(BIN)" ; then $(INSTALL) $(BIN) $(DESTDIR)$(DIR) || exit $$?; fi
+ if test -n "$(CONF)" ; then $(INSTALL) -m 0644 $(CONF) $(DESTDIR)$(DIR) || exit $$?; fi
+ for x in $(CONF_APPEND) ; do \
+ if ! test -e $(DESTDIR)$(DIR)/$$x; then \
+ $(INSTALL) -m 0644 $$x $(DESTDIR)$(DIR) || exit $$?; \
+ fi; \
+ done
+ for x in $(CONF_APPEND) ; do \
+ if test -e $(DESTDIR)$(DIR)/$$x; then \
+ cat $$x >> $(DESTDIR)$(DIR)/$$x || exit $$?; \
+ else \
+ $(INSTALL) -m 0644 $$x $(DESTDIR)$(DIR) || exit $$?; \
+ fi; \
done
.PHONY: all clean install