1:PACKAGE: ast cpp:force --clobber=!(nmake)
2
3LICENSE = since=1984,author=gsf
4
5include "Version.mk"
6
7ID = make
8
9BINDINDEX ==
10DEBUG == 1
11
12RULES = Makerules.mk $(ALTRULES)
13RULESFILES = Scanrules.mk S.mk SCCS.mk SYSTEM.mk TABLE.mk \
14		debug.mk debug-package.mk \
15		mkservice.mk yacc.mk \
16		rules-win32.mk \
17		pkg-tcl.mk pkg-X11.mk pkg-freetype.mk \
18		pkg-cobol.mk pkg-cobol-cobc.mk pkg-cobol-mfcobc.mk
19RULESDIR = $(LIBDIR)/$(ID)
20
21IDNAME == "$(ID)"
22PATHCHECK == "$(ID)"
23STAMP == "\n@(#)\$Id: $(ID) ($(OWNER)) $(VERSION:?$$(VERSION) ??)$(RELEASE:?$$(RELEASE) ??)$(DATE) \$\0\n"
24
25__OBSOLETE__ == $("6 months ago":@F=%(%Y0101)T)
26
27nmake :: Version.mk nmake.1 \
28	$(RULES) $(RULESFILES) \
29	make.h expand.h options.h \
30	archive.c bind.c command.c dump.c expand.c main.c make.c \
31	mam.c metarule.c misc.c object.c option.c parse.c read.c \
32	rule.c scan.c state.c trap.c variable.c version.c \
33	-lcoshell -lardir
34
35"darwin.*" :NOOPTIMIZE: command.c
36"win32*" :NOOPTIMIZE: expand.c object.c parse.c
37
38$(RULESDIR) :INSTALLDIR: Makeinstall.mk $(RULES) $(RULESFILES) ppcc
39
40nmake.1 : nmake nmake.1.body nmake.1.tail
41	ignore $(*:O=1) --nroff 2>&1 | $(SED) -e '/itself/r $(*:O=2)' -e '/fBsh/r $(*:O=3)' > $(<)
42
43:: nmake.mm PROMO.mm FEATURES HISTORY README RELEASE REFERENCES
44
45ppcc :: ppcc.sh
46
47:INSTALLDIR: convert
48
49convert :: convert.c
50
51:TEST: -- assert assign attribute automatic baserules common diagnostics \
52	edit immediate implicit internal interrupt metarule option panic \
53	prereq quoting recurse scan shell state statement syntax view
54
55Makeinstall.mk : $$(-mam:N=static*:??$$(-cctype|cctype:@P=P=C,pp)?)
56	{
57		echo '/* : : generated from $(-cctype|cctype) assertions : : */'
58		set -
59		f=$(*|"`$(LIBDIR)/probe/probe -kg C pp $(-cctype|cctype:Q)`")
60		a="`$(SED) -n -e 's/^#define #\(.*\)(\(.*\))/_\1_/p' $f | sort -u` _feature_ STDCAT STDCHMOD STDCMP STDCP STDED STDEDFLAGS STDLN STDMV STDRM"
61		for n in $a
62		do	eval $n=
63		done
64		eval `$(SED) -n -e 's/^#define #\(.*\)(\(.*\))/_\1_="$_\1_ \2"/p' $f`
65		: some systems botch the symlink and sticky dir combo
66		rm -rf /tmp/mkl$$
67		mkdir /tmp/mkl$$
68		text='hard link'
69		echo "$text" > /tmp/mkl$$/nl
70		( ln /tmp/mkl$$/nl /tmp/mkl$$/hl ) 2>/dev/null &&
71		case `cat /tmp/mkl$$/hl` in
72		"$text")	_feature_="$_feature_ ln" ;;
73		esac
74		ln -s /tmp/mkl$$/hl /tmp/mkl$$/sl 2>/dev/null && rm /tmp/mkl$$/sl && _feature_="$_feature_ ln-s"
75		( /bin/mkdir -p /tmp/mkl$$/mk/dir ) 2>/dev/null &&
76		test ! -d ./-p &&
77		_feature_="$_feature_ mkdir-p"
78		rm -rf ./-p /tmp/mkl$$ || true
79		if	( ed ) < /dev/null > /dev/null 2>&1
80		then	STDED=ed
81		else	STDED=ex
82		fi
83		STDEDFLAGS=-
84		set STDCAT cat STDCHMOD chmod STDCMP cmp STDCP cp STDLN ln STDMV mv STDRM rm
85		while	:
86		do	case $# in
87			0|1)	break ;;
88			esac
89			p=$2
90			for d in /bin /usr/bin /usr/sbin
91			do	if	test -x $d/$p
92				then	p=$d/$p
93					break
94				fi
95			done
96			eval $1=\$p
97			shift
98			shift
99		done
100		if	test -x /bin/cat.exe
101		then	if	/bin//cat /bin/cat >/dev/null 2>&1
102			then	: ok
103			else	: .exe challenged
104				for n in STDCAT STDCHMOD STDCMP STDCP STDLN STDMV STDRM
105				do	eval $n=\"execrate \$$n\"
106				done
107			fi
108		fi
109		set -x
110		for n in $a
111		do	eval echo \$n = \$$n
112		done
113	} > $(<)
114
115local T
116
117for T $(RULES:B)
118	$(T:F=%(lower)s:D=$$(RULESDIR):B:S=.mo) :INSTALL: $(T:B:S=.mo)
119end
120
121:MSGKEY: nmake
122
123/*
124 * this works around a master source race condition
125 */
126
127MAKE = $(INSTALLROOT)/bin/nmake
128
129.MAKEINIT : .TARGETS
130
131.TARGETS : .MAKE
132	$(RULESDIR)/makerules.mo :
133