[overture] Re: Building v24 on Blue Gene P

  • From: "J. P. Bernstein" <astro@xxxxxxx>
  • To: overture@xxxxxxxxxxxxx
  • Date: Tue, 24 Apr 2012 13:48:39 -0500

Thanks, Bill.

Below is the MakeDefs file that I am using that is based on the MakeDefs.linux file that came with Overture.v24. The Include variable setting, indeed, does not include A++. Adding a -I pointing to $(APlusPlus/include) results in other immediate problems. Can you please send me a MakeDefs file for vanilla linux that is known working?

Thanks,

Joe

+++++MakeDefs.bgp (based on MakeDefs.linux+++++

# linux with dynamic libraries

# these next values for compilers will be used unless overridden with an 
argument to configure
cc = mpixlc_r
CC = mpixlcxx_r
FC = mprixlf77_r

# On some 64-bit machines some libraries are in lib64 instead of lib
# this next line will be changed by the configure script
LIB64 = lib

# Here is the rpath command
OV_RPATH = -Wl,-rpath,
#xlc OV_RPATH = -R

# these next lines will be changed by the configure script
USE_DOUBLE_OR_SINGLE = -DOV_USE_FLOAT
#xlc USE_DOUBLE_OR_SINGLE = -WF,-DOV_USE_FLOAT

A++ = $(APlusPlus)
A+++ = $(APlusPlus)
# AppLibraries = -L$(APlusPlus) -lA++ -lA++_static
AppLibraries = $(OV_RPATH)$(APlusPlus)/lib -L$(APlusPlus)/lib -lApp -lApp_static

Include=  -I$(Overture)/include -I.
Lib=      $(Overture)/lib
LibOverture= -lOverture -lOverture_static
# Make 2 dynamic libs for ibm:
#xlc LibOverture= -lOverture1 -lOverture2 -lOverture_static
LibRapsodi= -lRapsodi -lRapsodi_static
BOXLIB_DEFS = -DBL_USE_FLOAT -DBL_Solaris

# these next flags are compiler dependent
# *** WARNING *** these next lines are changed by the configure script
cc_FLAGS = -qarch=450d -qtune=450 -qmaxmem=16384
CC_FLAGS = -qarch=450d -qtune=450 -qmaxmem=16384
FF_FLAGS = -qarch=450d -qtune=450 -qmaxmem=16384

# Turn off warnings from intel f95 compiler
#ifc FF_FLAGS = -fPIC -w

# these next values will may be changed by the configure script
C_OPTIMIZATION_FLAG = -O
CPP_OPTIMIZATION_FLAG = -O
FORTRAN_OPTIMIZATION_FLAG = -g

# Use this next flag to optimize files that Bill likes to by default compile 
optimized
STD_OPT_FLAG = -O

CFLAGS =  $(cc_FLAGS)  $(Include) $(OverturePrecision) $(C_OPTIMIZATION_FLAG) 
-DSHM
# flags for c routines we always optimize (except if debug is on)
CFLAGSO =  $(STD_OPT_FLAG) $(cc_FLAGS)  $(Include) $(OverturePrecision) -DSHM

# do not include some paths, such as STL in the places searched by makedepend 
(takes too long)
#*wdh*  temporarily add -Wno-deprecated -- fix these later
# ** CC_INCLUDES_FOR_DEPEND =  $(Include) $(OverturePrecision) 
-I$(APlusPlus)/include $(BOXLIB_DEFS) -Wno-deprecated
CC_INCLUDES_FOR_DEPEND =  $(Include) $(OverturePrecision) $(BOXLIB_DEFS)

STL_INCLUDE =
#  HAS_MODFL_PROTO is for a perl compile error of OvertureParser.C for gcc 3.4.3
# CC_INCLUDES = $(CC_FLAGS) $(CC_INCLUDES_FOR_DEPEND) $(STL_INCLUDE)
# CC_FLAGS = -fPIC -DHAS_MODFL_PROTO
# wdh 081212 -- remove HAS_MODFL_PROTO since it fails with xlc
CC_INCLUDES = $(CC_FLAGS) $(CC_INCLUDES_FOR_DEPEND) $(STL_INCLUDE)
#CC_FLAGS = -fPIC

CCFLAGS= $(CC_INCLUDES) $(CPP_OPTIMIZATION_FLAG)

# things that are always compiled with optimization use this flag (except if 
debug is on)
CCFLAGSO= $(CC_INCLUDES) $(STD_OPT_FLAG)

