forked from Mirror/frr
build: pre-generate built headers in configure
zebra.h includes route_types.h, which means almost all of our Makefile targets have a dependency on route_types.h. While BUILT_SOURCES ensures that this dependency is fulfilled on a "make all", this doesn't work when building specific targets (e.g. "make lib/libfrr.la"). There seems to be no good way to add a dependency on everything, so the best fix for this is to just generate the file during ./configure. (The Makefile rule is still there, so if route_types.txt is changed, route_types.h will be rebuilt.) This only affects "initial" builds from a clean directory and/or builds with --disable-dependency-tracking; other than that gcc will output Makefile dependencies during compilation so that route_types.h will become a dependency for all output files. gitversion.h has the same problem on a smaller scope. command_lex.h & command_parse.h *don't* have the problem because they're only used in specific files, and these files have the dependency explicitly listed in the Makefile. Hence, they can also be removed from BUILT_SOURCES. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
parent
cde8cd9d65
commit
306ed6816a
28
configure.ac
28
configure.ac
|
@ -1840,6 +1840,34 @@ AC_CONFIG_FILES([solaris/Makefile])
|
||||||
|
|
||||||
AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
|
AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
|
||||||
|
|
||||||
|
AC_CONFIG_COMMANDS([lib/route_types.h], [
|
||||||
|
dst="${ac_abs_top_builddir}/lib/route_types.h"
|
||||||
|
${PERL} "${ac_abs_top_srcdir}/lib/route_types.pl" \
|
||||||
|
< "${ac_abs_top_srcdir}/lib/route_types.txt" \
|
||||||
|
> "${dst}.tmp"
|
||||||
|
test -f "${dst}" \
|
||||||
|
&& diff "${dst}.tmp" "${dst}" >/dev/null 2>/dev/null \
|
||||||
|
&& rm "${dst}.tmp" \
|
||||||
|
|| mv "${dst}.tmp" "${dst}"
|
||||||
|
], [
|
||||||
|
PERL="$PERL"
|
||||||
|
])
|
||||||
|
|
||||||
|
AS_IF([test "x$with_pkg_git_version" = "xyes"], [
|
||||||
|
AC_CONFIG_COMMANDS([lib/gitversion.h], [
|
||||||
|
dst="${ac_abs_top_builddir}/lib/gitversion.h"
|
||||||
|
${PERL} "${ac_abs_top_srcdir}/lib/gitversion.pl" \
|
||||||
|
"${ac_abs_top_srcdir}" \
|
||||||
|
> "${dst}.tmp"
|
||||||
|
test -f "${dst}" \
|
||||||
|
&& diff "${dst}.tmp" "${dst}" >/dev/null 2>/dev/null \
|
||||||
|
&& rm "${dst}.tmp" \
|
||||||
|
|| mv "${dst}.tmp" "${dst}"
|
||||||
|
], [
|
||||||
|
PERL="$PERL"
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
## Hack, but working solution to avoid rebuilding of frr.info.
|
## Hack, but working solution to avoid rebuilding of frr.info.
|
||||||
## It's already in CVS until texinfo 4.7 is more common.
|
## It's already in CVS until texinfo 4.7 is more common.
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
Loading…
Reference in a new issue