summaryrefslogtreecommitdiff
path: root/mk/c.mk
blob: d2524e330cf78893e333aac078d212b88b03bd0d (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
DEPSDIR = .deps
DEPS=$(addprefix $(DEPSDIR)/, $(OBJ:.o=.d))

CFLAGS += -Wall -Werror -Wextra -Wno-unused-parameter -Wno-missing-field-initializers
CFLAGS += -g
CFLAGS += -MMD -MP -MF ${DEPSDIR}/$(subst /,-,$*).d

.PHONY: clean clean-gen clean-bin clean-obj clean-misc clean-backups
.PHONY: all

all: subdirs $(BIN) $(LIB) $(EXTRA)
install: subdirs-install install-bin install-lib install-hdr install-pc

$(LIB): $(OBJ)
	$(AR) -rcs $@ $^

$(BIN): $(OBJ) $(EXTRADEP)
	$(CC) -o $@ $(OBJ) $(LDFLAGS) 

subdirs:
	@for i in $(SUB); do (\
	    cd $$i && \
	    $(MAKE) || \
	    exit 1 \
	) || exit 1; done

subdirs-clean:
	@for i in $(SUB); do (\
	    cd $$i && \
	    $(MAKE) clean|| \
	    exit 1 \
	); done

subdirs-install:
	@for i in $(SUB); do (\
	    cd $$i && \
	    $(MAKE) install|| \
	    exit 1 \
	); done


clean: subdirs-clean 
	rm -f ${BIN} ${OBJ} ${CLEAN}


install-bin: $(INSTBIN)
	mkdir -p $(INST_ROOT)/bin
	test -z "$(INSTBIN)" || install $(INSTBIN) $(INST_ROOT)/bin

install-lib: $(INSTLIB)
	mkdir -p $(INST_ROOT)/lib
	test -z "$(INSTLIB)" || install $(INSTLIB) $(INST_ROOT)/lib

install-hdr: $(INSTHDR)
	mkdir -p $(INST_ROOT)/$(HDRDIR)/include
	test -z "$(INSTHDR)" || install $(INSTHDR) $(INST_ROOT)/include

install-pc: $(INSTPKG)
	mkdir -p $(INST_ROOT)/pkgconfig
	test -z "$(INSTPC)" || install $(INSTPC) $(INST_ROOT)/pkgconfig

clean-backups:
	find ./ -name .*.sw* -exec rm -f {} \;
	find ./ -name *.bak -exec rm -f {} \;

%.o: %.c .deps
	$(CC) -c $(CFLAGS) $<

.deps: 
	mkdir -p $(DEPSDIR)

	
-include $(DEPS)