65a38c776ab333a4923f0138bdd487a14a023562
[project/uci.git] / Makefile
1 VERSION=0.1
2
3 COPTS=-O2
4 WOPTS=-pedantic -Wno-unused -Werror
5 FPIC=-fPIC
6 CFLAGS=$(COPTS) $(WOPTS) -Wall -std=gnu99
7
8 AR=ar
9 LD=ld
10 CC=gcc
11 LIBS=-lc
12 RANLIB=ranlib
13
14 ifneq ($(DEBUG),)
15   COPTS = -O0
16   CFLAGS += -g3 -DDEBUG_ALL
17 endif
18 OS=$(shell uname)
19 ifeq ($(OS),Darwin)
20   SHLIB_EXT=dylib
21   SHLIB_FLAGS=-dylib
22 else
23   SHLIB_EXT=so
24   SHLIB_FLAGS=-shared -Wl,soname,$(SHLIB_FILE)
25 endif
26 SHLIB_FILE=libuci.$(SHLIB_EXT).$(VERSION)
27
28 all: uci-static uci libuci.$(SHLIB_EXT)
29
30 cli.o: cli.c uci.h
31
32 uci: cli.o libuci.$(SHLIB_EXT)
33         $(CC) -o $@ $< -L. -luci
34
35 uci-static: cli.o libuci.a
36         $(CC) $(CFLAGS) -o $@ $^
37
38 libuci-static.o: libuci.c file.c uci.h list.c err.h util.c
39         $(CC) $(CFLAGS) -c -o $@ $<
40
41 libuci-shared.o: libuci.c file.c uci.h list.c err.h util.c
42         $(CC) $(CFLAGS) $(FPIC) -c -o $@ $<
43
44 libuci.a: libuci-static.o
45         rm -f $@
46         $(AR) rc $@ $^
47         $(RANLIB) $@
48
49 libuci.$(SHLIB_EXT): libuci-shared.o
50         $(LD) $(SHLIB_FLAGS) -o $(SHLIB_FILE) $^ $(LIBS)
51         ln -sf $(SHLIB_FILE) $@
52
53 clean:
54         rm -f uci uci-static *.[oa] *.so* *.dylib*