libc3: Make & config tweaks
[simavr] / examples / shared / libc3 / Makefile
1
2 VERSION         = 0.1.1
3 REVISION        = 1
4
5 SHELL           := ${shell which bash}
6
7 IPATH           += src
8 IPATH           += srcgl
9 VPATH           += src
10 VPATH           += srcgl
11
12 OBJ             = obj-${shell $(CC) -dumpmachine}
13
14 C3SRC           = ${wildcard src/*.c}
15 C3OBJ           = ${patsubst src/%,${OBJ}/%,${C3SRC:.c=.lo}}
16
17 C3GLSRC         = ${wildcard srcgl/*.c}
18 C3GLOBJ         = ${patsubst srcgl/%,${OBJ}/%,${C3GLSRC:.c=.lo}}
19
20 CC                      = clang
21 PKGCONFIG       = pkg-config
22 INSTALL         = install
23
24 PLATFORM        = ${shell uname | tr '[A-Z]' '[a-z]'}
25
26 ifeq (${PLATFORM}, darwin)
27 # you need to install libtool via 'brew install libtool' on the mac
28 LIBTOOL         = glibtool
29 else
30 LIBTOOL         = libtool
31 endif
32
33 CONFIG_H        = c3config-${PLATFORM}.h
34 CPPCAIRO        += ${shell $(PKGCONFIG) --cflags pango cairo}
35
36 CFLAGS          = -g -O2
37 CPPFLAGS        += --std=gnu99 -fPIC
38 CPPFLAGS        += ${patsubst %,-I%,${subst :, ,${IPATH}}}
39 CPPFLAGS        += $(CPPCAIRO) 
40
41 LDFLAGS         += 
42
43 DESTDIR         = /usr/local
44
45 -include ${wildcard .make.options*}
46
47 all:    ${OBJ} src/$(CONFIG_H) ${OBJ}/libc3.la ${OBJ}/libc3gl.la
48
49 ${OBJ}:
50         mkdir -p ${OBJ}
51
52 ifneq (${V}, 1)
53 E=@
54 LIBTOOL += --quiet
55 endif
56
57 src/$(CONFIG_H): Makefile
58         $(E)rm -f $@
59         $(E)echo CONFIG $@
60         $(E)( \
61         printf "#ifndef __C3_CONFIG__\n#define __C3_CONFIG__\n"; \
62         printf "#define CONFIG_C3_VERSION \"$(VERSION)\"\n"; \
63         printf "#define CONFIG_C3_PLATFORM \"$(PLATFORM)\"\n"; \
64         $(PKGCONFIG) --exists pango cairo || printf "// " ; \
65                 printf "#define CONFIG_C3_CAIRO 1\n"; \
66         printf "#endif\n"; \
67         ) >$@
68
69 ${OBJ}/libc3.la: ${C3OBJ}
70         @echo LINK $@
71         $(E)$(LIBTOOL) --mode=link --tag=CC \
72                 $(CC) $(CPPFLAGS) $(CFLAGS) \
73                         $^ -o $@ \
74                         -version-info 0:1:0 \
75                         -rpath $(DESTDIR)/lib $(LDFLAGS)
76
77 ${OBJ}/libc3gl.la: ${C3GLOBJ}
78         @echo LINK $@
79         $(E)$(LIBTOOL) --mode=link --tag=CC \
80                 $(CC) $(CPPFLAGS) $(CFLAGS) \
81                         $^ -o $@ \
82                         -version-info 0:1:0 \
83                         -rpath $(DESTDIR)/lib $(LDFLAGS)
84
85 ${OBJ}/%.lo: %.c
86         @echo CC $<
87         $(E)$(LIBTOOL) --mode=compile --tag=CC \
88                 $(CC) $(CPPFLAGS) $(CFLAGS) -MT $@ -MMD \
89                         $<  -c -o $@
90
91 install:
92         mkdir -p $(DESTDIR)/lib/pkgconfig $(DESTDIR)/include/c3
93         rm -f $(DESTDIR)/lib/libc3* $(DESTDIR)/include/c3/*
94         $(INSTALL) src/*.h $(DESTDIR)/include/c3/
95         cp -a ${OBJ}/.libs/*.a ${OBJ}/.libs/*.so* $(DESTDIR)/lib/
96         sed -e 's|PREFIX|${DESTDIR}|g' -e 's|VERSION|${VERSION}|g' \
97                 libc3.pc >$(DESTDIR)/lib/pkgconfig/libc3.pc 
98          
99 clean:
100         rm -rf ${OBJ}
101
102 # include the dependency files generated by gcc, if any
103 -include ${wildcard ${OBJ}/*.d}
104