-
Notifications
You must be signed in to change notification settings - Fork 0
License
fwinter/qdp-jlab
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Quick installations instructions for QDP
========================================
To build QDP, it is recommended you make a subdirectory for the
build and keep the build tree separate from the source tree. E.g., say
to build the "scalar" version (single node workstation) of QDP++:
% cd qdp++
% mkdir scalar-build
% cd scalar-build
% ../configure --prefix=<path to your favorite installation directory> \
--enable-parallel-arch=scalar
% make
The include files, libraries and docs are installed in the path
specified by ``prefix''.
============================================================================
Extended examples of installation
========================================
See INSTALL_EXAMPLES
============================================================================
STATUS
======
Scalar and Parscalar library compiles, examples compile and link and run.
SOFTWARE PREREQUISITES
======================
This implementation has been developed under gcc-3.2, and Intel C++
(32bit) V7.0. To compile this code you will need a compiler that
supports the C++ 3.0 standard - e.g., gcc-3.x. Also needed: gmake and
libxml2. To be able to play with the build system you'll also need
autoconf-2.5x and automake-1.7.x and gm4.
INSTALLATION
============
See the ./INSTALL file.
COMPILE TIME PARAMETERS
===========================
The macros NC, ND and NS are defined in params.h, but in qdp_config.h.
params.h includes qdp_config.h and sets Nc=NC, ND=Nd and NS=Ns
from the defined values NC, ND and NS which are defined in qdp_config.h
The file qdp_config.h is created by the configure script from the
template qdp_config.h.in and the resulting file is placed in the build
directory include/qdp_config.h . Apart from defining NC, ND and NS it
also defines the relevant ARCH_[PAR]SCALAR which defines the type of
parallel architecture. Hence qdp.h also includes qdp_config.h.
USAGE
=====
The installation creates and installs a library - depending on the
environment it is called libqdp.a . In the installation directory
there is an include and a lib subdirectory where the relevant
files are found. The user uses compiles their code with the
appropriate include and link flags pointing to the installation
directories. E.g., assuming configuration with --prefix=/usr/local/qdp++/scalar
% g++ -I/usr/local/qdp++/scalar/include -L/usr/local/qdp++/scalar/lib \
myfile.cc -lqdp
If QMP is used there also needs to be links to its installation
directories as well.
AUTOCONF & AUTOMAKE
===================
The build system has been converted to work with autoconf/automake.
If you just want to build/install QDP++ you shouldn't need to care about
this.
If you are intending to develop the system you need to know
how autoconf/automake work.
Short summary:
Autoconf is a programming language based on shell (sh) script
and m4 macros that allow you to write configure scripts.
You edit the configure.ac script with your editor and run
autotoconf to turn it into a configure script.
The configure script allows configuration in several ways.
It can substitute values in files, it can define compiler
#define-s amongst other things. Generally it maps template
Makefile.in files to Makefile files (that get used by your build)
Automake is a system to allow you to write Makefile.in files
for autoconf. Generally Automake takes a set of Makefile.am
files and produces Makefile.in files from it. These then
get turned into Makefile files by the configure script.
If you add a file to say a directory (say a foo.cc in lib/ )
and you want it to be compiled into the library, you must
do the following:
i) drop the foo.cc file into lib/
ii) Edit lib/Makefile.am and add the source file at the
end of the right SOURCES or LIBADD primary
iii) Go to the toplevel directory and type autoreconf
You should find that if things went well, that when you
next type ./configure everything should be taken care of.
If things go badly and autoreconf doesn't work, because
say there is a version mismatch with automake then remove
the aclocal file from the toplevel directory.
then type:
$ aclocal
$ autoconf
$ automake --add-missing --copy
aclocal creates an aclocal.m4 file containing macros for automake
autoconf and automake need to be run. Automake needs a few files
present (like COPYING, NEWS, AUTHORS, ChangeLog etc etc etc). If you
don't have these the --add-missing --copy should get them for you.
$ autoreconf should work thereafter.
More pointers:
--------------
if you add a header file to include/
also add it to Makefile.am to the include_HEADERS primary
(so that it gets installed when you type make install)
in lib/ you can make files depend on headers by adding them to the
HDRS macro. Note that HDRS in lib/Makefile.am is a part of
nodist_libqdp_a_SOURCE as those headers are also put into the
distro by the Makefile.am
If you just drop a file that you don't want to use yet,
but want the file there for later use, add it to the EXTRA_DIST
line in to the Makefile.am in the top source directory.
Rolling Distribution Tarballs
-----------------------------
Once you have configured QDP++, you should be able to
create a distribution tarball (qdp-ver.tar.gz -
where ver is version number specified in the first line
of configure.ac) by typing You can then put this distro
on a web page or mail it to friends.
make dist
The rules of what goes into a distribution are fairly
poorly specified. More or less anything in a _SOURCES
or _HEADERS will be put in, as well as all the Makefile.in-s
and Makefile.am-s and the configure.ac etc etc etc.
For things that are not in these (say QDPClasses.in)
you have to add extra instructins for the file to be included
in a distribution tarball (see the EXTRA_DIST Automake
variable -- for things that need to be added in as extra,
and the nodist_ primary prefix -- for things that are sources
but shouldn't be added (eg qdp_config.h shouldn't be added
because it should always be recreated at configure time)
Further Information
-------------------
The Autoconf Manual:
http://www.gnu.org/manual/autoconf-2.53/autoconf.html
The Automake Manual:
http://www.gnu.org/manual/automake-1.6.1/automake.html
GNU Autoconf, Automake and Libtool:
http://sources.redhat.com/autobook
Learning Autoconf and Automake:
http://www.amath.washington.edu/~lf/tutorials/autoconf
Software versions used in building the build system:
----------------------------------------------------
autoconf-2.56
automake-1.7.1
You will also probably want a version of gm4 installed (the above
use it) and gmake too for its VPATH support.
---About
No description, website, or topics provided.
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published