# things that are always compiled with lots of optimization use this flag 
(except if debug is on)
CCFLAGSF= $(CC_INCLUDES) $(STD_OPT_FLAG)

# things that need to be compiled with no optimization use the following
CCFLAGSG= $(CC_INCLUDES) -g

# Notes: There seems to be problems using -O with g77
#        Some older versions of the egcs compiler also had trouble with -fPIC, 
removing it seemed to work.
FFLAGS=    $(FF_FLAGS) $(OverturePrecision)  $(FortranDouble) 
$(FORTRAN_OPTIMIZATION_FLAG) $(Include)
# single precision always:
FFLAGSS=  $(FF_FLAGS) $(OverturePrecision) $(FORTRAN_OPTIMIZATION_FLAG)  
$(Include)
FFLAGSSO = ${FF_FLAGS} $(OverturePrecision) $(Include) $(STD_OPT_FLAG)
FFLAGSO = $(FF_FLAGS) $(OverturePrecision) $(FortranDouble) $(STD_OPT_FLAG) 
$(Include)
FFLAGSG = $(FF_FLAGS) $(OverturePrecision) $(FortranDouble) -g $(Include)
FFLAGSG2 = $(FF_FLAGS) $(OverturePrecision) $(FortranDouble) -g $(Include)
# The ifort compiler can take for-ever if we use -g so use -O instead
#ifort FFLAGSG = $(FF_FLAGS) $(OverturePrecision) $(FortranDouble) -O $(Include)

# things that are always compile with optimization use these flags (except if 
debug is on)
FFLAGSO= $(STD_OPT_FLAG) $(FF_FLAGS) $(OverturePrecision) $(FortranDouble)  
$(FLAGS) $(Include)
FFLAGSSO= $(STD_OPT_FLAG) $(OverturePrecision) $(FF_FLAGS)  $(FLAGS) $(Include)

# Here we add a path to the compiler lib directory (this is sometimes needed so 
that we find the correct
# version of the compiler libraries if they are different from the the ones in 
/usr/lib for e.g.)
OV_COMPILER_LIBS = $(OV_RPATH)$(COMPILER_LIB_DIRECTORY) 
-L$(COMPILER_LIB_DIRECTORY)

# here are the hdf libraries (the configure script will change this line for 
use with hdf5)
HDF_LIBS = $(OV_RPATH)$(HDF)/lib -L$(HDF)/lib -lmfhdf -ldf -ljpeg -lz
#xlc HDF_LIBS = $(OV_RPATH)$(HDF)/lib -L$(HDF)/lib -lmfhdf -ldf -lz

FORTRAN_LIBS =
#gcc FORTRAN_LIBS =-lnsl -lg2c
#gfortran FORTRAN_LIBS =-lgfortran
# This next line will be used with the Portland group compiler (the configure 
script will set the next line)
# 080623: aio_read etc. are found in /usr/lib/librt.so
PGI_LIB =
#pgf77 FORTRAN_LIBS = $(OV_RPATH)$(PGI_LIB) -L$(PGI_LIB) -lpgftnrtl -lpgmp  
-lpgc -lrt -lstd
# This next line will be used with the intel fortran compiler. (the configure 
script will set the next line)
# g2c may be needed by lapack (for cg)
IFORT_LIB =
#ifc FORTRAN_LIBS = $(OV_RPATH)$(IFORT_LIB) -L$(IFORT_LIB) -lF90 -lIEPCF90 -lg2c
# old ifc FORTRAN_LIBS = -Wl,-rpath,/opt/intel/compiler60/ia32/lib 
-L/opt/intel/compiler60/ia32/lib -lF90 -lIEPCF90 
-L/usr/lib/gcc-lib/i386-redhat-linux/2.96 -lg2c
# Here are the libraries for the new intel compiler (called ifort instead of ifc) (use 
"ifort -dryrun" to see libraries needed)
#ifort FORTRAN_LIBS = $(OV_RPATH)$(IFORT_LIB) -L$(IFORT_LIB) -lifcoremt
# Libraries using xlf and linux
#xlf FORTRAN_LIBS = -L/opt/ibmcmp/xlf/bg/11.1/bglib -lxlopt -lxl -lxlf90 
-lxlfmath -L/opt/ibmcmp/xlsmp/bg/1.7/bglib/ -lxlomp_ser
LIB_TARGETS= lib_date libso_date
LIB_DEPENDENCIES= ../lib/lib_date
TEMPLATES=
RAPTEMPLATES=

