Adding test for encrypted cloud storage; Adding preparation timing test for Fidelius...
[iotcloud.git] / version2 / src / C / Makefile
1 include common.mk
2
3 PHONY += directories
4 MKDIR_P = mkdir -p
5 OBJ_DIR = bin
6
7 CPP_SOURCES := $(wildcard *.cpp)
8
9 HEADERS := $(wildcard *.h)
10
11 OBJECTS := $(CPP_SOURCES:%.cpp=$(OBJ_DIR)/%.o) $(C_SOURCES:%.c=$(OBJ_DIR)/%.o)
12
13 CFLAGS := -Wall -O3 -g
14 CFLAGS += -I.
15 LDFLAGS := -ldl -lrt -rdynamic -g
16 SHARED := -shared
17
18 # Mac OSX options
19 ifeq ($(UNAME), Darwin)
20 LDFLAGS := -ldl
21 SHARED := -Wl,-undefined,dynamic_lookup -dynamiclib
22 endif
23
24 MARKDOWN := ../docs/Markdown/Markdown.pl
25
26 all: directories ${OBJ_DIR}/$(LIB_SO) test
27
28 directories: ${OBJ_DIR}
29
30 test: bin/lib_iotcloud.so
31         g++ -g -O3 Test.C -L./bin/ -l_iotcloud -lpthread -lbsd -o bin/Test
32         g++ -g -O3 Init.C -L./bin/ -l_iotcloud -lpthread -lbsd -o bin/init
33         g++ -g -O3 Update.C -L./bin/ -l_iotcloud -lpthread -lbsd -o bin/update
34         g++ -g -O3 Read.C -L./bin/ -l_iotcloud -lpthread -lbsd -o bin/read
35         sudo cp ./bin/*.so /usr/lib/
36
37 ${OBJ_DIR}:
38         ${MKDIR_P} ${OBJ_DIR}
39
40 debug: CFLAGS += -DCONFIG_DEBUG
41 debug: all
42
43
44 PHONY += docs
45 docs: $(C_SOURCES) $(HEADERS)
46         doxygen
47
48 ${OBJ_DIR}/$(LIB_SO): $(OBJECTS)
49         $(CXX) -g $(SHARED) -o ${OBJ_DIR}/$(LIB_SO) $+ $(LDFLAGS)
50
51 ${OBJ_DIR}/%.o: %.cpp
52         $(CXX) -fPIC -c $< -o $@ $(CFLAGS) -Wno-unused-variable
53
54 -include $(OBJECTS:%=$OBJ_DIR/.%.d)
55
56 PHONY += clean
57 clean:
58         rm -f *.o *.so
59         rm -rf $(OBJ_DIR)
60
61 PHONY += mrclean
62 mrclean: clean
63         rm -rf ../docs
64
65 PHONY += tags
66 tags:
67         ctags -R
68
69 tabbing:
70         uncrustify -c C.cfg --no-backup *.cpp
71         uncrustify -c C.cfg --no-backup *.h
72
73 wc:
74         wc *.cpp *.h
75
76 .PHONY: $(PHONY)