eaxhla/Makefile
2024-07-05 21:28:53 +02:00

78 lines
1.8 KiB
Makefile

.PHONY: clean test
ifeq (${DEBUG}, 1)
LFLAGS += --debug --trace
CFLAGS += -O0 -ggdb -fno-inline
CPPFLAGS += -DDEBUG
FLEXFLAGS += --trace --debug
BISONFLAGS += --debug -Wcounterexamples
else
CFLAGS += -O3 -flto=auto -fno-stack-protector
endif
ifeq ($(SAN), 1)
CFLAGS += -fsanitize=address,undefined
else
WRAP := valgrind --show-error-list=yes --track-origins=yes --leak-check=full --show-leak-kinds=all
endif
CFLAGS += -Wall -Wextra -Wpedantic
CPPFLAGS += -Ilibrary/tommyds
LDFLAGS += -lm
OUT := eaxhla
SOURCE.d := source
OBJECT.d := object
SOURCE := main.c assembler.c table.c
OBJECT := $(addprefix ${OBJECT.d}/,${SOURCE})
OBJECT := ${OBJECT:.c=.o}
# see library/, run library/bootstrap.sh
LIBS := tommy.o
LIBS := $(addprefix ${OBJECT.d}/,${LIBS.source})
GENSOURCE := eaxhla.yy.c eaxhla.tab.c
GENSOURCE := $(addprefix ${OBJECT.d}/,${GENSOURCE})
GENOBJECT := $(subst .c,.o,${GENSOURCE})
CPPFLAGS += -I${OBJECT.d} -I${SOURCE.d}
LDLIBS := -lm
all: ${OUT}
${OBJECT.d}/%.yy.c: ${SOURCE.d}/%.l
flex ${FLEXFLAGS} --header-file=object/$(basename $(notdir $<)).yy.h -o $@ $<
${OBJECT.d}/%.tab.c: ${SOURCE.d}/%.y
bison ${BISONFLAGS} --header=object/$(basename $(notdir $<)).tab.h -o $@ $<
${OBJECT.d}/%.yy.o: ${OBJECT.d}/%.yy.c
${COMPILE.c} -o $@ $<
${OBJECT.d}/%.tab.o: ${OBJECT.d}/%.tab.c
${COMPILE.c} -o $@ $<
${OBJECT.d}/%.o: ${SOURCE.d}/%.c
${COMPILE.c} -o $@ $<
${OUT}: ${GENSOURCE} ${GENOBJECT} ${OBJECT} ${LIB}
${LINK.c} -o $@ ${OBJECT} ${GENOBJECT} ${LDLIBS}
bootstrap:
./library/bootstrap.sh
test: ${OUT}
#fcpp -C -LL debug/xop.eax > debug/xop.eax.pp
#${WRAP} ./${OUT} debug/xop.eax
${WRAP} ./${OUT} debug/artimetrics.eax
@echo " --- ERROR TESTING BEGINS BELOW ---"
debug/error_test.sh
clean:
-rm ${OUT} ${OBJECT} ${GENOBJECT} ${GENSOURCE}
.PHONY: test clean bootstrap