1# SPDX-License-Identifier: GPL-2.0 2# Top level Makefile for iproute2 3 4-include config.mk 5 6ifeq ("$(origin V)", "command line") 7VERBOSE = $(V) 8endif 9ifndef VERBOSE 10VERBOSE = 0 11endif 12 13ifeq ($(VERBOSE),0) 14MAKEFLAGS += --no-print-directory 15endif 16 17PREFIX?=/usr 18SBINDIR?=/sbin 19CONFDIR?=/etc/iproute2 20NETNS_RUN_DIR?=/var/run/netns 21NETNS_ETC_DIR?=/etc/netns 22DATADIR?=$(PREFIX)/share 23HDRDIR?=$(PREFIX)/include/iproute2 24DOCDIR?=$(DATADIR)/doc/iproute2 25MANDIR?=$(DATADIR)/man 26ARPDDIR?=/var/lib/arpd 27KERNEL_INCLUDE?=/usr/include 28BASH_COMPDIR?=$(DATADIR)/bash-completion/completions 29 30# Path to db_185.h include 31DBM_INCLUDE:=$(DESTDIR)/usr/include 32 33SHARED_LIBS = y 34 35DEFINES= -DRESOLVE_HOSTNAMES -DLIBDIR=\"$(LIBDIR)\" 36ifneq ($(SHARED_LIBS),y) 37DEFINES+= -DNO_SHARED_LIBS 38endif 39 40DEFINES+=-DCONFDIR=\"$(CONFDIR)\" \ 41 -DNETNS_RUN_DIR=\"$(NETNS_RUN_DIR)\" \ 42 -DNETNS_ETC_DIR=\"$(NETNS_ETC_DIR)\" 43 44#options for AX.25 45ADDLIB+=ax25_ntop.o 46 47#options for AX.25 48ADDLIB+=rose_ntop.o 49 50#options for mpls 51ADDLIB+=mpls_ntop.o mpls_pton.o 52 53#options for NETROM 54ADDLIB+=netrom_ntop.o 55 56CC := gcc 57HOSTCC ?= $(CC) 58DEFINES += -D_GNU_SOURCE 59# Turn on transparent support for LFS 60DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE 61CCOPTS = -O2 -pipe 62WFLAGS := -Wall -Wstrict-prototypes -Wmissing-prototypes 63WFLAGS += -Wmissing-declarations -Wold-style-definition -Wformat=2 64 65CFLAGS := $(WFLAGS) $(CCOPTS) -I../include -I../include/uapi $(DEFINES) $(CFLAGS) 66YACCFLAGS = -d -t -v 67 68SUBDIRS=lib ip tc bridge misc netem genl tipc devlink rdma dcb man vdpa 69 70LIBNETLINK=../lib/libutil.a ../lib/libnetlink.a 71LDLIBS += $(LIBNETLINK) 72 73all: config.mk 74 @set -e; \ 75 for i in $(SUBDIRS); \ 76 do echo; echo $$i; $(MAKE) -C $$i; done 77 78.PHONY: clean clobber distclean check cscope version 79 80help: 81 @echo "Make Targets:" 82 @echo " all - build binaries" 83 @echo " clean - remove products of build" 84 @echo " distclean - remove configuration and build" 85 @echo " install - install binaries on local machine" 86 @echo " check - run tests" 87 @echo " cscope - build cscope database" 88 @echo " version - update version" 89 @echo "" 90 @echo "Make Arguments:" 91 @echo " V=[0|1] - set build verbosity level" 92 93config.mk: 94 @if [ ! -f config.mk -o configure -nt config.mk ]; then \ 95 sh configure $(KERNEL_INCLUDE); \ 96 fi 97 98install: all 99 install -m 0755 -d $(DESTDIR)$(SBINDIR) 100 install -m 0755 -d $(DESTDIR)$(CONFDIR) 101 install -m 0755 -d $(DESTDIR)$(ARPDDIR) 102 install -m 0755 -d $(DESTDIR)$(HDRDIR) 103 @for i in $(SUBDIRS); do $(MAKE) -C $$i install; done 104 install -m 0644 $(shell find etc/iproute2 -maxdepth 1 -type f) $(DESTDIR)$(CONFDIR) 105 install -m 0755 -d $(DESTDIR)$(BASH_COMPDIR) 106 install -m 0644 bash-completion/tc $(DESTDIR)$(BASH_COMPDIR) 107 install -m 0644 bash-completion/devlink $(DESTDIR)$(BASH_COMPDIR) 108 install -m 0644 include/bpf_elf.h $(DESTDIR)$(HDRDIR) 109 110version: 111 echo "static const char version[] = \""`git describe --tags --long`"\";" \ 112 > include/version.h 113 114clean: 115 @for i in $(SUBDIRS) testsuite; \ 116 do $(MAKE) -C $$i clean; done 117 118clobber: 119 touch config.mk 120 $(MAKE) clean 121 rm -f config.mk cscope.* 122 123distclean: clobber 124 125check: all 126 $(MAKE) -C testsuite 127 $(MAKE) -C testsuite alltests 128 @if command -v man >/dev/null 2>&1; then \ 129 echo "Checking manpages for syntax errors..."; \ 130 $(MAKE) -C man check; \ 131 else \ 132 echo "man not installed, skipping checks for syntax errors."; \ 133 fi 134 135cscope: 136 cscope -b -q -R -Iinclude -sip -slib -smisc -snetem -stc 137 138.EXPORT_ALL_VARIABLES: 139