diff options
Diffstat (limited to '')
-rw-r--r-- | lib/subdir.am | 608 |
1 files changed, 608 insertions, 0 deletions
diff --git a/lib/subdir.am b/lib/subdir.am new file mode 100644 index 0000000..d6defd7 --- /dev/null +++ b/lib/subdir.am @@ -0,0 +1,608 @@ +# +# libfrr +# + +lib_LTLIBRARIES += lib/libfrr.la +lib_libfrr_la_LDFLAGS = $(LIB_LDFLAGS) -version-info 0:0:0 -Xlinker -e_libfrr_version +lib_libfrr_la_LIBADD = $(LIBCAP) $(UNWIND_LIBS) $(LIBYANG_LIBS) $(LUA_LIB) $(UST_LIBS) $(LIBCRYPT) $(LIBDL) $(LIBM) + +lib_libfrr_la_SOURCES = \ + lib/agg_table.c \ + lib/atomlist.c \ + lib/base64.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/cspf.c \ + lib/csv.c \ + lib/debug.c \ + lib/defaults.c \ + lib/distribute.c \ + lib/explicit_bzero.c \ + lib/ferr.c \ + lib/filter.c \ + lib/filter_cli.c \ + lib/filter_nb.c \ + lib/frrcu.c \ + lib/frrlua.c \ + lib/frrscript.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/ldp_sync.c \ + lib/lib_errors.c \ + lib/lib_vty.c \ + lib/libfrr.c \ + lib/libfrr_trace.c \ + lib/linklist.c \ + lib/link_state.c \ + lib/log.c \ + lib/log_filter.c \ + lib/log_vty.c \ + lib/md5.c \ + lib/memory.c \ + lib/mlag.c \ + lib/module.c \ + lib/mpls.c \ + lib/srv6.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/ntop.c \ + lib/openbsd-tree.c \ + lib/pid_output.c \ + lib/plist.c \ + lib/prefix.c \ + lib/privs.c \ + lib/ptm_lib.c \ + lib/pullwr.c \ + lib/qobj.c \ + lib/ringbuf.c \ + lib/routemap.c \ + lib/routemap_cli.c \ + lib/routemap_northbound.c \ + lib/sbuf.c \ + lib/seqlock.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/strformat.c \ + lib/strlcat.c \ + lib/strlcpy.c \ + lib/systemd.c \ + lib/table.c \ + lib/termtable.c \ + lib/thread.c \ + lib/typerb.c \ + lib/typesafe.c \ + lib/vector.c \ + lib/vrf.c \ + lib/vty.c \ + lib/wheel.c \ + lib/workqueue.c \ + lib/xref.c \ + lib/yang.c \ + lib/yang_translator.c \ + lib/yang_wrappers.c \ + lib/zclient.c \ + lib/zlog.c \ + lib/zlog_5424.c \ + lib/zlog_5424_cli.c \ + lib/zlog_live.c \ + lib/zlog_targets.c \ + lib/printf/printf-pos.c \ + lib/printf/vfprintf.c \ + lib/printf/glue.c \ + lib/routing_nb.c \ + lib/routing_nb_config.c \ + # end + +nodist_lib_libfrr_la_SOURCES = \ + yang/frr-filter.yang.c \ + yang/frr-interface.yang.c \ + yang/frr-route-map.yang.c \ + yang/frr-route-types.yang.c \ + yang/frr-vrf.yang.c \ + yang/frr-routing.yang.c \ + yang/frr-nexthop.yang.c \ + yang/ietf/ietf-routing-types.yang.c \ + yang/ietf/ietf-interfaces.yang.c \ + yang/ietf/ietf-bgp-types.yang.c \ + yang/frr-module-translator.yang.c \ + # end + +vtysh_scan += \ + lib/distribute.c \ + lib/filter.c \ + lib/filter_cli.c \ + lib/if.c \ + lib/if_rmap.c \ + lib/keychain.c \ + lib/lib_vty.c \ + lib/log_vty.c \ + lib/nexthop_group.c \ + lib/plist.c \ + lib/routemap.c \ + lib/routemap_cli.c \ + lib/spf_backoff.c \ + lib/thread.c \ + lib/vrf.c \ + lib/vty.c \ + # end +# can be loaded as DSO - always include for vtysh +vtysh_scan += lib/agentx.c + +if SQLITE3 +lib_libfrr_la_LIBADD += $(SQLITE3_LIBS) +lib_libfrr_la_SOURCES += lib/db.c +endif + +clippy_scan += \ + lib/if.c \ + lib/filter_cli.c \ + lib/log_vty.c \ + lib/nexthop_group.c \ + lib/northbound_cli.c \ + lib/plist.c \ + lib/routemap_cli.c \ + lib/thread.c \ + lib/vty.c \ + lib/zlog_5424_cli.c \ + # end + +pkginclude_HEADERS += \ + lib/agg_table.h \ + lib/atomlist.h \ + lib/base64.h \ + lib/bfd.h \ + lib/bitfield.h \ + lib/buffer.h \ + lib/checksum.h \ + lib/mlag.h \ + lib/command.h \ + lib/command_graph.h \ + lib/command_match.h \ + lib/compiler.h \ + lib/cspf.h \ + lib/csv.h \ + lib/db.h \ + lib/debug.h \ + lib/defaults.h \ + lib/distribute.h \ + lib/ferr.h \ + lib/filter.h \ + lib/freebsd-queue.h \ + lib/frrlua.h \ + lib/frrscript.h \ + lib/frr_pthread.h \ + lib/frratomic.h \ + lib/frrcu.h \ + lib/frrstr.h \ + lib/getopt.h \ + lib/graph.h \ + lib/hash.h \ + lib/hook.h \ + lib/iana_afi.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/ldp_sync.h \ + lib/lib_errors.h \ + lib/lib_vty.h \ + lib/libfrr.h \ + lib/libfrr_trace.h \ + lib/libospf.h \ + lib/linklist.h \ + lib/link_state.h \ + lib/log.h \ + lib/log_vty.h \ + lib/md5.h \ + lib/memory.h \ + lib/module.h \ + lib/monotime.h \ + lib/mpls.h \ + lib/srv6.h \ + lib/network.h \ + lib/nexthop.h \ + lib/nexthop_group.h \ + lib/nexthop_group_private.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/prefix.h \ + lib/printfrr.h \ + lib/privs.h \ + lib/ptm_lib.h \ + lib/pullwr.h \ + lib/pw.h \ + lib/qobj.h \ + lib/queue.h \ + lib/ringbuf.h \ + lib/routemap.h \ + lib/route_opaque.h \ + lib/sbuf.h \ + lib/seqlock.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/srte.h \ + lib/stream.h \ + lib/systemd.h \ + lib/table.h \ + lib/termtable.h \ + lib/thread.h \ + lib/trace.h \ + lib/typerb.h \ + lib/typesafe.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/xref.h \ + lib/yang.h \ + lib/yang_translator.h \ + lib/yang_wrappers.h \ + lib/zclient.h \ + lib/zebra.h \ + lib/zlog.h \ + lib/zlog_5424.h \ + lib/zlog_live.h \ + lib/zlog_targets.h \ + lib/pbr.h \ + lib/routing_nb.h \ + \ + lib/assert/assert.h \ + # end + + +nodist_pkginclude_HEADERS += \ + lib/route_types.h \ + lib/version.h \ + # end + +noinst_HEADERS += \ + lib/clippy.h \ + lib/plist_int.h \ + lib/printf/printfcommon.h \ + lib/printf/printflocal.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 = $(AM_CFLAGS) $(SNMP_CFLAGS) -std=gnu11 +lib_libfrrsnmp_la_LDFLAGS = $(LIB_LDFLAGS) -version-info 0:0:0 +lib_libfrrsnmp_la_LIBADD = $(SNMP_LIBS) +lib_libfrrsnmp_la_SOURCES = \ + lib/agentx.c \ + lib/snmp.c \ + # end + + +# +# c-ares support +# +if CARES +lib_LTLIBRARIES += lib/libfrrcares.la +pkginclude_HEADERS += lib/resolver.h +vtysh_scan += lib/resolver.c +endif + +lib_libfrrcares_la_CFLAGS = $(AM_CFLAGS) $(CARES_CFLAGS) +lib_libfrrcares_la_LDFLAGS = $(LIB_LDFLAGS) -version-info 0:0:0 +lib_libfrrcares_la_LIBADD = $(CARES_LIBS) +lib_libfrrcares_la_SOURCES = \ + lib/resolver.c \ + #end + +# +# ZeroMQ support +# +if ZEROMQ +lib_LTLIBRARIES += lib/libfrrzmq.la +pkginclude_HEADERS += lib/frr_zmq.h +endif + +lib_libfrrzmq_la_CFLAGS = $(AM_CFLAGS) $(ZEROMQ_CFLAGS) +lib_libfrrzmq_la_LDFLAGS = $(LIB_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 = $(AM_CFLAGS) $(CONFD_CFLAGS) +lib_confd_la_LDFLAGS = $(MODULE_LDFLAGS) +lib_confd_la_LIBADD = lib/libfrr.la $(CONFD_LIBS) +lib_confd_la_SOURCES = lib/northbound_confd.c + +# +# Sysrepo support +# +if SYSREPO +module_LTLIBRARIES += lib/sysrepo.la +endif + +lib_sysrepo_la_CFLAGS = $(AM_CFLAGS) $(SYSREPO_CFLAGS) +lib_sysrepo_la_LDFLAGS = $(MODULE_LDFLAGS) +lib_sysrepo_la_LIBADD = lib/libfrr.la $(SYSREPO_LIBS) +lib_sysrepo_la_SOURCES = lib/northbound_sysrepo.c + +# +# gRPC northbound plugin +# +if GRPC +module_LTLIBRARIES += lib/grpc.la +endif + +lib_grpc_la_CXXFLAGS = $(WERROR) $(GRPC_CFLAGS) +lib_grpc_la_LDFLAGS = $(MODULE_LDFLAGS) +lib_grpc_la_LIBADD = lib/libfrr.la grpc/libfrrgrpc_pb.la $(GRPC_LIBS) +lib_grpc_la_SOURCES = lib/northbound_grpc.cpp + +# +# CLI utilities +# +noinst_PROGRAMS += \ + lib/grammar_sandbox \ + # end + +if BUILD_CLIPPY +noinst_PROGRAMS += lib/clippy +else +if HOSTTOOLS_CLIPPY +$(CLIPPY): + @$(MAKE) -C $(top_builddir)/hosttools lib/route_types.h lib/clippy +endif +endif + +lib_grammar_sandbox_SOURCES = \ + lib/grammar_sandbox_main.c +lib_grammar_sandbox_LDADD = \ + lib/libfrr.la + +lib_clippy_CPPFLAGS = $(CPPFLAGS_BASE) -D_GNU_SOURCE -DBUILDING_CLIPPY +lib_clippy_CFLAGS = $(AC_CFLAGS) $(PYTHON_CFLAGS) +lib_clippy_LDADD = $(PYTHON_LIBS) $(UST_LIBS) -lelf +# no $(SAN_FLAGS) here +lib_clippy_LDFLAGS = -export-dynamic $(AC_LDFLAGS) $(AC_LDFLAGS_EXEC) +lib_clippy_SOURCES = \ + lib/jhash.c \ + lib/clippy.c \ + lib/command_graph.c \ + lib/command_lex.l \ + lib/command_parse.y \ + lib/command_py.c \ + lib/defun_lex.l \ + lib/elf_py.c \ + lib/graph.c \ + lib/libfrr_trace.c \ + lib/memory.c \ + lib/typesafe.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 = $(CLIPPY) $(top_srcdir)/python/clidef.py + +SUFFIXES += _clippy.c +.c_clippy.c: + $(AM_V_CLIPPY) $(CLIPPY) $(top_srcdir)/python/clidef.py -o $@ $< + +# xrelfo, the ELF xref extractor + +AM_V_XRELFO = $(am__v_XRELFO_$(V)) +am__v_XRELFO_ = $(am__v_XRELFO_$(AM_DEFAULT_VERBOSITY)) +am__v_XRELFO_0 = @echo " XRELFO " $@; +am__v_XRELFO_1 = + +XRELFO_FLAGS = -Wlog-format -Wlog-args + +SUFFIXES += .xref +%.xref: % $(CLIPPY) + $(AM_V_XRELFO) $(CLIPPY) $(top_srcdir)/python/xrelfo.py $(WERROR) $(XRELFO_FLAGS) -o $@ $< + +# dependencies added in python/makefile.py +frr.xref: + $(AM_V_XRELFO) $(CLIPPY) $(top_srcdir)/python/xrelfo.py -o $@ $^ +all-am: frr.xref + +clean-xref: + -rm -rf $(xrefs) frr.xref +clean-local: clean-xref + +## 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/clippy-command_lex.$(OBJEXT): lib/command_parse.h +lib/clippy-command_parse.$(OBJEXT): lib/command_lex.h +lib/lib_clippy-command_lex.$(OBJEXT): lib/command_parse.h +lib/lib_clippy-command_parse.$(OBJEXT): lib/command_lex.h + +DISTCLEANFILES += lib/command_lex.h \ + lib/command_lex.c \ + lib/command_parse.h \ + lib/command_parse.c + +rt_enabled = + +if BABELD +rt_enabled += --enabled babeld +endif +if BFDD +rt_enabled += --enabled bfdd +endif +if BGPD +rt_enabled += --enabled bgpd +if ENABLE_BGP_VNC +rt_enabled += --enabled bgpd-vnc +endif +endif +if EIGRPD +rt_enabled += --enabled eigrpd +endif +if ISISD +rt_enabled += --enabled isisd +endif +if FABRICD +rt_enabled += --enabled fabricd +endif +if LDPD +rt_enabled += --enabled ldpd +endif +if NHRPD +rt_enabled += --enabled nhrpd +endif +if OSPFD +rt_enabled += --enabled ospfd +endif +if OSPF6D +rt_enabled += --enabled ospf6d +endif +if PBRD +rt_enabled += --enabled pbrd +endif +if PIMD +rt_enabled += --enabled pimd +endif +if RIPD +rt_enabled += --enabled ripd +endif +if RIPNGD +rt_enabled += --enabled ripngd +endif +if SHARPD +rt_enabled += --enabled sharpd +endif +if ZEBRA +rt_enabled += --enabled zebra +endif + +lib/route_types.h: $(top_srcdir)/lib/route_types.txt $(top_srcdir)/lib/route_types.pl + $(PERL) $(top_srcdir)/lib/route_types.pl $(rt_enabled) < $(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 +# unnecessary 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) |