You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
252 lines
6.1 KiB
252 lines
6.1 KiB
# |
|
# Configuration |
|
# |
|
|
|
# CC |
|
CC=gcc |
|
# Path to parent kernel include files directory |
|
LIBC_INCLUDE=/usr/include |
|
# Libraries |
|
ADDLIB= |
|
# Linker flags |
|
LDFLAG_STATIC=-Wl,-Bstatic |
|
LDFLAG_DYNAMIC=-Wl,-Bdynamic |
|
LDFLAG_CAP=-lcap |
|
LDFLAG_GNUTLS=-lgnutls-openssl |
|
LDFLAG_CRYPTO=-lcrypto |
|
LDFLAG_IDN=-lidn |
|
LDFLAG_RESOLV=-lresolv |
|
LDFLAG_SYSFS=-lsysfs |
|
|
|
# |
|
# Options |
|
# |
|
|
|
# Capability support (with libcap) [yes|static|no] |
|
USE_CAP=yes |
|
# sysfs support (with libsysfs - deprecated) [no|yes|static] |
|
USE_SYSFS=no |
|
# IDN support (experimental) [no|yes|static] |
|
USE_IDN=no |
|
|
|
# Do not use getifaddrs [no|yes|static] |
|
WITHOUT_IFADDRS=no |
|
# arping default device (e.g. eth0) [] |
|
ARPING_DEFAULT_DEVICE= |
|
|
|
# GNU TLS library for ping6 [yes|no|static] |
|
USE_GNUTLS=yes |
|
# Crypto library for ping6 [shared|static] |
|
USE_CRYPTO=shared |
|
# Resolv library for ping6 [yes|static] |
|
USE_RESOLV=yes |
|
# ping6 source routing (deprecated by RFC5095) [no|yes|RFC3542] |
|
ENABLE_PING6_RTHDR=no |
|
|
|
# rdisc server (-r option) support [no|yes] |
|
ENABLE_RDISC_SERVER=no |
|
|
|
# ------------------------------------- |
|
# What a pity, all new gccs are buggy and -Werror does not work. Sigh. |
|
# CCOPT=-fno-strict-aliasing -Wstrict-prototypes -Wall -Werror -g |
|
CCOPT=-fno-strict-aliasing -Wstrict-prototypes -Wall -g |
|
CCOPTOPT=-O3 |
|
GLIBCFIX=-D_GNU_SOURCE |
|
DEFINES= |
|
LDLIB= |
|
|
|
FUNC_LIB = $(if $(filter static,$(1)),$(LDFLAG_STATIC) $(2) $(LDFLAG_DYNAMIC),$(2)) |
|
|
|
# USE_GNUTLS: DEF_GNUTLS, LIB_GNUTLS |
|
# USE_CRYPTO: LIB_CRYPTO |
|
ifneq ($(USE_GNUTLS),no) |
|
LIB_CRYPTO = $(call FUNC_LIB,$(USE_GNUTLS),$(LDFLAG_GNUTLS)) |
|
DEF_CRYPTO = -DUSE_GNUTLS |
|
else |
|
LIB_CRYPTO = $(call FUNC_LIB,$(USE_CRYPTO),$(LDFLAG_CRYPTO)) |
|
endif |
|
|
|
# USE_RESOLV: LIB_RESOLV |
|
LIB_RESOLV = $(call FUNC_LIB,$(USE_RESOLV),$(LDFLAG_RESOLV)) |
|
|
|
# USE_CAP: DEF_CAP, LIB_CAP |
|
ifneq ($(USE_CAP),no) |
|
DEF_CAP = -DCAPABILITIES |
|
LIB_CAP = $(call FUNC_LIB,$(USE_CAP),$(LDFLAG_CAP)) |
|
endif |
|
|
|
# USE_SYSFS: DEF_SYSFS, LIB_SYSFS |
|
ifneq ($(USE_SYSFS),no) |
|
DEF_SYSFS = -DUSE_SYSFS |
|
LIB_SYSFS = $(call FUNC_LIB,$(USE_SYSFS),$(LDFLAG_SYSFS)) |
|
endif |
|
|
|
# USE_IDN: DEF_IDN, LIB_IDN |
|
ifneq ($(USE_IDN),no) |
|
DEF_IDN = -DUSE_IDN |
|
LIB_IDN = $(call FUNC_LIB,$(USE_IDN),$(LDFLAG_IDN)) |
|
endif |
|
|
|
# WITHOUT_IFADDRS: DEF_WITHOUT_IFADDRS |
|
ifneq ($(WITHOUT_IFADDRS),no) |
|
DEF_WITHOUT_IFADDRS = -DWITHOUT_IFADDRS |
|
endif |
|
|
|
# ENABLE_RDISC_SERVER: DEF_ENABLE_RDISC_SERVER |
|
ifneq ($(ENABLE_RDISC_SERVER),no) |
|
DEF_ENABLE_RDISC_SERVER = -DRDISC_SERVER |
|
endif |
|
|
|
# ENABLE_PING6_RTHDR: DEF_ENABLE_PING6_RTHDR |
|
ifneq ($(ENABLE_PING6_RTHDR),no) |
|
DEF_ENABLE_PING6_RTHDR = -DPING6_ENABLE_RTHDR |
|
ifeq ($(ENABLE_PING6_RTHDR),RFC3542) |
|
DEF_ENABLE_PING6_RTHDR += -DPINR6_ENABLE_RTHDR_RFC3542 |
|
endif |
|
endif |
|
|
|
# ------------------------------------- |
|
IPV4_TARGETS=tracepath ping clockdiff rdisc arping tftpd rarpd |
|
IPV6_TARGETS=tracepath6 traceroute6 ping6 |
|
TARGETS=$(IPV4_TARGETS) $(IPV6_TARGETS) |
|
|
|
CFLAGS=$(CCOPTOPT) $(CCOPT) $(GLIBCFIX) $(DEFINES) |
|
LDLIBS=$(LDLIB) $(ADDLIB) |
|
|
|
UNAME_N:=$(shell uname -n) |
|
LASTTAG:=$(shell git describe HEAD | sed -e 's/-.*//') |
|
TODAY=$(shell date +%Y/%m/%d) |
|
DATE=$(shell date --date $(TODAY) +%Y%m%d) |
|
TAG:=$(shell date --date=$(TODAY) +s%Y%m%d) |
|
|
|
|
|
# ------------------------------------- |
|
.PHONY: all ninfod clean distclean man html check-kernel modules snapshot |
|
|
|
all: $(TARGETS) |
|
|
|
%.s: %.c |
|
$(COMPILE.c) $< $(DEF_$(patsubst %.o,%,$@)) -S -o $@ |
|
%.o: %.c |
|
$(COMPILE.c) $< $(DEF_$(patsubst %.o,%,$@)) -o $@ |
|
$(TARGETS): %: %.o |
|
$(LINK.o) $^ $(LIB_$@) $(LDLIBS) -o $@ |
|
|
|
# ------------------------------------- |
|
# arping |
|
DEF_arping = $(DEF_SYSFS) $(DEF_CAP) $(DEF_IDN) $(DEF_WITHOUT_IFADDRS) |
|
LIB_arping = $(LIB_SYSFS) $(LIB_CAP) $(LIB_IDN) |
|
|
|
ifneq ($(ARPING_DEFAULT_DEVICE),) |
|
DEF_arping += -DDEFAULT_DEVICE=\"$(ARPING_DEFAULT_DEVICE)\" |
|
endif |
|
|
|
# clockdiff |
|
DEF_clockdiff = $(DEF_CAP) |
|
LIB_clockdiff = $(LIB_CAP) |
|
|
|
# ping / ping6 |
|
DEF_ping_common = $(DEF_CAP) $(DEF_IDN) |
|
DEF_ping = $(DEF_CAP) $(DEF_IDN) $(DEF_WITHOUT_IFADDRS) |
|
LIB_ping = $(LIB_CAP) $(LIB_IDN) |
|
DEF_ping6 = $(DEF_CAP) $(DEF_IDN) $(DEF_WITHOUT_IFADDRS) $(DEF_ENABLE_PING6_RTHDR) $(DEF_CRYPTO) |
|
LIB_ping6 = $(LIB_CAP) $(LIB_IDN) $(LIB_RESOLV) $(LIB_CRYPTO) |
|
|
|
ping: ping_common.o |
|
ping6: ping_common.o |
|
ping.o ping_common.o: ping_common.h |
|
ping6.o: ping_common.h in6_flowlabel.h |
|
|
|
# rarpd |
|
DEF_rarpd = |
|
LIB_rarpd = |
|
|
|
# rdisc |
|
DEF_rdisc = $(DEF_ENABLE_RDISC_SERVER) |
|
LIB_rdisc = |
|
|
|
# tracepath |
|
DEF_tracepath = $(DEF_IDN) |
|
LIB_tracepath = $(LIB_IDN) |
|
|
|
# tracepath6 |
|
DEF_tracepath6 = $(DEF_IDN) |
|
LIB_tracepath6 = |
|
|
|
# traceroute6 |
|
DEF_traceroute6 = $(DEF_CAP) $(DEF_IDN) |
|
LIB_traceroute6 = $(LIB_CAP) $(LIB_IDN) |
|
|
|
# tftpd |
|
DEF_tftpd = |
|
DEF_tftpsubs = |
|
LIB_tftpd = |
|
|
|
tftpd: tftpsubs.o |
|
tftpd.o tftpsubs.o: tftp.h |
|
|
|
# ------------------------------------- |
|
# ninfod |
|
ninfod: |
|
@set -e; \ |
|
if [ ! -f ninfod/Makefile ]; then \ |
|
cd ninfod; \ |
|
./configure; \ |
|
cd ..; \ |
|
fi; \ |
|
$(MAKE) -C ninfod |
|
|
|
# ------------------------------------- |
|
# modules / check-kernel are only for ancient kernels; obsolete |
|
check-kernel: |
|
ifeq ($(KERNEL_INCLUDE),) |
|
@echo "Please, set correct KERNEL_INCLUDE"; false |
|
else |
|
@set -e; \ |
|
if [ ! -r $(KERNEL_INCLUDE)/linux/autoconf.h ]; then \ |
|
echo "Please, set correct KERNEL_INCLUDE"; false; fi |
|
endif |
|
|
|
modules: check-kernel |
|
$(MAKE) KERNEL_INCLUDE=$(KERNEL_INCLUDE) -C Modules |
|
|
|
# ------------------------------------- |
|
man: |
|
$(MAKE) -C doc man |
|
|
|
html: |
|
$(MAKE) -C doc html |
|
|
|
clean: |
|
@rm -f *.o $(TARGETS) |
|
@$(MAKE) -C Modules clean |
|
@$(MAKE) -C doc clean |
|
@set -e; \ |
|
if [ -f ninfod/Makefile ]; then \ |
|
$(MAKE) -C ninfod clean; \ |
|
fi |
|
|
|
distclean: clean |
|
@set -e; \ |
|
if [ -f ninfod/Makefile ]; then \ |
|
$(MAKE) -C ninfod distclean; \ |
|
fi |
|
|
|
# ------------------------------------- |
|
snapshot: |
|
@if [ x"$(UNAME_N)" != x"pleiades" ]; then echo "Not authorized to advance snapshot"; exit 1; fi |
|
@echo "[$(TAG)]" > RELNOTES.NEW |
|
@echo >>RELNOTES.NEW |
|
@git log --no-merges $(LASTTAG).. | git shortlog >> RELNOTES.NEW |
|
@echo >> RELNOTES.NEW |
|
@cat RELNOTES >> RELNOTES.NEW |
|
@mv RELNOTES.NEW RELNOTES |
|
@sed -e "s/^%define ssdate .*/%define ssdate $(DATE)/" iputils.spec > iputils.spec.tmp |
|
@mv iputils.spec.tmp iputils.spec |
|
@echo "static char SNAPSHOT[] = \"$(TAG)\";" > SNAPSHOT.h |
|
@$(MAKE) -C doc snapshot |
|
@$(MAKE) man |
|
@git commit -a -m "iputils-$(TAG)" |
|
@git tag -s -m "iputils-$(TAG)" $(TAG) |
|
@git archive --format=tar --prefix=iputils-$(TAG)/ $(TAG) | bzip2 -9 > ../iputils-$(TAG).tar.bz2 |
|
|
|
|