CC = clang PREFIX ?= /usr/local BINDIR ?= $(PREFIX)/bin DATADIR ?= $(PREFIX)/share DOCDIR ?= $(DATADIR)/doc/ecex ECEX_DATADIR ?= $(DATADIR)/ecex ECEX_INCLUDEDIR ?= $(PREFIX)/include/ecex STATIC_LIB = include/libccdjit.a SHARED_LIB = include/libccdjit.so SRC = \ src/main.c \ src/app.c \ src/completion.c \ src/path.c \ src/media.c \ src/render.c \ src/font.c \ src/util.c \ src/log.c \ src/buffers.c \ src/ecex.c \ src/plugin.c \ src/config.c \ src/eval.c TEST_SRC = \ tests/test_main.c \ tests/test_plugin.c \ tests/test_buffers.c \ tests/test_completion_path.c \ src/buffers.c \ src/completion.c \ src/path.c \ src/util.c \ src/log.c \ src/plugin.c BIN = bin/ecex PKG_CFLAGS = $(shell pkg-config --cflags glfw3 2>/dev/null) PKG_LIBS = $(shell pkg-config --libs glfw3 2>/dev/null || echo -lglfw) CPPFLAGS ?= -Iinclude $(PKG_CFLAGS) -DECEX_SYSTEM_INCLUDE_DIR=\"$(ECEX_INCLUDEDIR)\" CFLAGS ?= -std=c11 -Wall -Wextra -pedantic LDLIBS = $(PKG_LIBS) -lGL -lm .PHONY: all static shared clean run check sanitize debug release install uninstall all: static static: $(SRC) $(STATIC_LIB) @mkdir -p bin $(CC) $(CPPFLAGS) $(CFLAGS) $(SRC) $(STATIC_LIB) -o $(BIN) $(LDLIBS) shared: $(SRC) $(SHARED_LIB) @mkdir -p bin $(CC) $(CPPFLAGS) $(CFLAGS) $(SRC) -Linclude -lccdjit -o $(BIN) $(LDLIBS) run: static LD_LIBRARY_PATH=include ./$(BIN) debug: CFLAGS += -O0 -g3 -DDEBUG debug: static release: CFLAGS += -O2 -DNDEBUG release: static sanitize: CFLAGS += -O1 -g -fsanitize=address,undefined -fno-omit-frame-pointer sanitize: LDLIBS += -fsanitize=address,undefined sanitize: SANITIZER_TEST_ENV = ASAN_OPTIONS=detect_leaks=0 sanitize: static check check: @mkdir -p bin $(CC) $(CPPFLAGS) $(CFLAGS) $(TEST_SRC) -o bin/ecex-tests $(SANITIZER_TEST_ENV) ./bin/ecex-tests install: static install -d "$(DESTDIR)$(BINDIR)" install -d "$(DESTDIR)$(ECEX_INCLUDEDIR)" install -d "$(DESTDIR)$(ECEX_DATADIR)/config" install -d "$(DESTDIR)$(DOCDIR)" install -m 755 "$(BIN)" "$(DESTDIR)$(BINDIR)/ecex" install -m 644 include/*.h "$(DESTDIR)$(ECEX_INCLUDEDIR)/" install -m 644 config/*.c "$(DESTDIR)$(ECEX_DATADIR)/config/" install -m 644 README.md LICENSE docs/*.md "$(DESTDIR)$(DOCDIR)/" uninstall: rm -f "$(DESTDIR)$(BINDIR)/ecex" rm -rf "$(DESTDIR)$(ECEX_INCLUDEDIR)" rm -rf "$(DESTDIR)$(ECEX_DATADIR)" rm -rf "$(DESTDIR)$(DOCDIR)" clean: rm -f $(BIN) bin/ecex-tests