10 11NO_WERROR= 12WARNS?= 3 13NO_SHARED?= YES 14 15CFLAGS+=-DMAKE_VERSION=\"5200408120\" 16.if defined(_UPGRADING) 17CFLAGS+=-D__FBSDID=__RCSID 18.endif 19 20# There is no obvious performance improvement currently. 21# CFLAGS+=-DUSE_KQUEUE 22 23main.o: ${MAKEFILE} 24 25# Directive and keyword tables. We use hash tables. These hash tables have been 26# generated with mph which can be found on the usual GNU mirrors. 27# If you change the directives or keywords (adding, deleting, reordering) you 28# need to create new tables and hash functions (directive_hash, keyword_hash). 29# 30# The following changes have been made to the generated code: 31# 32# o prefix the names of the g, T0 and T1 arrays with 'directive_' 33# resp. 'keyword_'. 34# 35# o make the type of the tables 'const [un]signed char' (if you change 36# anything make sure that the numbers fit into a char). 37# 38# o make the hash function use the length for termination, 39# not the trailing '\0', via the -l flag in emitc and some editing 40# (only for directive_hash). 41 42LOCALBASE ?= /usr/local 43MPH ?= ${LOCALBASE}/bin/mph 44EMITC ?= ${LOCALBASE}/bin/emitc 45 46.PRECIOUS: hash 47 48hash: 49 ( echo '/*' ; \ 50 echo ' * DO NOT EDIT' ; \ 51 echo ' * $$''FreeBSD$$' ; \ 52 echo -n ' * auto-generated from ' ; \ 53 sed -nEe '/\$$FreeBSD/s/^.*\$$(.*)\$$.*$$/\1/p' \ 54 ${.CURDIR}/parse.c ; \ 55 echo ' * DO NOT EDIT' ; \ 56 echo ' */' ; \ 57 echo '#include <sys/types.h>' ; \ 58 echo ; \ 59 echo '#include "hash_tables.h"' ; \ 60 echo ; \ 61 cat ${.CURDIR}/parse.c | sed \ 62 -e '1,/DIRECTIVES-START-TAG/d' \ 63 -e '/DIRECTIVES-END-TAG/,$$d' \ 64 -e 's/^[^"]*"\([^"]*\)".*$$/\1/' | \ 65 ${MPH} -d2 -m1 | ${EMITC} -l -s | \ 66 sed \ 67 -e 's/^static int g\[\]/static const signed char directive_g[]/' \ 68 -e 's/^static int T0\[\]/static const u_char directive_T0[]/' \ 69 -e 's/^static int T1\[\]/static const u_char directive_T1[]/' \ 70 -e '/^#define uchar unsigned char/d' \ 71 -e 's/uchar/u_char/g' \ 72 -e 's/^hash(/directive_hash(/' \ 73 -e 's/; \*kp;/; kp < key + len;/' \ 74 -e 's/int len)/size_t len)/' \ 75 -e 's/= T0\[/= directive_T0\[/' \ 76 -e 's/= T1\[/= directive_T1\[/' \ 77 -e 's/g\[f/directive_g[f/g' ; \ 78 cat ${.CURDIR}/parse.c | sed \ 79 -e '1,/KEYWORD-START-TAG/d' \ 80 -e '/KEYWORD-END-TAG/,$$d' \ 81 -e 's/^[^"]*"\([^"]*\)".*$$/\1/' | \ 82 ${MPH} -d2 -m1 | ${EMITC} -l -s | \ 83 sed \ 84 -e 's/^static int g\[\]/static const signed char keyword_g[]/' \ 85 -e 's/^static int T0\[\]/static const u_char keyword_T0[]/' \ 86 -e 's/^static int T1\[\]/static const u_char keyword_T1[]/' \ 87 -e '/^#define uchar unsigned char/d' \ 88 -e 's/uchar/u_char/g' \ 89 -e 's/^hash(/keyword_hash(/' \ 90 -e 's/int len)/size_t len)/' \ 91 -e 's/= T0\[/= keyword_T0\[/' \ 92 -e 's/= T1\[/= keyword_T1\[/' \ 93 -e 's/g\[f/keyword_g[f/g' \ 94 ) > ${.CURDIR}/hash_tables.c 95 96# Set the shell which make(1) uses. Bourne is the default, but a decent 97# Korn shell works fine, and much faster. Using the C shell for this 98# will almost certainly break everything, but it's Unix tradition to 99# allow you to shoot yourself in the foot if you want to :-) 100 101MAKE_SHELL?= sh 102.if ${MAKE_SHELL} == "csh" || ${MAKE_SHELL} == "sh" || ${MAKE_SHELL} == "ksh" 103CFLAGS+= -DDEFSHELLNAME=\"${MAKE_SHELL}\" 104.else 105.error "MAKE_SHELL must be set to one of \"csh\", \"sh\" or \"ksh\"." 106.endif 107 108.include <bsd.prog.mk>
| 10 11NO_WERROR= 12WARNS?= 3 13NO_SHARED?= YES 14 15CFLAGS+=-DMAKE_VERSION=\"5200408120\" 16.if defined(_UPGRADING) 17CFLAGS+=-D__FBSDID=__RCSID 18.endif 19 20# There is no obvious performance improvement currently. 21# CFLAGS+=-DUSE_KQUEUE 22 23main.o: ${MAKEFILE} 24 25# Directive and keyword tables. We use hash tables. These hash tables have been 26# generated with mph which can be found on the usual GNU mirrors. 27# If you change the directives or keywords (adding, deleting, reordering) you 28# need to create new tables and hash functions (directive_hash, keyword_hash). 29# 30# The following changes have been made to the generated code: 31# 32# o prefix the names of the g, T0 and T1 arrays with 'directive_' 33# resp. 'keyword_'. 34# 35# o make the type of the tables 'const [un]signed char' (if you change 36# anything make sure that the numbers fit into a char). 37# 38# o make the hash function use the length for termination, 39# not the trailing '\0', via the -l flag in emitc and some editing 40# (only for directive_hash). 41 42LOCALBASE ?= /usr/local 43MPH ?= ${LOCALBASE}/bin/mph 44EMITC ?= ${LOCALBASE}/bin/emitc 45 46.PRECIOUS: hash 47 48hash: 49 ( echo '/*' ; \ 50 echo ' * DO NOT EDIT' ; \ 51 echo ' * $$''FreeBSD$$' ; \ 52 echo -n ' * auto-generated from ' ; \ 53 sed -nEe '/\$$FreeBSD/s/^.*\$$(.*)\$$.*$$/\1/p' \ 54 ${.CURDIR}/parse.c ; \ 55 echo ' * DO NOT EDIT' ; \ 56 echo ' */' ; \ 57 echo '#include <sys/types.h>' ; \ 58 echo ; \ 59 echo '#include "hash_tables.h"' ; \ 60 echo ; \ 61 cat ${.CURDIR}/parse.c | sed \ 62 -e '1,/DIRECTIVES-START-TAG/d' \ 63 -e '/DIRECTIVES-END-TAG/,$$d' \ 64 -e 's/^[^"]*"\([^"]*\)".*$$/\1/' | \ 65 ${MPH} -d2 -m1 | ${EMITC} -l -s | \ 66 sed \ 67 -e 's/^static int g\[\]/static const signed char directive_g[]/' \ 68 -e 's/^static int T0\[\]/static const u_char directive_T0[]/' \ 69 -e 's/^static int T1\[\]/static const u_char directive_T1[]/' \ 70 -e '/^#define uchar unsigned char/d' \ 71 -e 's/uchar/u_char/g' \ 72 -e 's/^hash(/directive_hash(/' \ 73 -e 's/; \*kp;/; kp < key + len;/' \ 74 -e 's/int len)/size_t len)/' \ 75 -e 's/= T0\[/= directive_T0\[/' \ 76 -e 's/= T1\[/= directive_T1\[/' \ 77 -e 's/g\[f/directive_g[f/g' ; \ 78 cat ${.CURDIR}/parse.c | sed \ 79 -e '1,/KEYWORD-START-TAG/d' \ 80 -e '/KEYWORD-END-TAG/,$$d' \ 81 -e 's/^[^"]*"\([^"]*\)".*$$/\1/' | \ 82 ${MPH} -d2 -m1 | ${EMITC} -l -s | \ 83 sed \ 84 -e 's/^static int g\[\]/static const signed char keyword_g[]/' \ 85 -e 's/^static int T0\[\]/static const u_char keyword_T0[]/' \ 86 -e 's/^static int T1\[\]/static const u_char keyword_T1[]/' \ 87 -e '/^#define uchar unsigned char/d' \ 88 -e 's/uchar/u_char/g' \ 89 -e 's/^hash(/keyword_hash(/' \ 90 -e 's/int len)/size_t len)/' \ 91 -e 's/= T0\[/= keyword_T0\[/' \ 92 -e 's/= T1\[/= keyword_T1\[/' \ 93 -e 's/g\[f/keyword_g[f/g' \ 94 ) > ${.CURDIR}/hash_tables.c 95 96# Set the shell which make(1) uses. Bourne is the default, but a decent 97# Korn shell works fine, and much faster. Using the C shell for this 98# will almost certainly break everything, but it's Unix tradition to 99# allow you to shoot yourself in the foot if you want to :-) 100 101MAKE_SHELL?= sh 102.if ${MAKE_SHELL} == "csh" || ${MAKE_SHELL} == "sh" || ${MAKE_SHELL} == "ksh" 103CFLAGS+= -DDEFSHELLNAME=\"${MAKE_SHELL}\" 104.else 105.error "MAKE_SHELL must be set to one of \"csh\", \"sh\" or \"ksh\"." 106.endif 107 108.include <bsd.prog.mk>
|