1*b30d1939SAndy Fiddaman/*
2*b30d1939SAndy Fiddaman * C preprocessor library
3*b30d1939SAndy Fiddaman */
4*b30d1939SAndy Fiddaman
5*b30d1939SAndy Fiddaman:PACKAGE: ast
6*b30d1939SAndy Fiddaman
7*b30d1939SAndy FiddamanLICENSE = since=1986,author=gsf
8*b30d1939SAndy Fiddaman
9*b30d1939SAndy FiddamanID = pp
10*b30d1939SAndy Fiddaman
11*b30d1939SAndy FiddamanDEBUG ==
12*b30d1939SAndy Fiddaman
13*b30d1939SAndy FiddamanIDNAME = "$(ID)"
14*b30d1939SAndy Fiddaman
15*b30d1939SAndy Fiddaman$(ID) 2.0 :LIBRARY: BUGS NOTES RELEASE HISTORY pp.3 \
16*b30d1939SAndy Fiddaman		pp.h ppfsm.h ppkey.h pplib.h pp.tab \
17*b30d1939SAndy Fiddaman		ppargs.c ppbuiltin.c ppcall.c ppcomment.c \
18*b30d1939SAndy Fiddaman		ppcontext.c ppcontrol.c ppcpp.c ppdata.c \
19*b30d1939SAndy Fiddaman		pperror.c ppexpr.c ppfsm.c ppincref.c ppinput.c ppkey.c \
20*b30d1939SAndy Fiddaman		pplex.c ppline.c ppmacref.c ppmisc.c ppop.c pppragma.c \
21*b30d1939SAndy Fiddaman		ppprintf.c ppproto.c ppsearch.c pptrace.c
22*b30d1939SAndy Fiddaman
23*b30d1939SAndy Fiddaman"hp.pa*"	:NOOPTIMIZE: ppfsm.c
24*b30d1939SAndy Fiddaman"osf.alpha*"	:NOOPTIMIZE: ppcall.c
25*b30d1939SAndy Fiddaman"sol*.i386*"	:NOOPTIMIZE: ppcpp.c pplex.c
26*b30d1939SAndy Fiddaman
27*b30d1939SAndy Fiddamanppdef.h : gentab pp.tab
28*b30d1939SAndy Fiddaman	$(*:N=*gentab:P=A) -d $(*:N=*.tab) > $(<)
29*b30d1939SAndy Fiddaman
30*b30d1939SAndy Fiddamanpptab.h : gentab pp.tab
31*b30d1939SAndy Fiddaman	$(*:N=*gentab:P=A) -t $(*:N=*.tab) > $(<)
32*b30d1939SAndy Fiddaman
33*b30d1939SAndy Fiddaman:INSTALLDIR: gentab ppsym
34*b30d1939SAndy Fiddaman
35*b30d1939SAndy Fiddamangentab :: gentab.sh
36*b30d1939SAndy Fiddaman
37*b30d1939SAndy Fiddamanppsym :: ppsym.c +last
38*b30d1939SAndy Fiddaman
39*b30d1939SAndy Fiddaman/* MAM workaround */
40*b30d1939SAndy Fiddamanif "$(-mam)"
41*b30d1939SAndy Fiddaman.ALL : .INSERT ppsym
42*b30d1939SAndy Fiddamanend
43*b30d1939SAndy Fiddaman
44*b30d1939SAndy Fiddaman$(INCLUDEDIR) :INSTALLPROTO: pp.h ppkey.h
45*b30d1939SAndy Fiddaman
46*b30d1939SAndy Fiddaman$(INCLUDEDIR) :INSTALLDIR: pp.yacc ppkey.yacc
47*b30d1939SAndy Fiddaman
48*b30d1939SAndy FiddamanC $(ID) :PROBE: pp.probe pp.def pp.key ppsym probe.ini
49*b30d1939SAndy Fiddaman
50*b30d1939SAndy Fiddamanprobe.ini : (CC.HOSTTYPE) probe.win32
51*b30d1939SAndy Fiddaman	t=$(CC.HOSTTYPE)
52*b30d1939SAndy Fiddaman	ifs=$IFS
53*b30d1939SAndy Fiddaman	IFS=.
54*b30d1939SAndy Fiddaman	set x $t
55*b30d1939SAndy Fiddaman	IFS=$ifs
56*b30d1939SAndy Fiddaman	t=$2
57*b30d1939SAndy Fiddaman	set x $(*)
58*b30d1939SAndy Fiddaman	while	:
59*b30d1939SAndy Fiddaman	do	shift
60*b30d1939SAndy Fiddaman		case $# in
61*b30d1939SAndy Fiddaman		0)	break ;;
62*b30d1939SAndy Fiddaman		esac
63*b30d1939SAndy Fiddaman		case $1 in
64*b30d1939SAndy Fiddaman		*probe.$t)
65*b30d1939SAndy Fiddaman			break
66*b30d1939SAndy Fiddaman		esac
67*b30d1939SAndy Fiddaman	done
68*b30d1939SAndy Fiddaman	case $1 in
69*b30d1939SAndy Fiddaman	?*)	cmp -s $1 $(<) || cp $1 $(<) ;;
70*b30d1939SAndy Fiddaman	*)	: > $(<)
71*b30d1939SAndy Fiddaman	esac
72*b30d1939SAndy Fiddaman
73*b30d1939SAndy Fiddaman%.yacc : %.h pp.h
74*b30d1939SAndy Fiddaman	$(RM) -f $(<)
75*b30d1939SAndy Fiddaman	{
76*b30d1939SAndy Fiddaman	$(*:N!=$(>):?$(SED) -n -e '/^#define T_TOKEN/p' -e '/^#define N_/p' $(*:N!=$(>))$("\n")??)cat $(>)
77*b30d1939SAndy Fiddaman	} > 1.$(tmp).c
78*b30d1939SAndy Fiddaman	$(STDED|ED) $(STDEDFLAGS|EDFLAGS) 1.$(tmp).c <<'!'
79*b30d1939SAndy Fiddaman	g/^#define N_/m0
80*b30d1939SAndy Fiddaman	v/^#define [NT]_/d
81*b30d1939SAndy Fiddaman	1,$s/^#define \(T_[A-Z0-9_]*\).*/&\
82*b30d1939SAndy Fiddaman	printf(" \1 %d", \1);/
83*b30d1939SAndy Fiddaman	g/^printf.*T_HEADER/d
84*b30d1939SAndy Fiddaman	g/^printf.*T_KEYWORD/d
85*b30d1939SAndy Fiddaman	g/^printf.*T_TOKCAT/d
86*b30d1939SAndy Fiddaman	g/^printf.*T_TOKEN/d
87*b30d1939SAndy Fiddaman	0a
88*b30d1939SAndy Fiddaman	$("#")include <stdio.h>
89*b30d1939SAndy Fiddaman	int
90*b30d1939SAndy Fiddaman	main(argc, argv)
91*b30d1939SAndy Fiddaman	int	argc;
92*b30d1939SAndy Fiddaman	char**	argv;
93*b30d1939SAndy Fiddaman	{
94*b30d1939SAndy Fiddaman	printf("%%token /*generated from $(>)*/");
95*b30d1939SAndy Fiddaman	.
96*b30d1939SAndy Fiddaman	$a
97*b30d1939SAndy Fiddaman	printf("\n");
98*b30d1939SAndy Fiddaman	return 0;
99*b30d1939SAndy Fiddaman	}
100*b30d1939SAndy Fiddaman	.
101*b30d1939SAndy Fiddaman	w
102*b30d1939SAndy Fiddaman	q
103*b30d1939SAndy Fiddaman	!
104*b30d1939SAndy Fiddaman	$(CC.NATIVE|CC) -o $(tmp).exe 1.$(tmp).c
105*b30d1939SAndy Fiddaman	./$(tmp).exe > $(<)
106*b30d1939SAndy Fiddaman	$(RM) -f 1.$(tmp).c $(tmp).exe
107*b30d1939SAndy Fiddaman
108*b30d1939SAndy Fiddamanppdebug.h : ppfsm.h ppdef.h pplib.h
109*b30d1939SAndy Fiddaman	: > 1.$(tmp).c
110*b30d1939SAndy Fiddaman	$(STDED|ED) $(STDEDFLAGS|EDFLAGS) 1.$(tmp).c <<'!'
111*b30d1939SAndy Fiddaman	r $(*:N=*fsm.h)
112*b30d1939SAndy Fiddaman	1,/^#define PROTO/-d
113*b30d1939SAndy Fiddaman	/^#define LAST/,$d
114*b30d1939SAndy Fiddaman	v/^#define/d
115*b30d1939SAndy Fiddaman	g/PROTOMAIN/d
116*b30d1939SAndy Fiddaman	1,$s/^#define //
117*b30d1939SAndy Fiddaman	1,$s/[^A-Za-z0-9_].*//
118*b30d1939SAndy Fiddaman	1,$s/.*/	"&", &,/
119*b30d1939SAndy Fiddaman	1i
120*b30d1939SAndy Fiddaman	$("/")*
121*b30d1939SAndy Fiddaman	 * preprocessor library debug maps
122*b30d1939SAndy Fiddaman	 *$("/")
123*b30d1939SAndy Fiddaman	struct map
124*b30d1939SAndy Fiddaman	{
125*b30d1939SAndy Fiddaman		char*	nam;
126*b30d1939SAndy Fiddaman		long	val;
127*b30d1939SAndy Fiddaman	};
128*b30d1939SAndy Fiddaman	static struct map pplexmap[] =
129*b30d1939SAndy Fiddaman	{
130*b30d1939SAndy Fiddaman	.
131*b30d1939SAndy Fiddaman	$a
132*b30d1939SAndy Fiddaman	};
133*b30d1939SAndy Fiddaman	.
134*b30d1939SAndy Fiddaman	ka
135*b30d1939SAndy Fiddaman	r $(*:N=*def.h)
136*b30d1939SAndy Fiddaman	$("'")a+1,/^#define ADD/-d
137*b30d1939SAndy Fiddaman	/^$/,$d
138*b30d1939SAndy Fiddaman	$("'")a+1,$s/^#define //
139*b30d1939SAndy Fiddaman	$("'")a+1,$s/[ 	].*//
140*b30d1939SAndy Fiddaman	$("'")a+1,$s/.*/	"&", &,/
141*b30d1939SAndy Fiddaman	$("'")aa
142*b30d1939SAndy Fiddaman	static struct map ppstatemap[] =
143*b30d1939SAndy Fiddaman	{
144*b30d1939SAndy Fiddaman	.
145*b30d1939SAndy Fiddaman	$a
146*b30d1939SAndy Fiddaman	};
147*b30d1939SAndy Fiddaman	.
148*b30d1939SAndy Fiddaman	ka
149*b30d1939SAndy Fiddaman	r $(*:N=*def.h)
150*b30d1939SAndy Fiddaman	$("'")a+1,/^#define ALLMULTIPLE/-d
151*b30d1939SAndy Fiddaman	/^$/,$d
152*b30d1939SAndy Fiddaman	$("'")a+1,$s/^#define //
153*b30d1939SAndy Fiddaman	$("'")a+1,$s/[ 	].*//
154*b30d1939SAndy Fiddaman	$("'")a+1,$s/.*/	"&", &,/
155*b30d1939SAndy Fiddaman	$("'")aa
156*b30d1939SAndy Fiddaman	static struct map ppmodemap[] =
157*b30d1939SAndy Fiddaman	{
158*b30d1939SAndy Fiddaman	.
159*b30d1939SAndy Fiddaman	$a
160*b30d1939SAndy Fiddaman	};
161*b30d1939SAndy Fiddaman	.
162*b30d1939SAndy Fiddaman	ka
163*b30d1939SAndy Fiddaman	r $(*:N=*def.h)
164*b30d1939SAndy Fiddaman	$("'")a+1,/^#define ELSEIF/-d
165*b30d1939SAndy Fiddaman	/^$/,$d
166*b30d1939SAndy Fiddaman	$("'")a+1,$s/^#define //
167*b30d1939SAndy Fiddaman	$("'")a+1,$s/[ 	].*//
168*b30d1939SAndy Fiddaman	$("'")a+1,$s/.*/	"&", &,/
169*b30d1939SAndy Fiddaman	$("'")aa
170*b30d1939SAndy Fiddaman	static struct map ppoptionmap[] =
171*b30d1939SAndy Fiddaman	{
172*b30d1939SAndy Fiddaman	.
173*b30d1939SAndy Fiddaman	$a
174*b30d1939SAndy Fiddaman	};
175*b30d1939SAndy Fiddaman	.
176*b30d1939SAndy Fiddaman	ka
177*b30d1939SAndy Fiddaman	r $(*:N=*lib.h)
178*b30d1939SAndy Fiddaman	$("'")a+1,/^#define IN_BUFFER/-d
179*b30d1939SAndy Fiddaman	/^$/,$d
180*b30d1939SAndy Fiddaman	$("'")a+1,$s/^#define IN_//
181*b30d1939SAndy Fiddaman	$("'")a+1,$s/[ 	].*//
182*b30d1939SAndy Fiddaman	$("'")a+1,$s/.*/	"&", IN_&,/
183*b30d1939SAndy Fiddaman	$("'")aa
184*b30d1939SAndy Fiddaman	static struct map ppinmap[] =
185*b30d1939SAndy Fiddaman	{
186*b30d1939SAndy Fiddaman	.
187*b30d1939SAndy Fiddaman	$a
188*b30d1939SAndy Fiddaman	};
189*b30d1939SAndy Fiddaman	.
190*b30d1939SAndy Fiddaman	w
191*b30d1939SAndy Fiddaman	q
192*b30d1939SAndy Fiddaman	!
193*b30d1939SAndy Fiddaman	if	$(CMP) -s 1.$(tmp).c $(<)
194*b30d1939SAndy Fiddaman	then	$(RM) -f 1.$(tmp).c
195*b30d1939SAndy Fiddaman	else	$(MV) 1.$(tmp).c $(<)
196*b30d1939SAndy Fiddaman	fi
197