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