5 kx # SPDX-License-Identifier: GPL-2.0
5 kx # Top level Makefile for iproute2
5 kx
5 kx ifeq ("$(origin V)", "command line")
5 kx VERBOSE = $(V)
5 kx endif
5 kx ifndef VERBOSE
5 kx VERBOSE = 0
5 kx endif
5 kx
5 kx ifeq ($(VERBOSE),0)
5 kx MAKEFLAGS += --no-print-directory
5 kx endif
5 kx
5 kx PREFIX?=/usr
5 kx LIBDIR?=$(PREFIX)/lib
5 kx SBINDIR?=/sbin
5 kx CONFDIR?=/etc/iproute2
5 kx NETNS_RUN_DIR?=/var/run/netns
5 kx NETNS_ETC_DIR?=/etc/netns
5 kx DATADIR?=$(PREFIX)/share
5 kx HDRDIR?=$(PREFIX)/include/iproute2
5 kx DOCDIR?=$(DATADIR)/doc/iproute2
5 kx MANDIR?=$(DATADIR)/man
5 kx ARPDDIR?=/var/lib/arpd
5 kx KERNEL_INCLUDE?=/usr/include
5 kx BASH_COMPDIR?=$(DATADIR)/bash-completion/completions
5 kx
5 kx # Path to db_185.h include
5 kx DBM_INCLUDE:=$(DESTDIR)/usr/include
5 kx
5 kx SHARED_LIBS = y
5 kx
5 kx DEFINES= -DRESOLVE_HOSTNAMES -DLIBDIR=\"$(LIBDIR)\"
5 kx ifneq ($(SHARED_LIBS),y)
5 kx DEFINES+= -DNO_SHARED_LIBS
5 kx endif
5 kx
5 kx DEFINES+=-DCONFDIR=\"$(CONFDIR)\" \
5 kx -DNETNS_RUN_DIR=\"$(NETNS_RUN_DIR)\" \
5 kx -DNETNS_ETC_DIR=\"$(NETNS_ETC_DIR)\"
5 kx
5 kx #options for mpls
5 kx ADDLIB+=mpls_ntop.o mpls_pton.o
5 kx
5 kx HOSTCC ?= $(CC)
5 kx DEFINES += -D_GNU_SOURCE
5 kx # Turn on transparent support for LFS
5 kx DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
5 kx WFLAGS := -Wall -Wstrict-prototypes -Wmissing-prototypes
5 kx WFLAGS += -Wmissing-declarations -Wold-style-definition -Wformat=2
5 kx
5 kx CFLAGS := $(WFLAGS) $(CCOPTS) -I../include -I../include/uapi $(DEFINES) $(CFLAGS)
5 kx YACCFLAGS = -d -t -v
5 kx
5 kx SUBDIRS=lib ip tc bridge misc netem genl tipc devlink rdma man
5 kx
5 kx LIBNETLINK=../lib/libutil.a ../lib/libnetlink.a
5 kx LDLIBS += $(LIBNETLINK)
5 kx
5 kx all: config.mk
5 kx @set -e; \
5 kx for i in $(SUBDIRS); \
5 kx do echo; echo $$i; $(MAKE) -C $$i; done
5 kx
5 kx .PHONY: clean clobber distclean check cscope version
5 kx
5 kx help:
5 kx @echo "Make Targets:"
5 kx @echo " all - build binaries"
5 kx @echo " clean - remove products of build"
5 kx @echo " distclean - remove configuration and build"
5 kx @echo " install - install binaries on local machine"
5 kx @echo " check - run tests"
5 kx @echo " cscope - build cscope database"
5 kx @echo " version - update version"
5 kx @echo ""
5 kx @echo "Make Arguments:"
5 kx @echo " V=[0|1] - set build verbosity level"
5 kx
5 kx config.mk:
5 kx sh configure $(KERNEL_INCLUDE)
5 kx
5 kx install: all
5 kx install -m 0755 -d $(DESTDIR)$(SBINDIR)
5 kx install -m 0755 -d $(DESTDIR)$(CONFDIR)
5 kx install -m 0755 -d $(DESTDIR)$(ARPDDIR)
5 kx install -m 0755 -d $(DESTDIR)$(HDRDIR)
5 kx @for i in $(SUBDIRS); do $(MAKE) -C $$i install; done
5 kx install -m 0644 $(shell find etc/iproute2 -maxdepth 1 -type f) $(DESTDIR)$(CONFDIR)
5 kx install -m 0755 -d $(DESTDIR)$(BASH_COMPDIR)
5 kx install -m 0644 bash-completion/tc $(DESTDIR)$(BASH_COMPDIR)
5 kx install -m 0644 bash-completion/devlink $(DESTDIR)$(BASH_COMPDIR)
5 kx install -m 0644 include/bpf_elf.h $(DESTDIR)$(HDRDIR)
5 kx
5 kx version:
5 kx echo "static const char version[] = \""`git describe --tags --long`"\";" \
5 kx > include/version.h
5 kx
5 kx clean:
5 kx @for i in $(SUBDIRS) testsuite; \
5 kx do $(MAKE) -C $$i clean; done
5 kx
5 kx clobber:
5 kx touch config.mk
5 kx $(MAKE) clean
5 kx rm -f config.mk cscope.*
5 kx
5 kx distclean: clobber
5 kx
5 kx check: all
5 kx $(MAKE) -C testsuite
5 kx $(MAKE) -C testsuite alltests
5 kx @if command -v man >/dev/null 2>&1; then \
5 kx echo "Checking manpages for syntax errors..."; \
5 kx $(MAKE) -C man check; \
5 kx else \
5 kx echo "man not installed, skipping checks for syntax errors."; \
5 kx fi
5 kx
5 kx cscope:
5 kx cscope -b -q -R -Iinclude -sip -slib -smisc -snetem -stc
5 kx
5 kx .EXPORT_ALL_VARIABLES: