build: fix hpux build pb
authorMatthieu Patou <mat@matws.net>
Tue, 7 Dec 2010 20:42:15 +0000 (23:42 +0300)
committerMatthieu Patou <mat@samba.org>
Tue, 7 Dec 2010 23:32:49 +0000 (00:32 +0100)
Pair-Programmed-With: Thomas Nagy <tnagy2pow10@gmail.com>

Fix the library extension from .so to .sl
Add full path to library when linking this is needed due to a strange
behavior of HP-UX:

This command: gcc demo demo.c -L dir1/dir2/ -lsomelib
will give a binary with a hard coded lib like dir1/dir2/libsomelib.sl.
Somehow like a partial rpath, it has the first impact of fooling waf
detection of wether the plateform support libraries or not (leading to
being unable to compile samba on HPUX) and the impact of having non
functionnal binaries.

Autobuild-User: Matthieu Patou <mat@samba.org>
Autobuild-Date: Wed Dec  8 00:32:50 CET 2010 on sn-devel-104

buildtools/wafsamba/hpuxcc.py [new file with mode: 0644]
buildtools/wafsamba/wafsamba.py

diff --git a/buildtools/wafsamba/hpuxcc.py b/buildtools/wafsamba/hpuxcc.py
new file mode 100644 (file)
index 0000000..abdf2a8
--- /dev/null
@@ -0,0 +1,56 @@
+# compiler definition for HPUX
+# based on suncc.py from waf
+
+import os, optparse, sys
+import Utils, Options, Configure
+import ccroot, ar
+from Configure import conftest
+import gcc
+
+
+@conftest
+def gcc_modifier_hpux(conf):
+    v=conf.env
+    v['CCFLAGS_DEBUG']=['-g']
+    v['CCFLAGS_RELEASE']=['-O2']
+    v['CC_SRC_F']=''
+    v['CC_TGT_F']=['-c','-o','']
+    v['CPPPATH_ST']='-I%s'
+    if not v['LINK_CC']:v['LINK_CC']=v['CC']
+    v['CCLNK_SRC_F']=''
+    v['CCLNK_TGT_F']=['-o','']
+    v['LIB_ST']='-l%s'
+    v['LIBPATH_ST']='-L%s'
+    v['STATICLIB_ST']='-l%s'
+    v['STATICLIBPATH_ST']='-L%s'
+    v['RPATH_ST']='-Wl,-rpath,%s'
+    v['CCDEFINES_ST']='-D%s'
+    v['SONAME_ST']='-Wl,-h,%s'
+    v['SHLIB_MARKER']=['-Wl,-Bdynamic']
+#    v['STATICLIB_MARKER']='-Wl,-Bstatic'
+    v['FULLSTATIC_MARKER']='-static'
+    v['program_PATTERN']='%s'
+    v['shlib_CCFLAGS']=['-fPIC','-DPIC']
+    v['shlib_LINKFLAGS']=['-shared']
+    v['shlib_PATTERN']='lib%s.sl'
+#   v['staticlib_LINKFLAGS']=['-Wl,-Bstatic']
+    v['staticlib_PATTERN']='lib%s.a'
+
+gcc.gcc_modifier_hpux = gcc_modifier_hpux
+
+from TaskGen import feature, after
+@feature('cprogram', 'cshlib')
+@after('apply_link', 'apply_lib_vars', 'apply_obj_vars')
+def hpux_addfullpath(self):
+  if sys.platform == 'hp-ux11':
+    link = getattr(self, 'link_task', None)
+    if link:
+        lst = link.env.LINKFLAGS
+        buf = []
+        for x in lst:
+           if x.startswith('-L'):
+               p2 = x[2:]
+               if not os.path.isabs(p2):
+                   x = x[:2] + self.bld.srcnode.abspath(link.env) + "/../" + x[2:].lstrip('.')
+           buf.append(x)
+        link.env.LINKFLAGS = buf
index 5d13fa1023aad02e6b1b1eb5830fb859f147f32a..1d3ced13cebc855fd0904be9f7de9dff2caa0d8a 100644 (file)
@@ -23,6 +23,7 @@ import samba_conftests
 import samba_abi
 import tru64cc
 import irixcc
+import hpuxcc
 import generic_cc
 import samba_dist
 import samba_wildcard