# Build recipe # # SPDX-FileCopyrightText: 2016 Aleksandar Nikolic # SPDX-FileCopyrightText: 2018-2020 Marc "van Hauser" Heuse # SPDX-License-Identifier: Apache-2.0 # # SPDX-FileCopyrightText: 2024 Nguyễn Gia Phong # SPDX-License-Identifier: AGPL-3.0-or-later .POSIX: .PHONY: all clean install uninstall VERSION ::= 1.0.0 PREFIX ?= /usr/local BINDIR ::= $(DESTDIR)$(PREFIX)/bin LIBDIR ::= $(DESTDIR)$(PREFIX)/lib MANDIR ::= $(DESTDIR)$(PREFIX)/share/man # Override on non-FHS environments DYNINST_LIB ?= $(LIBDIR) # Override to . for local development AFL_DYNINST_LIB ?= $(LIBDIR) CPPFLAGS = -DVERSION=\"$(VERSION)\"\ -DAFL_DYNINST_LIB=\"$(AFL_DYNINST_LIB)/libafldyninst.so\"\ -DDYNINSTAPI_RT_LIB=\"$(DYNINST_LIB)/libdyninstAPI_RT.so\" CXXFLAGS += -std=c++11 -Wextra -Werror LDFLAGS ?= -fPIC LDLIBS += -ldyninstAPI BIN ::= afl-dyninst afl-dyninst-env LIB ::= libafldyninst.so MAN ::= afl-dyninst.1 all: $(BIN) $(LIB) $(MAN) afl-dyninst: afl-dyninst.cc afl-dyninst-env: afl-dyninst-env.m4 m4 -D AFL_DYNINST_LIB=$(AFL_DYNINST_LIB)\ -D DYNINST_LIB=$(DYNINST_LIB) $< > $@ %.so: %.cc $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $< -o $@ %.1: % help2man --no-info --output=$@ `realpath $<` clean: rm -f $(BIN) $(LIB) $(MAN) install: $(BIN:%=$(BINDIR)/%) $(LIB:%=$(LIBDIR)/%) $(MAN:%.1:$(MANDIR)/man1/%.1) $(BINDIR)/%: % install -Dm 755 $< $@ $(LIBDIR)/%: % install -Dm 644 $< $@ $(MANDIR)/man1/%.1 : %.1 install -Dm 644 $< $@ uninstall: rm -f $(BIN:%=$(BINDIR)/%) rm -f $(LIB:%=$(LIBDIR)/%) rm -f $(MAN:%.1:$(MANDIR)/man1/%.1)