Commit fa62d0a2 authored by thomas.forbriger's avatar thomas.forbriger Committed by thomas.forbriger
Browse files

proceeding

This is a legacy commit from before 2015-03-01.
It may be incomplete as well as inconsistent.
See COPYING.legacy and README.history for details.


SVN Path:     http://gpitrsvn.gpi.uni-karlsruhe.de/repos/TFSoftware/trunk
SVN Revision: 2448
SVN UUID:     67feda4a-a26e-11df-9d6e-31afc202ad0c
parent 2f8ab7b1
......@@ -2,15 +2,19 @@ this is <README.compile>
============================================================================
How to compile the source code
------------------------------
$Id: README.compile,v 1.6 2007-11-23 09:15:27 tforb Exp $
$Id: README.compile,v 1.7 2007-11-24 18:31:07 tforb Exp $
============================================================================
Here you will find some notes to help you in the process of compiling software
provided by me (Thomas Forbriger). My programs usually make use of several
different software libraries. With the beginning of 2006 I provide software
packages (main code) separately from the libraries, which makes life easier
for me (but harder for you). Please read the notes below to compensate for
that.
different software libraries.
With the beginning of 2006 I provide software packages (main code) separately
from the libraries, which makes life easier for me (but harder for you).
Please read the notes below to compensate for that.
From November 2007 on, I will port my programs to a 64-bit Linux system. Until
this is finished, you may find some of the packages in a transitional stage.
Make
----
......@@ -18,32 +22,85 @@ Make
Environment variables in Makefiles
----------------------------------
Binary libraries will be placed in a directory addressed by the
environment variable LOCLIBDIR. Makefiles of main code on the other hand
will expect to find the libraries there. Library files are copied, not
linked.
Header files of libraries will be placed in a directory addressed by the
environment variable LOCINCLUDEDIR. Makefiles of main code on the other
hand will expect to find the header files there. Header files are linked
symbolically. So do not remove the source code directories or their
contents after installing libraries. Rather execute the cleaning targets
there.
The bevahiour of the Makefiles is controlled by environment variables. It is
most suitable to set their values in $HOME/.profile or $HOME/.bashrc
C++ libraries usually come together with doxygen documentation. This will
be placed in a directory addressed by the environment variable
WWWBASEDIR.
Executable binaries are copied to a directory addressed by the environment
variable LOCBINDIR.
Please set these environment variables to meaningful values and to create
the appropriate directories prior to Makefile execution. I recommand to
define something like
export LOCLIBDIR=$HOME/lib
export LOCBINDIR=$HOME/bin
Here I give a description of these variables together with their typical
values:
export LOCBINDIR=$HOME/bin
Compiled and linked binaries will be copied to this directory. If you
include this directory in the setting of your PATH variable, you will have
easy access to the binary from any working directory.
export LOCLIBDIR=$HOME/lib
Libraries will be copied to this directory. An Makefiles will pass this
directory to the linker in order to link against these libraries.
export LOCINCLUDEDIR=$HOME/include
Links to header files will be installed in this directory. The Makefiles
pass this directory to the preprocessor to look for header files.
SERVERLIBDIR
If libraries that are needed by this code (like PGPLOT) are installed in
an uncommon system directory, you can use this variable to pass the
location to the linker.
SERVERINCLUDEDIR
If header files that are needed by this code (like cpgplot.h) are installed
in an uncommon system directory, you can use this variable to pass the
location to the linker.
LD_LIBRARY_PATH
If you install external libraries (e.g. PGPLOT) in an uncommon place, you
might have to set LD_LIBRARY_PATH to pass the location of the dynamic
library (e.g. libpgplot.so) to the dynamic linker.
export WWWBASEDIR=$HOME/doxydoc
C++ libraries usually are distributed together with a set of documentation
files that are automatically created by doxygen from the source code. The
resulting HTML files or man-pages wil be installed in this place by the
Makefile. The Makefiles create subdiretories to distinguish between
different packages.
export TF_BROWSER=firefox
The Makefile support the display of doxygen documentation with your html
browser. Use this variable to pass the name of the browser to the
Makefile.
export TF_LIBREGEXX=yes
If this variable is set, the Makefiles will expect libregexx to be
installed. Since libregexx is discontinued since several years and does
not easily compile on 64-bit systems, my code will be ported to use the
regular expression module in the boost library. This will be the default
in the future. If you do not have the boost library installed, but
libregexx, you should use this variable.
This feature may disappear somewhere in the future.
export TF_FALLBACK=yes
During porting of the software to 64-bit systems, the default method of
compiling Fortran code will be changed from f2c and gcc to g77. After this
transition some Makefiles might no longer support f2c at all. At least the
convetion for library file name will change. Until the porting procedure
is finished for all packages, this variable can be used to use the old
rules (f2c is default) as a fallback solution. Since filenames will be
different in this solution you should use different settings for LOCBINDIR
and LOCLIBDIR too, when using the fallback setting.
export TF_LINK_PGPLOT=-lpng -lX11 -L/usr/X11/lib64
This variable is passed to the linker in cases where binaries have to be
linked against PGPLOT. Use this variable to pass the location of your X11
libraries as well as the names of additional libraries that might be
needed for the PGPLOT drivers in your installation (like libpng.a in this
example).
export TF_f2c_PGPLOT=f2cpgplot
Use this variable to pass the name of the PGPLOT library that was compiled
with f2c and gcc (libf2cpgplot.a in this example).
export TF_g77_PGPLOT=pgplot
Use this variable to pass the name of the PGPLOT library that was compiled
with g77 (libpgplot.a or libpgplot.so in this example).
Libraries
---------
......@@ -74,15 +131,27 @@ Comments in header files
Compilers
---------
Fortran code traditionally is compiled by f2c (netlib, see below) and gcc
(GNU C compiler). Some more recent code also provides targets for
compilation with g77 (GNU Fortran compiler). In particular inter-language
linking, as is done with libtime.a e.g. requires f2c. Other Fortran
compilers are not guaranteed to work properly with code provided here.
With the transition to 64-bit systems, the default method to compile Fortran
files will be g77 (GNU Fortran compiler). Since I experience problems with
return values from libf2c-functions on 64-bit systems, the support for f2c
may be discontinued entirely in the future. Some libraries that provide
features for inter-language linking (like libtime.a) may still require f2c
to create a C-version of the Fortran source code.
Fortran code traditionally was compiled by f2c (netlib, see below) and gcc
(GNU C compiler). For packages not yet ported to 64-bit, you may use the
TF_FALLBACK environment variable to use the f2c rules in Makefiles (see
above).
Other Fortran compilers are not guaranteed to work properly with code
provided here.
C and C++ code usually is prepared to compile with the GNU C and C++
compiler.
I will not support the creation of 32-bit binaries on 64-bit platforms
(which would be possible by using the -m32 option).
Shell scripts
-------------
Some make rules may still contain calls to shell scripts called newprog or
......@@ -106,6 +175,11 @@ Shell scripts
package thofdevel########.tar.gz, which contains those tools. You will find
a copy of remcmmnt there too.
The shell-script setsandbox is used to set the environment variable (see
above) to independent values, when preparing a package. You will not need
this shell-script, since you will not use the make rules for package
creation.
Fortran plot programs
---------------------
Plot programs usually link against PGPLOT (see below).
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment