##############################################################################
## subMakefile for bincfg
##############################################################################

## object files int his module
BCOBJ  = bincfg/bincfg.o bincfg/bincfg_grmr.tab.o bincfg/bincfg_lex.o 

## generated C/H files from bison, flex.
BCGEN  = bincfg/bincfg_grmr.tab.c bincfg/bincfg_grmr.tab.h
BCGEN += bincfg/bincfg_grmr.output bincfg/bincfg_lex.c 

bincfg/legacy.o:          bincfg/legacy.h mem/mem.h bincfg/bincfg_grmr.tab.h
bincfg/legacy.o:          bincfg/bincfg.h periph/periph.h config.h

bincfg/bincfg.o:          config.h plat/plat_lib.h misc/ll.h file/file.h
bincfg/bincfg.o:          bincfg/bincfg.h
bincfg/bincfg.o:          bincfg/bincfg_grmr.tab.h
bincfg/bincfg.o:          bincfg/bincfg_lex.h 

bincfg/bincfg_lex.o:      config.h plat/plat_lib.h misc/ll.h
bincfg/bincfg_lex.o:      bincfg/bincfg.h
bincfg/bincfg_lex.o:      bincfg/bincfg_grmr.tab.h
bincfg/bincfg_lex.o:      bincfg/bincfg_lex.h

bincfg/bincfg_grmr.tab.o: config.h plat/plat_lib.h misc/ll.h
bincfg/bincfg_grmr.tab.o: bincfg/bincfg.h
bincfg/bincfg_grmr.tab.o: bincfg/bincfg_lex.h bincfg/bincfg_grmr.tab.h

## special rules for generating grammar parser and lexer engines
bincfg/bincfg_grmr.tab.o bincfg/bincfg_grmr.tab.h: bincfg/bincfg_grmr.y
	bison bincfg/bincfg_grmr.y
	$(CC) -o bincfg/bincfg_grmr.tab.o $(CFLAGS) -c bincfg/bincfg_grmr.tab.c

bincfg/bincfg_lex.o: bincfg/bincfg_lex.l
	flex bincfg/bincfg_lex.l
	$(CC) -o bincfg/bincfg_lex.o $(CFLAGS) -c bincfg/bincfg_lex.c

## bc_test is a simple test program for parsing config files in isolation.
## It will be useful for diagnostic purposes.
$(B)/bc_test$(X): $(BCOBJ) bincfg/bc_test.o misc/ll.o file/file.o
	$(CC) -o $(B)/bc_test$(X) $(CFLAGS) $(BCOBJ) bincfg/bc_test.o misc/ll.o file/file.o

PROGS   += $(B)/bc_test$(X)
TOCLEAN += $(B)/bc_test$(X) $(BCOBJ) $(BCGEN) bincfg/bc_test.o bincfg/legacy.o
OBJS    += $(BCOBJ) bincfg/legacy.o

