[Huawei Ideos X5 U8800] ksatta:
edit: The stock kernel can be built following this thread.

I'm trying to build the stock kernel from source (the one from huaweidevice). I'm running Ubuntu 10.10 64-bit.

I've gotten this far:

- I've extracted config from phone /proc/config.gz and copied it to kernel/.config

- I went through this guide: source.android.com source initializing.html

- I created some symbolic links to get rid of file not found errors when compiling:

kernel-2.6.32-U8800-Froyo/kernel/net/netfilter$ ln -s xt_connmark.c xt_CONNMARK.c

kernel-2.6.32-U8800-Froyo/kernel/net/netfilter$ ln -s xt_HL.c xt_hl.c

kernel-2.6.32-U8800-Froyo/kernel/net/netfilter$ ln -s xt_MARK.c xt_mark.c

kernel-2.6.32-U8800-Froyo/kernel/net/ipv4/netfilter$ ln -s ipt_ECN.c ipt_ecn.c

kernel-2.6.32-U8800-Froyo/kernel/include/linux/netfilter$ ln -s xt_mark.h xt_MARK.h

kernel-2.6.32-U8800-Froyo/kernel/include/linux/netfilter_ipv4$ ln -s ipt_ecn.h ipt_ECN.h

kernel-2.6.32-U8800-Froyo/kernel/include/linux/netfilter$ ln -s xt_DSCP.h xt_dscp.h

kernel-2.6.32-U8800-Froyo/kernel/include/linux/netfilter_ipv4$ ln -s ipt_ttl.h ipt_TTL.h

kernel-2.6.32-U8800-Froyo/kernel/include/linux/netfilter_ipv6$ ln -s ip6t_hl.h ip6t_HL.h

Now for the cross compilation I've tried 3 different toolchains:

- The ones from developer.android.com sdk ndk index.html

- and codesourcery.com sgpp lite arm portal package8734/public/arm-none-eabi/arm-2011.03-42-arm-none-eabi-i686-pc-linux-gnu.tar.bz2

then I've tried compiling with:

make -j8 ARCH=arm CROSS_COMPILE=.../android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-

and

make -j8 ARCH=arm CROSS_COMPILE=.../android-ndk-r5b/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin/arm-eabi-

and

make -j8 ARCH=arm CROSS_COMPILE=.../arm-2011.03/bin/arm-none-eabi-

they all give me output similar to this (this is with the 4.4.0 toolchain):

