First/Makefile

59 lines
1.2 KiB
Makefile
Raw Normal View History

2024-01-29 13:03:43 +00:00
QUIET=1
PROFILING=1
ADDRESS_SANITIZE=1
2024-01-29 13:03:43 +00:00
all:first
OBJECT_FILES=gui.o main.o simdata.o assembly.o cpu.o
MAIN_ROM=programs/3d_renderer.rom
ROMS=test.rom ${MAIN_ROM}
make.deps: $(subst .o,.c,${OBJECT_FILES}) $(wildcard *.h)
@$(CC) -MM $(subst .o,.c,${OBJECT_FILES}) > make.deps
include make.deps
2024-01-29 13:03:43 +00:00
ifeq "${QUIET}" "1"
QUIET_CC = @echo ' CC '$@;
QUIET_LINK = @echo ' LINK '$@;
QUIET_FAS = @echo ' FAS '$@;
2024-01-29 13:03:43 +00:00
QUIET_CLEAN = @echo ' CLEAN .';
Q = @
else
Q =
endif
CFLAGS::=-O2 $(shell pkg-config ncursesw --cflags)
ifeq "${PROFILING}" "1"
CFLAGS += -pg
LDFLAGS += -pg
endif
ifeq "${ADDRESS_SANITIZE}" "1"
CFLAGS += -fsanitize=address -ggdb
LDFLAGS += -fsanitize=address -fsanitize=undefined -fsanitize=leak
endif
all:${MAIN_ROM}
2024-01-29 13:03:43 +00:00
first: ${OBJECT_FILES}
${QUIET_LINK}
${Q}gcc -ggdb $^ $(shell pkg-config --libs ncursesw) -lm -o $@ ${LDFLAGS}
gprof:
gprof first -b|less
%.rom:%.asm first
$(QUIET_FAS)
${Q}./first -i $< -a $@
%.o:%.c
2024-01-29 13:03:43 +00:00
${QUIET_CC}
${Q}gcc -c $< -Wall -Wextra -Werror ${CFLAGS}
.PHONY: clean
clean:
2024-01-29 13:03:43 +00:00
${QUIET_CLEAN}
${Q} rm -f ${OBJECT_FILES} first ${ROMS} gmon.out