# The KCC compiler should be used to build the static library (for templates)
AR = ar
#KCC AR = KCC
ARFLAGS = ruv
#KCC ARFLAGS = -o

LD = $(CC)
LDFLAGS = -L
RANLIB = ranlib
SOFLAGS = -shared
#xlc SOFLAGS = -qmkshrobj -qnostaticlink
# the next line is changed by the configure script
OpenGLibs=
GLIBS=  $(OV_PERL_LIBRARIES) $(OV_RPATH)$(OPENGL_LIB) -L$(OPENGL_LIB) 
$(OpenGLibs) $(OV_MOTIF_LIBRARIES) $(OV_X_LIBRARIES) -lm

# On Don's machine the pgi libraries need to follow the mpi libraries :
# FLIBS= $(OV_RPATH)$(Overture)/lib $(LDFLAGS)$(Overture)/lib $(LibOverture) 
$(HDF_LIBS) $(FORTRAN_LIBS) $(AppLibraries)
FLIBS= $(OV_RPATH)$(Overture)/lib $(LDFLAGS)$(Overture)/lib $(LibOverture) 
$(OV_COMPILER_LIBS) $(HDF_LIBS) $(AppLibraries) $(FORTRAN_LIBS)


OGMGLIB = $(OV_RPATH)$(Overture)/lib $(LDFLAGS)$(Overture)/lib -lOgmg


On 4/23/2012 7:07 PM, Bill Henshaw wrote:
Hi Joe:
If you look at the compile line you will see no -I that points to A++.h -- this should help you track down
the problem. ...Bill

mpixlcxx_r -qarch=450d -qtune=450 -qmaxmem=16384 -I/home/jpbernst/Code/Overture/Test/Overture.v24/include -I. -DBL_USE_DOUBLE -DBL_Solaris -g -DH5_USE_16_API -I/soft/apps/hdf5-1.8.0/include -c GenericDataBase.C HDF_DataBase.C DataBaseBuffer.C



On 04/23/2012 12:17 PM, J. P. Bernstein wrote:
Thanks, Erik. That worked.

All, I was finally able to build Mesa7.10.3 without errors. This allowed me to successfully configure Overture v24 on BG/P including disabling the PERL calls in Ogshow/OvertureParser.C. However, I am getting a build failure right away due to A++ no being found even though $APlusPlus is correct (see below).

As a basic test, I tried the configure and make with stock Overture v24 (except for the addition of the bgp machine) without PERL excluded. I get the same error. Below is the pertinent terminal output (note that I do *not* get this A++ error when building Overture v24 with the noPERL and noGL-functionality patches from Erik applied). Is this a known problem? I have not been able to solve it upon quick testing.

Best,

Joe

+++++Begin configure output+++++
{login2}/home/jpbernst/Code/Overture/Test/Overture.v24>./configure bgp noX11
Do NOT use X11.
  *** configure for machine = bgp ****
  *** machineType = [ppc64] ****
First checking for proper definition of Overture environmental variables:
        APlusPlus = /home/jpbernst/Code/Overture/Test/A++
        OpenGL = /home/jpbernst/Code/Mesa-7.10.3
        HDF = /soft/apps/hdf5-1.8.0
        Overture = /home/jpbernst/Code/Overture/Test/Overture.v24
