Re: scons adds option -KPIC also for gcc/g++ on platform solarisx86
Jusic <[email protected]>
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <trinity-09556496-469c-4a18-81e1-d9215d6cc794-1621942725189@3c-app-gmx-bs42> |
Hi, ancient system runs ancient scons. :-) Upgrade of python to 3.5 and compiling a new scons version for solaris comes with big effort. Before doing that I'm looking for possible workarounds and I checked several times the changes.txt. The only entry is: Line 4354 Add the -KPIC option by default when compiling shared objects on Solaris But there is no entry for a fix. Can anybody confirm in which scons version it was fixed? Br Gesendet: Freitag, 21. Mai 2021 um 18:29 Uhr Von: "Bill Deegan" <[email protected]> An: "SCons users mailing list" <[email protected]> Betreff: Re: [Scons-users] scons adds option -KPIC also for gcc/g++ on platform solarisx86 You're using an ancient version of SCons. Can you update to python 3.5+ and try SCons 4.1? I think we addressed this at some point since 2.5.1 You can check the CHANGES.txt On Fri, May 21, 2021 at 6:39 AM Mats Wichmann <[email protected] > wrote: On 5/21/21 2:49 AM, [email protected] wrote: > Dear scons maintainer, > I didn't find any workarounds or hints or bug entires for scons on > stackoverflow or openhub or somewhere else regarding the problem that > scons adds -KPIC compiler option even for gcc/g++ compiler which leads > to the error with message > "g++: error: unrecognized command line option '-KPIC' > -KPIC was introduced with scons 0.96.91 and is valid for sun compiler > suncc, but not for gcc. > My flags are: > env['CCFLAGS'] += ' -m64 -DSOLARIS -D_M_IX86 -D_REENTRANT > -D_POSIX_PTHREAD_SEMANTICS -mfpmath=387 -fPIC -std=c99 ' > env['CXXFLAGS'] += '' > env['LINKFLAGS'] = ' -lsocket -m64 -fPIC ' > env['SHLINKFLAGS'] = ' -shared -m64 ' > env['SHCXXFLAGS'] = ' -shared -m64 ' > env['SHCXX'] = ' g++ ' > Platform is solaris x86 with Oracle Corporation SunOS 5.10 Generic Patch > January 2005 > gcc 5.5.0 > scons v2.5.1.rel_2.5.1 > ld: Software Generation Utilities - Solaris Link Editors: 5.10-1.1514 > Please let me know if there is any workaround. Can you just rewrite SHCCFLAGS and SHCXXFLAGS after the environment is created? You seem to be doing SHCXXFLAGS already from the above. You can print them out to see what they get set to as a debugging step, if you haven't already, Would expect these to look like: SHCCFLAGS: ['$CCFLAGS', '-KPIC'] SHCXXFLAGS: ['$CXXFLAGS', '-KPIC'] You can just *set* them, you don't have to add to the existing, but do use the parametereized versions of CCFLAGS and CXXFLAGS so those will be correctly expanded and you don't have to repeat what was assigned to the not-shared versions. You can assign directly like you do above or use env.Replace, e.g.: env.Replace(SHCCFLAGS=['$CCFLAGS', '-fPIC']) (or whatever value you actually need) or replace actually in the list, perhaps like: try: idx = env['SHCCFLAGS'].index('-KPIC') except ValueError: pass else: env['SHCCFLAGS'][idx] = '-fPIC' (if the above look a little more complicated than might be needed: the CCFLAGS type variables are initialized using an internal type, SCons.Util.CLVar, which is not mentioned in the documentation (sigh), it's a list but with special rules for strings with spaces on creation and addition so those are turned into lists and don't get type clashes). That's why the sun* tools do this kind of thing if you look in the source code: env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -KPIC') _______________________________________________ Scons-users mailing list [email protected] https://pairlist4.pair.net/mailman/listinfo/scons-users _______________________________________________ Scons-users mailing list [email protected] https://pairlist4.pair.net/mailman/listinfo/scons-users _______________________________________________ Scons-users mailing list [email protected] https://pairlist4.pair.net/mailman/listinfo/scons-users