# # libfrr # lib_LTLIBRARIES += lib/libfrr.la lib_libfrr_la_LDFLAGS = -version-info 0:0:0 -Xlinker -e_libfrr_version lib_libfrr_la_LIBADD = @LIBCAP@ $(UNWIND_LIBS) -lyang lib_libfrr_la_SOURCES = \ lib/agg_table.c \ lib/bfd.c \ lib/buffer.c \ lib/checksum.c \ lib/command.c \ lib/command_graph.c \ lib/command_lex.l \ lib/command_match.c \ lib/command_parse.y \ lib/csv.c \ lib/debug.c \ lib/distribute.c \ lib/event_counter.c \ lib/ferr.c \ lib/filter.c \ lib/frr_pthread.c \ lib/frrstr.c \ lib/getopt.c \ lib/getopt1.c \ lib/grammar_sandbox.c \ lib/graph.c \ lib/hash.c \ lib/hook.c \ lib/id_alloc.c \ lib/if.c \ lib/if_rmap.c \ lib/imsg-buffer.c \ lib/imsg.c \ lib/jhash.c \ lib/json.c \ lib/keychain.c \ lib/lib_errors.c \ lib/libfrr.c \ lib/linklist.c \ lib/log.c \ lib/md5.c \ lib/memory.c \ lib/memory_vty.c \ lib/module.c \ lib/mpls.c \ lib/network.c \ lib/nexthop.c \ lib/netns_linux.c \ lib/netns_other.c \ lib/nexthop_group.c \ lib/northbound.c \ lib/northbound_cli.c \ lib/northbound_db.c \ lib/openbsd-tree.c \ lib/pid_output.c \ lib/plist.c \ lib/pqueue.c \ lib/prefix.c \ lib/privs.c \ lib/ptm_lib.c \ lib/qobj.c \ lib/ringbuf.c \ lib/routemap.c \ lib/sbuf.c \ lib/sha256.c \ lib/sigevent.c \ lib/skiplist.c \ lib/sockopt.c \ lib/sockunion.c \ lib/spf_backoff.c \ lib/srcdest_table.c \ lib/stream.c \ lib/strlcat.c \ lib/strlcpy.c \ lib/systemd.c \ lib/table.c \ lib/termtable.c \ lib/thread.c \ lib/vector.c \ lib/vrf.c \ lib/vty.c \ lib/wheel.c \ lib/workqueue.c \ lib/yang.c \ lib/yang_translator.c \ lib/yang_wrappers.c \ lib/zclient.c \ lib/logicalrouter.c \ lib/lua.c \ # end nodist_lib_libfrr_la_SOURCES = \ yang/frr-interface.yang.c \ yang/frr-route-types.yang.c \ yang/frr-module-translator.yang.c \ # end vtysh_scan += \ $(top_srcdir)/lib/distribute.c \ $(top_srcdir)/lib/filter.c \ $(top_srcdir)/lib/if.c \ $(top_srcdir)/lib/if_rmap.c \ $(top_srcdir)/lib/keychain.c \ $(top_srcdir)/lib/logicalrouter.c \ $(top_srcdir)/lib/nexthop_group.c \ $(top_srcdir)/lib/plist.c \ $(top_srcdir)/lib/routemap.c \ $(top_srcdir)/lib/vrf.c \ $(top_srcdir)/lib/vty.c \ # end # can be loaded as DSO - always include for vtysh vtysh_scan += $(top_srcdir)/lib/agentx.c if SQLITE3 lib_libfrr_la_LIBADD += -lsqlite3 lib_libfrr_la_SOURCES += lib/db.c endif lib/if_clippy.c: $(CLIPPY_DEPS) lib/if.lo: lib/if_clippy.c lib/plist_clippy.c: $(CLIPPY_DEPS) lib/plist.lo: lib/plist_clippy.c lib/nexthop_group_clippy.c: $(CLIPPY_DEPS) lib/nexthop_group.lo: lib/nexthop_group_clippy.c lib/northbound_cli_clippy.c: $(CLIPPY_DEPS) lib/northbound_cli.lo: lib/northbound_cli_clippy.c pkginclude_HEADERS += \ lib/agg_table.h \ lib/bfd.h \ lib/bitfield.h \ lib/buffer.h \ lib/checksum.h \ lib/command.h \ lib/command_graph.h \ lib/command_match.h \ lib/compiler.h \ lib/csv.h \ lib/db.h \ lib/debug.h \ lib/distribute.h \ lib/event_counter.h \ lib/ferr.h \ lib/fifo.h \ lib/filter.h \ lib/freebsd-queue.h \ lib/frr_pthread.h \ lib/frratomic.h \ lib/frrstr.h \ lib/getopt.h \ lib/graph.h \ lib/hash.h \ lib/hook.h \ lib/id_alloc.h \ lib/if.h \ lib/if_rmap.h \ lib/imsg.h \ lib/ipaddr.h \ lib/jhash.h \ lib/json.h \ lib/keychain.h \ lib/lib_errors.h \ lib/libfrr.h \ lib/libospf.h \ lib/linklist.h \ lib/log.h \ lib/md5.h \ lib/memory.h \ lib/memory_vty.h \ lib/module.h \ lib/monotime.h \ lib/mpls.h \ lib/network.h \ lib/nexthop.h \ lib/nexthop_group.h \ lib/northbound.h \ lib/northbound_cli.h \ lib/northbound_db.h \ lib/ns.h \ lib/openbsd-queue.h \ lib/openbsd-tree.h \ lib/plist.h \ lib/pqueue.h \ lib/prefix.h \ lib/privs.h \ lib/ptm_lib.h \ lib/pw.h \ lib/qobj.h \ lib/queue.h \ lib/ringbuf.h \ lib/routemap.h \ lib/sbuf.h \ lib/sha256.h \ lib/sigevent.h \ lib/skiplist.h \ lib/smux.h \ lib/sockopt.h \ lib/sockunion.h \ lib/spf_backoff.h \ lib/srcdest_table.h \ lib/stream.h \ lib/systemd.h \ lib/table.h \ lib/termtable.h \ lib/thread.h \ lib/vector.h \ lib/vlan.h \ lib/vrf.h \ lib/vrf_int.h \ lib/vty.h \ lib/vxlan.h \ lib/wheel.h \ lib/workqueue.h \ lib/yang.h \ lib/yang_translator.h \ lib/yang_wrappers.h \ lib/zassert.h \ lib/zclient.h \ lib/zebra.h \ lib/logicalrouter.h \ lib/lua.h \ lib/pbr.h \ # end nodist_pkginclude_HEADERS += \ lib/route_types.h \ lib/version.h \ # end noinst_HEADERS += \ lib/clippy.h \ lib/log_int.h \ lib/plist_int.h \ #end # General note about module and module helper library (libfrrsnmp, libfrrzmq) # linking: If we're linking libfrr statically into daemons, we *must* remove # libfrr from modules because modules will always link it in dynamically and # thus 2 copies of libfrr will be loaded... hilarity ensues. # # Not linking libfrr into modules should generally work fine because the # executable refers to libfrr either way and the dynamic linker should make # libfrr available to modules. If some OS platform has a dynamic linker that # doesn't do that, libfrr needs to be readded to modules, but _only_ _if_ # it's not linked into daemons statically. # # SNMP support # if SNMP lib_LTLIBRARIES += lib/libfrrsnmp.la endif lib_libfrrsnmp_la_CFLAGS = $(WERROR) $(SNMP_CFLAGS) -std=gnu99 lib_libfrrsnmp_la_LDFLAGS = -version-info 0:0:0 lib_libfrrsnmp_la_LIBADD = $(SNMP_LIBS) lib_libfrrsnmp_la_SOURCES = \ lib/agentx.c \ lib/snmp.c \ # end # # ZeroMQ support # if ZEROMQ lib_LTLIBRARIES += lib/libfrrzmq.la pkginclude_HEADERS += lib/frr_zmq.h endif lib_libfrrzmq_la_CFLAGS = $(WERROR) $(ZEROMQ_CFLAGS) lib_libfrrzmq_la_LDFLAGS = -version-info 0:0:0 lib_libfrrzmq_la_LIBADD = $(ZEROMQ_LIBS) lib_libfrrzmq_la_SOURCES = \ lib/frr_zmq.c \ #end # # Tail-f's ConfD support # if CONFD module_LTLIBRARIES += lib/confd.la endif lib_confd_la_CFLAGS = $(WERROR) $(CONFD_CFLAGS) lib_confd_la_LDFLAGS = -avoid-version -module -shared -export-dynamic lib_confd_la_LIBADD = lib/libfrr.la -lconfd lib_confd_la_SOURCES = lib/northbound_confd.c # # Sysrepo support # if SYSREPO module_LTLIBRARIES += lib/sysrepo.la endif lib_sysrepo_la_CFLAGS = $(WERROR) lib_sysrepo_la_LDFLAGS = -avoid-version -module -shared -export-dynamic lib_sysrepo_la_LIBADD = lib/libfrr.la -lsysrepo lib_sysrepo_la_SOURCES = lib/northbound_sysrepo.c # # CLI utilities # noinst_PROGRAMS += \ lib/grammar_sandbox \ # end if BUILD_CLIPPY noinst_PROGRAMS += lib/clippy else $(HOSTTOOLS)lib/clippy: @$(MAKE) -C $(top_builddir)/$(HOSTTOOLS) lib/route_types.h lib/clippy endif lib_grammar_sandbox_SOURCES = \ lib/grammar_sandbox_main.c lib_grammar_sandbox_LDADD = \ lib/libfrr.la lib_clippy_CPPFLAGS = $(AM_CPPFLAGS) -D_GNU_SOURCE -DBUILDING_CLIPPY lib_clippy_CFLAGS = $(PYTHON_CFLAGS) lib_clippy_LDADD = $(PYTHON_LIBS) lib_clippy_LDFLAGS = -export-dynamic lib_clippy_SOURCES = \ lib/clippy.c \ lib/command_graph.c \ lib/command_lex.l \ lib/command_parse.y \ lib/command_py.c \ lib/defun_lex.l \ lib/graph.c \ lib/memory.c \ lib/vector.c \ # end # (global) clippy rules for all directories AM_V_CLIPPY = $(am__v_CLIPPY_$(V)) am__v_CLIPPY_ = $(am__v_CLIPPY_$(AM_DEFAULT_VERBOSITY)) am__v_CLIPPY_0 = @echo " CLIPPY " $@; am__v_CLIPPY_1 = CLIPPY_DEPS = $(HOSTTOOLS)lib/clippy $(top_srcdir)/python/clidef.py SUFFIXES = _clippy.c .proto .pb-c.c .pb-c.h .pb.h .c_clippy.c: @{ test -x $(top_builddir)/$(HOSTTOOLS)lib/clippy || \ $(MAKE) -C $(top_builddir)/$(HOSTTOOLS) lib/clippy; } $(AM_V_CLIPPY) $(top_builddir)/$(HOSTTOOLS)lib/clippy $(top_srcdir)/python/clidef.py -o $@ $< ## automake's "ylwrap" is a great piece of GNU software... not. .l.c: $(AM_V_LEX)$(am__skiplex) $(LEXCOMPILE) $< .y.c: $(AM_V_YACC)$(am__skipyacc) $(YACCCOMPILE) $< # # generated sources & extra foo # EXTRA_DIST += \ lib/command_lex.h \ lib/command_parse.h \ lib/gitversion.pl \ lib/route_types.pl \ lib/route_types.txt \ # end BUILT_SOURCES += \ lib/gitversion.h \ lib/route_types.h \ # end ## force route_types.h $(lib_clippy_OBJECTS): lib/route_types.h $(lib_libfrr_la_OBJECTS): lib/route_types.h AM_YFLAGS = -d -Dapi.prefix=@BISON_OPENBRACE@cmd_yy@BISON_CLOSEBRACE@ @BISON_VERBOSE@ lib/command_lex.h: lib/command_lex.c @if test ! -f $@; then rm -f "lib/command_lex.c"; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) "lib/command_lex.c"; else :; fi lib/command_lex.lo: lib/command_parse.h lib/command_parse.lo: lib/command_lex.h lib/lib_clippy-command_lex.$(OBJEXT): lib/command_parse.h lib/lib_clippy-command_parse.$(OBJEXT): lib/command_lex.h lib/route_types.h: $(top_srcdir)/lib/route_types.txt $(top_srcdir)/lib/route_types.pl @PERL@ $(top_srcdir)/lib/route_types.pl < $(top_srcdir)/lib/route_types.txt > $@ DISTCLEANFILES += lib/route_types.h if GIT_VERSION # bit of a trick here to always have up-to-date git stamps without triggering # unneccessary rebuilds. .PHONY causes the .tmp file to be rebuilt always, # but if we use that on gitversion.h it'll ripple through the .c file deps. # (even if gitversion.h's file timestamp doesn't change, make will think it # did, because of .PHONY...) PHONY_GITVERSION=lib/gitversion.h.tmp .SILENT: lib/gitversion.h lib/gitversion.h.tmp GITH=lib/gitversion.h lib/gitversion.h.tmp: $(top_srcdir)/.git @PERL@ $(top_srcdir)/lib/gitversion.pl $(top_srcdir) > ${GITH}.tmp lib/gitversion.h: lib/gitversion.h.tmp { test -f ${GITH} && diff -s -q ${GITH}.tmp ${GITH}; } || cp ${GITH}.tmp ${GITH} else PHONY_GITVERSION=lib/gitversion.h lib/gitversion.h: true endif .PHONY: $(PHONY_GITVERSION)