1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
# $Id: Makefile.linux_nft,v 1.20 2025/04/21 21:48:57 nanard Exp $
# MiniUPnP project
# (c) 2018-2025 Thomas Bernard
# (c) 2015 Tomofumi Hayashi
# http://miniupnp.free.fr/ or https://miniupnp.tuxfamily.org/
# Author : Tomofumi Hayashi
# for use with GNU Make
#
# options can be passed to configure through CONFIG_OPTIONS :
# $ CONFIG_OPTIONS="--ipv6 --igd2" make
#
# To install use :
# $ DESTDIR=/dummyinstalldir make install
# or :
# $ INSTALLPREFIX=/usr/local make install
# or :
# $ make install
# (default INSTALLPREFIX is /usr)
#
#
CONFIG_OPTIONS ?= $(shell cat .configure.cache)
ifeq ($(filter --firewall=nftables,$(CONFIG_OPTIONS)),)
CONFIG_OPTIONS += --firewall=nftables
endif
# Make sucks, prove me wrong
, := ,
ifeq ($(filter -D_FORTIFY_SOURCE=% -Wp$(,)-D_FORTIFY_SOURCE=%,$(CPPFLAGS) $(CFLAGS)),)
CPPFLAGS += -D_FORTIFY_SOURCE=2
endif
CPPFLAGS += -D_GNU_SOURCE
#CFLAGS = -O -g #-DDEBUG
CFLAGS ?= -Os
CFLAGS += -fno-strict-aliasing
CFLAGS += -fno-common
CFLAGS += -fstack-protector -fPIE
CFLAGS += -Wall
CFLAGS += -Wextra -Wstrict-prototypes -Wdeclaration-after-statement
#CFLAGS += -Wno-missing-field-initializers
LDFLAGS += -Wl,-z,now -Wl,-z,relro -pie
CC ?= gcc
RM = rm -f
INSTALL = install
STRIP ?= strip
CP = cp
DOXYGEN ?= doxygen
DEPDIR := .depend
DEPFLAGS = -MMD -MP -MF $(@:%.o=$(DEPDIR)/%.d) -MT $@
# -M : with system headers, -MM : without
INSTALLPREFIX ?= $(PREFIX)/usr
ETCDIR ?= $(PREFIX)/etc
SBINDIR ?= $(INSTALLPREFIX)/sbin
MANDIR ?= $(INSTALLPREFIX)/share/man
LIBDIR ?= $(INSTALLPREFIX)/lib
CONFIGDIR = $(ETCDIR)/miniupnpd
INITDIR = $(ETCDIR)/init.d
SYSTEMDUNITDIR = $(LIBDIR)/systemd/system
include config.mk
#include $(SRCDIR)/gitrev.mk
include $(SRCDIR)/objects.mk
# sources in the netfilter_nft/ directory
NETFILTEROBJS = nftnlrdr.o nftpinhole.o nfct_get.o nftnlrdr_misc.o
ALLOBJS = $(BASEOBJS) $(LNXOBJS) $(NETFILTEROBJS) $(OTHEROBJS)
NFT_SCRIPTS = $(addprefix $(SRCDIR)/netfilter_nft/scripts/, \
nft_init.sh nft_removeall.sh nft_flush.sh nft_delete_chain.sh)
#LDLIBS += -lnfnetlink
EXECUTABLES = miniupnpd miniupnpdctl
ifeq ($(TESTS), 1)
EXECUTABLES += testupnpdescgen testgetifstats \
testupnppermissions testgetifaddr \
testgetroute testasyncsendto testportinuse \
testssdppktgen testminissdp testifacewatcher
endif
.PHONY: all clean install dox
all: $(EXECUTABLES)
clean:
$(RM) $(ALLOBJS)
$(RM) -r $(DEPDIR)
$(RM) $(EXECUTABLES)
$(RM) validateupnppermissions validategetifaddr validatessdppktgen
$(RM) validateversion
$(RM) -r dox/
install: $(SRCDIR)/miniupnpd.8 $(SRCDIR)/miniupnpd.conf \
$(NFT_SCRIPTS) \
$(SRCDIR)/linux/miniupnpd.init.d.script \
$(SRCDIR)/linux/miniupnpd.iptables.service
$(INSTALL) -D -m 0755 $(NFT_SCRIPTS) -t $(DESTDIR)$(CONFIGDIR)
$(INSTALL) -D -m 0644 -b $(SRCDIR)/miniupnpd.conf -t $(DESTDIR)$(CONFIGDIR)
sed -i -e "s/^uuid=[-0-9a-f]*/uuid=$(shell $(UUIDBIN))/" $(DESTDIR)$(CONFIGDIR)/miniupnpd.conf
ifneq ($(USE_SYSTEMD),)
$(INSTALL) -D -m 0644 $(SRCDIR)/linux/miniupnpd.nft.service $(DESTDIR)$(SYSTEMDUNITDIR)/miniupnpd.service
sed -r \
-e "s|%BINDIR%|$(SBINDIR)|" \
-e "s|%CONFIGDIR%|$(CONFIGDIR)|" \
-i $(DESTDIR)/$(SYSTEMDUNITDIR)/miniupnpd.service
sed -r \
-e "s|(#lease_file)=.*|\1=/var/lib/miniupnpd/upnp.leases|" \
-i $(DESTDIR)/$(CONFIGDIR)/miniupnpd.conf
else
$(INSTALL) -D -m 0755 $(SRCDIR)/linux/miniupnpd.init.d.script $(DESTDIR)$(INITDIR)/miniupnpd
endif
$(INSTALL) -D -m 0644 $(SRCDIR)/miniupnpd.8 -t $(DESTDIR)$(MANDIR)/man8
gzip -f $(DESTDIR)$(MANDIR)/man8/miniupnpd.8
include $(SRCDIR)/check.mk
include $(SRCDIR)/common.mk
testportinuse: testportinuse.o portinuse.o getifaddr.o \
upnputils.o getroute.o \
nftnlrdr.o nftnlrdr_misc.o
config.mk config.h: $(SRCDIR)/configure $(SRCDIR)/VERSION
$(SHELL) $< $(CONFIG_OPTIONS)
%.o: $(SRCDIR)/%.c $(DEPDIR)/%.d | $(DEPDIR)
$(CC) -c $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS) $< -o $@
%.o: $(SRCDIR)/linux/%.c $(DEPDIR)/%.d | $(DEPDIR)
$(CC) -c $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS) $< -o $@
%.o: $(SRCDIR)/netfilter_nft/%.c $(DEPDIR)/%.d | $(DEPDIR)
$(CC) -c $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS) $< -o $@
DEPFILES := $(ALLOBJS:%.o=$(DEPDIR)/%.d)
$(DEPDIR): ; @mkdir -p $@
$(DEPFILES):
-include $(wildcard $(DEPFILES))
|