Files
firecgi/Makefile

63 lines
1.8 KiB
Makefile
Raw Normal View History

2019-05-04 23:42:03 -07:00
FIRE_CXX ?= clang++
2019-05-09 21:30:10 -07:00
FIRE_CXXFLAGS ?= -O3 -std=gnu++2a -Wall -Werror -Wextra -fPIE -fPIC -fstack-protector-strong -fsanitize=safe-stack -fsanitize=safe-stack
FIRE_LDFLAGS ?= -fuse-ld=gold -flto -Wl,-z,relro -Wl,-z,now
2019-05-04 23:42:03 -07:00
FIRE_LDLIBS ?= -lgflags -lglog -lpthread
2019-05-09 21:30:10 -07:00
all: firecgi.a firecgi.o firecgi.so example_simple
2019-05-04 23:42:03 -07:00
objects = server.o connection.o request.o parse.o
2019-05-04 23:42:03 -07:00
firebuf/firebuf.o:
2019-05-09 21:48:51 -07:00
$(MAKE) --directory=firebuf firebuf.o
2019-05-07 23:16:04 -07:00
2019-05-11 18:16:17 -07:00
fireusage/fireusage.o:
$(MAKE) --directory=fireusage fireusage.o
firecgi.a: $(objects)
2019-05-07 23:44:22 -07:00
ar rcs $@ $^
2019-05-04 23:42:03 -07:00
2019-05-11 18:16:17 -07:00
firecgi.o: $(objects) firebuf/firebuf.o fireusage/fireusage.o
2019-05-09 21:30:10 -07:00
gold -z relro -z now -r --output=$@ $+
2019-05-11 18:16:17 -07:00
firecgi.so: $(objects) firebuf/firebuf.o fireusage/fireusage.o
2019-05-18 23:46:47 -07:00
$(FIRE_CXX) $(FIRE_CXXFLAGS) $(FIRE_LDFLAGS) -shared -o $@ $+ $(FIRE_LDLIBS)
example_simple: example_simple.o firecgi.o
2019-05-09 21:30:10 -07:00
$(FIRE_CXX) $(FIRE_CXXFLAGS) $(FIRE_LDFLAGS) -pie -o $@ $+ $(FIRE_LDLIBS)
2019-05-04 23:42:03 -07:00
%.o: %.cc *.h Makefile
$(FIRE_CXX) $(FIRE_CXXFLAGS) -c -o $@ $<
clean:
$(MAKE) --directory=firebuf clean
2019-05-11 18:16:17 -07:00
$(MAKE) --directory=fireusage clean
2019-05-09 21:30:10 -07:00
rm --force example_simple connection_afl *.so *.o *.a
2019-05-04 23:42:03 -07:00
afl:
$(MAKE) clean
2019-05-09 21:48:51 -07:00
FIRE_CXX=afl-g++ FIRE_CXXFLAGS="-O3 -std=gnu++2a -fPIC -fPIE" $(MAKE) afl_int
2019-05-04 23:42:03 -07:00
afl_int: connection_afl
connection_afl: connection_afl.o firecgi.o
2019-05-09 21:30:10 -07:00
$(FIRE_CXX) $(FIRE_CXXFLAGS) $(FIRE_LDFLAGS) -pie -o $@ $+ $(FIRE_LDLIBS)
2019-05-04 23:42:03 -07:00
test: test_connection
2019-05-04 23:46:26 -07:00
test_connection: connection_afl
@echo "Running $$(ls testcases | wc -l) tests"
for FILE in testcases/*; do ./connection_afl < $$FILE; done
2019-05-04 23:42:03 -07:00
@printf '\033[0;32mALL TESTS PASSED\033[0m\n'
asan:
$(MAKE) clean
2019-05-09 21:37:20 -07:00
FIRE_CXXFLAGS="-O1 -g -fsanitize=address -fno-omit-frame-pointer -std=gnu++2a -fPIE -fPIC" $(MAKE) all
tsan:
$(MAKE) clean
FIRE_CXXFLAGS="-O1 -g -fsanitize=thread -std=gnu++2a -fPIE -fPIC" $(MAKE) all
ubsan:
$(MAKE) clean
FIRE_CXXFLAGS="-O1 -g -fsanitize=undefined -std=gnu++2a -fPIE -fPIC" $(MAKE) all