1 # SPDX-License-Identifier: GPL-2.0 << 2 1 3 hostprogs-always-y += genksyms !! 2 hostprogs-y := genksyms >> 3 always := $(hostprogs-y) 4 4 5 genksyms-objs := genksyms.o parse.tab.o lex. !! 5 genksyms-objs := genksyms.o parse.o lex.o 6 6 7 # FIXME: fix the ambiguous grammar in parse.y !! 7 # -I needed for generated C source (shipped source) 8 # !! 8 HOSTCFLAGS_parse.o := -Wno-uninitialized -I$(src) 9 # Suppress shift/reduce, reduce/reduce conflic << 10 # unless W=1 is specified. << 11 # << 12 # Just in case, run "$(YACC) --version" withou << 13 # so that 'bison: not found' will be displayed << 14 ifeq ($(findstring 1,$(KBUILD_EXTRA_WARN)),) << 15 << 16 quiet_cmd_bison_no_warn = $(quiet_cmd_bison) << 17 cmd_bison_no_warn = $(YACC) --version >/ << 18 $(cmd_bison) 2>/dev/ << 19 9 20 $(obj)/pars%.tab.c $(obj)/pars%.tab.h: $(src)/ !! 10 # dependencies on generated files need to be listed explicitly 21 $(call if_changed,bison_no_warn) !! 11 $(obj)/lex.o: $(obj)/parse.h $(obj)/keywords.c 22 12 23 endif !! 13 # -I needed for generated C source (shipped source) >> 14 HOSTCFLAGS_lex.o := -I$(src) 24 15 25 # -I needed for generated C source to include !! 16 ifdef GENERATE_PARSER 26 HOSTCFLAGS_parse.tab.o := -I $(src) << 27 HOSTCFLAGS_lex.lex.o := -I $(src) << 28 17 29 # dependencies on generated files need to be l !! 18 # gperf 30 $(obj)/lex.lex.o: $(obj)/parse.tab.h !! 19 >> 20 quiet_cmd_keywords.c = GPERF $@ >> 21 cmd_keywords.c = gperf -L ANSI-C -a -C -E -g -H is_reserved_hash \ >> 22 -k 1,3,$$ -N is_reserved_word -p -t $< > $@ >> 23 >> 24 $(obj)/keywords.c: $(obj)/keywords.gperf FORCE >> 25 $(call if_changed,keywords.c) >> 26 cp $@ $@_shipped >> 27 >> 28 # flex >> 29 >> 30 quiet_cmd_lex.c = FLEX $@ >> 31 cmd_lex.c = flex -o$@ -d $< $(obj)/parse.h >> 32 >> 33 $(obj)/lex.c: $(obj)/lex.l $(obj)/parse.h $(obj)/keywords.c FORCE >> 34 $(call if_changed,lex.c) >> 35 cp $@ $@_shipped >> 36 >> 37 # bison >> 38 >> 39 quiet_cmd_parse.c = BISON $@ >> 40 cmd_parse.c = bison -o$@ -dtv $(filter-out FORCE,$^) >> 41 >> 42 $(obj)/parse.c: $(obj)/parse.y FORCE >> 43 $(call if_changed,parse.c) >> 44 cp $@ $@_shipped >> 45 cp $(@:.c=.h) $(@:.c=.h)_shipped >> 46 >> 47 $(obj)/parse.h: $(obj)/parse.c ; >> 48 >> 49 clean-files += parse.output >> 50 >> 51 endif >> 52 >> 53 targets += keywords.c lex.c parse.c parse.h
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.