-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
120 lines (86 loc) · 3.18 KB
/
Makefile
File metadata and controls
120 lines (86 loc) · 3.18 KB
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
109
110
111
112
113
114
115
116
117
118
119
120
# @file Makefile
# @version 1.0.0 Alpha
# @author Nikolaii Lodenos @ CEO
# @create 02 February 2018
# @modify Nikolaii Lodenos @ CEO
# @update 10 May 2018
_GREEN = printf "\x1b[32m$1\x1b[0m\n"
NAME = Themis.out
SRC = $(wildcard ./src/*.cpp)
OBJ = $(addsuffix .o, $(basename $(SRC)))
APPLE = Darwin
VERSION = $(shell uname -s)
HEAD = -I ./include
CXX = clang++ -g3 -fsanitize=address
FLAGS = -g3 -std=c++14 -fsanitize=address #-Wall -Werror -Wextra -Weverything -Wno-c++98-compat
PATH_MERCURY = ../Mercury
MERCURY = -I $(PATH_MERCURY)/include
THEMIS = -I ./include
L_CRYPTOPP = -lcryptopp
L_CURL = -lcurl
L_MERCURY = -L $(PATH_MERCURY) -lmercury
L_OPENSSL = -lssl
L_PTHREAD = -lpthread
L_UV = -luv
L_UWEBSOCKET = -luWS
L_ZLIB = -lz
ifeq ($(VERSION), $(APPLE))
###############################################################################
### For APPLE at 42
###############################################################################
NLOHMANNJSON = -I ../Mercury/Dependence/json/include/
INCLUDE = $(HEAD) $(MERCURY) $(NLOHMANNJSON) -I ../Mercury/Dependence/include
LIBRARY = -L ../Mercury/Dependence/lib $(L_MERCURY) $(L_CURL) $(L_OPENSSL)\
$(L_PTHREAD) $(L_UV) $(L_UWEBSOCKET) $(L_ZLIB) $(L_CRYPTOPP)
else
###############################################################################
### For Linux
###############################################################################
H_CRYPTOPP = -I ~/Bureau
H_CURL = -I /usr/local/include
H_OPENSSL = -I /usr/local/include
H_UWEBSOCKETS = -I /usr/include
INCLUDE = $(MERCURY) $(THEMIS) $(H_CRYPTOPP) $(H_CURL) $(H_OPENSSL) \
$(H_UWEBSOCKETS)
LIBRARY = $(L_MERCURY) $(L_CURL) $(L_OPENSSL) $(L_PTHREAD) \
$(L_UV) $(L_UWEBSOCKET) $(L_ZLIB) $(L_CRYPTOPP)
endif
all: $(NAME)
###############################################################################
### Create Executable
###############################################################################
$(NAME): $(OBJ)
@printf "Compiling " $(NAME)
$(CXX) $(FLAGS) -o $(NAME) $(OBJ) $(LIBRARY)
ifeq ($(VERSION), $(APPLE))
@cp ../Mercury/Dependence/lib/libuWS.dylib .
endif
@$(call _GREEN, "ok")
###############################################################################
### Compiling Source
###############################################################################
$(OBJ): %.o: $(basename $@)%.cpp
$(CXX) $(FLAGS) -c $(INCLUDE) $< -o $@
@printf "Compile"
@$(call _GREEN, $(addsuffix .cpp, $(basename $@)))
###############################################################################
### Clean all obj
###############################################################################
clean:
@printf "Clean all obj"
@rm -f $(OBJ)
@$(call _GREEN, "ok")
###############################################################################
### Clean all
###############################################################################
fclean: clean
@printf "Clean all"
@rm -f $(NAME)
@rm -rf libuWS.dylib
@$(call _GREEN, "ok")
###############################################################################
### Clean all && re-build
###############################################################################
re: fclean all
@printf "Re-Build Project"
@$(call _GREEN, "ok")