#
# Makefile para Windows/Linux/OS X com GCC
#
# Para converter para outro compilador:
#	Alterar a primeira regra para chamar outro compilador
#
EXE = calc
RM  = rm
ifeq "$(OS)" "Windows_NT"
        EXE = $(EXE).exe
        RM  = del
endif


# A primeira regra e' a "default", e logo a que devemos
# ter para criar o nosso executavel final;
# A opcao "-Wall" ao gcc, aumenta a quantidade de avisos que ele nos da'
#
calc : calc.tab.c calc.tab.h lex.yy.c Makefile
	gcc calc.tab.c lex.yy.c -Wall -o $(EXE)


# Regra bison;
# A opcao "-d" ao bison, cria o "*.tab.h" para interaccao com o "*.l";
# A opcao "-o" ao bison, gera o ficheiro com o nome "*.tab.c" (e "*.tab.h");
#	Este e' o nome padrao em Unix, mas em Windows e' usado
#	*_tab.c e *_tab.h. Usamos esta opcao para este ficheiro
#	funcionar igual em ambos os sistemas operativos
#
calc.tab.c calc.tab.h : calc.y Makefile
	bison -d calc.y -o calc.tab.c


# Regra flex
#
lex.yy.c : calc.l calc.tab.h Makefile
	flex calc.l


# Regra para apagar os ficheiros nao necessarios
# (corre-se com o comando "make clean")
#
clean:
	$(RM) calc.tab.c calc.tab.h calc.output lex.yy.c $(EXE)
