summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAlexey Neyman <stilor@att.net>2017-01-09 07:01:52 (GMT)
committerAlexey Neyman <stilor@att.net>2017-01-10 18:39:37 (GMT)
commitc69e593a9272ad186b6669bc5b12886890cea7fe (patch)
treefaf6c28589d312ef9be24fb448433cfcc5c05aa7 /scripts
parent37a5a09e6505b28deb7cb4aaa5643950e4f892e9 (diff)
Pick up <linux/ioctl.h> and friends from TARGET.
Otherwise, cross-compiling fails on non-Linux build machines. Signed-off-by: Alexey Neyman <stilor@att.net>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/build/debug/500-strace.sh30
1 files changed, 21 insertions, 9 deletions
diff --git a/scripts/build/debug/500-strace.sh b/scripts/build/debug/500-strace.sh
index 69408de..2961879 100644
--- a/scripts/build/debug/500-strace.sh
+++ b/scripts/build/debug/500-strace.sh
@@ -14,17 +14,29 @@ do_debug_strace_extract() {
do_debug_strace_build() {
CT_DoStep INFO "Installing strace"
- mkdir -p "${CT_BUILD_DIR}/build-strace"
- CT_Pushd "${CT_BUILD_DIR}/build-strace"
+
+ # Strace needs _IOC definitions, and it tries to pick them up from <linux/ioctl.h>.
+ # While cross-compiling on a non-Linux host, we don't have this header. Replacing
+ # <linux/ioctl.h> with <sys/ioctl.h>, as suggested by many internet "solutions",
+ # is wrong: for example, MacOS defines _IOC macros differently, and we need the
+ # definitions for the target!
+ # Hence, create a "window" into target includes.
+ CT_DoExecLog ALL mkdir -p "${CT_BUILD_DIR}/build-strace-headers"
+ for d in linux asm asm-generic; do
+ CT_DoExecLog ALL ln -sf "${CT_HEADERS_DIR}/${d}" "${CT_BUILD_DIR}/build-strace-headers/${d}"
+ done
+
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-strace"
CT_DoLog EXTRA "Configuring strace"
- CT_DoExecLog CFG \
- CC="${CT_TARGET}-gcc" \
- CPP="${CT_TARGET}-cpp" \
- LD="${CT_TARGET}-ld" \
- "${CT_SRC_DIR}/strace-${CT_STRACE_VERSION}/configure" \
- --build=${CT_BUILD} \
- --host=${CT_TARGET} \
+ CT_DoExecLog CFG \
+ CFLAGS_FOR_BUILD="-I ${CT_BUILD_DIR}/build-strace-headers" \
+ CC="${CT_TARGET}-gcc" \
+ CPP="${CT_TARGET}-cpp" \
+ LD="${CT_TARGET}-ld" \
+ "${CT_SRC_DIR}/strace-${CT_STRACE_VERSION}/configure" \
+ --build=${CT_BUILD} \
+ --host=${CT_TARGET} \
--prefix=/usr
CT_DoLog EXTRA "Building strace"