TOP = ../..
include $(TOP)/configure/CONFIG
#----------------------------------------
#  ADD MACRO DEFINITIONS AFTER THIS LINE

# default main (+m option)
INC += seqMain.c

#  snc product
PROD_HOST += snc

snc_LIBS += $(EPICS_BASE_IOC_LIBS)

#snc_SRCS += snl.re         # lexer spec
#snc_SRCS += snl.lem        # parser spec

snc_SRCS += lexer.c         # generated by re2c
snc_SRCS += snl.c           # generated by lemon

snc_SRCS += main.c          # main program
snc_SRCS += expr.c          # generate expressions
snc_SRCS += var_types.c     # declarations
snc_SRCS += analysis.c      # analysis routines
snc_SRCS += gen_code.c      # code generation
snc_SRCS += gen_ss_code.c   # code generation (state sets)
snc_SRCS += gen_tables.c    # code generation (tables)
snc_SRCS += sym_table.c     # symbol table
snc_SRCS += builtin.c       # builtin constants and functions

snc_LIBS += Com

ifdef LEXER_TEST
PROD_HOST =
TESTPROD_HOST = lexer
USR_CFLAGS = -DTEST_LEXER
endif

# locally overwrite default value for this variable
INSTALL_DOC = $(INSTALL_LOCATION)/documentation
DOCS += bnf.inc

include $(TOP)/configure/RULES
#----------------------------------------
#  ADD RULES AFTER THIS LINE

vpath %.lem ..
vpath %.lt ..

snl.c snl.h: snl.lem snl.lt $(LEMON)
	$(RM) $@
	$(LEMON) o=. $<

vpath %.re ..

lexer.c: snl.re snl.h
	$(RE2C) -s -b -o $@ $<

$(COMMON_DIR)/snl.bnf: snl.lem
	$(RM) $@
	$(LEMON) o=. -g $< > $@.tmp
	$(MV) $@.tmp $@

$(COMMON_DIR)/bnf.inc: ../bnf2txt.pl snl.re $(COMMON_DIR)/snl.bnf
	$(RM) $@
	$(PERL) $^ > $@

$(INSTALL_DOC)/%: $(COMMON_DIR)/%
	@$(INSTALL) -d -m 644 $< $(INSTALL_DOC)
