-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
73 lines (52 loc) · 1.84 KB
/
Makefile
File metadata and controls
73 lines (52 loc) · 1.84 KB
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
VERSION = $(shell cat VERSION)
CC = cc
CFLAGS = -Wall -Wextra -std=c11 -Isrc -Ilibs/libyaml/include -DGOOSE_VERSION_FROM_FILE=\"$(VERSION)\"
LDFLAGS =
BUILD = build
OBJDIR = $(BUILD)/obj
YAML_SRC = $(wildcard libs/libyaml/src/*.c)
YAML_OBJ = $(YAML_SRC:libs/libyaml/src/%.c=$(OBJDIR)/yaml_%.o)
SRC = $(filter-out src/main.c, $(wildcard src/*.c))
CMD_SRC = $(wildcard src/cmd/*.c)
CC_SRC = $(wildcard src/cc/*.c)
LIB_OBJ = $(SRC:src/%.c=$(OBJDIR)/%.o) $(CMD_SRC:src/cmd/%.c=$(OBJDIR)/cmd/%.o) $(CC_SRC:src/cc/%.c=$(OBJDIR)/cc/%.o) $(YAML_OBJ)
CLI_OBJ = $(OBJDIR)/main.o
LIB = $(BUILD)/libgoose.a
BIN = $(BUILD)/goose
PREFIX ?= /usr/local
.PHONY: all lib cli clean install uninstall
all: lib cli
lib: $(LIB)
cli: $(BIN)
$(LIB): $(LIB_OBJ)
ar rcs $@ $^
$(BIN): $(CLI_OBJ) $(LIB)
$(CC) $(CLI_OBJ) $(LIB) -o $@ $(LDFLAGS)
$(OBJDIR)/%.o: src/%.c | $(OBJDIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJDIR)/cmd/%.o: src/cmd/%.c | $(OBJDIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJDIR)/cc/%.o: src/cc/%.c | $(OBJDIR)
$(CC) $(CFLAGS) -c $< -o $@
YAML_DEFS = -DYAML_VERSION_MAJOR=0 -DYAML_VERSION_MINOR=2 -DYAML_VERSION_PATCH=5 \
-DYAML_VERSION_STRING=\"0.2.5\"
$(OBJDIR)/yaml_%.o: libs/libyaml/src/%.c | $(OBJDIR)
$(CC) $(YAML_DEFS) -Ilibs/libyaml/include -Ilibs/libyaml/src -w -c $< -o $@
$(OBJDIR):
mkdir -p $(OBJDIR) $(OBJDIR)/cmd $(OBJDIR)/cc
clean:
rm -rf $(BUILD)
install: all
install -d $(PREFIX)/bin
install -m 755 $(BIN) $(PREFIX)/bin/goose
install -d $(PREFIX)/lib
install -m 644 $(LIB) $(PREFIX)/lib/libgoose.a
install -d $(PREFIX)/include/goose/headers
install -m 644 include/goose.h $(PREFIX)/include/goose/goose.h
for h in src/headers/*.h; do \
install -m 644 "$$h" $(PREFIX)/include/goose/headers/; \
done
uninstall:
rm -f $(PREFIX)/bin/goose
rm -f $(PREFIX)/lib/libgoose.a
rm -rf $(PREFIX)/include/goose