Using Mesa `OpenGL' libraries since libMesaGL found in /home/jpbernst/Code/Mesa-7.10.3/lib
  Mesa does not have GLwDrawA.h in the include dir
INFO: I am going to copy my version of the GLw files into Overture/static directory
perlloc = [/usr/lib/perl5/5.8.8/ppc-linux-thread-multi-64int/CORE]
Using perl headers and lib from perllibs=[/usr/lib/perl5/5.8.8/ppc-linux-thread-multi-64int/CORE] Will link to the libraries perllibs=[-lperl -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc]
Detected use of hdf5
Using configuration file config/MakeDefs.bgp
Using Compilers: C++=mpixlcxx_r, C=mpixlc_r, Fortran=mprixlf77_r (base version: C++=mpixlcxx_r, C=mpixlc_r, Fortran=mprixlf77_r)
**Overture will be compiled in double precision
  debugging turned on, using debugFlag=-g.
Checking for bool support
bool is supported.
Checking for exceptions support
exceptions are supported.
Checking for STL availability. $STLINC=
stl is available using std include format
the compiler understands namespaces

the compiler understands default template arguments

the compiler understands explicit
Create the Makefile for directory: mapUtil
Create the Makefile for directory: phoneyFiles
Create the Makefile for directory: Cad
Create the Makefile for directory: DataBase
Create the Makefile for directory: Grid
Create the Makefile for directory: GridFunction
Create the Makefile for directory: GridGenerator
Create the Makefile for directory: Mapping
Create the Makefile for directory: Oges
Create the Makefile for directory: Ogshow
Create the Makefile for directory: otherStuff
Create the Makefile for directory: bin
Create the Makefile for directory: boxlib
Create the Makefile for directory: lib
Create the Makefile for directory: primer
Create the Makefile for directory: sampleGrids
Create the Makefile for directory: static
Create the Makefile for directory: templates
Create the Makefile for directory: examples
Create the Makefile for directory: Ogmg
Create the Makefile for directory: tests

configuration options written to file configure.options

Make options saved to file make.options.

Build the Makefile in the main directory
done configuration.

**************************************************************************************************** WARNING: Environment variable LANG=en_US.UTF-8 -- Overture may not work with this language. European languages may reverse the meaning of `.' and ',' in numbers such a 3,14 or 3.14
          and then Overture will not parse command files properly.
Type `locale' to see your language settings. You may need to change to the language `en_US' **************************************************************************************************** type `make' to build Overture (or 'make -j2' for a parallel make with 2 processes).
type `make rapsodi' to build the Rapsodi libraries and rap.

+++++End configure output+++++

+++++Begin make output+++++
{login2}/home/jpbernst/Code/Overture/Test/Overture.v24>make
-----------------------------------------------------------------------
type<make help>  for help. Run the configure script before running make
-----------------------------------------------------------------------
rm -rf A++; rm -f OpenGL; rm -f HDF; ln -s /home/jpbernst/Code/Overture/Test/A++ A++; ln -s /home/jpbernst/Code/Mesa-7.10.3 OpenGL; ln -s /soft/apps/hdf5-1.8.0 HDF make[1]: Entering directory `/gpfs/home/jpbernst/Code/Overture/Test/Overture.v24/DataBase' perl ../config/makeDepend -f depend -Y -- -I/home/jpbernst/Code/Overture/Test/Overture.v24/include -I. -DBL_USE_DOUBLE -DBL_Solaris -- GenericDataBase.C HDF_DataBase.C DataBaseBuffer.C
run makedepend ...
...done
touch depend_date
mpixlcxx_r -qarch=450d -qtune=450 -qmaxmem=16384 -I/home/jpbernst/Code/Overture/Test/Overture.v24/include -I. -DBL_USE_DOUBLE -DBL_Solaris -g -DH5_USE_16_API -I/soft/apps/hdf5-1.8.0/include -c GenericDataBase.C HDF_DataBase.C DataBaseBuffer.C
GenericDataBase.C:
"/home/jpbernst/Code/Overture/Test/Overture.v24/include/GenericDataBase.h", line 14.10: 1540-0836 (S) The #include file "A++.h" is not found.
HDF_DataBase.C:
"/home/jpbernst/Code/Overture/Test/Overture.v24/include/BoundaryConditionParameters.h", line 4.10: 1540-0836 (S) The #include file "A++.h"



Other related posts: