-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
38 lines (27 loc) · 852 Bytes
/
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
flat := -flat_namespace -undefined suppress
twolevel := -Wl,-no_fixup_chains -undefined dynamic_lookup
NAMESPACE ?= two-level
ifeq ($(NAMESPACE),flat)
NAMESPACE_OPTS := $(flat)
else
NAMESPACE_OPTS := $(twolevel)
endif
.PHONY: all clean
all: main main_shared extension.bundle
main_shared: main.c libmain.dylib libfoo1.dylib
$(CC) -o $@ -DENABLE_SHARED=1 main.c -L. -lmain -lfoo1
main: main.c libfoo1.dylib
$(CC) -o $@ main.c -L. -lfoo1
libmain.dylib: main.c libfoo1.dylib
$(CC) -dynamiclib -DLIBMAIN=1 -o $@ main.c -L. -lfoo1
libfoo1.dylib: foo.c
$(CC) -dynamiclib -DFOO_VERSION=1 -o $@ $<
extension.bundle: extension.c libfoo2.a
$(CC) -o $@ -bundle $(NAMESPACE_OPTS) extension.c libfoo2.a
foo2.o: foo.c
$(CC) -c -o $@ -DFOO_VERSION=2 $^
libfoo2.a: foo2.o
$(RM) $@
ar -cr $@ $^
clean:
$(RM) main main_shared *.bundle *.dylib *.o *.a