From 5efbe805c553a2ac21a79386c3e2147858d4308b Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Thu, 19 Apr 2012 19:31:11 +0200
Subject: Relaxed Unix linker flags for Linux + Solaris ; Refined Linux Armv4
 flags

Relaxed Unix linker flags for Linux + Solaris
+  <linkerarg value="-nostdlib" />
+  <linkerarg value="-Bdynamic" />

Refined Linux Armv4 flags:
-      <compilerarg value="-msoft-float" />
+      <compilerarg value="-marm" />
+      <compilerarg value="-mfloat-abi=soft" />

Xerxes figured out these are required on pre-NEON and ARMv4 soft float boards,
the latter is true for Rasperry PI at least.
---
 make/gluegen-cpptasks-base.xml            | 58 +++++++++++++++++++++++--------
 make/lib/gluegen-cpptasks-linux-32bit.xml |  2 ++
 make/lib/gluegen-cpptasks-linux-armv4.xml |  7 +++-
 3 files changed, 52 insertions(+), 15 deletions(-)

diff --git a/make/gluegen-cpptasks-base.xml b/make/gluegen-cpptasks-base.xml
index 533f818..3185430 100755
--- a/make/gluegen-cpptasks-base.xml
+++ b/make/gluegen-cpptasks-base.xml
@@ -1096,45 +1096,69 @@
     <!-- Unix linker configuration -->
 
     <linker id="linker.cfg.linux" name="gcc">
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
     <linker id="linker.cfg.linux.x86" name="gcc">
-        <linkerarg value="-m32"/>
+      <linkerarg value="-m32"/>
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
     <linker id="linker.cfg.linux.amd64" name="gcc">
-        <linkerarg value="-m64"/>
+      <linkerarg value="-m64"/>
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
     <linker id="linker.cfg.linux.armv7" name="gcc">
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
     <linker id="linker.cfg.linux.alpha" name="gcc">
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
     <linker id="linker.cfg.linux.hppa" name="gcc">
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
     <linker id="linker.cfg.linux.mips" name="gcc">
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
     <linker id="linker.cfg.linux.mipsel" name="gcc">
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
     <linker id="linker.cfg.linux.ppc" name="gcc">
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
     <linker id="linker.cfg.linux.s390" name="gcc">
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
     <linker id="linker.cfg.linux.s390x" name="gcc">
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
     <linker id="linker.cfg.linux.sparc" name="gcc">
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
     <compiler id="linker.cfg.android" name="gcc">
-        <!-- shall be defined in custom ${gluegen-cpptasks.file} ! -->
+      <!-- shall be defined in custom ${gluegen-cpptasks.file} ! -->
     </compiler>
 
     <linker id="linker.cfg.hpux" name="aCC">
@@ -1152,15 +1176,21 @@
 
     <linker id="linker.cfg.solaris" name="gcc"> 
       <linkerarg value="-m32"/>
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker> 
 
     <linker id="linker.cfg.solaris.sparcv9" name="gcc"> 
       <linkerarg value="-xarch=v9a" /> 
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker> 
 
     <linker id="linker.cfg.solaris.amd64" name="gcc"> 
       <linkerarg value="-m64"/>
       <!-- linkerarg value="-xarch=amd64" / --> 
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
     <!-- MacOSX linker configuration -->
@@ -1181,27 +1211,27 @@
 
     <!--linker id="linker.cfg.linux64.mingw64" classname="net.sf.antcontrib.cpptasks.gcc.Gcc64Linker"-->
     <linker id="linker.cfg.linux64.mingw64" classname="net.sf.antcontrib.cpptasks.gcc.GccLinker">
-        <linkerarg value="-m64"/>
+      <linkerarg value="-m64"/>
     </linker>
     
     <!--linker id="linker.cfg.linux64.mingw32" classname="net.sf.antcontrib.cpptasks.gcc.Gcc32Linker"-->
     <linker id="linker.cfg.linux64.mingw32" classname="net.sf.antcontrib.cpptasks.gcc.GccLinker">
