diff options
author | Roy Marples <roy@marples.name> | 2007-11-19 13:48:43 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2007-11-19 13:48:43 +0000 |
commit | 5f8cf73b22b259658d92397f3e6478ef80ed5691 (patch) | |
tree | 56b3aee976fcb92d04d406860081daaed8c7208c /default.mk | |
parent | 2ef9c5c5208d6d911c3826d94ac72c2bd9813c2c (diff) |
Our build chain now works with GNU and BSD make implementations
Diffstat (limited to 'default.mk')
-rw-r--r-- | default.mk | 79 |
1 files changed, 40 insertions, 39 deletions
@@ -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 |