-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
76 lines (58 loc) · 1.52 KB
/
Makefile
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
.SUFFIX:
include config.mk
OBJECTS = $(patsubst %.cpp,build/%.o,$(SOURCES))
DEPS = $(patsubst %.cpp,build/%.deps,$(SOURCES))
.PHONY = all deps clean install install-all install-bin install-dev
.DEFAULT_GOAL = all
all: $(BIN) $(LIB) $(HEADERS)
-include $(DEPS)
$(HEADERS): include/$(PKG_NAME)/%: src/%
@echo "[INST]" $(<:src/%=%)
@$(MKDIR) $(MKDIRFLAGS) $(dir $@)
@cp $< $(dir $@)
$(OBJECTS): build/%.o: %.cpp
@echo "[CXX] " $@
@$(MKDIR) $(MKDIRFLAGS) $(dir $@)
@$(CXX) $(CXXFLAGS) -c -o $@ $<
$(DEPS): build/%.deps: %.cpp
@echo "[DEPS]" $@
@$(MKDIR) $(MKDIRFLAGS) $(dir $@)
@$(DEPS_BIN) -std=c++11 -MM -MT build/$*.o $< > $@
@$(DEPS_BIN) -std=c++11 -MM -MT build/$*.deps $< >> $@
$(BIN): bin/%:
@echo "[LD] " $@
@$(CXX) $(LDFLAGS) -o $@ $^
$(LIB): lib/%:
@echo "[AR] " $@
@$(AR) $(ARFLAGS) $@ $^
deps: $(DEPS)
clean:
@rm -f $(OBJECTS)
@rm -f $(DEPS)
@rm -f $(BIN)
@rm -rf build/*
@rm -rf include/*
@rm -f $(LIB)
install: install-dev
install-dev: install-header install-lib
install-all: install-header install-lib install-bin
install-header: $(HEADERS)
@echo "[CP] " $(HEADERS)
ifneq ($(HEADERS),)
@$(MKDIR) $(MKDIRFLAGS) $(PREFIX)/$(INCLUDE_DIR)/
@cp -r include/* $(PREFIX)/$(INCLUDE_DIR)/
endif
install-lib: $(LIB)
@echo "[CP] " $(LIB)
ifneq ($(LIB),)
@$(MKDIR) $(MKDIRFLAGS) $(PREFIX)/$(LIB_DIR)/
@cp $(LIB) $(PREFIX)/$(LIB_DIR)/
endif
install-bin: $(BIN)
@echo "[CP] " $(BIN)
ifneq ($(BIN),)
@$(MKDIR) $(MKDIRFLAGS) $(PREFIX)/$(BIN_DIR)/
@cp $(BIN) $(PREFIX)/$(BIN_DIR)/
endif
print-%:
@echo $*=$($*)