forked from rustyrussell/ccan
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile-ccan
126 lines (114 loc) · 2.35 KB
/
Makefile-ccan
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# Example makefile which makes a "libccan.a" of everything under ccan/.
# For simple projects you could just do:
# SRCFILES += $(wildcard ccan/*/*.c)
#CCAN_CFLAGS=-g -O3 -Wall -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wwrite-strings -Wundef -DCCAN_STR_DEBUG=1
CCAN_CFLAGS=-g3 -ggdb -Wall -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wwrite-strings -Wundef -DCCAN_STR_DEBUG=1
CFLAGS = $(CCAN_CFLAGS) -I. $(DEPGEN)
# Modules which are just a header:
MODS_NO_SRC := alignof \
array_size \
asearch \
bitmap \
build_assert \
bytestring \
cast \
check_type \
compiler \
container_of \
darray \
endian \
objset \
short_types \
tcon \
tlist \
typesafe_cb \
version
# No external dependencies, with C code:
MODS_WITH_SRC := antithread \
antithread/alloc \
asort \
asprintf \
autodata \
avl \
bdelta \
block_pool \
breakpoint \
btree \
ccan_tokenizer \
charset \
ciniparser \
crc \
crcsync \
cpuid \
daemonize \
daemon_with_notify \
dgraph \
err \
failtest \
foreach \
grab_file \
hash \
heap \
htable \
idtree \
ilog \
io \
isaac \
iscsi \
jmap \
json \
jset \
lbalance \
likely \
list \
md4 \
net \
nfs \
noerr \
ogg_to_pcm \
opt \
ptr_valid \
rbtree \
rbuf \
read_write_all \
rfc822 \
siphash \
sparse_bsearch \
str \
stringmap \
strmap \
strset \
str_talloc \
take \
tal \
tal/link \
tal/path \
tal/str \
tal/talloc \
talloc \
talloc_link \
tally \
tap \
time \
timer \
ttxml \
wwviaudio
MODS:=$(MODS_WITH_SRC) $(MODS_NO_SRC)
default: libccan.a
# Automatic dependency generation: makes ccan/*/*.d files.
DEPGEN=-MD
-include ccan/*/*.d
# Anything with C files needs building; dir leaves / on, sort uniquifies
DIRS=$(patsubst %/, %, $(sort $(foreach m, $(filter-out $(MODS_EXCLUDE), $(MODS_WITH_SRC)), $(dir $(wildcard ccan/$m/*.c)))))
# Generate everyone's separate Makefiles.
-include $(foreach dir, $(DIRS), $(dir)-Makefile)
ccan/%-Makefile:
@echo $@: $(wildcard ccan/$*/*.[ch]) ccan/$*/_info > $@
@echo ccan/$*.o: $(patsubst %.c, %.o, $(wildcard ccan/$*/*.c)) >> $@
# We compile all the ccan/foo/*.o files together into ccan/foo.o
OBJFILES=$(DIRS:=.o)
# We create all the .o files and link them together.
$(OBJFILES): %.o:
$(LD) -r -o $@ $^
libccan.a: $(OBJFILES)
$(AR) r $@ $(OBJFILES)