1CC ?= gcc 2PKG_CONFIG ?= pkg-config 3PREFIX ?= /usr/local 4VERSION := $(shell if [ -d .git ] && which git 2>&1 > /dev/null; then git describe --always | tail -c +2; else echo $$STANDALONE_VERSION; fi) 5CFLAGS += -Wall -g -DNMRPFLASH_VERSION=\"$(VERSION)\" 6LDFLAGS += -lpcap 7SUFFIX ?= 8 9ifeq ($(shell uname -s),Linux) 10 CFLAGS += $(shell $(PKG_CONFIG) libnl-route-3.0 --cflags) 11 LDFLAGS += $(shell $(PKG_CONFIG) libnl-route-3.0 --libs) 12endif 13 14ifeq ($(shell uname -s),Darwin) 15 AFL=afl-clang 16else 17 AFL=afl-gcc 18endif 19 20nmrpflash_OBJ = nmrp.o tftp.o ethsock.o main.o util.o 21 22.PHONY: clean install release release/macos release/linux release/win32 23 24nmrpflash$(SUFFIX): $(nmrpflash_OBJ) 25 $(CC) $(CFLAGS) -o nmrpflash$(SUFFIX) $(nmrpflash_OBJ) $(LDFLAGS) 26 27tftptest: 28 CFLAGS=-DNMRPFLASH_TFTP_TEST make clean nmrpflash 29 30%.o: %.c nmrpd.h 31 $(CC) -c $(CFLAGS) $< -o $@ 32 33fuzz_nmrp: tftp.c util.c nmrp.c fuzz.c 34 $(AFL) $(CFLAGS) -DNMRPFLASH_FUZZ $^ -o $@ 35 36fuzz_tftp: tftp.c util.c nmrp.c fuzz.c 37 $(AFL) $(CFLAGS) -DNMRPFLASH_FUZZ -DNMRPFLASH_FUZZ_TFTP $^ -o $@ 38 39dofuzz_tftp: fuzz_tftp 40 echo core | sudo tee /proc/sys/kernel/core_pattern 41 echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 42 afl-fuzz -i fuzzin/tftp -o fuzzout/tftp -- ./fuzz_tftp fuzzin/tftp.bin 43 echo powersave | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 44 45clean: 46 rm -f $(nmrpflash_OBJ) nmrpflash nmrpflash.x86_64 nmrpflash.arm64 fuzz_nmrp fuzz_tftp 47 48install: nmrpflash 49 install -m 755 nmrpflash $(PREFIX)/bin 50 51release/macos: 52 CFLAGS="-target arm64-apple-macos11" SUFFIX=".arm64" make release 53 CFLAGS="-target x86_64-apple-macos10.8" SUFFIX=".x86_64" make release 54 lipo -create -output nmrpflash nmrpflash.x86_64 nmrpflash.arm64 55 zip nmrpflash-$(VERSION)-macos.zip nmrpflash 56 57release/linux: release 58 zip nmrpflash-$(VERSION)-linux.zip nmrpflash 59 60release/win32: 61 zip nmrpflash-$(VERSION)-win32.zip nmrpflash.exe 62 63release: clean nmrpflash$(SUFFIX) 64 strip nmrpflash$(SUFFIX) 65