On 07/12/14 07:27 AM, Michael Jones wrote:
Karel,

I have failed to figure out how to make this happen:

("target arch", "ArchARM {armISA = ARMv7, armISAExt = [VFPv3,NEON], armABI = 
HARD}”)


This is result of running ./configure on arm/ubuntu12.04 -- so I don't cross-compile, but rather compile natively. This is still preferred way to be able to run testsuite AFAIK...

I have added poky to the list of vendors in aclocal.m4 then configured like 
this:

/configure --target=arm-poky-linux-gnueabi --with-gcc=arm-poky-linux-gnueabi-gcc

But I end up with ARMv5.

I am new to Autotools and the Haskell build system, so I am not sure what 
controls this. I assume the idea is that the gcc cross-compiler compiles some 
code that checks for versions when it evaluates stuff like:

     AC_COMPILE_IFELSE([
         AC_LANG_PROGRAM(
             [],
             [#if defined(__ARM_ARCH_2__)  || \
                  defined(__ARM_ARCH_3__)  || \
                  defined(__ARM_ARCH_3M__) || \
                  defined(__ARM_ARCH_4__)  || \
                  defined(__ARM_ARCH_4T__) || \


You arm-poky-linux-gnueabi-gcc -v tells what? Also
arm-poky-linux-gnueabi-gcc -dM -E - < /dev/null may tell you something.

So I then suspect the compiler needs options like -mcpu=cortex-a9 -mfpu=neon to 
make the proper version defined, so that the code can check the architecture.

It depends on how the compiler is configured. -v will tell you. Mine looks like:

karel@panda:~$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabi/4.6/lto-wrapper
Target: arm-linux-gnueabi
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-float=softfp --with-fpu=vfpv3-d16 --with-mode=thumb --disable-werror --enable-checking=release --build=arm-linux-gnueabi --host=arm-linux-gnueabi --target=arm-linux-gnueabi
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)


Please note --with-arch=armv7-a --with-float=softfp --with-fpu=vfpv3-d16 --with-mode=thumb -- I'm sure you will also be able to build a cross-compiler using those option, so it'll generate ARMv7A code by default, use just half of VFPv3 regs (VFPv3-D16) and generate Thumbs isns by default (not ARM).

Karel
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to