1
0
انشعاب 0
قرینه از https://github.com/jclehner/nmrpflash.git synced 2025-01-18 23:54:54 +00:00
nmrpflash/Makefile
2024-10-01 11:42:29 +02:00

126 خطوط
4.1 KiB
Makefile

CC = $(CROSS)gcc
STRIP = $(CROSS)strip
PKG_CONFIG ?= pkg-config
PREFIX ?= /usr/local
VERSION := $(shell if [ -d .git ] && which git 2>&1 > /dev/null; then git describe --always | tail -c +2; else echo $$STANDALONE_VERSION; fi)
CFLAGS += -Wall -g -DNMRPFLASH_VERSION=\"$(VERSION)\"
SUFFIX ?=
MACOS_SDK ?= macosx15.0
NPCAP_SDK = 1.13
ARCH := $(shell uname -m)
LINUXDEPLOY = ./linuxdeploy-$(ARCH).AppImage
TMP := $(shell mktemp -d)
APPDIR = $(TMP)/AppDir
AFL = afl-gcc
DOCKER_BUILD_NAME=nmrpflash
DOCKER_CONTAINER_NAME=$(DOCKER_BUILD_NAME)-container
nmrpflash_OBJ = nmrp.o tftp.o ethsock.o main.o util.o
ifdef MINGW
SUFFIX = .exe
CC = $(MINGW)gcc
STRIP = $(MINGW)strip
WINDRES = $(MINGW)windres
CFLAGS += -DWIN32_LEAN_AND_MEAN
CFLAGS += -D_WIN32_WINNT=0x0600
CFLAGS += -D__USE_MINGW_ANSI_STDIO
CFLAGS += "-I./Npcap/Include"
LDFLAGS += -lwpcap
LDFLAGS += -lPacket
LDFLAGS += -liphlpapi
LDFLAGS += -lws2_32
LDFLAGS += -ladvapi32
LDFLAGS += "-L./Npcap/Lib"
nmrpflash_OBJ += windres.o
else ifeq ($(shell uname -s),Linux)
CFLAGS += $(shell $(PKG_CONFIG) libnl-route-3.0 --cflags)
CFLAGS += $(shell $(PKG_CONFIG) libpcap --cflags)
LDFLAGS += $(shell $(PKG_CONFIG) libnl-route-3.0 --libs)
LDFLAGS += $(shell $(PKG_CONFIG) libpcap --libs)
AFL = afl-gcc
else
LDFLAGS += -lpcap
ifeq ($(shell uname -s),Darwin)
AFL=afl-clang
SYSROOT ?= $(shell xcrun --sdk $(MACOS_SDK) --show-sdk-path)
LDFLAGS += -framework CoreFoundation
endif
endif
.PHONY: clean install release release/macos release/linux release/win32
nmrpflash$(SUFFIX): $(nmrpflash_OBJ)
$(CC) $(CFLAGS) -o nmrpflash$(SUFFIX) $(nmrpflash_OBJ) $(LDFLAGS)
tftptest:
CFLAGS=-DNMRPFLASH_TFTP_TEST make clean nmrpflash
%.o: %.c nmrpd.h
$(CC) -c $(CFLAGS) $< -o $@
windres.o: nmrpflash.rc nmrpflash.manifest nmrpflash.ico
$(WINDRES) $< -o $@
fuzz_nmrp: tftp.c util.c nmrp.c fuzz.c
$(AFL) $(CFLAGS) -DNMRPFLASH_FUZZ $^ -o $@
fuzz_tftp: tftp.c util.c nmrp.c fuzz.c
$(AFL) $(CFLAGS) -DNMRPFLASH_FUZZ -DNMRPFLASH_FUZZ_TFTP $^ -o $@
dofuzz_tftp: fuzz_tftp
echo core | sudo tee /proc/sys/kernel/core_pattern
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
afl-fuzz -i fuzzin/tftp -o fuzzout/tftp -- ./fuzz_tftp fuzzin/tftp.bin
echo powersave | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
clean:
rm -f $(nmrpflash_OBJ) nmrpflash*.AppImage nmrpflash nmrpflash.exe fuzz_nmrp fuzz_tftp
install: nmrpflash
install -d $(PREFIX)/bin
install -s -m 755 nmrpflash $(PREFIX)/bin/
uninstall:
rm -f $(PREFIX)/bin/nmrpflash
$(LINUXDEPLOY):
wget -q -O $@ https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/$(shell basename $@)
chmod +x $@
nmrpflash-$(ARCH).AppImage: $(LINUXDEPLOY) release
rm -rf $(APPDIR)
mkdir -p $(APPDIR)
$(LINUXDEPLOY) --appdir $(APPDIR) -e nmrpflash -i nmrpflash.svg -o appimage --create-desktop-file
release/macos:
CFLAGS="-isysroot $(SYSROOT) -target arm64-apple-macos11" SUFFIX=".arm64" make release
CFLAGS="-isysroot $(SYSROOT) -target x86_64-apple-macos10.8" SUFFIX=".x86_64" make release
lipo -create -output nmrpflash nmrpflash.x86_64 nmrpflash.arm64
zip nmrpflash-$(VERSION)-macos.zip nmrpflash
rm -f nmrpflash.x86_64 nmrpflash.arm64
release/linux: release
zip nmrpflash-$(VERSION)-linux.zip nmrpflash
release/linux-appimage: nmrpflash-$(ARCH).AppImage
mv $< $(TMP)/nmrpflash
cd $(TMP); zip release.zip nmrpflash
mv $(TMP)/release.zip nmrpflash-$(VERSION)-linux-$(ARCH).zip
release/win32:
zip nmrpflash-$(VERSION)-win32.zip nmrpflash.exe
release: clean nmrpflash$(SUFFIX)
$(STRIP) nmrpflash$(SUFFIX)
nmrpflash.ico: nmrpflash.svg
convert -background transparent -define icon:auto-resize=256,64,48,32,16 $< $@
build-release-with-docker:
docker build --build-arg CACHEBUST=$(shell date +%s) --build-arg NPCAP_SDK=$(NPCAP_SDK) --progress=plain -t $(DOCKER_BUILD_NAME) .
-docker rm $(DOCKER_CONTAINER_NAME) &> /dev/null
docker create --name $(DOCKER_CONTAINER_NAME) nmrpflash
docker cp $(DOCKER_CONTAINER_NAME):/usr/src/nmrpflash/nmrpflash-$(VERSION)-linux-$(ARCH).zip .
docker cp $(DOCKER_CONTAINER_NAME):/usr/src/nmrpflash/nmrpflash-$(VERSION)-win32.zip .
docker rm $(DOCKER_CONTAINER_NAME)