1## Process this file with automake to produce Makefile.in. 2 3AUTOMAKE_OPTIONS = subdir-objects 1.12 4ACLOCAL_AMFLAGS = -I m4 5 6AM_CFLAGS = \ 7 $(LIBYANG_CFLAGS) \ 8 $(SQLITE3_CFLAGS) \ 9 $(UNWIND_CFLAGS) \ 10 $(SAN_FLAGS) \ 11 $(WERROR) \ 12 # end 13AM_CPPFLAGS = \ 14 -I$(top_srcdir) -I$(top_srcdir)/include -I$(top_srcdir)/lib \ 15 -I$(top_builddir) -I$(top_builddir)/include -I$(top_builddir)/lib \ 16 $(LUA_INCLUDE) \ 17 # end 18AM_LDFLAGS = \ 19 -export-dynamic \ 20 $(AC_LDFLAGS) \ 21 $(SAN_FLAGS) \ 22 # end 23DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" -DCONFDATE=$(CONFDATE) 24 25AR_FLAGS = @AR_FLAGS@ 26ARFLAGS = @ARFLAGS@ 27RANLIB = @RANLIB@ 28 29# these two targets are provided to easily grab autoconf/Makefile variables 30# you can use either: 31# eval `make VARFD=3 shvar-CFLAGS 3>&1 1>&2` 32# CFLAGS="`make VARFD=3 var-CFLAGS 3>&1 1>&2`" 33# where the former can be used to set several variables at once. Note the 34# fd redirections -- this is to prevent garbage from make rebuilding other 35# targets from causing issues. 36.PHONY: shvar-% var-% 37VARFD ?= 1 38shvar-%: 39 @echo "$*=\"$($*)\"" >&$(VARFD) 40var-%: 41 @echo "$($*)" >&$(VARFD) 42 43if ONLY_CLIPPY 44.DEFAULT_GOAL := clippy-only 45endif 46clippy-only: Makefile lib/clippy config.h 47.PHONY: clippy-only 48 49# overwriting these vars breaks cross-compilation. let's be helpful and warn. 50# 51# note: "#AUTODERP# " will be removed from Makefile by configure. These are 52# GNU make directives & automake will f*ck them up by trying to process them 53# as automake directives. 54# 55#AUTODERP# null= 56#AUTODERP# SPACE=$(null) $(null) 57#AUTODERP# mkcheck_CC = $(findstring $(SPACE)CC=, $(SPACE)$(MAKEOVERRIDES)) 58#AUTODERP# mkcheck_CFLAGS = $(findstring $(SPACE)CFLAGS=, $(SPACE)$(MAKEOVERRIDES)) 59#AUTODERP# mkcheck_CPPFLAGS = $(findstring $(SPACE)CPPFLAGS=,$(SPACE)$(MAKEOVERRIDES)) 60#AUTODERP# mkcheck_CCLD = $(findstring $(SPACE)CCLD=, $(SPACE)$(MAKEOVERRIDES)) 61#AUTODERP# mkcheck_LD = $(findstring $(SPACE)LD=, $(SPACE)$(MAKEOVERRIDES)) 62#AUTODERP# mkcheck_LDFLAGS = $(findstring $(SPACE)LDFLAGS=, $(SPACE)$(MAKEOVERRIDES)) 63#AUTODERP# # 64#AUTODERP# ifneq ($(mkcheck_CC),) 65#AUTODERP# $(warning WARNING: you have overwritten the "CC" variable on the make command line.) 66#AUTODERP# endif 67#AUTODERP# ifneq ($(mkcheck_CFLAGS),) 68#AUTODERP# $(warning WARNING: you have overwritten the "CFLAGS" variable on the make command line.) 69#AUTODERP# endif 70#AUTODERP# ifneq ($(mkcheck_CPPFLAGS),) 71#AUTODERP# $(warning WARNING: you have overwritten the "CPPFLAGS" variable on the make command line.) 72#AUTODERP# endif 73#AUTODERP# ifneq ($(mkcheck_CCLD),) 74#AUTODERP# $(warning WARNING: you have overwritten the "CCLD" variable on the make command line.) 75#AUTODERP# endif 76#AUTODERP# ifneq ($(mkcheck_LD),) 77#AUTODERP# $(warning WARNING: you have overwritten the "LD" variable on the make command line.) 78#AUTODERP# endif 79#AUTODERP# ifneq ($(mkcheck_LDFLAGS),) 80#AUTODERP# $(warning WARNING: you have overwritten the "LDFLAGS" variable on the make command line.) 81#AUTODERP# endif 82#AUTODERP# # 83#AUTODERP# ifneq ($(mkcheck_CC)$(mkcheck_CFLAGS)$(mkcheck_CPPFLAGS)$(mkcheck_CCLD)$(mkcheck_LD)$(mkcheck_LDFLAGS),) 84#AUTODERP# $(warning ------) 85#AUTODERP# $(warning While overwriting these variables works most of the time, it is not recommended and can cause confusing build errors.) 86#AUTODERP# $(warning This is especially problematic when cross-compiling, since tools that run on the build system during the build process will not be compiled correctly.) 87#AUTODERP# $(warning All of these variables should be supplied to 'configure', and they will be remembered and correctly applied during 'make'.) 88#AUTODERP# $(warning ------) 89#AUTODERP# endif 90 91EXTRA_DIST = 92EXTRA_PROGRAMS = 93BUILT_SOURCES = 94CLEANFILES = 95DISTCLEANFILES = 96SUFFIXES = 97 98examplesdir = $(exampledir) 99 100bin_PROGRAMS = 101sbin_PROGRAMS = 102sbin_SCRIPTS = 103noinst_PROGRAMS = 104noinst_HEADERS = 105noinst_LIBRARIES = 106nodist_noinst_DATA = 107lib_LTLIBRARIES = 108module_LTLIBRARIES = 109pkginclude_HEADERS = 110nodist_pkginclude_HEADERS = 111dist_examples_DATA = 112dist_yangmodels_DATA = 113man_MANS = 114vtysh_scan = 115clippy_scan = 116 117## libtool, the self-made GNU scourge 118## ... this should fix relinking 119## ... and AUTOMAKE_DUMMY is needed to prevent automake from treating this 120## as overriding the normal targets... 121$(AUTOMAKE_DUMMY)install-moduleLTLIBRARIES: install-libLTLIBRARIES 122$(AUTOMAKE_DUMMY)install-binPROGRAMS: install-libLTLIBRARIES 123$(AUTOMAKE_DUMMY)install-sbinPROGRAMS: install-libLTLIBRARIES 124 125include doc/subdir.am 126include doc/user/subdir.am 127include doc/manpages/subdir.am 128include doc/developer/subdir.am 129include include/subdir.am 130include lib/subdir.am 131include mlag/subdir.am 132include zebra/subdir.am 133include watchfrr/subdir.am 134include qpb/subdir.am 135include fpm/subdir.am 136include grpc/subdir.am 137include solaris/subdir.am 138 139include bgpd/subdir.am 140include bgpd/rfp-example/librfp/subdir.am 141include bgpd/rfp-example/rfptest/subdir.am 142include ripd/subdir.am 143include ripngd/subdir.am 144include ospfd/subdir.am 145include ospf6d/subdir.am 146include ospfclient/subdir.am 147include isisd/subdir.am 148include nhrpd/subdir.am 149include ldpd/subdir.am 150include babeld/subdir.am 151include eigrpd/subdir.am 152include sharpd/subdir.am 153include pimd/subdir.am 154include pbrd/subdir.am 155include staticd/subdir.am 156include bfdd/subdir.am 157include yang/subdir.am 158include yang/libyang_plugins/subdir.am 159include vrrpd/subdir.am 160 161include vtysh/subdir.am 162include tests/subdir.am 163include tests/topotests/subdir.am 164 165if PKGSRC 166rcdir=@pkgsrcrcdir@ 167rc_SCRIPTS = \ 168 pkgsrc/bgpd.sh \ 169 pkgsrc/ospf6d.sh \ 170 pkgsrc/ospfd.sh \ 171 pkgsrc/ripd.sh \ 172 pkgsrc/ripngd.sh \ 173 pkgsrc/zebra.sh \ 174 # end 175endif 176 177EXTRA_DIST += \ 178 aclocal.m4 \ 179 README.md \ 180 m4/README.txt \ 181 m4/libtool-whole-archive.patch \ 182 config.version \ 183 changelog-auto \ 184 changelog-auto.in \ 185 \ 186 python/clidef.py \ 187 python/clippy/__init__.py \ 188 python/makevars.py \ 189 python/makefile.py \ 190 \ 191 redhat/frr.logrotate \ 192 redhat/frr.pam \ 193 redhat/frr.spec \ 194 \ 195 snapcraft/snapcraft.yaml \ 196 snapcraft/README.snap_build.md \ 197 snapcraft/README.usage.md \ 198 snapcraft/extra_version_info.txt \ 199 snapcraft/scripts \ 200 snapcraft/defaults \ 201 snapcraft/helpers \ 202 snapcraft/snap \ 203 babeld/Makefile \ 204 bgpd/Makefile \ 205 bgpd/rfp-example/librfp/Makefile \ 206 bgpd/rfp-example/rfptest/Makefile \ 207 doc/Makefile \ 208 doc/developer/Makefile \ 209 doc/manpages/Makefile \ 210 doc/user/Makefile \ 211 eigrpd/Makefile \ 212 fpm/Makefile \ 213 grpc/Makefile \ 214 isisd/Makefile \ 215 ldpd/Makefile \ 216 lib/Makefile \ 217 nhrpd/Makefile \ 218 ospf6d/Makefile \ 219 ospfclient/Makefile \ 220 ospfd/Makefile \ 221 pbrd/Makefile \ 222 pimd/Makefile \ 223 qpb/Makefile \ 224 ripd/Makefile \ 225 ripngd/Makefile \ 226 staticd/Makefile \ 227 tests/Makefile \ 228 tools/Makefile \ 229 vtysh/Makefile \ 230 watchfrr/Makefile \ 231 zebra/Makefile \ 232 vrrpd/Makefile \ 233 # end 234 235AM_V_LLVM_BC = $(am__v_LLVM_BC_$(V)) 236am__v_LLVM_BC_ = $(am__v_LLVM_BC_$(AM_DEFAULT_VERBOSITY)) 237am__v_LLVM_BC_0 = @echo " LLVM.BC " $@; 238am__v_LLVM_BC_1 = 239 240AM_V_LLVM_LD = $(am__v_LLVM_LD_$(V)) 241am__v_LLVM_LD_ = $(am__v_LLVM_LD_$(AM_DEFAULT_VERBOSITY)) 242am__v_LLVM_LD_0 = @echo " LLVM.LD " $@; 243am__v_LLVM_LD_1 = 244 245SUFFIXES += .lo.bc .o.bc 246 247.o.o.bc: 248 $(AM_V_LLVM_BC)$(COMPILE) -emit-llvm -c -o $@ $(patsubst %.o,%.c,$<) 249.lo.lo.bc: 250 $(AM_V_LLVM_BC)$(COMPILE) -emit-llvm -c -o $@ $(patsubst %.lo,%.c,$<) 251 252%.cg.json: %.bc tools/frr-llvm-cg 253 tools/frr-llvm-cg -o $@ $< 254%.cg.dot: %.cg.json 255 $(PYTHON) $(top_srcdir)/python/callgraph-dot.py $< $@ 256%.cg.svg: %.cg.dot 257 @echo if the following command fails, you need to install graphviz. 258 @echo also, the output is nondeterministic. run it multiple times and use the nicest output. 259 @echo tuning parameters may yield nicer looking graphs as well. 260 fdp -GK=0.7 -Gstart=42231337 -Gmaxiter=2000 -Elen=2 -Gnodesep=1.5 -Tsvg -o$@ $< 261# don't delete intermediaries 262.PRECIOUS: %.cg.json %.cg.dot 263 264# <lib>.la.bc, <lib>.a.bc and <daemon>.bc targets are generated by 265# python/makefile.py 266LLVM_LINK = llvm-link-$(llvm_version) 267 268clean-local: clean-python clean-llvm-bitcode 269.PHONY: clean-python clean-llvm-bitcode 270clean-python: 271 find . -name __pycache__ -o -name .pytest_cache | xargs rm -rf 272 find . -name "*.pyc" -o -name "*_clippy.c" | xargs rm -f 273 274clean-llvm-bitcode: 275 find . -name "*.bc" -o -name "*.cg.json" -o -name "*.cg.dot" -o -name "*.cg.svg" | xargs rm -f 276 277redistclean: 278 $(MAKE) distclean CONFIG_CLEAN_FILES="$(filter-out $(EXTRA_DIST), $(CONFIG_CLEAN_FILES))" 279 280indent: 281 tools/indent.py `find sharpd bgpd eigrpd include isisd lib nhrpd ospf6d ospfd pimd qpb ripd vtysh zebra -name '*.[ch]' | grep -v include/linux` 282 283if HAVE_GCOV 284 285coverage: check 286 @ find . -name '*.o' -exec gcov {} \; 287 288yorn: 289 @ echo "OK to upload coverage to https://coverage.io [y/N]:" 290 @ read yn; test "$$yn" = "y" 291 292upload-check-coverage: 293 @ if [ "x${COMMIT}" = "x" ]; then echo "COMMIT required"; exit 1; fi 294 @ if [ "x${TOKEN}" = "x" ]; then echo "TOKEN required"; exit 1; fi 295 curl -s https://codecov.io/bash | bash -s - -C ${COMMIT} -t ${TOKEN} 296 297force-check-coverage: coverage upload-check-coverage 298 299check-coverage: coverage yorn upload-check-coverage 300 301endif 302