Boost logo

Boost :

Subject: Re: [boost] [build] Default compiler options for a toolset
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2013-11-18 16:56:06


On 11/18/2013 12:48 PM, Edward Diener wrote:
> Thanks for the information, but interpreting the "action" versus the
> actual command line generated is difficult for me. Maybe you can help.

b2 just expands all the variables in the action
to generate the command line.

> As an example here is the action from msvc.jam:
> actions compile-c-c++ bind PDB_NAME
> {
> $(.CC) @"@($(<[1]:W).rsp:E="$(>[1]:W)" -Fo"$(<[1]:W)"
> $(PDB_CFLAG)"$(PDB_NAME)" -Yu"$(>[3]:D=)" -Fp"$(>[2]:W)" $(CC_RSPLINE))"
> }
> or maybe
> actions compile-c-c++-pch
> {
> $(.CC) @"@($(<[1]:W).rsp:E="$(>[2]:W)" -Fo"$(<[2]:W)"
> -Yc"$(>[1]:D=)" $(YLOPTION)"__bjam_pch_symbol_$(>[1]:D=)" -Fp"$(<[1]:W)"
> $(CC_RSPLINE))" "@($(<[1]:W).cpp:E=#include
> $(.escaped-double-quote)$(>[1]:D=)$(.escaped-double-quote)$(.nl))"
> }
> Now here is the actual command line generated from a single compile from
> running bjam against a preprocessor test using msvc-11.0 with the -d2
> option, like 'b2 -d2 toolset=msvc-11.0'.
> "tuple.cpp" -Fo"some_long_path\tuple.obj" -TP /Z7 /Od /Ob0 /W4 /GR
> /MDd /Zc:forScope /Zc:wchar_t /wd4675 /EHs -c
> I am trying to discover where these options in the command line come
> from in the actual action. In particular I am trying to discover what in
> the action is generating the /EHs option.

Search for /EHs in msvc.jam:

    toolset.flags msvc.compile C++FLAGS
<exception-handling>on/<asynch-exceptions>off/<extern-c-nothrow>off : /EHs ;

C++FLAGS appears in $(CC_RSPLINE), which is set in get-rspline.

rule get-rspline ( target : lang-opt )
    CC_RSPLINE on $(target) = [ on $(target) return $(lang-opt) -U$(UNDEFS)
        $(CFLAGS) $(C++FLAGS) $(OPTIONS) -c $(.nl)-D$(DEFINES)
        $(.nl)\"-I$(INCLUDES:W)\" ] ;

In Christ,
Steven Watanabe

Boost list run by bdawes at, gregod at, cpdaniel at, john at