Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Nov 2009 10:58:17 +0100
From:      Remko Lodder <remko@elvandar.org>
To:        Rene Ladan <rene@FreeBSD.org>
Cc:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   Re: PERFORCE change 170633 for review
Message-ID:  <1D8EE757-D3A6-43D1-B8CF-40BBE46A8796@elvandar.org>
In-Reply-To: <200911142333.nAENXWrT017367@repoman.freebsd.org>
References:  <200911142333.nAENXWrT017367@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Nov 15, 2009, at 12:33 AM, Rene Ladan wrote:

> http://p4web.freebsd.org/chv.cgi?CH=3D170633
>=20
> Change 170633 by rene@rene_self on 2009/11/14 23:32:57
>=20
> 	[porters handbook]
> 	Add a section about Clang to the "Dos and Don'ts" chapter.
> 	To be reviewed by the clang team and the doc review team.
>=20
> Affected files ...
>=20
> .. =
//depot/projects/docproj_nl/en_US.ISO8859-1/books/porters-handbook/book.sg=
ml#50 edit
>=20
> Differences ...
>=20
> =3D=3D=3D=3D =
//depot/projects/docproj_nl/en_US.ISO8859-1/books/porters-handbook/book.sg=
ml#50 (text+ko) =3D=3D=3D=3D
>=20
> @@ -13602,6 +13602,92 @@
> 	  shorthand solution.</para>
>       </sect1>
>=20
> +      <sect1 id=3D"dads-clang">
> +	<title>Clang: new C/C++ compiler</title>
> +
> +	<para>A future version of &os; will likely have the Clang C/C++
> +	  compiler as its base compiler.  Some modifications to the =
Ports
> +	  Collection are necessary.  In general, these are <quote>write =
proper
> +	    ports</quote> and <quote>write proper source code</quote>.  =
More
> +	  specifically:</para>
> +
> +	<itemizedlist>
> +	  <listitem>
> +	    <para>Respect <makevar>CC</makevar> and =
<makevar>CXX</makevar>. Do
              ^^^ You should probably add something like 'variables' on =
the end of the line.
> +	      not any of <filename>cc</filename>, =
<filename>c99</filename>,
> +	      <filename>gcc</filename>, <filename>c++</filename>, or
> +	      <filename>g++</filename> directly.</para>

What shouldn't we do with 'cc' 'c99' etc? I think we should be more =
specific here in terms of
'do not use <filename>cc</filename>[..] directly.

> +	  </listitem>



> +
> +	  <listitem>
> +	    <para>Respect <makevar>LD</makevar>, do not use
> +	      <filename>ld</filename> directly.</para>
> +	  </listitem>
> +
> +	  <listitem>
> +	    <para>Do not use <filename>cpp</filename> for reformatting =
manual
> +	      pages or shell scripts.  Try to use something more =
suitable
> +	      instead, possibly falling back to =
<makevar>CPP</makevar>.</para>
> +	      <!-- (rene) what about the C++ preprocessor? -->
> +	  </listitem>
> +
> +	  <listitem>
> +	    <para>If there are link errors related to missing or already
> +	      defined functions, try to add =
<makevar>CSTD=3Dgnu89</makevar> to
> +	      <filename>Makefile</filename>.  The function vsnprintf() =
is
> +	      already built in.</para>
> +	  </listitem>
> +
> +	  <listitem>
> +	    <para>The <literal>-traditional</literal> option is not =
supported,
> +	      so existing occurences have to be removed.  No concensus =
has yet
> +	      been reached on ports abusing this option to preserve =
white space
> +	      in text formatting.  Note that the Clang preprocessor does =
not
> +	      preserve white space.</para>
> +	  </listitem>
> +
> +	  <listitem>
> +	    <para>Explicit type indication of variables must be used in
> +	      built-in assembler code.</para>
> +	  </listitem>
> +
> +	  <listitem>
> +	    <para>The main function must be properly declared as</para>

^^^ add :

> +
> +	    <programlisting>int main(int argc, char =
**argv)</programlisting>
> +	  </listitem>
> +
> +	  <listitem>
> +	    <para>The maximum useable optimization level is 3.  Level 4 =
is
> +	      reserved for link-time optimization for the Clang =
backend.</para>
> +	  </listitem>
> +
> +	  <!--(rene) -I and -L belong to CONFIGURE_ENV, not to CFLAGS =
(?)-->
> +	</itemizedlist>
> +
> +	<para>Some temporary hacks that might be used if all else =
fails:</para>
> +
> +	<itemizedlist>
> +	  <listitem>
> +	    <para>Adding <literal>-fheinous-gnu-extensions</literal>.  =
Note
> +	      that this option is already deprecated.</para>
> +	  </listitem>
> +
> +	  <listitem>
> +	    <para>Reducing the warning level by adding
> +	      <literal>--diasable-werror</literal> or
> +	      <literal>--disable-strict</literal>, or by disabling
> +	      <literal>--warn-common</literal> or
> +	      <literal>-Werror</literal>.</para>
> +	  </listitem>
> +	</itemizedlist>
> +
> +<!--
> +	<para>A current set of patches are available at <ulink
> +	  url=3D"http://www.rainbow-runner.nl/clang/patches">this patch =
site</ulink>.</para>
> +-->
> +      </sect1>
> +
>       <sect1 id=3D"dads-cc">
> 	<title>Respect both <makevar>CC</makevar> and
> 	  <makevar>CXX</makevar></title>


Thanks for making this!

--=20
/"\   Best regards,                        | remko@FreeBSD.org
\ /   Remko Lodder                      | remko@EFnet
X    http://www.evilcoder.org/    |
/ \   ASCII Ribbon Campaign    | Against HTML Mail and News




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1D8EE757-D3A6-43D1-B8CF-40BBE46A8796>