[Scons-users] Emiter usage

Bill Deegan bill at baddogconsulting.com
Mon Sep 19 19:49:24 EDT 2016


Adam,

On Mon, Sep 19, 2016 at 1:59 PM, Adam Dobrowolski <pholat at gmail.com> wrote:

> On poniedziałek, 19 września 2016 13:09:34 CEST Bill Deegan wrote:
> > Adam,
> >
> > On Mon, Sep 19, 2016 at 12:47 PM, Adam Dobrowolski <pholat at gmail.com>
> wrote:
> > > Hi,
> > >
> > > I want to build all four elements which have "Alias" at once, I've
> added
> > > Alias
> > > to mark that these are end products.
> > > Right now the main question is if SCons will recognize intermediate
> files
> > > needed if I loop over them, not write them by hand/copy in SConsctruct.
> > > I vaguely recall that SConstruct & SConscripts are being parsed before
> any
> > > functions are executed.
> >
> > Can you expand upon what would be in:
> > X86_REL = SConscript("x86_release/SConcsript")
> >
> > What would you expect to be in X86_REL?
> >
> > I'm guessing that you don't realize that it's not necessary to pass
> around
> > the Node's returned from builders if you know the locations in the
> > filesystem that their targets will be built in.
> >
> > So if a SConscript builds a bunch of binaries into : x86_release/bin, you
> > can create the alias either as:
> >
> > Alias('X86_REL','x86_release/bin')
> >
> > or if you like
> >
> > Alias('X86_REL',Glob('x86_release/bin/*'))
> >
> > Does that answer your question?
>
> As it was said in example:
> (...)
> These SConscripts use products of earlier SConscripts in for loop
> For 10 SCOnscripts it would be 40 products in total
> These are sourced with Glob("*")
> (...)
>
> SConscript creates bunch of libraries which are Globed and compiled into
> four
> different binaries. I said products previously because I may have different
> builders that Program(..) and Library(..) in use.
>

You'll need to pastebin your builders for us to help you with that.

>
> So it doesn't answer my question.
>

If the alias should cause the respective binaries (and all their
dependencies to be built), then specifying just the binaries to the alias
is sufficient.
In which case I did previously answer your question.

-Bill


>
> >
> > > So right now it's a question on SCons dependency handling.
> > > ---
> > > By the way:
> > > The mail has "Emitter usage" in name because:
> > > 1) I ate word "question" - sorry for that, I've just found it out.
> > > 2) I read manual: http://scons.org/doc/1.2.0/
> HTML/scons-user/x3603.html
> > > and I
> > > thought that maybe I could do something similar. In the end I still
> see no
> > > use
> > > in emitter in my case and can't grasp when I would need it. ( I would
> be
> > > grateful to any explanations though )
> >
> > Are you creating a builder? If not then you don't need it.
> > Does the builder you're creating create output files (or input files, or
> > sideffects) which aren't listed as a target or source when the builder is
> > invoked?
> > Then you do need an emitter.
> > Otherwise you don't need one.
> >
> >
> > Are you running SCons 1.2.0? The current version is 2.5.0.
> >
> > > Best regards,
> > > Adam
> > >
> > > On poniedziałek, 19 września 2016 19:31:56 CEST Dirk Bächle wrote:
> > > > Adam,
> > > >
> > > > On 19.09.2016 18:46, Adam Dobrowolski wrote:
> > > > > Hi Dirk,
> > > > >
> > > > > Great thanks up to now, I meant something like that:
> > > > >
> > > > > #!/bin/python
> > > > >
> > > > > x86_env = Environment(<something for x86);
> > > > > x86_deb = env.Clone();
> > > > > x86_deb.Append(CXXFLAGS=['-g3','-O2'])
> > > > > arm_env = Environment(<something for arm>);
> > > > > arm_deb = env.Clone();
> > > > > arm_deb.Append(CXXFLAGS=['-g3','-O2'])
> > > > >
> > > > > libs = [
> > > > >
> > > > >          "lib1/SConscript",
> > > > >          "lib2/SConscript",
> > > > >          "lib3/SConscript",
> > > > >          (...)
> > > > >          "libN/SConscript",
> > > > >          ]
> > > > >
> > > > > for script in libs:
> > > > >      SConscript(script, exports={'env' : x86_env},
> > > > >      variant_dir='x86_release')
> > > > >      SConscript(script, exports={'env' : x86_deb},
> > > > >      variant_dir='x86_debug')
> > > > >      SConscript(script, exports={'env' : arm_env},
> > > > >      variant_dir='arm_release')
> > > > >      SConscript(script, exports={'env' : arm_deb},
> > > > >      variant_dir='arm_debug')
> > > > >
> > > > > # These SConscripts use products of earlier SConscripts in for loop
> > > > > # For 10 SCOnscripts it would be 40 products in total
> > > > > # These are sourced with Glob("*")
> > > > > X86_REL = SConscript("x86_release/SConcsript")
> > > > > X86_DEB = SConscript("x86_debug/SConcsript")
> > > > > ARM_REL = SConscript("arm_release/SConcsript")
> > > > > ARM_DEB = SConscript("arm_debug/SConcsript")
> > > > >
> > > > > Alias('X86_REL',X86_REL)
> > > > > Alias('X86_DEB',X86_DEB)
> > > > > Alias('ARM_REL',ARM_REL)
> > > > > Alias('ARM_DEB',ARM_DEB)
> > > >
> > > > what I get from this is that you want to be able to call "scons
> > > > X86_REL",
> > > > such that only the corresponding subtree is built. If this
> > > > is correct, doesn't it contradict the specifications made in your
> first
> > >
> > > mail:
> > > >  > What I need to do is:
> > > >  > Generate different output on different compilation variable.
> > > >  >
> > > >  > Exemplary problem: one app version is build with -DDEBUG variable,
> > > >  > and
> > > >  > second one is without. Now I can build DEBUG app (or one without)
> by
> > > >  > changing the Environment by hand. But I would love to build both
> in
> > >
> > > one
> > >
> > > >  > run.
> > > >
> > > > , especially for the last sentence?
> > > >
> > > > Regards,
> > > >
> > > > Dirk
> > > >
> > > >
> > > > _______________________________________________
> > > > Scons-users mailing list
> > > > Scons-users at scons.org
> > > > https://pairlist4.pair.net/mailman/listinfo/scons-users
> > >
> > > _______________________________________________
> > > Scons-users mailing list
> > > Scons-users at scons.org
> > > https://pairlist4.pair.net/mailman/listinfo/scons-users
>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20160919/2cf13f58/attachment.html>


More information about the Scons-users mailing list