1 2IFLAGS := -isystem include/ -I ../include/ -I ../lib/zstd/ -isystem googletest/googletest/include -isystem ../../../lib/common/ 3 4SOURCES := $(wildcard ../lib/zstd/*.c) 5OBJECTS := $(patsubst %.c,%.o,$(SOURCES)) 6 7ARFLAGS := rcs 8CXXFLAGS += -std=c++11 -g -O3 -Wcast-align 9CFLAGS += -g -O3 -Wframe-larger-than=400 -Wcast-align 10CPPFLAGS += $(IFLAGS) 11 12../lib/zstd/libzstd.a: $(OBJECTS) 13 $(AR) $(ARFLAGS) $@ $^ 14 15DecompressCrash: DecompressCrash.o $(OBJECTS) libFuzzer.a 16 $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ 17 18RoundTripCrash: RoundTripCrash.o $(OBJECTS) ../lib/xxhash.o libFuzzer.a 19 $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ 20 21UserlandTest: UserlandTest.cpp ../lib/zstd/libzstd.a ../lib/xxhash.o 22 $(CXX) $(CXXFLAGS) $(CPPFLAGS) $^ googletest/build/googlemock/gtest/libgtest.a googletest/build/googlemock/gtest/libgtest_main.a -o $@ 23 24XXHashUserlandTest: XXHashUserlandTest.cpp ../lib/xxhash.o ../../../lib/common/xxhash.o 25 $(CXX) $(CXXFLAGS) $(CFLAGS) $(CPPFLAGS) $^ googletest/build/googlemock/gtest/libgtest.a googletest/build/googlemock/gtest/libgtest_main.a -o $@ 26 27# Install libfuzzer 28libFuzzer.a: 29 @$(RM) -rf Fuzzer 30 @git clone https://chromium.googlesource.com/chromium/llvm-project/llvm/lib/Fuzzer 31 @./Fuzzer/build.sh 32 33# Install googletest 34.PHONY: googletest 35googletest: 36 @$(RM) -rf googletest 37 @git clone https://github.com/google/googletest 38 @mkdir -p googletest/build 39 @cd googletest/build && cmake .. && $(MAKE) 40 41clean: 42 $(RM) -f *.{o,a} ../lib/zstd/*.{o,a} ../lib/*.o 43 $(RM) -f DecompressCrash RoundTripCrash UserlandTest XXHashUserlandTest 44