9f0990789adaa5d3a2e67fd0e9d209758c3963c9
[oweals/nmrpflash.git] / Makefile
1 CC ?= gcc
2 PREFIX ?= /usr/local
3 VERSION = $(shell git describe --always | tail -c +2)
4 LIBS = -lpcap
5 CFLAGS += -Wall -g -DNMRPFLASH_VERSION=\"$(VERSION)\"
6 LDFLAGS += $(LIBS)
7
8 nmrpflash_OBJ = nmrp.o tftp.o ethsock.o main.o util.o
9
10 .PHONY: clean install release release/osx release/linux release/win32
11
12 nmrpflash: $(nmrpflash_OBJ)
13         $(CC) $(CFLAGS) -o nmrpflash $(nmrpflash_OBJ) $(LDFLAGS)
14
15 %.o: %.c nmrpd.h
16         $(CC) -c $(CFLAGS) $< -o $@
17
18 fuzz: clean
19         CC=afl-gcc CFLAGS=-DNMRPFLASH_FUZZ make nmrpflash
20         mv nmrpflash fuzz
21
22 dofuzz: fuzz
23         echo core | sudo tee /proc/sys/kernel/core_pattern
24         echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
25         afl-fuzz -i fuzzin -o fuzzout -- ./fuzz
26 clean:
27         rm -f $(nmrpflash_OBJ) nmrpflash
28
29 install: nmrpflash
30         install -m 755 nmrpflash $(PREFIX)/bin
31
32 release/osx:
33         CFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.6" make release
34         zip nmrpflash-$(VERSION)-osx.zip nmrpflash
35
36 release/linux: release
37         zip nmrpflash-$(VERSION)-linux.zip nmrpflash
38
39 release/win32:
40         zip nmrpflash-$(VERSION)-win32.zip nmrpflash.exe
41
42 release: clean nmrpflash
43         strip nmrpflash