/
Makefile
123 lines (92 loc) · 4.83 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
109
110
111
112
113
114
115
116
117
118
119
120
CXX := g++
TARGET := janosh
SRCS := src/janosh.cpp src/tcp_server.cpp src/commands.cpp src/lua_script.cpp src/json.cpp src/websocket.cpp src/exception.cpp src/exithandler.cpp src/value.cpp src/request.cpp src/logger.cpp src/path.cpp src/tcp_worker.cpp src/settings.cpp src/raw.cpp src/json_spirit/json_spirit_reader.cpp src/json_spirit/json_spirit_value.cpp src/json_spirit/json_spirit_writer.cpp src/tracker.cpp src/message_queue.cpp src/janosh_thread.cpp src/record.cpp src/backward.cpp src/bash.cpp src/tcp_client.cpp src/util.cpp src/database_thread.cpp src/component.cpp src/xdo.cpp src/jsoncons.cpp src/semaphore.cpp src/myscript.cpp src/compress.cpp
#precompiled headers
HEADERS := src/json_spirit/json_spirit.h
GCH := ${HEADERS:.h=.gch}
OBJS := ${SRCS:.cpp=.o}
DEPS := ${SRCS:.cpp=.dep}
DESTDIR := /
PREFIX := /usr/local/
UNAME := $(shell uname)
export PATH := /usr/local/bin:$(PATH)
EXTRA_BUILDFLAGS =
ifeq ($(UNAME), Linux)
#ifeq ($(shell uname -m), armv7l)
# CXXFLAGS += -mfloat-abi=hard -mfpu=neon
#endif
CXXFLAGS += -DJANOSH_NO_XDO -Isrc/ -std=c++0x -pedantic -Wall -I./ -I/opt/local/include -D_XOPEN_SOURCE -lstdc++
LDFLAGS += -Lluajit-rocks/build/luajit-2.0/ -L/opt/local/lib -Wl,--export-dynamic
LIBS += -lboost_program_options -lboost_serialization -lboost_system -lboost_filesystem -lpthread -lboost_thread -lkyotocabinet -lluajit -ldl -lzmq -lcryptopp -lz -luWS -lssl -lkyototycoon -lboost_iostreams -lsocket++
endif
ifeq ($(UNAME), Darwin)
CXXFLAGS = -DJANOSH_NO_XDO -Isrc/ -I./luajit-rocks/luajit-2.0/src/ -I./ -I/opt/local/include -D_XOPEN_SOURCE -std=c++11 -stdlib=libc++ -pthread -Wall -Wextra -pedantic -lstdc++
LIBS := -lboost_program_options -lboost_serialization -lboost_system -lboost_filesystem -lpthread -lboost_thread-mt -lkyotocabinet -lluajit -ldl -lzmq -lcryptopp -lz -luWS -lssl -lkyototycoon -lboost_iostreams -lsocket++
EXTRA_BUILDFLAGS = -pagezero_size 10000 -image_base 100000000
#Darwin - we use clang
CXX := clang++
HEADERS :=
GCH :=
endif
ifeq ($(CXX), clang++)
CXXFLAGS+=-Wgnu-zero-variadic-macro-arguments -Wthread-safety
else
CXXFLAGS+=-rdynamic
endif
.PHONY: all release static clean distclean
all: release
release: LDFLAGS += -Wl,--export-dynamic -s
release: CXXFLAGS += -g0 -O3
#release: LIBS += -ldw
release: ${TARGET}
reduce: CXXFLAGS = -DETLOG -std=c++0x -pedantic -Wall -g0 -Os -fvisibility=hidden -fvisibility-inlines-hidden
reduce: ${TARGET}
static: LDFLAGS += -s
static: CXXFLAGS += -g0 -O3
static: LIBS = -Wl,-Bstatic -lboost_serialization -lboost_program_options -lboost_system -lboost_filesystem -lkyotocabinet -llzma -llzo2 -Wl,-Bdynamic -lz -lpthread -lrt -ldl -lluajit -lzmq -lcryptopp -lz -luWS -lssl -lkyototycoon -lboost_iostreams -lsocket++
static: ${TARGET}
screeninvader: LDFLAGS += -s
screeninvader: CXXFLAGS += -D_JANOSH_DEBUG -g0 -O3
screeninvader: LIBS = -lboost_program_options -Wl,-Bstatic -lboost_serialization -lboost_system -lboost_filesystem -lkyotocabinet -llzma -llzo2 -Wl,-Bdynamic -lz -lpthread -lrt -ldl -lluajit -lzmq -lcryptopp -lz -luWS -lssl -lkyototycoon -lboost_iostreams -lsocket++
screeninvader: ${TARGET}
screeninvader_debug: LDFLAGS += -Wl,--export-dynamic
screeninvader_debug: CXXFLAGS += -D_JANOSH_DEBUG -g3 -O0 -rdynamic
screeninvader_debug: LIBS = -lboost_program_options -Wl,-Bstatic -lboost_serialization -lboost_system -lboost_filesystem -lkyotocabinet -llzma -llzo2 -Wl,-Bdynamic -lz -lpthread -lrt -ldl -lluajit -lzmq -lcryptopp -lz -luWS -lssl -lkyototycoon -lboost_iostreams -lsocket++
screeninvader_debug: ${TARGET}
debug: CXXFLAGS += -g3 -O0 -rdynamic -D_JANOSH_DEBUG
debug: LDFLAGS += -Wl,--export-dynamic
debug: LIBS+= -ldl
debug: ${TARGET}
profile: CXXFLAGS += -g3 -O1 -D_JANOSH_DEBUG
profile: LDFLAGS += -Wl,--export-dynamic -rdynamic
profile: LIBS+= -ldl
profile: $(TARGET)
verbose: CXXFLAGS += -g3 -O0 -rdynamic -D_JANOSH_DEBUG -D_JANOSH_BACKTRACE
verbose: LDFLAGS += -Wl,--export-dynamic
verbose: LIBS+= -lbfd -ldl -ldw
verbose: ${TARGET}
asan: CXXFLAGS += -g3 -O0 -rdynamic -D_JANOSH_DEBUG -fno-omit-frame-pointer -fsanitize=address
asan: LDFLAGS += -Wl,--export-dynamic -fsanitize=address
asan: ${TARGET}
src/JanoshAPI.o: src/JanoshAPI.lua
luajit -b src/JanoshAPI.lua src/JanoshAPI.o
src/JSONLib.o: src/JSONLib.lua
luajit -b src/JSONLib.lua src/JSONLib.o
src/Web.o: src/Web.lua
luajit -b src/Web.lua src/Web.o
${TARGET}: ${OBJS} src/JSONLib.o src/JanoshAPI.o src/Web.o
${CXX} ${LDFLAGS} -o $@ $^ ${LIBS} ${EXTRA_BUILDFLAGS}
${OBJS}: %.o: %.cpp %.dep ${GCH}
${CXX} ${CXXFLAGS} -o $@ -c $<
${DEPS}: %.dep: %.cpp Makefile
${CXX} ${CXXFLAGS} -MM $< > $@
${GCH}: %.gch: ${HEADERS}
${CXX} ${CXXFLAGS} -o $@ -c ${@:.gch=.h}
install:
mkdir -p ${DESTDIR}/${PREFIX}/bin
cp ${TARGET} ${DESTDIR}/${PREFIX}/bin
uninstall:
rm ${DESTDIR}/${PREFIX}/${TARGET}
clean:
rm -f *~ ${DEPS} ${OBJS} ${GCH} ${TARGET} src/JanoshAPI.o src/JSONLib.o
distclean: clean