compilers/imcc/pcc$(O) : \
    compilers/imcc/pcc.c \
    compilers/imcc/cfg.h \
    compilers/imcc/debug.h \
    compilers/imcc/imc.h \
    compilers/imcc/imcparser.h \
    compilers/imcc/instructions.h \
    compilers/imcc/parser.h \
    compilers/imcc/sets.h \
    compilers/imcc/symreg.h \
    compilers/imcc/unit.h \
    $(INC_DIR)/oplib/ops.h \
    $(PARROT_H_HEADERS)

compilers/imcc/instructions$(O) : \
    compilers/imcc/instructions.c \
    compilers/imcc/cfg.h \
    compilers/imcc/debug.h \
    compilers/imcc/imc.h \
    compilers/imcc/instructions.h \
    compilers/imcc/optimizer.h \
    compilers/imcc/pbc.h \
    compilers/imcc/sets.h \
    compilers/imcc/symreg.h \
    compilers/imcc/unit.h \
    $(INC_DIR)/oplib/ops.h \
    $(PARROT_H_HEADERS)

compilers/imcc/pbc$(O) : \
    compilers/imcc/pbc.c \
    compilers/imcc/cfg.h \
    compilers/imcc/debug.h \
    compilers/imcc/imc.h \
    compilers/imcc/instructions.h \
    compilers/imcc/pbc.h \
    compilers/imcc/sets.h \
    compilers/imcc/symreg.h \
    compilers/imcc/unit.h \
    $(INC_DIR)/oplib/ops.h \
    $(PARROT_H_HEADERS) \
    include/pmc/pmc_sub.h

compilers/imcc/parser_util$(O) : \
    compilers/imcc/parser_util.c \
    compilers/imcc/cfg.h \
    compilers/imcc/debug.h \
    compilers/imcc/imc.h \
    compilers/imcc/imcparser.h \
    compilers/imcc/instructions.h \
    compilers/imcc/optimizer.h \
    compilers/imcc/parser.h \
    compilers/imcc/pbc.h \
    compilers/imcc/sets.h \
    compilers/imcc/symreg.h \
    compilers/imcc/unit.h \
    $(INC_DIR)/dynext.h \
    $(INC_DIR)/embed.h \
    $(INC_DIR)/oplib/ops.h \
    $(PARROT_H_HEADERS) \
    include/pmc/pmc_sub.h

compilers/imcc/imc$(O) : \
    compilers/imcc/imc.c \
    compilers/imcc/cfg.h \
    compilers/imcc/debug.h \
    compilers/imcc/imc.h \
    compilers/imcc/instructions.h \
    compilers/imcc/optimizer.h \
    compilers/imcc/sets.h \
    compilers/imcc/symreg.h \
    compilers/imcc/unit.h \
    $(INC_DIR)/oplib/ops.h \
    $(PARROT_H_HEADERS)

compilers/imcc/cfg$(O) : \
    compilers/imcc/cfg.c \
    compilers/imcc/cfg.h \
    compilers/imcc/debug.h \
    compilers/imcc/imc.h \
    compilers/imcc/instructions.h \
    compilers/imcc/optimizer.h \
    compilers/imcc/sets.h \
    compilers/imcc/symreg.h \
    compilers/imcc/unit.h \
    $(INC_DIR)/oplib/ops.h \
    $(PARROT_H_HEADERS)

compilers/imcc/debug$(O) : \
    compilers/imcc/debug.c \
    compilers/imcc/cfg.h \
    compilers/imcc/debug.h \
    compilers/imcc/imc.h \
    compilers/imcc/instructions.h \
    compilers/imcc/sets.h \
    compilers/imcc/symreg.h \
    compilers/imcc/unit.h \
    $(INC_DIR)/oplib/ops.h \
    $(PARROT_H_HEADERS)

## SUFFIX OVERRIDE - Warnings (This is generated code)
compilers/imcc/imclexer$(O) : \
    compilers/imcc/imclexer.c \
    compilers/imcc/cfg.h \
    compilers/imcc/debug.h \
    compilers/imcc/imc.h \
    compilers/imcc/imcparser.h \
    compilers/imcc/instructions.h \
    compilers/imcc/parser.h \
    compilers/imcc/sets.h \
    compilers/imcc/symreg.h \
    compilers/imcc/unit.h \
    $(INC_DIR)/oplib/ops.h \
    $(PARROT_H_HEADERS)
	$(CC) $(CFLAGS) @optimize::compilers/imcc/imclexer.c@ @ccwarn::compilers/imcc/imclexer.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c compilers/imcc/imclexer.c

