1CC ?= gcc
2CFLAGS=-g -I${NGX_PATH}/src/os/unix -I${NGX_PATH}/src/core -I${NGX_PATH}/src/http -I${NGX_PATH}/src/http/modules -I${NGX_PATH}/src/event -I${NGX_PATH}/objs/ -I.
3
4
5all:
6
7%.o: %.c
8	$(CC) -c -o $@ $< $(CFLAGS)
9
10.PHONY: all clean test nginx prepare-travis-env
11
12
13NGX_PATH := $(shell echo `pwd`/nginx)
14
15prepare-travis-env:
16	wget --no-verbose https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
17	tar -xzf nginx-${NGINX_VERSION}.tar.gz
18	ln -s nginx-${NGINX_VERSION} ${NGX_PATH}
19	cd ${NGX_PATH} && ./configure --with-http_ssl_module --with-cc=$(CC) --add-module=${TRAVIS_BUILD_DIR}
20
21nginx:
22	cd ${NGX_PATH} && rm -rf ${NGX_PATH}/objs/src/core/nginx.o && make
23
24vendor/cmocka:
25	git submodule init && git submodule update
26
27.cmocka_build: vendor/cmocka
28	mkdir .cmocka_build && cd .cmocka_build \
29	&& cmake -DCMAKE_C_COMPILER=$(CC) -DCMAKE_MAKE_PROGRAM=make ../vendor/cmocka \
30	&& make && sudo make install
31
32test: .cmocka_build | nginx
33	strip -N main -o ${NGX_PATH}/objs/src/core/nginx_without_main.o ${NGX_PATH}/objs/src/core/nginx.o \
34	&& mv ${NGX_PATH}/objs/src/core/nginx_without_main.o ${NGX_PATH}/objs/src/core/nginx.o \
35	&& $(CC) test_suite.c $(CFLAGS) -o test_suite -lcmocka `find ${NGX_PATH}/objs -name \*.o` -ldl -lpthread -lcrypt -lssl -lpcre -lcrypto -lz \
36	&& ./test_suite
37
38clean:
39	rm -f *.o test_suite
40
41# vim: ft=make ts=8 sw=8 noet
42