next up previous contents
Next: Most common options to Up: Requirements, Installation and Testing Previous: Where to Get A++/P++

How to Install A++/P++

A++ and P++ are distributed together; they are meant to be installed together as well. Assuming you have the A++P++-0.X.X.tar.gz file use gunzip and then untar the file to build the A++ directory.

The configure script requires no additional parameters, it will figure out what sort of machine you have and run numerous tests to see what options should be used internally in the installation (this is the standard autoconf mechanism). We have added many additional test (testing for MPI, dynamic library capabilities, etc.).

A relatively new feature of A++/P++ is the use of autoconf which builds a configure script which will setup A++ and P++ plus generate the makefile for the final build. There are is a single configure script in each directory of the directory hierarchy (the A++ and P++ configure scripts can be run separately for example).

To use the configure script (there is no other way) type configure -help to see the options. The output should appear something like this for the configure script at the top level directory:

configure -help
Usage: configure [options] [host]
Options: [defaults in brackets after descriptions]
Configuration:
  --cache-file=FILE       cache test results in FILE
  --help                  print this message
  --no-create             do not create output files
  --quiet, --silent       do not print `checking...' messages
  --version               print the version of autoconf that created configure
Directory and file names:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [same as prefix]
  --bindir=DIR            user executables in DIR [EPREFIX/bin]
  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
  --datadir=DIR           read-only architecture-independent data in DIR
                          [PREFIX/share]
  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
                          [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
  --includedir=DIR        C header files in DIR [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
  --infodir=DIR           info documentation in DIR [PREFIX/info]
  --mandir=DIR            man documentation in DIR [PREFIX/man]
  --srcdir=DIR            find the sources in DIR [configure dir or ..]
  --program-prefix=PREFIX prepend PREFIX to installed program names
  --program-suffix=SUFFIX append SUFFIX to installed program names
  --program-transform-name=PROGRAM
                          run sed PROGRAM on installed program names
Host type:
  --build=BUILD           configure for building on BUILD [BUILD=HOST]
  --host=HOST             configure for HOST [guessed]
  --target=TARGET         configure for TARGET [TARGET=HOST]
Features and packages:
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --x-includes=DIR        X include files are in DIR
  --x-libraries=DIR       X library files are in DIR
--enable and --with options recognized:
  --enable-PXX         also configure P++

And for the A++ directory, the output of configure -help is:

configure -help
Usage: configure [options] [host]
Options: [defaults in brackets after descriptions]
Configuration:
  --cache-file=FILE       cache test results in FILE
  --help                  print this message
  --no-create             do not create output files
  --quiet, --silent       do not print `checking...' messages
  --version               print the version of autoconf that created configure
