blob: 7095266ad4be6bc74b3c5f3f0c5bf3000e37a63c (
plain)
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
96
97
|
# Makefile for bmake
.OBJDIR: ./build
.PHONY: default clean check run debug debug-tests install format
default: dged
build:
mkdir -p build
SOURCES = src/dged/binding.c src/dged/buffer.c src/dged/command.c src/dged/display.c \
src/dged/keyboard.c src/dged/minibuffer.c src/dged/text.c \
src/dged/utf8.c src/dged/buffers.c src/dged/window.c src/dged/allocator.c src/dged/undo.c \
src/dged/settings.c src/dged/lang.c
MAIN_SOURCES = src/main/main.c src/main/cmds.c src/main/bindings.c
TEST_SOURCES = test/assert.c test/buffer.c test/text.c test/utf8.c test/main.c \
test/command.c test/keyboard.c test/fake-reactor.c test/allocator.c \
test/minibuffer.c test/undo.c test/settings.c test/container.c
prefix ?= "/usr"
.SUFFIXES:
.SUFFIXES: .c .o .d
CFLAGS += -Werror -g -std=c99 -I $(.CURDIR)/src -I $(.CURDIR)/src/main
UNAME_S != uname -s | tr '[:upper:]' '[:lower:]'
.sinclude "$(UNAME_S).mk"
DEPS = $(DGED_SOURCES:.c=.d) $(TEST_SOURCES:.c=.d)
OBJS = $(SOURCES:.c=.o)
PLATFORM_OBJS = $(PLATFORM_SOURCES:.c=.o)
MAIN_OBJS = $(MAIN_SOURCES:.c=.o)
TEST_OBJS = $(TEST_SOURCES:.c=.o)
FILES = $(DEPS) $(MAIN_OBJS) $(OBJS) dged libdged.a $(TEST_OBJS) $(PLATFORM_OBJS)
# dependency generation
.c.d:
@mkdir -p $(@D)
$(CC) -MM $(CFLAGS) -MT $*.o $< > $@
@sed -i 's,\($*\)\.o[ :]*,\1.o $@ : ,g' $@
.c.o:
@mkdir -p $(@D)
$(CC) $(CFLAGS) -c $< -o $@
dged: $(MAIN_OBJS) libdged.a
$(CC) $(LDFLAGS) $(MAIN_OBJS) libdged.a -o dged -lm
libdged.a: $(OBJS) $(PLATFORM_OBJS)
$(AR) -rc libdged.a $(OBJS) $(PLATFORM_OBJS)
run-tests: $(TEST_OBJS) $(OBJS)
$(CC) $(LDFLAGS) $(TEST_OBJS) $(OBJS) -lm -o run-tests
check: run-tests
clang-format --dry-run --Werror $(SOURCES:%.c=../%.c) $(MAIN_SOURCES:%.c=../%.c) $(TEST_SOURCES:%c=../%c)
./run-tests
run: dged
./dged
debug: dged
gdb ./dged
debug-tests: run-tests
gdb ./run-tests
format:
clang-format -i $(SOURCES:%.c=../%.c) $(MAIN_SOURCES:%.c=../%.c) $(TEST_SOURCES:%c=../%c)
clean:
rm -f $(FILES)
rm -rf $(.CURDIR)/docs
install: dged
install -d $(prefix)/bin
install -m 755 $(.OBJDIR)/dged $(prefix)/bin/dged
install -d $(prefix)/share/man/man1
install -m 644 $(.CURDIR)/dged.1 $(prefix)/share/man/man1/dged.1
docs:
doxygen $(.CURDIR)/Doxyfile
# in this case we need a separate depend target
depend: $(DEPS)
@:
.if !(make(clean))
. for o in ${DEPS}
. sinclude "$o"
. endfor
.endif
|