11VERSION = $(shell cat VERSION)
22
33CC = cc
4- CFLAGS = -Wall -Wextra -std=c11 -Ilibs/libyaml/include -DGOOSE_VERSION_FROM_FILE=\"$(VERSION ) \"
4+ CFLAGS = -Wall -Wextra -std=c11 -Isrc - Ilibs/libyaml/include -DGOOSE_VERSION_FROM_FILE=\"$(VERSION ) \"
55LDFLAGS =
66
77BUILD = build
@@ -10,19 +10,29 @@ OBJDIR = $(BUILD)/obj
1010YAML_SRC = $(wildcard libs/libyaml/src/* .c)
1111YAML_OBJ = $(YAML_SRC:libs/libyaml/src/%.c=$(OBJDIR ) /yaml_%.o )
1212
13- SRC = $(wildcard src/* .c)
13+ SRC = $(filter-out src/main.c, $( wildcard src/* .c) )
1414CMD_SRC = $(wildcard src/cmd/* .c)
15- OBJ = $(SRC:src/%.c=$(OBJDIR ) /%.o ) $(CMD_SRC:src/cmd/%.c=$(OBJDIR ) /cmd/%.o )
15+ LIB_OBJ = $(SRC:src/%.c=$(OBJDIR ) /%.o ) $(CMD_SRC:src/cmd/%.c=$(OBJDIR ) /cmd/%.o ) $(YAML_OBJ )
16+ CLI_OBJ = $(OBJDIR ) /main.o
17+
18+ LIB = $(BUILD ) /libgoose.a
1619BIN = $(BUILD ) /goose
1720
1821PREFIX ?= /usr/local
1922
20- .PHONY : all clean install uninstall
23+ .PHONY : all lib cli clean install uninstall
24+
25+ all : lib cli
26+
27+ lib : $(LIB )
28+
29+ cli : $(BIN )
2130
22- all : $(BIN )
31+ $(LIB ) : $(LIB_OBJ )
32+ ar rcs $@ $^
2333
24- $(BIN ) : $(OBJ ) $(YAML_OBJ )
25- $(CC ) $(OBJ ) $(YAML_OBJ ) -o $@ $(LDFLAGS )
34+ $(BIN ) : $(CLI_OBJ ) $(LIB )
35+ $(CC ) $(CLI_OBJ ) $(LIB ) -o $@ $(LDFLAGS )
2636
2737$(OBJDIR ) /% .o : src/% .c | $(OBJDIR )
2838 $(CC ) $(CFLAGS ) -c $< -o $@
@@ -42,9 +52,18 @@ $(OBJDIR):
4252clean :
4353 rm -rf $(BUILD )
4454
45- install : $( BIN )
55+ install : all
4656 install -d $(PREFIX ) /bin
4757 install -m 755 $(BIN ) $(PREFIX ) /bin/goose
58+ install -d $(PREFIX ) /lib
59+ install -m 644 $(LIB ) $(PREFIX ) /lib/libgoose.a
60+ install -d $(PREFIX ) /include/goose/headers
61+ install -m 644 include/goose.h $(PREFIX ) /include/goose/goose.h
62+ for h in src/headers/* .h; do \
63+ install -m 644 " $$ h" $(PREFIX ) /include/goose/headers/; \
64+ done
4865
4966uninstall :
5067 rm -f $(PREFIX ) /bin/goose
68+ rm -f $(PREFIX ) /lib/libgoose.a
69+ rm -rf $(PREFIX ) /include/goose
0 commit comments