Adding a toolset for a compiler

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Adding a toolset for a compiler

Boost - Build mailing list
Given compiler 'xxx' with a command line 'xxx -c compile parameters...'
for compiling cpp/c source to object files and a command line 'xxx link
parameters... ' for linking object files into a library or an
executable, what is the minimum contents of xxx.jam which are needed to
use that jamfile as a 'toolset=xxx' on a b2 command line ? Is there some
prorotype I can use for doing this ?

_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build
Reply | Threaded
Open this post in threaded view
|

Re: Adding a toolset for a compiler

Boost - Build mailing list
AMDG

On 09/20/2018 12:25 PM, Edward Diener via Boost-build wrote:
> Given compiler 'xxx' with a command line 'xxx -c compile parameters...'
> for compiling cpp/c source to object files and a command line 'xxx link
> parameters... ' for linking object files into a library or an
> executable, what is the minimum contents of xxx.jam which are needed to
> use that jamfile as a 'toolset=xxx' on a b2 command line ? Is there some
> prorotype I can use for doing this ?
>

I suggest that you start with one of the simpler toolsets, like acc.

What you need is
a) An action block for each command:
  - compile.c++
  - archive
  - link
  - link.dll
  - (optional) compile.c
  - (optional) compile.asm
b) flags settings for <include>, <define>, <cxxflags>,
   <cflags>, <linkflags>, and <archiveflags>, <library-file>,
   <library-path>, <find-static-library>, <find-shared-library>.
   Additional flags for the following will make the toolset
   more configurable, but a prototype can get by without them:
   <optimization>, <threading>, <profiling>, <debug-symbols>,
   <inlining>, <warnings>, <exception-handling>, <rtti>, <cxxstd>,
   <address-model>, <architecture>, <visibility>.
c) An init rule which can be called via `using`
d) Generators for each rule.  generators.register-c-compiler,
   generators.register-linker, and generators.register-linker
   should work.  If you inherit from `unix`, then you get these
   automatically.  (Note: you should inherit from `unix` iff
   library order on the command line must follow the usual
   unix rules.)

In Christ,
Steven Watanabe
_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build
Reply | Threaded
Open this post in threaded view
|

Re: Adding a toolset for a compiler

Boost - Build mailing list
On 9/20/2018 3:01 PM, Steven Watanabe via Boost-build wrote:

> AMDG
>
> On 09/20/2018 12:25 PM, Edward Diener via Boost-build wrote:
>> Given compiler 'xxx' with a command line 'xxx -c compile parameters...'
>> for compiling cpp/c source to object files and a command line 'xxx link
>> parameters... ' for linking object files into a library or an
>> executable, what is the minimum contents of xxx.jam which are needed to
>> use that jamfile as a 'toolset=xxx' on a b2 command line ? Is there some
>> prorotype I can use for doing this ?
>>
>
> I suggest that you start with one of the simpler toolsets, like acc.
>
> What you need is
> a) An action block for each command:
>    - compile.c++
>    - archive
>    - link
>    - link.dll
>    - (optional) compile.c
>    - (optional) compile.asm
> b) flags settings for <include>, <define>, <cxxflags>,
>     <cflags>, <linkflags>, and <archiveflags>, <library-file>,
>     <library-path>, <find-static-library>, <find-shared-library>.
>     Additional flags for the following will make the toolset
>     more configurable, but a prototype can get by without them:
>     <optimization>, <threading>, <profiling>, <debug-symbols>,
>     <inlining>, <warnings>, <exception-handling>, <rtti>, <cxxstd>,
>     <address-model>, <architecture>, <visibility>.
> c) An init rule which can be called via `using`
> d) Generators for each rule.  generators.register-c-compiler,
>     generators.register-linker, and generators.register-linker
>     should work.

You repeated 'generators.register-linker' twice. Did you mean something
else for the second repetition ?

>  If you inherit from `unix`, then you get these
>     automatically.  (Note: you should inherit from `unix` iff
>     library order on the command line must follow the usual
>     unix rules.)

What are the usual 'unix rules' ? That all external references in a
library/object file must be resolved by a previous library/object file
in the sequence of library/object files mentioned ? Or something else ?

>
> In Christ,
> Steven Watanabe


_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build
Reply | Threaded
Open this post in threaded view
|

Re: Adding a toolset for a compiler

Boost - Build mailing list
AMDG

On 09/20/2018 03:17 PM, Edward Diener via Boost-build wrote:
> On 9/20/2018 3:01 PM, Steven Watanabe via Boost-build wrote:
>> <snip>
>> d) Generators for each rule.  generators.register-c-compiler,
>>     generators.register-linker, and generators.register-linker
>>     should work.
>
> You repeated 'generators.register-linker' twice. Did you mean something
> else for the second repetition ?
>

Oops.  I meant generators.register-archiver.

>>  If you inherit from `unix`, then you get these
>>     automatically.  (Note: you should inherit from `unix` iff
>>     library order on the command line must follow the usual
>>     unix rules.)
>
> What are the usual 'unix rules' ? That all external references in a
> library/object file must be resolved by a previous library/object file
> in the sequence of library/object files mentioned ? Or something else ?
>

  It's the opposite, actually.  When processing an
static library, the linker skips archive members that
do not resolve any symbols that have been seen
previously.

In Christ,
Steven Watanabe
_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build