[Scons-users] linker command under windows not working (too long)

Philipp Kraus philipp.kraus at flashpixx.de
Sun Mar 31 18:08:56 EDT 2013


On shared lib I must modifiy SHLINKCOM but on MinGW seems to be an error in
correct escaping path names (see the platform/__init__.py script and
the class TempFileMunge)

the line in the method __call__
args = list(map(SCons.Subst.quote_spaces, cmd[1:]))

must be a correct path escaping eg
if "mingw" in env['platform'] :
args = [i.replace('\\', r'\\\\') for i in args]

because on MinGW toolset, that is run direct in Windows command line
the pathes are stored only with \ but must be \\

Phil


On 2013-03-31 17:44:05 +0200, Philipp Kraus said:


> I have set my linker command to

> envlib["LINKCOM"] = "${TEMPFILE('"+envlib["LINKCOM"]+"')}"

>

> the tempfile is set on default to Scons TempFileMunge

> and the prefix stores the @ char.

> But my object files are not passed to the file and the linker command

> is also gcc <o files>, so it is not modified with the tempfile

>

> I'm a little bit confused

>

> Thx

>

> Phil

>

>

> On 2013-03-31 14:34:26 +0200, Philipp Kraus said:

>

>> Is there an example for the callable class? Because which information

>> must be returned by the callable method?

>>

>>

>> Am 31.03.2013 um 03:17 schrieb Bill Deegan:

>> Won't TEMPFILE work for this?

>>

>> A callable class.  You can set an Environment variable to this,

>>     then call it with a string argument, then it will perform temporary

>>     file substitution on it.  This is used to circumvent the long command

>>     line limitation.

>>

>>     Example usage:

>>     env["TEMPFILE"] = TempFileMunge

>>     env["LINKCOM"] = "${TEMPFILE('$LINK $TARGET $SOURCES')}"

>>

>>     By default, the name of the temporary file used begins with a

>>     prefix of '@'.  This may be configred for other tool chains by

>>     setting '$TEMPFILEPREFIX'.

>>

>>     env["TEMPFILEPREFIX"] = '-@'        # diab compiler

>>     env["TEMPFILEPREFIX"] = '-via'      # arm tool chain

>>

>> -Bill

>>

>>

>> On Sat, Mar 30, 2013 at 11:26 AM, Philipp Kraus

>> <philipp.kraus at flashpixx.de> wrote:

>> Hi,

>>

>> thanks for this idea but I don't use the env.Object call, I call

>> env.SharedLibrary direct in the build script, so the *.o file is

>> created by the dependency graph that is build by Scons.

>> So I need to change my script for the MinGW toolset and create the

>> object files first and referenced them via the file. It should be a

>> IMHO a "hacking solution".

>>

>> Thanks a lot, so I can test my build script

>>

>> Phil

>>

>>

>> On 2013-03-30 19:07:42 +0100, Brady Johnson said:

>>

>>

>> You can use response files, (supported by both gcc and msvc) which

>> allows you to list several object files, etc in a file, then refer to

>> that file on the command line prepending it with the '@' symbol. Here

>> is a question/answer on Stack Overflow that addresses this:

>> http://stackoverflow.com/q/15242177/1158895

>>

>> Notice, though that SCons wont read what's in the response file, so

>> dependency checking wont work as expected. I addressed this in my

>> answer to the Stack Overflow question.

>>

>> Hope that helps,

>>

>> Brady

>>

>>

>>

>> On Sat, Mar 30, 2013 at 3:07 PM, Philipp Kraus

>> <philipp.kraus at flashpixx.de> wrote:

>> Hello,

>>

>> I try to build Irrlicht engine with mingw toolset under Scons. The

>> compiler calls works well, but the last linker command to build the

>> shared library creates the error, that the command length is reached.

>> MS describe the probleme here http://support.microsoft.com/kb/830473/en-us

>> The command shows:

>>

>> g++ -shared -o Irrlicht.dll <here all *.o files> -Wl,--out-implib,libIrrlicht.a

>>

>> I don't know how I can solve this problems. The problem exists only

>> with the MinGW toolset under MSVC the problem does not exists.

>>

>> Thanks for help

>>

>> Phil

>>

>>

>>

>> _______________________________________________

>> Scons-users mailing list

>> Scons-users at scons.org

>> http://four.pairlist.net/mailman/listinfo/scons-users

>>

>> _______________________________________________

>> Scons-users mailing list

>> Scons-users at scons.org

>> http://four.pairlist.net/mailman/listinfo/scons-users

>

> _______________________________________________

> Scons-users mailing list

> Scons-users at scons.org

> http://four.pairlist.net/mailman/listinfo/scons-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://four.pairlist.net/pipermail/scons-users/attachments/20130401/84860b2d/attachment.htm>


More information about the Scons-users mailing list