+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
- "http://www.w3.org/TR/REC-html40/frameset.dtd">
-<html>
- <head>
- <link href="../screen.css" rel="StyleSheet" media="screen">
- <title>The deal.II Readme -- Installation Instructions</title>
- <meta name="author" content="Wolfgang Bangerth <deal@iwr.uni-heidelberg.de>">
- <meta name="keywords" content="deal.II">
- </head>
-
- <body>
-
-
- <h1>Installation instructions for the Portland Group pgcc compiler</h1>
-
- <p>
- This compiler is not supported yet, or maybe we should say this
- differently: this compiler does not support C++ enough to allow
- compilation of the library. The first obstacle is that as of
- version 3.3-2, the compiler does not come with C++ style headers
- <code><cmath&rt;</code>, <code><cstdlib&rt;</code>, etc. If
- such a file is placed into the respective include directory,
- containing in include statement for the respective C style header
- (no "c" in front, but a ".h" at the end), then at least the
- preprocessor works, but we are stuck with uses of the math
- functions in namespace "std", such as <code>std::sin</code>. This
- would require changes all over the code, or writing a standard
- compliant header file, both of which we are not willing to do as
- this is just a lack of C++ conformance of the compiler, not of the
- library.
- </p>
-
- <p>
- However, even if we do this in a couple of places, we get
- consistent errors with this perfectly legal piece of code:
- <code>
- <pre>
-#include <map>
-
-void g (double);
-void f()
-{
- std::map<int,double> m;
- for (std::map<int,double>::const_iterator i=m.begin(); i!=m.end(); ++i)
- g(i->second);
-};
- </pre>
- </code>
- leading to this message:
- <code>
- <pre>
-tmp/x> pgCC -c x.cc
-"x.cc", line 8: error: expression must have pointer type
- g(i->second);
- ^
-
-1 error detected in the compilation of "x.cc".
- </pre>
- </code>
- </p>
-
- <p>
- Furthermore, we consistently got this error:
- <code>
- <pre>
-"/home/wolf/p/deal.II/3/deal.II/base/include/base/memory_consumption.h", line 482: internal error:
- assertion failed at: "../src/types.c", line 4669
-
- unsigned int memory_consumption (const T (&v)[N])
- ^
-
-1 catastrophic error detected in the compilation of "source/data_out_base.cc".
-Compilation aborted.
-pgCC-Fatal-/home/wolf/bin/pgcc/linux86/bin/pgcpp1 TERMINATED by signal 6
- </pre>
- </code>
- At this point we thought we'd better use our time for something
- better and wait for the next version of the compiler.
- </p>
-
-
- <p>
- When the next version came (4.0), we found the front-end much
- improved. However, the real showstopper is that for this code
- <code>
- <pre>
- template <int dim> struct C {
- void f();
- };
-
- template <> void C<1>::f() {};
- </pre>
- </code>
- no code is generated for <code>C<1>::f</code> unless the
- function is used later on in the file. In contrast to
- non-specialized template functions, this case is also not handled
- by pgcc's prelinker which would otherwise instantiate missing
- templates. Since we have many (many many) specializations of
- member functions in the .cc files in the library, that means that
- code for these functions is never generated. Consequently, one
- gets linker errors later on.
- </p>
-
- <p>
- We believe that pgcc's behavior is not in accordance with the
- standards, and is also not useful, since it forces the programmer
- to put explicit specializations of functions into header files. We
- had a long email exchange with Portland Group people in the summer
- of 2002, who promised to review the matter. Unfortunately, the
- problem still exists in pgcc 4.1 as of June 2003, making pgcc
- still unusable to compile deal.II.
- </p>
-
- </body>
-</html>
used positively on
<ul>
<li>Linux on x86, with gcc 3.2, 3.3, 3.4, 4.0, and 4.1; and
- Intel ICC 6.0, 7.0, 7.1, 8.0, and 8.1;
+ Intel ICC 7.0, 7.1, 8.0, 8.1, and 9.0;
<li>Linux on x86_64 (Opterons, AMD64, and Intel EM64T chips) using gcc
- 3.3, 3.4, and 4.0;
+ 3.3, 3.4, 4.0, and 4.1;
<li>Sun Solaris 2.5, 2.6, 7, 8, and 9 on Sparc, with
gcc 3.2, 3.3, 3.4;
<li>Sun Solaris 9 on Sparc in 64bit mode, with gcc 3.1.1/3.2;
some restrictions on the use of shared libraries);
<li>Linux on x86, with the PathScale EKOPath compiler version
2.2 (though only with static instead of shared libraries);
+ <li>Linux on x86, with Portland Groups (PGI) pgCC compiler
+ version 6.2;
<li><a href="http://www.cygwin.com">Cygwin/Windows</a> with
cygwin1.dll versions 1.5.xx and gcc 3.3 under Windows XP
and NT.
<li> <a href="platforms/ibm_aix_xlc.html" target="body">IBM AIX
with IBM's xlC 5.0 and 6.0 compilers</a>.
- <li> <a href="platforms/pgcc.html" target="body">Portland Group
- PGCC 3.x and 4.x on x86 Linux</a>.
-
<li> <a href="platforms/windows.html" target="body">Microsoft
Windows 95/98/2000/NT/XP</a>.