(which includes your "home directory", because it lives under the "Documents
and Settings" directory). We welcome patches to fix this issue.
</p>
-</div>
+<p>It has been found that the GCC 3.3.3 compiler provided with recent Cygwin
+versions is incapable of compiling the LLVM CFE correctly. If your Cygwin
+installation includes GCC 3.3.3 we <i>strongly</i> recommend that you download
+GCC 3.4.3, build it separately, and use it for compiling LLVM CFE. This has been
+shown to work correctly.</p>
+<p>Some versions of Cygwin utilize an experimental version of GNU binutils that
+will cause the GNU <tt>ld</tt> linker to fail an assertion when linking
+components of the libstdc++. It is recommended that you replace the entire
+binutils package with version 2.15 such that "<tt>ld --version</tt>" responds
+with<br/>
+<pre>GNU ld version 2.15</pre>
+not with:<br/>
+<pre>GNU ld version 2.15.91 20040725</pre>
+</p></div>
<!--=========================================================================-->
-<div class="doc_subsection">
- <a name="aix">Building under AIX</a>
-</div>
-<!--=========================================================================-->
-
+<div class="doc_subsection"><a name="aix">Building under AIX</a></div>
<div class="doc_text">
<p>If you are building LLVM and the GCC front-end under AIX, do NOT use GNU
Binutils. They are not stable under AIX and may produce incorrect and/or
<div class="doc_text">
<p>
<ol>
-<li><p>Configure and build the LLVM libraries and tools using:</p>
-<pre>
+<li><p>Configure and build the LLVM libraries and tools. There are two ways to
+do this: either with <i>objdir</i> == <i>srcdir</i> or not. It is recommended
+that <i>srcdir</i> not be the same as <i>objdir</i>:</p>
+<ul>
+ <li>With <i>objdir</i> != <i>srcdir</i>:<pre>
+ % cd <i>objdir</i>
+ % <i>srcdir</i>/configure --prefix=/some/path/you/can/install/to [options...]
+ % gmake tools-only
+ </pre></li>
+ <li>With <i>objdir</i> == <i>srcdir</i>:<pre>
% cd llvm
% ./configure --prefix=/some/path/you/can/install/to [options...]
% gmake tools-only
-</pre>
- <p>This will build all of the LLVM tools and libraries. The <tt>--prefix</tt>
- option defaults to /usr/local (per configure standards) but unless you are a
- system administrator, you probably won't be able to install LLVM there because
- of permissions. Specify a path into which LLVM can be installed (e.g.
- <tt>--prefix=/home/user/llvm</tt>).</p>
+ </pre></li>
+</ul>
+<p>This will build all of the LLVM tools and libraries. The <tt>--prefix</tt>
+option defaults to /usr/local (per configure standards) but unless you are a
+system administrator, you probably won't be able to install LLVM there because
+of permissions. Specify a path into which LLVM can be installed (e.g.
+<tt>--prefix=/home/user/llvm</tt>).</p>
</li>
<li><p>Add the directory containing the tools to your PATH.</p>
<pre>
% cd build
% ../src/configure --prefix=$CFEINSTALL --disable-threads --disable-nls \
- --disable-shared --enable-languages=c,c++
+ --disable-shared --enable-languages=c,c++ --program-prefix=llvm-
% gmake all; gmake install
</pre>
<pre>
% cd build
% ../src/configure --prefix=$CFEINSTALL --disable-threads --disable-nls \
- --disable-shared --enable-languages=c,c++ --disable-c-mbchar
+ --disable-shared --enable-languages=c,c++ --disable-c-mbchar \
+ --program-prefix=llvm-
% gmake all; gmake install
</pre>
% cd build
% ../src/configure --prefix=$CFEINSTALL --disable-threads --disable-nls \
--disable-shared --enable-languages=c,c++ --host=sparcv9-sun-solaris2.8 \
- --disable-c-mbchar
+ --disable-c-mbchar --program-prefix=llvm-
% gmake all; gmake install
</pre>
</ul>
</li>
-<li><p>Go back into the LLVM source tree proper. Rerun configure, using
-the <code>--with-llvmgccdir=$CFEINSTALL</code> option to specify the path
-to the newly built GCC front-end.</p></li>
+<li><p>Put <tt>$CFEINSTALL/bin</tt> into your <tt>PATH</tt> environment
+variable.</p>
+ <ul>
+ <li>sh: <tt>export PATH=$CFEINSTALL/bin:$PATH</tt></li>
+ <li>csh: <tt>setenv PATH $CFEINSTALL/bin:$PATH</tt></li>
+ </ul>
+</li>
-<li><p>If you edited header files during the C/C++ front-end build as
-described in "Fix 1" above, you must now copy those header files from
-<code>$CFEINSTALL/<i>target-triplet</i>/sys-include</code> to
-<code>$CFEINSTALL/lib/gcc/<i>target-triplet</i>/3.4-llvm/include</code>.
-(This should be the "include" directory in the same directory as the
-libgcc.a library, which you can find by running
-<code>$CFEINSTALL/bin/gcc --print-libgcc-file-name</code>.)</p></li>
+<li><p>Go back into the LLVM source tree proper. Rerun configure, using
+the same options as the last time. This will cause the configuration to now find
+the newly built llvm-gcc and llvm-g++ executables. </p></li>
<li><p>Rebuild your CVS tree. This shouldn't cause the whole thing to be
rebuilt, but it should build the runtime libraries. After the tree is
These are the commands you need.</p>
<pre>
% gmake
- % mkdir $CFEINSTALL/lib
% gmake -C runtime install-bytecode
</pre></li>
<li><p>Optionally, build a symbol table for the newly installed runtime
-libraries. Although this step is optional, you are encouraged to do this as the
-symbol tables will make a significant difference in your link times. Use
-the <tt>llvm-ranlib</tt> tool to do this, as follows:</p>
+libraries. Although this step is optional, you are strongly encouraged to
+do this as the symbol tables will make a significant difference in your
+link times. Use the <tt>llvm-ranlib</tt> tool to do this, as follows:</p>
<pre>
% cd $CFEINSTALL/lib
% llvm-ranlib libiberty.a
% llvm-ranlib libstdc++.a
% llvm-ranlib libsupc++.a
- % cd $CFEINSTALL/lib/<i>target-triplet</i>/3.4-llvm
+ % cd $CFEINSTALL/lib/gcc/<i>target-triplet</i>/3.4-llvm
% llvm-ranlib libgcc.a
% llvm-ranlib libgcov.a
</pre>
<li><p>Test the newly-installed C frontend by one or more of the
following means:</p>
<ul>
+ <li> running the feature & regression tests via <tt>make check</tt></li>
<li> compiling and running a "hello, LLVM" program in C and C++.</li>
- <li> running the regression tests in <tt>llvm/test</tt>
<li> running the tests found in the <tt>llvm-test</tt> CVS module</li>
</ul></li>
</ol>