crosstool-ng/scripts/build/debug/500-strace.sh
Chris Packham 3fa241a4e1 build: debug: strace: Add -D__USE_MISC to target CFLAGS
Similar to commit ca45a8f9 ("Add -D__GLIBC__ to target CFLAGS") newer
versions of strace bundle the kernel headers which cause build errors
such as:

[ALL  ]    In file included from /home/x-tool/.build/arm-unknown-linux-musleabi/src/strace/bundled/linux/include/uapi/linux/in6.h:26,
[ALL  ]                     from /home/x-tool/.build/arm-unknown-linux-musleabi/src/strace/bundled/linux/include/uapi/linux/if_bridge.h:19,
[ALL  ]                     from /home/x-tool/.build/arm-unknown-linux-musleabi/src/strace/src/rtnl_mdb.c:16:
[ERROR] /home/x-tool/.build/arm-unknown-linux-musleabi/src/strace/bundled/linux/include/uapi/linux/libc-compat.h:109: error: "__UAPI_DEF_IN6_ADDR_ALT" redefined [-Werror]
[ALL  ]      109 | #define __UAPI_DEF_IN6_ADDR_ALT  1
[ALL  ]          |
[ALL  ]    In file included from /home/x-tool/.build/arm-unknown-linux-musleabi/src/strace/src/rtnl_mdb.c:15:
[ALL  ] /home/x-tool/x-tools/arm-unknown-linux-musleabi/arm-unknown-linux-musleabi/sysroot/usr/include/netinet/in.h:401: note: this is the location of the previous definition
[ALL  ]      401 | #define __UAPI_DEF_IN6_ADDR_ALT 0
[ALL  ]          |
[ALL  ]    cc1: all warnings being treated as errors

By defining __USE_MISC we get __UAPI_DEF_IN6_ADDR_ALT defined in a
compatible manner.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
2021-03-30 12:58:47 +13:00

53 lines
1.6 KiB
Bash

# Build script for strace
do_debug_strace_get()
{
CT_Fetch STRACE
}
do_debug_strace_extract()
{
CT_ExtractPatch STRACE
}
do_debug_strace_build()
{
local cflags="${CT_ALL_TARGET_CFLAGS}"
CT_DoStep INFO "Installing strace"
if [ "${CT_LIBC_MUSL}" = "y" ]; then
# Otherwise kernel headers cause errors when included, e.g.
# <netinet/in.h> and <linux/in6.h>. Kernel's libc-compat.h
# only cares about GLIBC. uClibc-ng does the same
# internally, pretending it's GLIBC for kernel headers inclusion.
cflags+=" -D__GLIBC__ -D__USE_MISC"
fi
CT_mkdir_pushd "${CT_BUILD_DIR}/build-strace"
CT_DoLog EXTRA "Configuring strace"
CT_DoExecLog CFG \
CC="${CT_TARGET}-${CT_CC}" \
CFLAGS="${cflags}" \
LDFLAGS="${CT_ALL_TARGET_LDFLAGS}" \
CPP="${CT_TARGET}-cpp" \
LD="${CT_TARGET}-ld" \
${CONFIG_SHELL} \
"${CT_SRC_DIR}/strace/configure" \
--build=${CT_BUILD} \
--host=${CT_TARGET} \
--prefix=/usr \
--enable-mpers=check
CT_DoLog EXTRA "Building strace"
CT_DoExecLog ALL make
CT_DoLog EXTRA "Installing strace"
CT_DoExecLog ALL make DESTDIR="${CT_DEBUGROOT_DIR}" install
CT_Popd
CT_EndStep
}