forked from Mirror/frr

Rather than running selected source files through the preprocessor and a bunch of perl regex'ing to get the list of all DEFUNs, use the data collected in frr.xref. This not only eliminates issues we've been having with preprocessor failures due to nonexistent header files, but is also much faster. Where extract.pl would take 5s, this now finishes in 0.2s. And since this is a non-parallelizable build step towards the end of the build (dependent on a lot of other things being done already), the speedup is actually noticeable. Also files containing CLI no longer need to be listed in `vtysh_scan` since the .xref data covers everything. `#ifndef VTYSH_EXTRACT_PL` checks are equally obsolete. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
593 lines
12 KiB
Plaintext
593 lines
12 KiB
Plaintext
#
|
|
# 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
|
|
|
|
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/orr_msg.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
|
|
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 $@ -c vtysh/vtysh_cmd.c $^
|
|
all-am: frr.xref
|
|
|
|
clean-xref:
|
|
-rm -rf $(xrefs) frr.xref
|
|
clean-local: clean-xref
|
|
|
|
CLEANFILES += vtysh/vtysh_cmd.c
|
|
vtysh/vtysh_cmd.c: frr.xref
|
|
@test -f $@ || rm -f frr.xref || true
|
|
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) frr.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)
|