summaryrefslogtreecommitdiff
path: root/Makefile
blob: b663cc0edf992ae3ecb76d8748b4a49762aaf532 (plain)
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
prefix=/usr/local
libdir=$(prefix)/lib
includedir=$(prefix)/include

CC=gcc
AR=ar
RANLIB=ranlib
INSTALL=./install.sh
WFLAGS=-Wall
CFLAGS?=-O2
INCLUDES=-Iinclude

SHAREDLIB=libnl-tiny.so
STATICLIB=libnl-tiny.a
PCFILE=libnl-tiny.pc
ALL_LIBS=$(SHAREDLIB) $(STATICLIB)
ALL_INCLUDES=$(sort $(wildcard include/*.h include/*/*.h include/*/*/*.h))

LIBNL_SRCS=nl.c handlers.c msg.c attr.c cache.c cache_mngt.c object.c socket.c error.c
GENL_SRCS=genl.c genl_family.c genl_ctrl.c genl_mngt.c unl.c
SRCS=$(LIBNL_SRCS) $(GENL_SRCS)
OBJS=$(SRCS:.c=.o)

PICFLAGS=-fPIC

-include config.mak

all: $(ALL_LIBS) $(PCFILE)

install: $(ALL_LIBS:%=$(DESTDIR)$(libdir)/%) \
         $(ALL_INCLUDES:include/%=$(DESTDIR)$(includedir)/libnl-tiny/%) \
         $(PCFILE:%=$(DESTDIR)$(libdir)/pkgconfig/%)

clean:
	rm -f $(OBJS) $(ALL_LIBS) $(PCFILE)

%.o: %.c
	$(CC) $(CPPFLAGS) -c -o $@ $(INCLUDES) $(CFLAGS) $(PICFLAGS) $<


$(SHAREDLIB): $(OBJS)
	$(CC) -shared -o $@ $^ $(LDFLAGS)

$(STATICLIB): $(OBJS)
	rm -f $@
	$(AR) rc $@ $^
	$(RANLIB) $@

$(PCFILE): $(PCFILE).in
	sed s,@prefix@,$(prefix),g $< > $@


$(DESTDIR)$(includedir)/libnl-tiny/%: include/%
	$(INSTALL) -D -m 644 $< $@

$(DESTDIR)$(libdir)/%: %
	$(INSTALL) -D -m 644 $< $@

$(DESTDIR)$(libdir)/pkgconfig/%: %
	$(INSTALL) -D -m 644 $< $@


.PHONY: all clean install