mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
76f1b870d9
Currently the xfstest builds do not have any automatic dependency calculations. It relies on a separate make depend run to build or update dependency information. It also relies on an external makedepend binary. If that binary does not exist, the dependencies do not get calculated. To remove the dependency on makedepend, gcc can be used instead as it has a command to generate dependency information. This patch changes the dependency rule building to use gcc. In case anyone uses an old (several years) gcc compiler or a compiler that doesn't support gcc compatible dependency generation, a new configure check is added to turn off dependency checking so builds can still be done. To use the dependencies automatically, we need to use a special include makefile directive to include the build dependencies into the current makefile. Essentially once the dependencies are calculated, they can be included into the makefile and make will recalculate the build dependencies automatically based on that information. Hence we get a build that automatically calculates and keeps dependencies up to date without dependence on any external tools. Signed-off-by: Dave Chinner <david@fromorbit.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
147 lines
3.9 KiB
Plaintext
147 lines
3.9 KiB
Plaintext
#
|
|
# Check for specified utility (env var) - if unset, fail.
|
|
#
|
|
AC_DEFUN([AC_PACKAGE_NEED_UTILITY],
|
|
[ if test -z "$2"; then
|
|
echo
|
|
echo FATAL ERROR: $3 does not seem to be installed.
|
|
echo $1 cannot be built without a working $4 installation.
|
|
exit 1
|
|
fi
|
|
])
|
|
|
|
#
|
|
#check compiler can generate dependencies
|
|
#
|
|
AC_DEFUN([AC_PACKAGE_GCC_DEPS],
|
|
[AC_CACHE_CHECK(whether gcc -MM is supported,
|
|
ac_cv_gcc_nodeps,
|
|
[cat > conftest.c <<EOF
|
|
#include <stdio.h>
|
|
int main() { exit(0); }
|
|
EOF
|
|
ac_cv_gcc_nodeps=no
|
|
if ${CC} -MM conftest.c >/dev/null 2>&1; then
|
|
ac_cv_gcc_nodeps=yes
|
|
fi
|
|
rm -f conftest.c a.out
|
|
])
|
|
])
|
|
|
|
#
|
|
# Generic macro, sets up all of the global build variables.
|
|
# The following environment variables may be set to override defaults:
|
|
# CC MAKE LIBTOOL TAR ZIP eMAKEDEPEND AWK SED ECHO SORT
|
|
# MSGFMT MSGMERGE RPM
|
|
#
|
|
AC_DEFUN([AC_PACKAGE_UTILITIES],
|
|
[ AC_PROG_CC
|
|
cc="$CC"
|
|
AC_SUBST(cc)
|
|
AC_PACKAGE_NEED_UTILITY($1, "$cc", cc, [C compiler])
|
|
|
|
if test -z "$MAKE"; then
|
|
AC_PATH_PROG(MAKE, gmake,, /usr/bin:/usr/local/bin:/usr/freeware/bin)
|
|
fi
|
|
if test -z "$MAKE"; then
|
|
AC_PATH_PROG(MAKE, make,, /usr/bin)
|
|
fi
|
|
make=$MAKE
|
|
AC_SUBST(make)
|
|
AC_PACKAGE_NEED_UTILITY($1, "$make", make, [GNU make])
|
|
|
|
if test -z "$LIBTOOL"; then
|
|
AC_PATH_PROG(LIBTOOL, glibtool,, /usr/bin)
|
|
fi
|
|
if test -z "$LIBTOOL"; then
|
|
AC_PATH_PROG(LIBTOOL, libtool,, /usr/bin:/usr/local/bin:/usr/freeware/bin)
|
|
fi
|
|
libtool=$LIBTOOL
|
|
AC_SUBST(libtool)
|
|
AC_PACKAGE_NEED_UTILITY($1, "$libtool", libtool, [GNU libtool])
|
|
|
|
if test -z "$TAR"; then
|
|
AC_PATH_PROG(TAR, tar,, /usr/freeware/bin:/bin:/usr/local/bin:/usr/bin)
|
|
fi
|
|
tar=$TAR
|
|
AC_SUBST(tar)
|
|
if test -z "$ZIP"; then
|
|
AC_PATH_PROG(ZIP, gzip,, /bin:/usr/bin:/usr/local/bin:/usr/freeware/bin)
|
|
fi
|
|
|
|
zip=$ZIP
|
|
AC_SUBST(zip)
|
|
|
|
AC_PACKAGE_GCC_DEPS()
|
|
makedepend="$cc -MM"
|
|
if test $ac_cv_gcc_nodeps = no; then
|
|
makedepend=/bin/true
|
|
fi
|
|
AC_SUBST(makedepend)
|
|
|
|
if test -z "$AWK"; then
|
|
AC_PATH_PROG(AWK, awk,, /bin:/usr/bin)
|
|
fi
|
|
awk=$AWK
|
|
AC_SUBST(awk)
|
|
|
|
if test -z "$SED"; then
|
|
AC_PATH_PROG(SED, sed,, /bin:/usr/bin)
|
|
fi
|
|
sed=$SED
|
|
AC_SUBST(sed)
|
|
|
|
if test -z "$ECHO"; then
|
|
AC_PATH_PROG(ECHO, echo,, /bin:/usr/bin)
|
|
fi
|
|
echo=$ECHO
|
|
AC_SUBST(echo)
|
|
|
|
if test -z "$SORT"; then
|
|
AC_PATH_PROG(SORT, sort,, /bin:/usr/bin)
|
|
fi
|
|
sort=$SORT
|
|
AC_SUBST(sort)
|
|
|
|
dnl check if symbolic links are supported
|
|
AC_PROG_LN_S
|
|
|
|
if test "$enable_gettext" = yes; then
|
|
if test -z "$MSGFMT"; then
|
|
AC_PATH_PROG(MSGFMT, msgfmt,, /usr/bin:/usr/local/bin:/usr/freeware/bin)
|
|
fi
|
|
msgfmt=$MSGFMT
|
|
AC_SUBST(msgfmt)
|
|
AC_PACKAGE_NEED_UTILITY($1, "$msgfmt", msgfmt, gettext)
|
|
|
|
if test -z "$MSGMERGE"; then
|
|
AC_PATH_PROG(MSGMERGE, msgmerge,, /usr/bin:/usr/local/bin:/usr/freeware/bin)
|
|
fi
|
|
msgmerge=$MSGMERGE
|
|
AC_SUBST(msgmerge)
|
|
AC_PACKAGE_NEED_UTILITY($1, "$msgmerge", msgmerge, gettext)
|
|
fi
|
|
|
|
if test -z "$RPM"; then
|
|
AC_PATH_PROG(RPM, rpm,, /bin:/usr/bin:/usr/freeware/bin)
|
|
fi
|
|
rpm=$RPM
|
|
AC_SUBST(rpm)
|
|
|
|
dnl .. and what version is rpm
|
|
rpm_version=0
|
|
test -n "$RPM" && test -x "$RPM" && rpm_version=`$RPM --version \
|
|
| awk '{print $NF}' | awk -F. '{V=1; print $V}'`
|
|
AC_SUBST(rpm_version)
|
|
dnl At some point in rpm 4.0, rpm can no longer build rpms, and
|
|
dnl rpmbuild is needed (rpmbuild may go way back; not sure)
|
|
dnl So, if rpm version >= 4.0, look for rpmbuild. Otherwise build w/ rpm
|
|
if test $rpm_version -ge 4; then
|
|
AC_PATH_PROG(RPMBUILD, rpmbuild)
|
|
rpmbuild=$RPMBUILD
|
|
else
|
|
rpmbuild=$RPM
|
|
fi
|
|
AC_SUBST(rpmbuild)
|
|
])
|