-        <linkerarg value="-m32"/>
-        <linkerarg value="-Wl,--kill-at" />        <!-- remove @ from function names, ie no __stdcall @nn -->
+      <linkerarg value="-m32"/>
+      <linkerarg value="-Wl,--kill-at" />        <!-- remove @ from function names, ie no __stdcall @nn -->
     </linker>
 
     <linker id="linker.cfg.win32.mingw" name="gcc" incremental="false">
-        <linkerarg value="-m32"/>
-        <linkerarg value="-Wl,--enable-auto-import"/>    <!-- for linking against dll directly -->
-        <linkerarg value="-Wl,--enable-stdcall-fixup"/>  <!-- for linking against dll directly -->
-        <linkerarg value="-Wl,--kill-at" />        <!-- remove @ from function names, ie no __stdcall @nn -->
+      <linkerarg value="-m32"/>
+      <linkerarg value="-Wl,--enable-auto-import"/>    <!-- for linking against dll directly -->
+      <linkerarg value="-Wl,--enable-stdcall-fixup"/>  <!-- for linking against dll directly -->
+      <linkerarg value="-Wl,--kill-at" />        <!-- remove @ from function names, ie no __stdcall @nn -->
     </linker>
 
     <linker id="linker.cfg.win64.mingw" name="gcc" incremental="false">
-        <linkerarg value="-m64"/>
-        <linkerarg value="-Wl,--enable-auto-import"/>    <!-- for linking against dll directly -->
-        <linkerarg value="-Wl,--enable-stdcall-fixup"/>  <!-- for linking against dll directly -->
-        <linkerarg value="-Wl,--kill-at" />        <!-- remove @ from function names, ie no __stdcall @nn -->
+      <linkerarg value="-m64"/>
+      <linkerarg value="-Wl,--enable-auto-import"/>    <!-- for linking against dll directly -->
+      <linkerarg value="-Wl,--enable-stdcall-fixup"/>  <!-- for linking against dll directly -->
+      <linkerarg value="-Wl,--kill-at" />        <!-- remove @ from function names, ie no __stdcall @nn -->
     </linker>
 
     <linker id="linker.cfg.win32.msvc" name="msvc" incremental="false">
diff --git a/make/lib/gluegen-cpptasks-linux-32bit.xml b/make/lib/gluegen-cpptasks-linux-32bit.xml
index c05033d..6a70818 100644
--- a/make/lib/gluegen-cpptasks-linux-32bit.xml
+++ b/make/lib/gluegen-cpptasks-linux-32bit.xml
@@ -29,6 +29,8 @@
 
     <linker id="linker.cfg.linux" name="gcc">
       <linkerarg value="-m32" />
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
 </target>
diff --git a/make/lib/gluegen-cpptasks-linux-armv4.xml b/make/lib/gluegen-cpptasks-linux-armv4.xml
index 1e5f162..8911a6a 100644
--- a/make/lib/gluegen-cpptasks-linux-armv4.xml
+++ b/make/lib/gluegen-cpptasks-linux-armv4.xml
@@ -43,12 +43,17 @@
       </defineset>
       <compilerarg value="-fpic" /> 
       <compilerarg value="-march=armv4t" />
-      <compilerarg value="-msoft-float" /> 
+      <compilerarg value="-marm" /> 
+      <compilerarg value="-mfloat-abi=soft" />
     </compiler>
 
     <linker id="linker.cfg.linux.armv7" name="gcc">
       <linkerarg value="-fpic" /> 
       <linkerarg value="-march=armv4t" />
+      <linkerarg value="-marm" />
+      <linkerarg value="-mfloat-abi=soft" />
+      <linkerarg value="-nostdlib" />
+      <linkerarg value="-Bdynamic" />
     </linker>
 
 </target>
-- 
cgit v1.2.3