- added shared library build rules
[assman] / Makefile
1 src = $(wildcard src/*.c)
2 obj = $(src:.c=.o)
3 dep = $(obj:.o=.d)
4
5 name = assman
6 so_major = 0
7 so_minor = 1
8
9 lib_a = lib$(name).a
10 lib_so = lib$(name).so.$(so_major).$(so_minor)
11 soname = lib$(name).so.$(so_major)
12 devlink = lib$(name).so
13 shared = -shared -Wl,-soname,$(soname)
14
15 warn = -pedantic -Wall
16 dbg = -g
17 opt = -O0
18
19 CFLAGS = $(warn) $(dbg) $(opt) $(inc)
20 LDFLAGS = -lcurl
21
22 .PHONY: all
23 all: $(lib_so) $(lib_a) $(soname) $(devlink)
24
25 $(lib_so): $(obj)
26         $(CC) -o $@ $(shared) $(obj) $(LDFLAGS)
27
28 $(lib_a): $(obj)
29         $(AR) rcs $@ $(obj)
30
31 $(soname): $(lib_so)
32         rm -f $@ && ln -s $< $@
33
34 $(devlink): $(soname)
35         rm -f $@ && ln -s $< $@
36
37 %.d: %.c
38         @echo "generating depfile $< -> $@"
39         @$(CPP) $(CFLAGS) $< -MM -MT $(@:.d=.o) >$@
40
41 .PHONY: clean
42 clean:
43         rm -f $(obj) $(lib_a) $(lib_so) $(soname) $(devlink)
44
45 .PHONY: cleandep
46 cleandep:
47         rm -f $(dep)