# Copyright Vladimir Prus 2004.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt
# or copy at http://www.boost.org/LICENSE_1_0.txt)

#| tag::doc[]

[[bbv2.reference.tools.compiler.como]]
= Comeau C/C++ Compiler

The `como-linux` and the `como-win` modules supports the
http://www.comeaucomputing.com/[Comeau C/C++ Compiler] on Linux and
Windows respectively.

The module is initialized using the following syntax:

----
using como : [version] : [c++-compile-command] : [compiler options] ;
----

This statement may be repeated several times, if you want to configure
several versions of the compiler.

If the command is not specified, Boost.Build will search for a binary
named `como` in PATH.

The following options can be provided, using
_`<option-name>option-value syntax`_:

`cflags`::
Specifies additional compiler flags that will be used when compiling C
sources.

`cxxflags`::
Specifies additional compiler flags that will be used when compiling C++
sources.

`compileflags`::
Specifies additional compiler flags that will be used when compiling both C
and C++ sources.

`linkflags`::
Specifies additional command line options that will be passed to the linker.

Before using the Windows version of the compiler, you need to setup
necessary environment variables per compiler's documentation. In
particular, the COMO_XXX_INCLUDE variable should be set, where XXX
corresponds to the used backend C compiler.

|# # end::doc[]

# This is a generic 'como' toolset. Depending on the current system, it
# forwards either to 'como-linux' or 'como-win' modules.

import feature ;
import os ;
import toolset ;

feature.extend toolset : como ;
feature.subfeature toolset como : platform : : propagated link-incompatible ;

rule init ( * : * )
{
    if [ os.name ] = LINUX
    {
        toolset.using como-linux : 
          $(1) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ;
    }
    else
    {
        toolset.using como-win :
          $(1) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ;

    }        
}