Directory and file names:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [@APP_DEFAULT_PREFIX@]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [same as prefix]
  --bindir=DIR            user executables in DIR [EPREFIX/bin]
  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
  --datadir=DIR           read-only architecture-independent data in DIR
                          [PREFIX/share]
  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
                          [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
  --includedir=DIR        C header files in DIR [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
  --infodir=DIR           info documentation in DIR [PREFIX/info]
  --mandir=DIR            man documentation in DIR [PREFIX/man]
  --srcdir=DIR            find the sources in DIR [configure dir or ..]
  --program-prefix=PREFIX prepend PREFIX to installed program names
  --program-suffix=SUFFIX append SUFFIX to installed program names
  --program-transform-name=PROGRAM
                          run sed PROGRAM on installed program names
Host type:
  --build=BUILD           configure for building on BUILD [BUILD=HOST]
  --host=HOST             configure for HOST [guessed]
  --target=TARGET         configure for TARGET [TARGET=HOST]
Features and packages:
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --x-includes=DIR        X include files are in DIR
  --x-libraries=DIR       X library files are in DIR
--enable and --with options recognized:
  --with-CC=ARG           manually set C compiler to ARG
  --with-M4=ARG           manually set M4 to ARG
  --with-CXX=ARG          manually set C++ compiler to ARG
  --enable-CXXOPT=ARG   manually set CXXOPT to ARG
  --enable-COPT=ARG   manually set COPT (optimization flags) to ARG
  --enable-CXXDEBUG=ARG   manually set CXXDEBUG to ARG
  --enable-CDEBUG=ARG     manually set CDEBUG to ARG
  --enable-CXXOPTIONS=ARG   manually set CXXOPTIONS to ARG
  --enable-COPTIONS=ARG     manually set CDEBUG to ARG
  --enable-CXX_WARNINGS=ARG   manually set CXX_WARNINGS to ARG
  --enable-C_WARNINGS=ARG   manually set C_WARNINGS to ARG
  --with-CXX_TEMPLATES=ARG
                              manually set CXX_TEMPLATES to ARG
  --with-ARCH_LIBS=ARG    manually set ARCH_LIBS to ARG
  --enable-INTERNALDEBUG   turn on internal debugging for any ARG
  --with-USE_TAU_PERFORMANCE_MONITOR=ARG  manually set USE_TAU_PERFORMANCE_MONITOR to YES or NO ARG
  --enable-SHARED_LIBS, manually enable building of shared libraries, off by default
  --enable-STATIC_LINKER=ARG manually set linker for linking static libraries to ARG
  --enable-STATIC_LINKER_FLAGS =ARG manually set static linker flags to ARG
  --enable-SHARED_LIB_EXTENSION=ARG manually set file extension for shared libraries to ARG (e.g. so)
  --enable-C_DYNAMIC_LINKER=ARG manually set linker for linking shared library from C object files to ARG
  --enable-CXX_DYNAMIC_LINKER=ARG manually set linker for linking shared library from C++ object files to ARG
  --enable-C_DL_COMPILE_FLAGS=ARG   manually set C compiler flags to make objects suitable for building into shared libraries
  --enable-CXX_DL_COMPILE_FLAGS=ARG   manually set C++ compiler flags for creating object files suitatble for putting into a shared library 
  --enable-C_DL_LINK_FLAGS=ARG   manually set flags for linking C object files into a shared library
  --enable-CXX_DL_LINK_FLAGS=ARG   manually set linker flags for linking C++ object files into a shared library
  --enable-RUNTIME_LOADER_FLAGS=ARG   manually set runtime loader flags to ARG

For the P++ directory, the output of configure -help is:

configure -help
Usage: configure [options] [host]
Options: [defaults in brackets after descriptions]
Configuration:
  --cache-file=FILE       cache test results in FILE
  --help                  print this message
  --no-create             do not create output files
  --quiet, --silent       do not print `checking...' messages
  --version               print the version of autoconf that created configure
Directory and file names:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [@PPP_DEFAULT_PREFIX@]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [same as prefix]
  --bindir=DIR            user executables in DIR [EPREFIX/bin]
  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
  --datadir=DIR           read-only architecture-independent data in DIR
                          [PREFIX/share]
  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
                          [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
  --includedir=DIR        C header files in DIR [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
  --infodir=DIR           info documentation in DIR [PREFIX/info]
  --mandir=DIR            man documentation in DIR [PREFIX/man]
  --srcdir=DIR            find the sources in DIR [configure dir or ..]
  --program-prefix=PREFIX prepend PREFIX to installed program names
  --program-suffix=SUFFIX append SUFFIX to installed program names
  --program-transform-name=PROGRAM
                          run sed PROGRAM on installed program names
Host type:
  --build=BUILD           configure for building on BUILD [BUILD=HOST]
  --host=HOST             configure for HOST [guessed]
  --target=TARGET         configure for TARGET [TARGET=HOST]
Features and packages:
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --x-includes=DIR        X include files are in DIR
  --x-libraries=DIR       X library files are in DIR
--enable and --with options recognized:
  --with-CC=ARG           manually set C compiler to ARG
  --with-M4=ARG           manually set M4 to ARG
  --with-CXX=ARG          manually set C++ compiler to ARG
  --enable-CXXOPT=ARG   manually set CXXOPT to ARG
  --enable-COPT=ARG   manually set COPT (optimization flags) to ARG
  --enable-CXXDEBUG=ARG   manually set CXXDEBUG to ARG
  --enable-CDEBUG=ARG     manually set CDEBUG to ARG
  --enable-CXXOPTIONS=ARG   manually set CXXOPTIONS to ARG
  --enable-COPTIONS=ARG     manually set CDEBUG to ARG
  --enable-CXX_WARNINGS=ARG   manually set CXX_WARNINGS to ARG
  --enable-C_WARNINGS=ARG   manually set C_WARNINGS to ARG
  --with-CXX_TEMPLATES=ARG
                              manually set CXX_TEMPLATES to ARG
  --with-ARCH_LIBS=ARG    manually set ARCH_LIBS to ARG
  --enable-INTERNALDEBUG   turn on internal debugging for any ARG
  --with-USE_TAU_PERFORMANCE_MONITOR=ARG  manually set USE_TAU_PERFORMANCE_MONITOR to YES or NO ARG
  --enable-SHARED_LIBS, manually enable building of shared libraries, off by default
  --enable-STATIC_LINKER=ARG manually set linker for linking static libraries to ARG
  --enable-STATIC_LINKER_FLAGS =ARG manually set static linker flags to ARG
  --enable-SHARED_LIB_EXTENSION=ARG manually set file extension for shared libraries to ARG (e.g. so)
  --enable-C_DYNAMIC_LINKER=ARG manually set linker for linking shared library from C object files to ARG
  --enable-CXX_DYNAMIC_LINKER=ARG manually set linker for linking shared library from C++ object files to ARG
  --enable-C_DL_COMPILE_FLAGS=ARG   manually set C compiler flags to make objects suitable for building into shared libraries
  --enable-CXX_DL_COMPILE_FLAGS=ARG   manually set C++ compiler flags for creating object files suitatble for putting into a shared library 
  --enable-C_DL_LINK_FLAGS=ARG   manually set flags for linking C object files into a shared library
  --enable-CXX_DL_LINK_FLAGS=ARG   manually set linker flags for linking C++ object files into a shared library
  --enable-RUNTIME_LOADER_FLAGS=ARG   manually set runtime loader flags to ARG
  --disable-MPI           Do not set up MPI flags
  --with-mpi-include=DIR  mpi.h is in DIR
  --with-mpi-libs=LIBS    LIBS is space-separated list of library names 
                          needed for MPI, e.g. "nsl socket mpi"
  --with-mpi-lib-dirs=DIRS
                          DIRS is space-separated list of directories
                          containing the libraries specified by
                          `--with-mpi-libs', e.g "/usr/lib /usr/local/mpi/lib"
  --with-mpi-flags=FLAGS  FLAGS is space-separated list of whatever flags other
                          than -l and -L are needed to link with mpi libraries
  --with-MPICC=ARG        ARG is mpicc or similar MPI C compiling tool
  --with-mpi-include=DIR  mpi.h is in DIR
  --with-mpi-libs=LIBS    LIBS is space-separated list of library names 
                          needed for MPI, e.g. "nsl socket mpi"
  --with-mpi-lib-dirs=DIRS
                          DIRS is space-separated list of directories
                          containing the libraries specified by
                          `--with-mpi-libs', e.g "/usr/lib /usr/local/mpi/lib"
  --with-mpi-flags=FLAGS  FLAGS is space-separated list of whatever flags other
                          than -l and -L are needed to link with mpi libraries
  --with-MPICC=ARG        ARG is mpicc or similar MPI C compiling tool
  --with-mpirun=ARG   ARG is mpirun or equivalent
  --with-mpi-machinefile=FNAME    FNAME lists machines to run mpi progs on
  --with-STL_INCLUDE=ARG    manually set STL_INCLUDE to ARG
  --without-PADRE           Avoid using PADRE Library within P++
  --with-STL_INCLUDE=ARG    manually set STL_INCLUDE to ARG
  --with-GLOBAL_ARRAYS     Use GLOBAL ARRAYS Library (from PNL) within PADRE

Note that numerous option araavailable, though non should be reuired for a default installation of A++/P++.

An example configure line to install A++ might be:

     configure

In another example to configure for a specific C++ and C compiler the command line would be:

     configure --with-CC=cc --with-CXX=CC

In still another example to configure for without optimization to improve the compile speed of the A++/P++ library: the command line would be:

     configure --enable-CXXOPT= --enable-COPT=

In still an other example to compile P++ (also turning on INTERNALDEBUG option) in addition to A++:

     configure --enable-INTERNALDEBUG --enable-PXX

On some machines when compiling P++ the location of MPI must be specified. Example specification of MPI location:

     configure --enable-PXX --with-CC=cc --with-CXX=cxx --enable-SHARED_LIBS \
               --with-mpi-include=/usr/opt/MPI170/include \
               --with-mpi-lib-dirs=/usr/opt/MPI170/lib \
               --with-mpi-libs=mpi \
               --with-mpirun=/usr/opt/MPI170/bin/dmpirun

There are clearly numerous options available to specify numerous details of the compilation.



 
next up previous contents
Next: Most common options to Up: Requirements, Installation and Testing Previous: Where to Get A++/P++
Dan Quinlan
2000-08-16