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.