CHK include/linux/version.h
SYMLINK include/asm -> include/asm-arm
make[1]: `include/asm-arm/mach-types.h' is up to date.
CHK include/linux/utsrelease.h
CALL scripts/checksyscalls.sh
CHK include/linux/compile.h
CC net/netfilter/xt_MARK.o
CC net/ipv4/netfilter/ipt_ecn.o
CC net/netfilter/xt_NFQUEUE.o
CC net/ipv4/netfilter/ipt_NETMAP.o
CC net/netfilter/xt_comment.o
CC net/netfilter/xt_connlimit.o
net/netfilter/xt_MARK.c: In function 'mark_tg':
net/netfilter/xt_MARK.c:32: error: dereferencing pointer to incomplete type
net/netfilter/xt_MARK.c:32: error: dereferencing pointer to incomplete type
net/netfilter/xt_MARK.c: At top level:
net/netfilter/xt_MARK.c:41: error: invalid application of 'sizeof' to incomplete type 'struct xt_mark_tginfo2'
make[2]: *** [net/netfilter/xt_MARK.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CC net/ipv4/netfilter/ipt_REDIRECT.o
CC net/ipv4/netfilter/ipt_REJECT.o
cc1: warnings being treated as errors
net/ipv4/netfilter/ipt_ecn.c:29: error: 'struct ipt_ECN_info' declared inside parameter list
net/ipv4/netfilter/ipt_ecn.c:29: error: its scope is only this definition or declaration, which is probably not what you want
net/ipv4/netfilter/ipt_ecn.c: In function 'set_ect_ip':
net/ipv4/netfilter/ipt_ecn.c:33: error: 'XT_DSCP_MASK' undeclared (first use in this function)
net/ipv4/netfilter/ipt_ecn.c:33: error: (Each undeclared identifier is reported only once
net/ipv4/netfilter/ipt_ecn.c:33: error: for each function it appears in.)
net/ipv4/netfilter/ipt_ecn.c:33: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:40: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c: At top level:
net/ipv4/netfilter/ipt_ecn.c:48: error: 'struct ipt_ECN_info' declared inside parameter list
net/ipv4/netfilter/ipt_ecn.c: In function 'set_ect_tcp':
net/ipv4/netfilter/ipt_ecn.c:58: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:58: error: 'IPT_ECN_OP_SET_ECE' undeclared (first use in this function)
net/ipv4/netfilter/ipt_ecn.c:59: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:60: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:60: error: 'IPT_ECN_OP_SET_CWR' undeclared (first use in this function)
net/ipv4/netfilter/ipt_ecn.c:61: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:69: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:70: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:71: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:72: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c: In function 'ecn_tg':
net/ipv4/netfilter/ipt_ecn.c:84: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:84: error: 'IPT_ECN_OP_SET_IP' undeclared (first use in this function)
net/ipv4/netfilter/ipt_ecn.c:85: error: passing argument 2 of 'set_ect_ip' from incompatible pointer type
net/ipv4/netfilter/ipt_ecn.c:29: note: expected 'const struct ipt_ECN_info *' but argument is of type 'const struct ipt_ECN_info *'
net/ipv4/netfilter/ipt_ecn.c:88: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:88: error: 'IPT_ECN_OP_SET_ECE' undeclared (first use in this function)
net/ipv4/netfilter/ipt_ecn.c:88: error: 'IPT_ECN_OP_SET_CWR' undeclared (first use in this function)
net/ipv4/netfilter/ipt_ecn.c:90: error: passing argument 2 of 'set_ect_tcp' from incompatible pointer type
net/ipv4/netfilter/ipt_ecn.c:48: note: expected 'const struct ipt_ECN_info *' but argument is of type 'const struct ipt_ECN_info *'
net/ipv4/netfilter/ipt_ecn.c: In function 'ecn_tg_check':
net/ipv4/netfilter/ipt_ecn.c:101: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:101: error: 'IPT_ECN_OP_MASK' undeclared (first use in this function)
net/ipv4/netfilter/ipt_ecn.c:103: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:106: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:106: error: 'XT_DSCP_MASK' undeclared (first use in this function)
net/ipv4/netfilter/ipt_ecn.c:108: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:111: error: dereferencing pointer to incomplete type
net/ipv4/netfilter/ipt_ecn.c:111: error: 'IPT_ECN_OP_SET_ECE' undeclared (first use in this function)
net/ipv4/netfilter/ipt_ecn.c:111: error: 'IPT_ECN_OP_SET_CWR' undeclared (first use in this function)
net/ipv4/netfilter/ipt_ecn.c: At top level:
net/ipv4/netfilter/ipt_ecn.c:124: error: invalid application of 'sizeof' to incomplete type 'struct ipt_ECN_info'
make[3]: *** [net/ipv4/netfilter/ipt_ecn.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[1]: *** [net/netfilter] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: *** [net/ipv4/netfilter] Error 2
make[1]: *** [net/ipv4] Error 2
make: *** [net] Error 2

sorry for the messed up links, I'm not allowed to post links (yet).

Any ideas how to get forward?

The reason I'm doing this is that I want to fix the bug that the internal mic is disabled when a stereo headphone / or a 3.5mm jack - 2xrca cable is plugged in. I think I can fix it from kernel-2.6.32-U8800-Froyo/kernel/arch/arm/mach-msm/rpc_server_handset.c, but first I have to get my build environment working :)