## SUFFIX OVERRIDE - Warnings (This is generated code)
compilers/imcc/imcparser$(O) : \
    compilers/imcc/imcparser.c \
    compilers/imcc/cfg.h \
    compilers/imcc/debug.h \
    compilers/imcc/imc.h \
    compilers/imcc/imcparser.h \
    compilers/imcc/instructions.h \
    compilers/imcc/optimizer.h \
    compilers/imcc/parser.h \
    compilers/imcc/pbc.h \
    compilers/imcc/sets.h \
    compilers/imcc/symreg.h \
    compilers/imcc/unit.h \
    $(INC_DIR)/dynext.h \
    $(INC_DIR)/oplib/ops.h \
    $(PARROT_H_HEADERS)
	$(CC) $(CFLAGS) @optimize::compilers/imcc/imcparser.c@ @ccwarn::compilers/imcc/imcparser.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c compilers/imcc/imcparser.c

compilers/imcc/main$(O) : \
    compilers/imcc/main.c \
    compilers/imcc/cfg.h \
    compilers/imcc/debug.h \
    compilers/imcc/imc.h \
    compilers/imcc/imcparser.h \
    compilers/imcc/instructions.h \
    compilers/imcc/parser.h \
    compilers/imcc/pbc.h \
    compilers/imcc/sets.h \
    compilers/imcc/symreg.h \
    compilers/imcc/unit.h \
    $(INC_DIR)/embed.h \
    $(INC_DIR)/imcc.h \
    $(INC_DIR)/oplib/ops.h \
    $(INC_DIR)/runcore_api.h \
    $(PARROT_H_HEADERS)

## SUFFIX OVERRIDE - Warnings (This is generated code)
compilers/imcc/optimizer$(O) : \
    compilers/imcc/optimizer.c \
    compilers/imcc/cfg.h \
    compilers/imcc/debug.h \
    compilers/imcc/imc.h \
    compilers/imcc/instructions.h \
    compilers/imcc/optimizer.h \
    compilers/imcc/pbc.h \
    compilers/imcc/sets.h \
    compilers/imcc/symreg.h \
    compilers/imcc/unit.h \
    $(INC_DIR)/oplib/ops.h \
    $(PARROT_H_HEADERS)
	$(CC) $(CFLAGS) @optimize::compilers/imcc/optimizer.c@ @ccwarn::compilers/imcc/optimizer.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c compilers/imcc/optimizer.c

compilers/imcc/reg_alloc$(O) : \
    compilers/imcc/reg_alloc.c \
    compilers/imcc/cfg.h \
    compilers/imcc/debug.h \
    compilers/imcc/imc.h \
    compilers/imcc/instructions.h \
    compilers/imcc/optimizer.h \
    compilers/imcc/sets.h \
    compilers/imcc/symreg.h \
    compilers/imcc/unit.h \
    $(INC_DIR)/oplib/ops.h \
    $(PARROT_H_HEADERS)

compilers/imcc/sets$(O) : \
    compilers/imcc/sets.c \
    compilers/imcc/cfg.h \
    compilers/imcc/debug.h \
    compilers/imcc/imc.h \
    compilers/imcc/instructions.h \
    compilers/imcc/sets.h \
    compilers/imcc/symreg.h \
    compilers/imcc/unit.h \
    $(INC_DIR)/oplib/ops.h \
    $(PARROT_H_HEADERS)

compilers/imcc/symreg$(O) : \
    compilers/imcc/symreg.c \
    compilers/imcc/cfg.h \
    compilers/imcc/debug.h \
    compilers/imcc/imc.h \
    compilers/imcc/instructions.h \
    compilers/imcc/sets.h \
    compilers/imcc/symreg.h \
    compilers/imcc/unit.h \
    $(INC_DIR)/oplib/ops.h \
    $(PARROT_H_HEADERS)

# imcc file dependencies
#
# The .flag files are needed because we keep some derived files in SVN,
# which does not keep accurate timestamps on the files, relative to each other.
# Note that YACC or LEX may be null commands, so we must `touch` all the
# target files, instead of just the .flag files.

compilers/imcc/imcc.y.flag compilers/imcc/imcparser.c compilers/imcc/imcparser.h : compilers/imcc/imcc.y
	$(YACC) compilers/imcc/imcc.y -d -o compilers/imcc/imcparser.c
	$(PERL) $(BUILD_TOOLS_DIR)/fixup_gen_file.pl -noheaderizer compilers/imcc/imcparser.c compilers/imcc/imcc.y
	$(PERL) $(BUILD_TOOLS_DIR)/fixup_gen_file.pl -noheaderizer compilers/imcc/imcparser.h compilers/imcc/imcc.y
	$(TOUCH) compilers/imcc/imcc.y.flag compilers/imcc/imcparser.c compilers/imcc/imcparser.h

compilers/imcc/imcc.l.flag compilers/imcc/imclexer.c : compilers/imcc/imcc.l
	$(LEX) -ocompilers/imcc/imclexer.c compilers/imcc/imcc.l
	$(TOUCH) compilers/imcc/imcc.l.flag compilers/imcc/imclexer.c
