Update: need help. I found the problem.
OpenSuSE defines, by default, the CONFIG_SITE as: CONFIG_SITE=/usr/share/site/x86_64-unknown-linux-gnu This is defined in /etc/profile.d/site.sh from package site-config*.rpm, described as: Site configuration for autoconf based configure scripts provides smart defaults for paths that are not specified. Now, when building OpenWRT, if the CONFIG_SITE is defined (even empty), its value is replaced by $TOPDIR/include/site/i486-openwrt-linux-uclibc, that is actually the target and not the host. This might work for target compilation but it will definitely fail for host compilation. As a workaround, just unset the CONFIG_SITE before make. Now, how to fix fix? It affects trunk and BB. Regards, --- Luiz Angelo Daros de Luca, Me. luizl...@gmail.com 2014-08-28 20:19 GMT-03:00 Luiz Angelo Daros de Luca <luizl...@gmail.com>: > Hello, > > I'm trying to compile OpenWRT on an OpenSuSE 13.1 x86_64 targeting x86 > generic (default config). However, I'm getting a strange behavior. In thunk > and BB, some packages that compiles for host machine are having problems > with pointer size: > > openwrt/trunk/build_dir/host/grub-2.02~beta2 $ arch > x86_64 > openwrt/trunk/build_dir/host/grub-2.02~beta2 $ grep SIZEOF_VOID_P config*h > config.h:#define BUILD_SIZEOF_VOID_P 8 > *config-util.h:#define SIZEOF_VOID_P 4* > > SIZEOF_VOID_P in host should be 8 if compiled for x86_64. And I get x86_64 > binaries: > > $ file build_dir/host/grub-2.02~beta2/grub-install > build_dir/host/grub-2.02~beta2/grub-install: *ELF 64-bit* LSB executable, > x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for > GNU/Linux 2.6.32, BuildID[sha1]=5082730f329f77b19783a7d9f6128bc6f3a45b10, > not stripped > > I also get related warnings: > > ./include/grub/crypto.h:286:9: warning: cast from pointer to integer of > different size [-Wpointer-to-int-cast] > || ((grub_addr_t) outptr & (sizeof (grub_uint64_t) - 1)))) > > As it compiles x86_64 program considering a pointer size from 32-bit, > programs did not work. > > If I run the configure manually (with same args and PATH), the problem is > not present: > > trunk/build_dir/host/grub-2.02~beta2.new $ grep SIZEOF_VOID_P config*h > config.h:#define BUILD_SIZEOF_VOID_P 8 > *config-util.h:#define SIZEOF_VOID_P 8* > > I isolated the problem to be the usage of > CONFIG_SITE=/home/REDETRESC/luizluca/prog-local/openwrt/trunk/include/site/i486-openwrt-linux-uclibc > > Is the usage of i486-openwrt-linux-uclibc expected? Should it be > x86_64-openwrt-linux-uclibc for host compile? > > In Ubuntu, I get no problem. > > In AA, I had no problem. The configure args from grub in AA and grub2 from > BB/trunk have some differences. In AA, I have a single > --target=x86_64-suse-linux but grub binaries are 32bit (but other > host/compile packages are 64-bit). > > In BB/trunk I have duplicated --target= arg in configure. The first is > --target=x86_64-suse-linux but the second one is > --target=i486-openwrt-linux-uclibc. This might trigger cross compiling. > > This is host configure in BB/trunk: > > (cd > /home/REDETRESC/luizluca/prog-local/openwrt/trunk/build_dir/host/grub-2.02~beta2/; > if [ -x configure ]; then cp -fpR > /home/REDETRESC/luizluca/prog-local/openwrt/trunk/scripts/config.{guess,sub} > /home/REDETRESC/luizluca/prog-local/openwrt/trunk/build_dir/host/grub-2.02~beta2// > && /bin/bash ./configure CC="gcc" CFLAGS="-O2 > -I/home/REDETRESC/luizluca/prog-local/openwrt/trunk/staging_dir/host/include > -g" > CPPFLAGS="-I/home/REDETRESC/luizluca/prog-local/openwrt/trunk/staging_dir/host/include" > LDFLAGS="-L/home/REDETRESC/luizluca/prog-local/openwrt/trunk/staging_dir/host/lib" > SHELL="/bin/bash" *--target=x86_64-suse-linux *--host=x86_64-suse-linux > --build=x86_64-suse-linux --program-prefix="" --program-suffix="" > --prefix=/home/REDETRESC/luizluca/prog-local/openwrt/trunk/staging_dir/host > --exec-prefix=/home/REDETRESC/luizluca/prog-local/openwrt/trunk/staging_dir/host > --sysconfdir=/home/REDETRESC/luizluca/prog-local/openwrt/trunk/staging_dir/host/etc > --localstatedir=/home/REDETRESC/luizluca/prog-local/openwrt/trunk/staging_dir/host/var > --sbindir=/home/REDETRESC/luizluca/prog-local/openwrt/trunk/staging_dir/host/bin* > --target=i486-openwrt-linux-*uclibc > --sbindir="/home/REDETRESC/luizluca/prog-local/openwrt/trunk/staging_dir/host/bin" > --disable-werror --disable-libzfs --disable-nls ; fi ) > configure: loading site script > /home/REDETRESC/luizluca/prog-local/openwrt/trunk/include/site/i486-openwrt-linux-uclibc > configure: loading site script > /home/REDETRESC/luizluca/prog-local/openwrt/trunk/include/site/i486-openwrt-linux-uclibc > checking build system type... *x86_64-suse-linux-gnu* > checking host system type...* x86_64-suse-linux-gnu* > checking target system type...* i486-openwrt-linux-uclibc* > > In Makefile, I have: > > package/boot/grub2/Makefile: > 54 HOST_CONFIGURE_ARGS += \ > 55 --target=$(REAL_GNU_TARGET_NAME) \ > > If I remove target, it does not change. > > Do you guys have any clue? > > Regards, > > --- > Luiz Angelo Daros de Luca, Me. > luizl...@gmail.com >
_______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel