1## A very generic makefile for recursing in sub-directories that respect the usual release control rules
2
3NAME = SMM.doc
4
5SUBDIRS = timed timed
6
7SOURCES = Makefile
8
9FASTCP = /bin/cp
10RM     = /bin/rm
11MKDIRS = /bin/mkdir -p
12CHOWN = /usr/sbin/chown
13ECHO   = echo
14
15all::
16	@$(MAKE) build \
17		"TARGET = all" \
18		"OBJROOT = ./Objects" \
19		"SYMROOT = ./Symbols" \
20		"RC_CFLAGS = $(RC_CFLAGS)" \
21		"RC_ARCHS = $(RC_ARCHS)"
22
23build:: $(OBJROOT) $(SYMROOT) recurse
24
25recurse::
26	@echo '====' make $(TARGET) for: $(SUBDIRS) '===='
27	@HERE=`pwd`;						\
28	cd ${OBJROOT};						\
29	ABSOROOT=`pwd`;						\
30	cd $$HERE;						\
31	cd ${SYMROOT};						\
32	ABSSROOT=`pwd`;						\
33	cd $$HERE;						\
34	for i in ${SUBDIRS}; \
35	do \
36		echo == make $(TARGET) for $$i ==; \
37		(cd $$i; ${MAKE} $(TARGET) 			\
38			OBJROOT="$$ABSOROOT/$$i"		\
39			SYMROOT="$$ABSSROOT/$$i"		\
40			DSTROOT="$(DSTROOT)"			\
41			SRCROOT="$(SRCROOT)/$$i"		\
42			RC_CFLAGS="$(RC_CFLAGS)"		\
43			RC_ARCHS="$(RC_ARCHS)"			\
44			|| exit 1); 				\
45	done
46	@echo '====' make $(TARGET) for $(SUBDIRS) done '===='
47
48installhdrs::
49
50install:: $(DSTROOT)
51	@$(MAKE) build \
52		"TARGET = install" \
53		"DSTROOT = $(DSTROOT)" \
54		"OBJROOT = $(OBJROOT)" \
55		"SYMROOT = $(SYMROOT)" \
56		"RC_CFLAGS = $(RC_CFLAGS)" \
57		"RC_ARCHS = $(RC_ARCHS)"
58
59installsrc::
60	$(MKDIRS) $(SRCROOT)
61	@$(FASTCP) $(SOURCES) $(SRCROOT)
62	@$(MAKE) recurse "TARGET = $@"
63
64clean:
65	@$(RM) -rf Objects Symbols *_obj sym
66	@$(MAKE) recurse "TARGET = $@"
67
68copy::	DEST
69	@$(MAKE) installsrc "SRCROOT = $(DEST)"
70
71$(DSTROOT):
72	$(MKDIRS) -m 755 $@
73	$(CHOWN) root:wheel $@
74
75$(SYMROOT):
76	@$(MKDIRS) $(SYMROOT)
77
78$(OBJROOT):
79	@$(MKDIRS) $(OBJROOT)
80
81SRCROOT DEST:
82	@if [ -n "${$@}" ]; then exit 0; \
83	else $(ECHO) Must define $@; exit 1; fi
84
85BACKUPROOT = $(PROJECT_BACKUP_DIR)/$(NAME)_proj/$(USER)/Archives
86
87backup::
88	$(MAKE) installsrc SRCROOT=`backupname $(BACKUPROOT)/$(NAME)`
89
90help::
91	@$(ECHO) 'Makefile targets are:'
92	@$(ECHO) 'install:	makes install (fat)'
93	@$(ECHO) 'copy:		copies the sources to DEST'
94	@$(ECHO) 'installsrc:	copies the sources to SRCROOT'
95	
96