]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Entirely rewrite the porting page.
authorwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Wed, 29 Nov 2000 09:23:48 +0000 (09:23 +0000)
committerwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Wed, 29 Nov 2000 09:23:48 +0000 (09:23 +0000)
git-svn-id: https://svn.dealii.org/trunk@3511 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/doc/porting.html

index 7e099ab7419800946e80ab7b452171775a5fddc8..c172197f1a82d96a5433e7b73b47807ef4be19bf 100644 (file)
   </head>
 
   <body>
-<h1>Porting <acronym>deal.II</acronym> to new systems</h1>
-
-<p> Attention: before starting a port to a new system, check
-the <a href="readme.html">readme file</a> for your system.</p>
-
-<h2>Compiler flags</h2>
-
-A configuration by setting the <TT>CXXFLAGS</TT> variable will soon be
-supported.
-
-<h2>Configuration file</h2>
-
-<p>Configurations must be done in the file <TT>configure.in</TT> of
-the root directory of <acronym>deal.II</acronym>. At the end, look for
-a section of the structure
-<pre>
-case "$target" in
-   *-linux*) ...;;
-   *-aix*) ...;;
-esac
-
-case "$target" in
-   alpha*-linux*) ...;;
-esac
-</pre>
-The first case block allows you to adjust parameters for a certain
-operating system, the second for an operating system/machine
-configuration.</p>
-
-<h3>Enable/disable configured options</h3>
-
-<p>Some of the features of the library are turned on and off by
-<TT>--enable-xxx</TT> and <TT>--with-xxx=yyy</TT> options to
-configure. These user-supplied parameters can be changed by modifying
-related variables: for example, to turn off shared libraries on aix,
-enter the following in the operating system case-block
-<pre>
-   *-aix*) enableshared=no ;;
-</pre>
 
 
+  <h1>Porting <acronym>deal.II</acronym> to new systems</h1>
+
+  <p>
+  Since <acronym>deal.II</acronym> uses very few system dependent
+  features, there is a good chance that it might also run on other
+  systems besides the one listed in the 
+  <a href="readme.html" targte="body">ReadMe file</a>. Nevertheless,
+  there are often cases where some adjustments are necessary. We will
+  try to give you an impression on what might have to be done in such
+  cases here.
+  </p>
+
+
+  <p>
+  Basically, all the setup of the specifics or a system is done in the
+  ``configure'' script that is run first. This script finds out about
+  operating system, processor, and the like, and then goes on testing
+  whether certain features are present, or if their absence can be
+  worked around.
+  </p>
+
+  <p>
+  ``configure'' is not made for human eyes. It is in fact only a
+  script generated by the ``autoconf'' program from the files
+  ``configure.in'' and ``aclocal.m4'' in the top-level directory of
+  <acronym>deal.II</acronym>. The first contains the order in which
+  macros are called that test for features, interspersed by shell
+  script snippets that do actions depending on the results of the
+  macros. The second file contains the user-defined macros used in
+  ``configure.in'' (most macros are already predefined by autoconf).
+  </p>
+
+  <p>
+  When the ``configure'' script is run on the shell, it writes its
+  results into the file ``common/Make.global_options'' that contains
+  definitions of all compiler flags to be used, as well as paths to
+  programs and other options. In fact, ``configure'' rather takes the
+  file ``common/Make.global_options.in'' and replaces all occurences
+  of variables ``@var@'' by the value of the respective variable in
+  the ``configure'' shell script.
+  </p>
+
+
+
+  <h2>Quick porting</h2>
+
+  <p>
+  If you find something that does not work on your system, then the
+  quickest way to make <acronym>deal.II</acronym> run on your system
+  is to run ``configure'' and change things in
+  ``common/Make.global_options'' so that it works for you. Note that
+  this file is overwritten next time you run ``configure''.
+  </p>
+
+  <p>
+  Most often, problems on new systems are caused by the compiler not
+  accepting certain flags, crashing or producing invalid code on
+  optimization flags, not supporting shared libraries, and the like.
+  All these problems can be solved by changing
+  ``common/Make.global_options'', e.g. by setting the variable
+  ``enable-shared'' to ``no'', or by changing the compiler flags in
+  the variables ``CXXFLAGSG'' (for debug mode) or ``CXXFLAGSO'' (for
+  optimized mode).
+  </p>
+
+
+
+  <h2>Portable porting</h2>
+
+  <p>
+  While the measures shown above make <acronym>deal.II</acronym> run
+  on your system, it does not help other users. Neither does it mean
+  that the next version will run on your system unless you do the same
+  changes over again. There are basically two ways to help us make
+  <acronym>deal.II</acronym> run on your system by default:
+  <ul>
+    <li>
+    <p>
+    You can send us the changes you had to make so that we can include
+    it into the distribution.
+    </p>
+
+    <li>
+    <p>
+    If you know the basics of ``autoconf'', or of shell scripting, you
+    will be able to write tests for the changes that are necessary in
+    ``configure.in'' yourself. There are plenty of examples, both for
+    things that we do depending on the system (for example disabling
+    shared libraries on certain systems) or depending on the compiler
+    (for example using some optimization flags for newer gcc
+    versions), and depending on the results of feature tests. For the
+    latter, you may for example take a look at the macro
+    ``DEAL_II_CHECK_ASSERT_THROW'' in ``aclocal.m4'' that shows how to
+    test whether the ``AssertThrow'' construct in
+    <acronym>deal.II</acronym> works as intended (this check is
+    necessary since some compiler versions get an internal compiler
+    error on DEC Alpha machines for this construct).
+    </p>
+
+    <p>
+    If you have made such changes to ``configure.in'' or
+    ``aclocal.m4'', run ``autoconf'' in the top-level directory to
+    regenerate the ``configure'' script, which you should then run and
+    see whether the output in ``common/Make.global_options'' matches
+    your expectations.
+    </p>
+
+    <p>
+    Of course, we would be happy to hear about the changes you made
+    for your system, so that we can include them into the next version
+    of the library.
+    </p>
+  </ul>
+  </p>  
+
+
+  <h2>Cheap porting</h2>
+
+  <p>
+  If for some reason you cannot get <acronym>deal.II</acronym> to run
+  on your system, or if you don't have the expertise to dig into the
+  low-level parts of your system, and if you can provide a test
+  account, you may ask us to try to get things running on your
+  machine. Please note that <em>we can't promise to do that as this is
+  largely a volunteer project and we can only do it if time
+  permits!</em> Nevertheless, we have an interest to have the library
+  running on as many platforms as possible, so the odds are not that
+  bad that we will find some spare time.
+  </p>
+
 
 
 <hr>

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.