ref: main
./Makefile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
SOURCES := $(wildcard source/*.c) $(wildcard source/**/*.c) OBJECTS := $(patsubst source/%.c,bin/%.o,$(SOURCES)) PLAT := $(shell uname -s) ifeq ($(PLAT),NetBSD) override CPPFLAGS += -I/usr/X11R7/include -I/usr/pkg/include override LDFLAGS += -L/usr/X11R7/lib -L/usr/pkg/lib -Wl,-R/usr/X11R7/lib -Wl,-R/usr/pkg/lib endif ifeq ($(PLAT),windows) CC := x86_64-w64-mingw32-gcc override LDLIBS += -lkernel32 -l:libSDL2.a -lole32 -loleaut32 -limm32 override LDLIBS += -lsetupapi -lversion -lgdi32 -lwinmm -lopengl32 else override LDLIBS += -lSDL2 -lGL endif LD := $(CC) OUT := yterm ifeq ($(STATIC), y) override CFLAGS += -static -static-libgcc -static-libstdc++ endif override CFLAGS += -std=c99 -Wall -Wextra -Wuninitialized -Wundef -pedantic -Ilib -Werror=return-type override LDLIBS += -lm #override CPPFLAGS += -DYT_BACKEND_GL_11 override CPPFLAGS += -DYT_WINDOW_SDL2 -DYT_INPUT_SDL2 -DYT_EVENT_SDL2 override CPPFLAGS += -DSDL_MAIN_HANDLED -D_POSIX_C_SOURCE=199309L ifeq ($(BUILD),release) override CFLAGS += -O3 override CPPFLAGS += -NDEBUG else override CFLAGS += -O0 -ggdb -fno-omit-frame-pointer override LDFLAGS += -O0 -ggdb -fno-omit-frame-pointer ifeq ($(ASAN),y) override CFLAGS += -fsanitize=address,undefined override LDFLAGS += -fsanitize=address,undefined endif endif .SECONDEXPANSION: deps.filter := %.c %.h deps.option := -MM define deps $$(filter $$(deps.filter),,$$(shell $(CC) $(CFLAGS) $(CPPFLAGS) -E $(deps.option) $(1))) endef all: $(OUT) @: run: $(OUT) '$(dir $<)$(notdir $<)' $(RUNFLAGS) yterm: $(OBJECTS) $(LD) $(LDFLAGS) $^ $(LDLIBS) -o $@ bin/: mkdir -p bin bin/backends: mkdir -p bin/backends bin/input: mkdir -p bin/input bin/window: mkdir -p bin/window bin/event: mkdir -p bin/event bin/platform: mkdir -p bin/platform bin/sysTerm: mkdir -p bin/sysTerm bin/interpreter: mkdir -p bin/interpreter bin/%.o: source/%.c $(call deps,source/%.c) | bin/ bin/backends bin/input bin/window bin/event bin/platform bin/sysTerm bin/interpreter $(CC) $(CFLAGS) $(CPPFLAGS) $< -c -o $@ clean: -rm -r bin distclean: clean rm $(OUT) .PHONY: all run clean distclean install |