changes to PETSc-dev bmake system and library locations

Barry Smith bsmith at mcs.anl.gov
Fri Jun 8 20:02:25 CDT 2007


  PETSc-dev users,

    After picking Satish's brain, I have made a set of changes to
petsc-dev related to compiling and linking programs.

   Goal:  Support the GNU; config/configure.py; make; make install model 
including all external packages PETSc builds for you. After "make install"
PETSC_ARCH should not be needed.

   Constraints:
* Allow skipping the "make install" step and yet having everything
fully functional even with shared and dynamic libraries
* Allow multiple builds in the non-"make install" approach which you can
switch between by changing PETSC_ARCH
* Not require any file links
* A system that does not mix generated files and non-generated in the same
directory in $PETSC_DIR
* A system no more complicated then the previous version.

  Solution:

In place, before "make install"

petsc-dev/include                  same as now
         /bin                      same as now
         /conf                     basically the same as bmake/common was
         $PETSC_ARCH/include       generated includes: petscconf.h petscfix.h ..
                     lib           generated libraries
                     bin           generated programs
                     conf          basically the same as bmake/$PETSC_ARCH/ 
                                      except not the include files

After "make install"

prefix/include                  all includes
      /bin                      all programs, including mpiexec, mpicc if generated
      /conf                     the stuff previous in bmake/common and bmake/$PETSC_ARCH
      /lib                      the libraries, including from external packages

The whole trick is that in the PETSc bmake files (now conf files :-)) the $PETSC_ARCH/
disappears in the "make install" version.

I have fixed the external packages MPI.py, BlasLapack.py and Chaco.py but the others
need to be modified to stick their libraries and includes in the new correct place.

The only change you should need to your makefiles is to replace
include ${PETSC_DIR}/bmake/common/base with 
include ${PETSC_DIR}/conf/base
Bug reports to petsc-maint at mcs.anl.gov questions to petsc-dev at mcs.anl.gov

   Barry




More information about the petsc-dev mailing list