-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
84 lines (64 loc) · 3.93 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
GTEST_DIR=googletest/googletest
GMOCK_DIR=googletest/googlemock
TEST_DIR=test
SRC_DIR=src
CC =g++
CFLAGS =-g -Wall -std=c++11
LIBFLAGS = -lmysqlcppconn-static -lmysqlclient -ldl -lz -lc -static-libgcc -static-libstdc++ -pthread -Wl,-Bstatic -lboost_system -lboost_log_setup -lboost_log -lboost_filesystem -lboost_regex -lboost_thread
TFLAGS =-std=c++11 -isystem ${GTEST_DIR}/include -isystem ${GMOCK_DIR}/include -DBOOST_LOG_DYN_LINK
TARGS =-pthread
TLINK =-L./ -lmysqlcppconn -lmysqlclient -ldl -lz -lc -lgmock -lgtest -lboost_system -lboost_log -lboost_filesystem -lboost_regex -lpthread
TARGET=serve
CCFILE = src/*.cc
HEADERS = src/*.h
$(TARGET): $(CCFILE) $(HEADERS)
$(CC) $(CCFILE) $(CFLAGS) $(LIBFLAGS) -o $(TARGET)
gtest_setup:
g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \
-pthread -c ${GTEST_DIR}/src/gtest-all.cc
ar -rv libgtest.a gtest-all.o
g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \
-isystem ${GMOCK_DIR}/include -I${GMOCK_DIR} \
-pthread -c ${GMOCK_DIR}/src/gmock-all.cc
ar -rv libgmock.a gtest-all.o gmock-all.o
rm gtest-all.o gmock-all.o
config_parser_test: $(TEST_DIR)/config_parser_test.cc $(SRC_DIR)/config_parser.cc
$(CC) $(TFLAGS) $(TARGS) $^ ${GTEST_DIR}/src/gtest_main.cc $(TLINK) -o config_parser_test
request_handler_test: $(TEST_DIR)/request_handler_test.cc $(SRC_DIR)/request_handler.cc $(SRC_DIR)/request.cc $(SRC_DIR)/response.cc $(SRC_DIR)/server.cc $(SRC_DIR)/config_parser.cc $(SRC_DIR)/server_config.cc $(SRC_DIR)/status_count.cc $(SRC_DIR)/markdown.cc $(SRC_DIR)/markdown-tokens.cc
$(CC) $(TFLAGS) $(TARGS) $^ ${GTEST_DIR}/src/gtest_main.cc $(TLINK) -o request_handler_test
request_test: $(TEST_DIR)/request_test.cc $(SRC_DIR)/request.cc $(SRC_DIR)/markdown.cc $(SRC_DIR)/markdown-tokens.cc
$(CC) $(TFLAGS) $(TARGS) $^ ${GTEST_DIR}/src/gtest_main.cc $(TLINK) -o request_test
response_test: $(TEST_DIR)/response_test.cc $(SRC_DIR)/response.cc $(SRC_DIR)/markdown.cc $(SRC_DIR)/markdown-tokens.cc
$(CC) $(TFLAGS) $(TARGS) $^ ${GTEST_DIR}/src/gtest_main.cc $(TLINK) -o response_test
server_config_test: $(TEST_DIR)/server_config_test.cc $(SRC_DIR)/server_config.cc $(SRC_DIR)/config_parser.cc $(SRC_DIR)/status_count.cc $(SRC_DIR)/config_parser.cc $(SRC_DIR)/request_handler.cc $(SRC_DIR)/response.cc $(SRC_DIR)/markdown.cc $(SRC_DIR)/markdown-tokens.cc
$(CC) $(TFLAGS) $(TARGS) $^ ${GTEST_DIR}/src/gtest_main.cc $(TLINK) -o server_config_test
status_count_test: $(TEST_DIR)/status_count_test.cc $(SRC_DIR)/status_count.cc $(SRC_DIR)/config_parser.cc $(SRC_DIR)/request_handler.cc $(SRC_DIR)/response.cc $(SRC_DIR)/server_config.cc $(SRC_DIR)/config_parser.cc $(SRC_DIR)/markdown.cc $(SRC_DIR)/markdown-tokens.cc
$(CC) $(TFLAGS) $(TARGS) $^ ${GTEST_DIR}/src/gtest_main.cc $(TLINK) -o status_count_test
test: gtest_setup config_parser_test request_handler_test request_test response_test server_config_test status_count_test
./config_parser_test
./request_handler_test
./request_test
./response_test
./server_config_test
./status_count_test
python $(TEST_DIR)/integration_test.py
# Create the initial build file
docker: Dockerfile
docker build -t serve.build .
docker run --rm serve.build > serve.tar
deploy: serve.tar Dockerfile.run
rm -rf deploy
mkdir deploy
tar -xf serve.tar -C deploy
cp Dockerfile.run deploy
cp new_config deploy
cp -r example_dir deploy
cp -r example_dir_2 deploy
cd deploy; \
docker build -f Dockerfile.run -t serve.deploy .
chmod 400 team11-ec2-key-pair.pem
docker save serve.deploy | bzip2 | ssh -i "team11-ec2-key-pair.pem" [email protected] 'bunzip2 | docker load'
ssh -i "team11-ec2-key-pair.pem" [email protected] -t 'docker stop $$(docker ps -a -q); docker run -d -t -p 80:8011 serve.deploy;'
clean:
rm -rf $(TARGET) config_parser_test request_handler_test request_test response_test server_config_test status_count_test libgmock.a libgtest.a deploy/ serve.tar serve.dSYM
.PHONY: clean test deploy