aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile67
1 files changed, 59 insertions, 8 deletions
diff --git a/Makefile b/Makefile
index 3a23f4f..79aecf7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,28 +1,62 @@
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
+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)
-CFLAGS ?= -std=c11 -Wall -Wextra -pedantic -Iinclude $(PKG_CFLAGS)
+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
+.PHONY: all static shared clean run check sanitize debug release install uninstall
all: static
static: $(SRC) $(STATIC_LIB)
@mkdir -p bin
- $(CC) $(CFLAGS) $(SRC) $(STATIC_LIB) -o $(BIN) $(LDLIBS)
+ $(CC) $(CPPFLAGS) $(CFLAGS) $(SRC) $(STATIC_LIB) -o $(BIN) $(LDLIBS)
shared: $(SRC) $(SHARED_LIB)
@mkdir -p bin
- $(CC) $(CFLAGS) $(SRC) -Linclude -lccdjit -o $(BIN) $(LDLIBS)
+ $(CC) $(CPPFLAGS) $(CFLAGS) $(SRC) -Linclude -lccdjit -o $(BIN) $(LDLIBS)
run: static
LD_LIBRARY_PATH=include ./$(BIN)
@@ -35,12 +69,29 @@ release: static
sanitize: CFLAGS += -O1 -g -fsanitize=address,undefined -fno-omit-frame-pointer
sanitize: LDLIBS += -fsanitize=address,undefined
-sanitize: static
+sanitize: SANITIZER_TEST_ENV = ASAN_OPTIONS=detect_leaks=0
+sanitize: static check
check:
@mkdir -p bin
- $(CC) -std=c11 -Wall -Wextra -pedantic -Iinclude tests/test_core.c src/buffers.c src/completion.c src/path.c src/util.c src/log.c src/plugin.c -o bin/ecex-tests
- ./bin/ecex-tests
+ $(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