Under armhf, jogl fail to build with the following error message:
[cc] Starting link
[cc] gcc -fpic -march=armv5te -marm -mfloat-abi=softfp -nostdlib -Wl,-Bdynamic -static-libgcc -shared -o libnativewindow_x11.so NativewindowCommon.o Xmisc.o X11Lib_JNI.o XineramaHelper.o -lX11 -lXxf86vm -lXrender
[cc] /usr/bin/ld: error: /usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../arm-linux-gnueabihf/libXrender.so uses VFP register arguments, libnativewindow_x11.so does not
[cc] /usr/bin/ld: failed to merge target specific data of file /usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../arm-linux-gnueabihf/libXrender.so
[cc] collect2: ld returned 1 exit status
Full log is available here:
Sylvestre, is it still reproducible?
We fixed it in Debian. I will send you the patch asap.
Created attachment 444 [details]
actorize the arm detection and manage arm hard flot (armv4 => armv7)
You will find the patch attached
(In reply to comment #4)
> You will find the patch attached
Thank you very much. The condition should be moved into another file in order to reduce code duplication.
which condition ? :)
(In reply to comment #6)
> which condition ? :)
Created attachment 445 [details]
factorize the arm detection and manage arm hard flot (armv4 => armv7)
(In reply to comment #8)
> Created attachment 445 [details]
> factorize the arm detection and manage arm hard flot (armv4 => armv7)
> My bad
This patch would break our crosscompilation,
due to removal of the cross-config setup.
The isLinuxARM should belong in gluegen-cpptasks-base.xml.
All you actually do is removing gluegen's cc/ld config 'compiler.cfg.linux.armv6', etc.
Hence it would be better allow an alternative cc/ld config suitable for debian (e.g. wheezy setup).
Since I do have wheezy here usually, I will test this.
Use toolchain default arch & float options for default arm cc/ld target in make/gluegen-cpptasks-base.xml
Specialized arch & float arm options are defined in
- lib/gluegen-cpptasks-linux-armv6.xml (armv5te + softfp), or
- lib/gluegen-cpptasks-linux-armv6hf.xml (armv6 + hardfp)
TODO: Walk through joal, jogl and jocl ..
Your case is a build==host, i.e. non crosscompilation environment.
We have to properties:
- isAbiEabiGnuArmel (implicit if isAndroidARMv6 or isLinuxARMv6)
- isAbiEabiGnuArmhf (shall be declared explicit)
Since we cannot detect at build time (actually we could utilizing our elf reader or 'readelf',
but do-not right now), the property 'isAbiEabiGnuArmhf' should be defined
if you are building on hard-float!
This is required to set property 'isLinuxARMv6Armhf' or 'isLinuxARMv6Armel'
which in turn determines the property 'os.and.arch'.
'os.and.arch' will define the native JAR file names, which format is coded
in our build system and runtime to pick up the proper native jar files.
@Sylvestre: So you have to set ant property 'isAbiEabiGnuArmhf' in your build.
Pls simply ignore the fact that we use '*arm6*' names, it shall not matter.
We currently map all the following to is*ARMv6:
<os arch="arm" />
<os arch="armv6" />
<os arch="armv7" />
If more 'arm' property mappings are indeed required due to different
'os arch' reportings .. we can map them as well.
The latter must be also done in our java code to work properly.
done, latest builds went through - modules manually validated.