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

anatoly techtonik techtonik at gmail.com
Tue May 27 02:41:11 EDT 2014


On Tue, May 20, 2014 at 10:42 AM, Michael Haubenwallner
<michael.haubenwallner at ssi-schaefer.com> wrote:
>
>> 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')

There are many OS vendors who ship GCC. Would 'CCNAME' be better?
There is also a concern that SCons should try to hide specific compiler
details, urging people to write compiler-independent code.

>> 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)

Why do you miss those?
Checking version is an extra call. Are you sure you need these
versions by default?

> Additionally, I've thought of these ones:
>
> * From what I've seen so far, feels like cross-compiling isn't really supported.

Feeling are hard to patch or see into. Either a code example or more detailed
blog post is needed.

> * 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.

So, SCons can't be hacked deep enough to invoke different tool on
linking. Is that right?

>> 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!

Right. There should be an example. I can try to simplify things for you. Both
"bookmarks" and "named branches" are just tags. Bookmark tags are unique
(one per all commits) and moved automatically. Branch tags are attached to
every commit, so one tag applies to multiple commits and can not be removed.
-- 
anatoly t.


More information about the Scons-dev mailing list