-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
108 lines (81 loc) · 2.61 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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
LIBNAME := libsupla
CC ?= gcc
RM = rm -rf
NOSSL ?= 0
LIBVERSION ?= $(shell cut -d'"' -f2 include/libsupla/version.h)
LIB_SOVERSION = $(word 1,$(subst ., ,$(LIBVERSION)))
SRCS += src/supla-common/cfg.c
SRCS += src/supla-common/eh.c
SRCS += src/supla-common/ini.c
SRCS += src/supla-common/lck.c
SRCS += src/supla-common/log.c
SRCS += src/supla-common/proto.c
SRCS += src/supla-common/srpc.c
SRCS += src/supla-common/tools.c
SRCS += src/supla-common/supla-socket.c
SRCS += src/device.c
SRCS += src/channel.c
SRCS += src/supla-value.c
SRCS += src/supla-extvalue.c
SRCS += src/supla-action-trigger.c
#FIXME arch dependent
SRCS += src/port/arch_unix.c
OBJS = $(SRCS:.c=.o)
EXTRAINCDIRS= include
SUPLACOREINCDIR=include/libsupla/supla-common
LIB_SO_LDFLAG=-Wl,-soname=$(LIBNAME).so.$(LIB_SOVERSION)
PREFIX ?= /usr
INCLUDE_PATH ?= include
LIBRARY_PATH ?= lib
INSTALL_INCLUDE_PATH = $(DESTDIR)$(PREFIX)/$(INCLUDE_PATH)
INSTALL_LIBRARY_PATH = $(DESTDIR)$(PREFIX)/$(LIBRARY_PATH)
# library names
LIB_SHARED = $(LIBNAME).so
LIB_SHARED_VERSION = $(LIBNAME).so.$(LIBVERSION)
LIB_SHARED_SO = $(LIBNAME).so.$(LIB_SOVERSION)
LIB_STATIC = $(LIBNAME).a
CFLAGS = -fPIC -Wall -O2 -g
#-Wextra
ifeq ($(NOSSL), 1)
CFLAGS += -DNOSSL
endif
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
.PHONY: all shared static clean install uninstall example
all: shared static
#static library
$(LIB_STATIC): $(OBJS)
$(AR) rcs $@ $^
#shared library .so.1.0.0
$(LIB_SHARED_VERSION): $(OBJS)
$(CC) -shared -o $@ $^ $(LIB_SO_LDFLAG) $(LDFLAGS)
#links .so -> .so.1 -> .so.1.0.0
$(LIB_SHARED_SO): $(LIB_SHARED_VERSION)
ln -sf $(LIB_SHARED_VERSION) $(LIB_SHARED_SO)
$(LIB_SHARED): $(LIB_SHARED_SO)
ln -sf $(LIB_SHARED_SO) $(LIB_SHARED)
#$(SRCS:.c=.d):%.d:%.c
# $(CC) $(CFLAGS) -MM $< >$@
#include $(SRCS:.c=.d)
includes:
@mkdir -p $(SUPLACOREINCDIR)
@cp src/supla-common/*.h $(SUPLACOREINCDIR)
shared: includes $(LIB_SHARED)
static: includes $(LIB_STATIC)
example: shared
$(CC) $(CFLAGS) example/app.c -o example_app -Iinclude -L. -lpthread -lsupla -lssl
install: shared static
@mkdir -p $(INSTALL_INCLUDE_PATH)
cp -r include/libsupla $(INSTALL_INCLUDE_PATH)
@mkdir -p $(INSTALL_LIBRARY_PATH)
cp $(LIB_SHARED_VERSION) $(INSTALL_LIBRARY_PATH)
cp $(LIB_STATIC) $(INSTALL_LIBRARY_PATH)
ln -sf $(LIB_SHARED_VERSION) $(INSTALL_LIBRARY_PATH)/$(LIB_SHARED_SO)
ln -sf $(LIB_SHARED_SO) $(INSTALL_LIBRARY_PATH)/$(LIB_SHARED)
uninstall:
rm -rf $(INSTALL_INCLUDE_PATH)/libsupla
rm -f $(INSTALL_LIBRARY_PATH)/libsupla.*
.PHONY: clean
clean:
-${RM} $(LIB_STATIC) $(LIB_SHARED) $(LIB_SHARED_VERSION) $(LIB_SHARED_SO) $(OBJS) $(SRCS:.c=.d)
-${RM} $(SUPLACOREINCDIR)
-${RM} example_app