[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] tools/configure: generate stubs and long-double 32-bit headers if needed
The gnu/stubs-32.h and bits/long-double-32.h headers are required to build hvmloader but are not always available in 64-bit build environments. To avoid introducing a build requirement on 32-bit multilib generate versions of them from the 64-bit equivalent header. This patch enables the removal of downstream patching that has been carried in the Yocto/OpenEmbedded meta-virtualization layer since 2012. Signed-off-by: Christopher Clark <christopher.clark6@xxxxxxxxxxxxxx> --- tools/configure | 48 ++++++++++++++++++++++++++++++++++++++++++++++ tools/configure.ac | 24 +++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/tools/configure b/tools/configure index 977a8837c3..29cca6267a 100755 --- a/tools/configure +++ b/tools/configure @@ -9769,7 +9769,55 @@ else systemd=n fi +# If 32-bit stubs header is not already available, check for the 64-bit one +# and generate a 32-bit stubs header +ac_fn_c_check_header_mongrel "$LINENO" "gnu/stubs-32.h" "ac_cv_header_gnu_stubs_32_h" "$ac_includes_default" +if test "x$ac_cv_header_gnu_stubs_32_h" = xyes; then : +else + + ac_fn_c_check_header_mongrel "$LINENO" "gnu/stubs-64.h" "ac_cv_header_gnu_stubs_64_h" "$ac_includes_default" +if test "x$ac_cv_header_gnu_stubs_64_h" = xyes; then : + + echo '#include <gnu/stubs-64.h>' >conf-stubs.c + SIXTY_FOUR_HDR=`$CC -M conf-stubs.c | grep '/stubs-64.h$'` + rm conf-stubs.c + mkdir -p include/gnu + cat "${SIXTY_FOUR_HDR}" | \ + grep -v 'stub_bdflush\|stub_getmsg\|stub_putmsg' >include/gnu/stubs-32.h + echo \#define __stub___kernel_cosl >> include/gnu/stubs-32.h + echo \#define __stub___kernel_sinl >> include/gnu/stubs-32.h + echo \#define __stub___kernel_tanl >> include/gnu/stubs-32.h + +else + as_fn_error $? "" "$LINENO" 5No gnu stubs headers found +fi + + +fi + +# If 32-bit long-double header is not already available, check for the 64-bit +# one and copy it +ac_fn_c_check_header_mongrel "$LINENO" "bits/long-double-32.h" "ac_cv_header_bits_long_double_32_h" "$ac_includes_default" +if test "x$ac_cv_header_bits_long_double_32_h" = xyes; then : + +else + + ac_fn_c_check_header_mongrel "$LINENO" "bits/long-double-64.h" "ac_cv_header_bits_long_double_64_h" "$ac_includes_default" +if test "x$ac_cv_header_bits_long_double_64_h" = xyes; then : + + echo '#include <bits/long-double-64.h>' >conf-double.c + SIXTY_FOUR_HDR=`$CC -M conf-double.c | grep '/long-double-64.h$'` + rm conf-double.c + mkdir -p include/bits + cat "${SIXTY_FOUR_HDR}" >include/bits/long-double-32.h + +else + as_fn_error $? "" "$LINENO" 5No long-double headers found +fi + + +fi if test "x$systemd" = "xy"; then : diff --git a/tools/configure.ac b/tools/configure.ac index 8d86c42de8..769406e9ca 100644 --- a/tools/configure.ac +++ b/tools/configure.ac @@ -488,4 +488,28 @@ AC_ARG_ENABLE([pvshim], ]) AC_SUBST(pvshim) +# If 32-bit stubs header is not already available, check for the 64-bit one +# and generate a 32-bit stubs header +AC_CHECK_HEADER([gnu/stubs-32.h], [], [ + AC_CHECK_HEADER([gnu/stubs-64.h], [ + echo '#include <gnu/stubs-64.h>' >conf-stubs.c + SIXTY_FOUR_HDR=`$CC -M conf-stubs.c | grep '/stubs-64.h$'` + rm conf-stubs.c + mkdir -p include/gnu + cat "${SIXTY_FOUR_HDR}" | \ + grep -v 'stub_bdflush\|stub_getmsg\|stub_putmsg' >include/gnu/stubs-32.h + echo \#define __stub___kernel_cosl >> include/gnu/stubs-32.h + echo \#define __stub___kernel_sinl >> include/gnu/stubs-32.h + echo \#define __stub___kernel_tanl >> include/gnu/stubs-32.h + ], [AC_MSG_ERROR[No gnu stubs headers found]], []) ], []) + +AC_CHECK_HEADER([bits/long-double-32.h], [], [ + AC_CHECK_HEADER([bits/long-double-64.h], [ + echo '#include <bits/long-double-64.h>' >conf-double.c + SIXTY_FOUR_HDR=`$CC -M conf-double.c | grep '/long-double-64.h$'` + rm conf-double.c + mkdir -p include/bits + cat "${SIXTY_FOUR_HDR}" >include/bits/long-double-32.h + ], [AC_MSG_ERROR[No long-double headers found]], []) ], []) + AC_OUTPUT() -- 2.17.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |