Update README.md
[oweals/nmrpflash.git] / Makefile
1 CC ?= gcc
2 PKG_CONFIG ?= pkg-config
3 PREFIX ?= /usr/local
4 VERSION := $(shell if [ -d .git ] && which git 2>&1 > /dev/null; then git describe --always | tail -c +2; else echo $$STANDALONE_VERSION; fi)
5 LIBS = -lpcap
6 CFLAGS += -Wall -g -DNMRPFLASH_VERSION=\"$(VERSION)\"
7 LDFLAGS += $(LIBS)
8
9 ifeq ($(shell uname -s),Linux)
10         CFLAGS += $(shell $(PKG_CONFIG) libnl-route-3.0 --cflags)
11         LIBS += $(shell $(PKG_CONFIG) libnl-route-3.0 --libs)
12 endif
13
14 nmrpflash_OBJ = nmrp.o tftp.o ethsock.o main.o util.o
15
16 .PHONY: clean install release release/macos release/linux release/win32
17
18 nmrpflash: $(nmrpflash_OBJ)
19         $(CC) $(CFLAGS) -o nmrpflash $(nmrpflash_OBJ) $(LDFLAGS)
20
21 tftptest:
22         CFLAGS=-DNMRPFLASH_TFTP_TEST make clean nmrpflash
23
24 %.o: %.c nmrpd.h
25         $(CC) -c $(CFLAGS) $< -o $@
26
27 fuzz: clean
28         CC=afl-gcc CFLAGS=-DNMRPFLASH_FUZZ make nmrpflash
29         mv nmrpflash fuzz
30
31 dofuzz: fuzz
32         echo core | sudo tee /proc/sys/kernel/core_pattern
33         echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
34         afl-fuzz -i fuzzin -o fuzzout -- ./fuzz
35         echo powersave | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
36 clean:
37         rm -f $(nmrpflash_OBJ) nmrpflash
38
39 install: nmrpflash
40         install -m 755 nmrpflash $(PREFIX)/bin
41
42 release/macos:
43         CFLAGS="-mmacosx-version-min=10.6" make release
44         zip nmrpflash-$(VERSION)-macos.zip nmrpflash
45
46 release/linux: release
47         zip nmrpflash-$(VERSION)-linux.zip nmrpflash
48
49 release/win32:
50         zip nmrpflash-$(VERSION)-win32.zip nmrpflash.exe
51
52 release: clean nmrpflash
53         strip nmrpflash