-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
70 lines (51 loc) · 1.22 KB
/
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
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
64
65
66
67
68
69
70
src = $(wildcard src/*.c)
obj = $(src:src/%.c=obj/%.o)
objs = $(src:src/%.c=obj/%.oo)
hdir = $(shell pwd)/hdr
odir = $(shell pwd)/obj
ldir = $(shell pwd)/lib
libname = libflowtable
libstatic = $(ldir)/$(libname).a
libshared = $(ldir)/$(libname).so
INCLUDEDIR = /usr/local/include
LIBDIR = /usr/local/lib
AR = ar
CC = gcc
SHAREDCP = -fPIC
SHAREDLD = -shared
LNAME = -lflowtable
CFLAGS = -std=c99
DEBUG = -ggdb -g
MAIN = main.c
export LD_LIBRARY_PATH=$(ldir)
$(libstatic): $(obj)
$(AR) rc $@ $^
ranlib $(libstatic)
#$(obj): | objd
#objd:
# @mkdir -p obj
#obj/%.o : %.c
# @echo $<
# $(CC) -c -I$(hdir) $< -o $@
$(obj): | odir
$(CC) $(CFLAGS) -c $(src) -I$(hdir) -o $@
odir:
mkdir -p $(odir)
mkdir -p $(ldir)
$(objs):
$(CC) $(CFLAGS) $(DEBUG) -c $(SHAREDCP) $(src) -I$(hdir) -o $@
shared: $(objs)
$(CC) $(CFLAGS) $(DEBUG) $(SHAREDLD) -o $(libshared) $(objs)
clean:
rm -f $(ldir)/* $(odir)/* example
example: $(obj) shared
$(CC) $(CFLAGS) $(DEBUG) $(MAIN) -L$(ldir) -I$(hdir) $(LNAME) -o $@
run: example
$(shell export LD_LIBRARY_PATH=$(ldir))
./$< $(LNAME)
install: shared
cp $(hdir)/flow_table.h $(INCLUDEDIR)/
cp $(ldir)/$(libname).so $(LIBDIR)/
remove:
rm -f $(INCLUDEDIR)/flow_table.h
rm -f $(LIBDIR)/$(libname).so