[Scons-dev] Emulate SVR4/Linux like SONAME for AIX

Michael Haubenwallner michael.haubenwallner at ssi-schaefer.com
Tue May 20 03:42:48 EDT 2014



On 05/16/2014 07:27 PM, Dirk Bächle wrote:
>> based on the pull requests #138 #139 #140, fixing various issues,

Thank you for merging them!

>> now I've been able to get the "aix-soname" thingy into SCons.
>> However, as a SCons newbie, I'm unsure whether the way I've implemented
>> this into SCons is based on correct assumptions on how SCons should work.
>>
>> Actually, I've been able to reduce the number of failing tests
>> from 90 to 65 on the AIX box I'm working on.
>>
>> https://bitbucket.org/haubi/scons/commits/76108c06ac81150a4d79a52583d3cf7a5e6fa1cd
>>
>> Thoughts?
> 
> I had a quick glance at your pull requests and the commit mentioned above.
> To me it looks like you're doing solid work, please keep it up.

Thank you!

> Someone else (Gary?) should comment on your introduction of "CCVENDOR", I'm a bit

IMO, CCVENDOR is the same level as CCVERSION: Knowing a compiler's version is less
useful when not knowing the vendor defining this version. For serf-trunk actually,
besides other small ones I'm using this diff to SConstruct - please note the comment:

@@ -229,7 +229,7 @@
 #  linkflags.append('-Wl,-install_name, at executable_path/%s.dylib' % (LIBNAME,))
   env.Append(LINKFLAGS='-Wl,-install_name,%s/%s.dylib' % (thisdir, LIBNAME,))
 
-if sys.platform != 'win32':
+if env.get('CCVENDOR') == 'GNU':
   ### gcc only. figure out appropriate test / better way to check these
   ### flags, and check for gcc.
   env.Append(CFLAGS='-std=c89')

> unsure whether this is the way to go while having the new toolchain design in mind.

FWIW - without knowing how far the new toolchain is designed already - what I do miss
from the current Toolchain design (besides CCVENDOR) is:
* NM Tool (Vendor+Version)
* STRIP Tool (Vendor+Version)
* Which ld (Vendor+Version) used by $LINK
  (fex. gcc is configured to use either GNU-ld or AIX-ld)

Additionally, I've thought of these ones:

* From what I've seen so far, feels like cross-compiling isn't really supported.
* When fixing 'list index out of range' when Tool.link.shlib_emitter_names() returns
  the empty list, traditional AIX shared library versioning (with SHLIBEXT=".a") leads
  to this error  with serf-trunk:
  scons: *** Two different builders (InstallBuilder and InstallVersionedBuilder) were specified for the same target: /usr/local/lib/libserf-2.a
* And please don't kill me for this: Especially for yet unsupported platforms, please
  let me suggest to allow (downstream distro maintainers) to still /use/ libtool to
  wrap the compiling and linking steps.

> Please try to use bookmarks instead of named branches for organizing your local work and commits. See also:
> 
>   http://www.scons.org/wiki/SconsMercurialWorkflows

Subversion and Git knowledge seems to confuse me as a Mercurial newbie... sorry!

> Other than that, "good job" and thanks for all the effort you have put into this!

Thanks again!
/haubi/


More information about the Scons-dev mailing list