diff --git a/.gitignore b/.gitignore index 9eca6c8..d0bc775 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.a *.o +*.so diff --git a/Makefile b/Makefile index 5f306fa..ae0aeae 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,9 @@ FIRE_CXX ?= clang++ -FIRE_CXXFLAGS ?= -O3 -std=gnu++2a -Wall -Werror +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 +FIRE_LDLIBS ?= -lglog -all: firebuf.a firebuf.o +all: firebuf.a firebuf.o firebuf.so objects = stream_buffer.o buffer.o @@ -9,13 +11,16 @@ firebuf.a: $(objects) ar rcs $@ $^ firebuf.o: $(objects) - ld --relocatable --output=$@ $+ + gold -z relro -z now -r --output=$@ $+ + +firebuf.so: $(objects) + $(FIRE_CXX) $(FIRE_CXXFLAGS) $(FIRE_LDFLAGS) -shared -o $@ $+ $(FIRE_LDFLIBS) %.o: %.cc *.h Makefile $(FIRE_CXX) $(FIRE_CXXFLAGS) -c -o $@ $< clean: - rm --force *.o *.a + rm --force *.so *.o *.a asan: $(MAKE) clean