CFLAGS	= -g -O
CC = gcc
LD = gcc
RM = rm
MV = mv
RM_OPT_DO_NOT_ASK = -f
RM_OPT_DO_ASK = -i

.y.c: 
.lex.c:

# make all: create both konverter and make clean
all: mot2mit

# make mot2mit: create konverter Motorola->MIT
mot2mit: mot2mit.main.o mot2mit.routines.o mot2mit.tab.o mot2mit.lex.yy.o
	$(LD) $(CFLAGS) mot2mit.main.o mot2mit.routines.o mot2mit.tab.o mot2mit.lex.yy.o -ll -lm -o mot2mit
mot2mit.main.o: mot2mit.main.c mot2mit.tab.h mot2mit.def.h mot2mit.routines.h
	$(CC) -c $(CFLAGS) mot2mit.main.c
mot2mit.routines.o: mot2mit.routines.c mot2mit.def.h floats.c
	$(CC) -c $(CFLAGS) mot2mit.routines.c
mot2mit.tab.o: mot2mit.tab.c mot2mit.def.h
	$(CC) -c $(CFLAGS) mot2mit.tab.c
mot2mit.lex.yy.o: mot2mit.lex.yy.c mot2mit.def.h mot2mit.routines.h
	$(CC) -c $(CFLAGS) mot2mit.lex.yy.c
mot2mit.tab.c mot2mit.tab.h: mot2mit.y mot2mit.def.h mot2mit.routines.h floats.c
	bison -dv mot2mit.y
mot2mit.lex.yy.c: mot2mit.lex mot2mit.tab.h
	lex -v mot2mit.lex
	$(RM) $(RM_OPT_DO_NOT_ASK) mot2mit.lex.yy.c
	$(MV) lex.yy.c mot2mit.lex.yy.c

# make clean: remove all but the sources
clean:
# remove mot2mit objects and sources generated by lex & bison
	-$(RM) $(RM_OPT_DO_NOT_ASK) mot2mit.lex.yy.o
	-$(RM) $(RM_OPT_DO_NOT_ASK) mot2mit.lex.yy.c
	-$(RM) $(RM_OPT_DO_NOT_ASK) mot2mit.main.o
	-$(RM) $(RM_OPT_DO_NOT_ASK) mot2mit.tab.o
	-$(RM) $(RM_OPT_DO_NOT_ASK) mot2mit.tab.c
	-$(RM) $(RM_OPT_DO_NOT_ASK) mot2mit.tab.h
	-$(RM) $(RM_OPT_DO_NOT_ASK) mot2mit.routines.o
	-$(RM) $(RM_OPT_DO_NOT_ASK) mot2mit.output
# conditional removing of executable code
	-$(RM) $(RM_OPT_DO_ASK) mot2mit

rm:
	make -r clean
