VirtualBox

Changeset 2224 in kBuild


Ignore:
Timestamp:
Jan 8, 2009 1:19:16 AM (16 years ago)
Author:
bird
Message:

kBuild: Implemented flex and yacc/bison support. Fixes #18.

Location:
trunk
Files:
3 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/kBuild/tools/FLEX.kmk

    r2018 r2224  
    55
    66#
    7 # Copyright (c) 2008 knut st. osmundsen <[email protected]>
     7# Copyright (c) 2008-2009 knut st. osmundsen <[email protected]>
    88#
    99# This file is part of kBuild.
     
    3434TOOL_FLEX = flex
    3535TOOL_FLEX_LEX ?= flex$(HOSTSUFF_EXE)
    36 TOOL_FLEX_LEXFLAGS ?=
     36
     37#TOOL_FLEX_LEXFLAGS ?=
     38TOOL_FLEX_LEX_OUT_FILE = $(evalcall KB_FN_OPT_TEST_SHORT_LONG,+,--c++,$(flags),$(outbase).cpp,$(outbase).c)
    3739TOOL_FLEX_LEX_OUTPUT =
     40TOOL_FLEX_LEX_OUTPUT_MAYBE =
    3841TOOL_FLEX_LEX_DEPEND =
    3942TOOL_FLEX_LEX_DEPORD =
    4043define TOOL_FLEX_LEX_CMDS
    41         $(TOOL_FLEX_LEX) $(flags) -o $(out) $(source)
     44        $(QUIET)$(TOOL_FLEX_LEX) $(flags) -o $(out) $(source)
    4245endef
    4346
    44 
  • trunk/kBuild/units/lex.kmk

    r2018 r2224  
    55
    66#
    7 # Copyright (c) 2008 knut st. osmundsen <[email protected]>
     7# Copyright (c) 2008-2009 knut st. osmundsen <[email protected]>
    88#
    99# This file is part of kBuild.
     
    3232#
    3333
     34ifdef UNIT_lex
     35 $(error kBuild: The lex unit was included twice!)
     36endif
    3437UNIT_lex = lex
     38
     39# Add our target properties.
     40PROPS_TOOLS += LEXTOOL
     41PROPS_SINGLE += LEXTOOL
     42PROPS_ACCUMULATE_R += LEXFLAGS
    3543
    3644# Add ourselves to the default source handlers.
     
    7381_OUT_FILES += $(out) $(output_extra) $(output_maybe)
    7482$(target)_GEN_SOURCES_ += $(out)
     83$(target)_INTERMEDIATES += $(intermediates)
    7584
    7685endef # def_lex_rule
     
    125134local output_maybe := $(TOOL_$(tool)_LEX_OUTPUT_MAYBE)
    126135local deps += $(TOOL_$(tool)_LEX_DEPEND) $(source)
    127 local orderdeps += $(TOOL_$(tool)_LEX_DEPORD)
     136local orderdeps += $(TOOL_$(tool)_LEX_DEPORD) $(dirdep)
     137
     138# Whether it generates a header file depends on the tool / flags.
     139local intermediates := $(filter %.h %.hpp %.h++ %.H,$(output_extra))
    128140
    129141# generate the rule.
  • trunk/src/ash/Makefile.kmk

    r2019 r2224  
    55
    66#
    7 # Copyright (c) 2005-2008 knut st. osmundsen <[email protected]>
     7# Copyright (c) 2005-2009 knut st. osmundsen <[email protected]>
    88#
    99# This file is part of kBuild.
     
    7777        bltin/kill.c \
    7878        bltin/test.c \
    79         $(PATH_kmk_ash)/arith.c \
    8079        $(PATH_kmk_ash)/builtins.c \
    8180        $(PATH_kmk_ash)/init.c \
     
    9897
    9998kmk_ash_INTERMEDIATES = \
    100         $(PATH_kmk_ash)/arith.h \
    10199        $(PATH_kmk_ash)/builtins.h \
    102100        $(PATH_kmk_ash)/nodes.h \
     
    104102kmk_ash_CLEAN = \
    105103        $(kmk_ash_INTERMEDIATES) \
    106         $(PATH_kmk_ash)/arith.c \
    107         $(PATH_kmk_ash)/arith_lex.c \
    108104        $(PATH_kmk_ash)/builtins.c \
    109105        $(PATH_kmk_ash)/init.c \
     
    140136#
    141137
    142 ifeq (1,2) #disabled for now.
    143 kmk_ash_USES = lex #yacc
    144 kmk_ash_SOURCES += arith_lex.l
     138USES += lex yacc
     139kmk_ash_USES = lex yacc
    145140kmk_ash_LEXTOOL = FLEX
    146141kmk_ash_LEXFLAGS = -8
    147 else
    148 kmk_ash_SOURCES += $(PATH_kmk_ash)/arith_lex.c
    149 endif
     142#kmk_ash_YACCTOOL = BISON
     143kmk_ash_YACCTOOL = YACC
     144kmk_ash_YACCFLAGS = -ld
     145kmk_ash_SOURCES += \
     146        arith.y \
     147        arith_lex.l
     148
    150149
    151150include $(FILE_KBUILD_SUB_FOOTER)
     
    160159#
    161160BOOTSTRAP_SHELL ?= $(SHELL)
    162 ifndef YACC
    163  YACC := $(firstword $(which byacc) $(which yacc) yacc)
    164 endif
    165 
    166 $(PATH_kmk_ash)/arith.h + $(PATH_kmk_ash)/arith.c: $(kmk_ash_PATH)/arith.y | $(call DIRDEP,$(PATH_kmk_ash))
    167         $(YACC) -ld $^
    168         $(MV) -f y.tab.c $(PATH_kmk_ash)/arith.c
    169         $(MV) -f y.tab.h $(PATH_kmk_ash)/arith.h
    170 
    171 ifndef kmk_ash_LEXTOOL
    172 $(PATH_kmk_ash)/arith_lex.c: $(kmk_ash_PATH)/arith_lex.l | $(call DIRDEP,$(PATH_kmk_ash))
    173         flex -8 -o$@ $^                     # 8-bit lex scanner for arithmetic
    174 endif
    175161
    176162$(PATH_kmk_ash)/builtins.h + $(PATH_kmk_ash)/builtins.c: \
     
    202188
    203189endif # generate on the fly
     190
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette