Changeset 2052

Show
Ignore:
Timestamp:
08/29/08 11:51:46 (3 months ago)
Author:
kraftche
Message:

Overhaul Zoltan configuration/detection:

  • require no options if Zoltan and Parmetis are in default search path
  • require --with-zoltan-arch only when necessary to disambiguate between

mulitple Obj_$ARCH directories.

  • detect whether or not Zoltan requires Parmetis (don't require Parmetis

if Zoltan doesn't.)


This problably needs more work. Zoltan can also optionally depend on
other libraries (e.g. PaToH and Nemesis) that we don't handle.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • MOAB/trunk/configure.in

    r2027 r2052  
    286286################################################################################ 
    287287if test $ENABLE_mbzoltan = yes; then 
    288   AC_ARG_WITH([zoltan],  
    289    [AC_HELP_STRING([--with-zoltan=DIR],[Specify directory containing Zoltan])], 
    290    [ZOLTAN_DIR="$withval" 
    291     DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-zoltan=\"${withval}\"" 
    292    ],[ZOLTAN_DIR=unknown]) 
     288  if test "x$WITH_MPI" = "xno"; then 
     289     AC_MSG_ERROR([--enable-mbzoltan requires MPI, try specifying --with-mpi]) 
     290  fi 
     291   
     292 
     293  ZOLTAN_LIB_FLAGS= 
     294  ZOLTAN_INC_FLAGS= 
     295  ZOLTAN_LIBS= 
     296  ZOLTAN_ARCH= 
     297  ZOLTAN_DIR= 
     298 
     299  AC_ARG_WITH( [zoltan],  
     300               [AC_HELP_STRING([--with-zoltan=DIR],[Specify Zoltan build directory])], 
     301               [if test "xyes" = "$withval"; then  
     302                  AC_MSG_WARN([Ingoring --with-zoltan flag w/out value]) 
     303                elif test -d $withval/$include; then 
     304                  ZOLTAN_INC_FLAGS="$ZOLTAN_INC_FLAGS -I$withval/include" 
     305                  ZOLTAN_DIR="$withval" 
     306                else 
     307                  AC_MSG_ERROR("$withval/include : not a directory") 
     308                fi 
     309                DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-zoltan=\"${withval}\"" 
     310               ]) 
     311 
    293312  AC_ARG_WITH([zoltan-arch], 
    294313   [AC_HELP_STRING([--with-zoltan-arch=OS],[Specify zoltan architecture])], 
    295    [ZOLTAN_ARCH="$withval"],[ZOLTAN_ARCH=unknown]) 
    296   case "x$ZOLTAN_DIR" in 
    297     xno|x) 
    298       ZOLTAN_MISSING=yes 
    299       ;; 
    300     xyes) 
    301       AC_MSG_ERROR([--enable-mbzoltan requires an argument]) 
    302       ;; 
    303   esac 
    304   if test "x$WITH_MPI" = "xno"; then 
    305      AC_MSG_ERROR([--enable-mbzoltan requires --with-mpi too!]) 
    306   fi 
    307   if ! test -d "$ZOLTAN_DIR"; then 
    308     AC_MSG_WARN([$ZOLTAN_DIR : not a directory.]) 
    309   fi 
    310   AC_CHECK_FILES([${ZOLTAN_DIR}/include/zoltan.h], 
    311                 [], [AC_MSG_WARN([$ZOLTAN_DIR : not a valid zoltan source]); ZOLTAN_MISSING=yes]) 
    312  
    313   ZOLTAN_INCLUDES="-I${ZOLTAN_DIR}/include" 
    314   ZOLTAN_LIBS="-L${ZOLTAN_DIR}/Obj_${ZOLTAN_ARCH} -lzoltan" 
    315  
    316   AC_ARG_WITH(parmetis,  
    317   [AC_HELP_STRING([--with-parmetis=DIR], [Specify directory containing parmetis library])], 
    318   [PARMETIS_DIR=$withval], [PARMETIS_DIR=]) 
    319   case "x$PARMETIS_DIR" in 
    320     xno|x) 
    321       PARMETIS_MISSING=yes 
    322       ;; 
    323     xyes) 
    324       AC_MSG_ERROR([--with-parmetis requires an argument]) 
    325       ;; 
    326   esac 
    327   if test -d "$PARMETIS_DIR"; then 
    328     ZOLTAN_LIBS="$ZOLTAN_LIBS -L$PARMETIS_DIR -lparmetis -lmetis" 
    329   fi 
    330  
    331   AC_SUBST(ZOLTAN_DIR) 
     314   [if test "xyes" = "x$withval"; then 
     315      AC_MSG_ERROR([--with-zoltan-arch flag requires a value]) 
     316    elif test "x" = "x$ZOLTAN_DIR"; then 
     317      AC_MSG_WARN([Ingoring --with-zoltan-arch without --with-zoltan]) 
     318    elif test -d "$ZOLTAN_DIR/Obj_$withval"; then 
     319      ZOLTAN_LIB_FLAGS="$ZOLTAN_LIB_FLAGS -L$ZOLTAN_DIR/Obj_$withval" 
     320    else 
     321      AC_MSG_ERROR("$ZOLTAN_DIR/Obj_$withval : not a directory") 
     322    fi], 
     323   [if test "x" != "x$ZOLTAN_DIR"; then 
     324      AC_MSG_WARN([Expect --with-zoltan-arch with --with-zoltan]) 
     325      if test -d $ZOLTAN_DIR/lib; then 
     326        AC_MSG_WARN("Guessing '$ZOLTAN_DIR/lib'") 
     327        ZOLTAN_LIB_FLAGS="$ZOLTAN_LIB_FLAGS -L$ZOLTAN_DIR/lib" 
     328      else 
     329        # if only one Obj_$ARCH dir, then us it 
     330        found=no 
     331        for dir in $ZOLTAN_DIR/Obj_*; do 
     332          if test -d $dir; then 
     333            if test "xyes" = "x$found"; then 
     334              AC_MSG_ERROR("Multiple Zoltan Obj_$ARCH dirs.  --with-zoltan-arch required.") 
     335            fi 
     336            ZOLTAN_LIB_FLAGS="$ZOLTAN_LIB_FLAGS -L$dir" 
     337            found=yes 
     338          fi 
     339        done 
     340        if test "xno" = "x$found"; then 
     341          AC_MSG_ERROR('No Zoltan Obj_$ARCH dir found.  --with-zoltan-arch required.') 
     342        fi 
     343      fi 
     344    fi 
     345   ]) 
     346 
     347  AC_ARG_WITH([parmetis],  
     348              [AC_HELP_STRING([--with-parmetis=DIR],  
     349                [Directory containing Parmetis library for Zoltan])], 
     350              [if test "xyes" = "$withval"; then  
     351                 AC_MSG_WARN([Ingoring --with-parmetis flag w/out value]) 
     352               elif test -d "$withval"; then 
     353                 ZOLTAN_LIB_FLAGS="$ZOLTAN_LIB_FLAGS -L$withval" 
     354               else 
     355                 AC_MSG_ERROR("$withval: not a directory") 
     356               fi] 
     357               DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-parmetis=\"${withval}\"" 
     358             ) 
     359 
     360  old_CPPFLAGS="$CPPFLAGS" 
     361  CPPFLAGS="$CPPFLAGS $ZOLTAN_INC_FLAGS -DMPICH_IGNORE_CXX_SEEK" 
     362  AC_LANG_PUSH([C++]) 
     363  AC_CHECK_HEADER([zoltan_cpp.h],[],[AC_MSG_ERROR("mbzoltan requires zoltan")]) 
     364  AC_LANG_POP([C++]) 
     365  CPPFLAGS="$old_CPPFLAGS" 
     366   
     367  old_LDFLAGS="$LDFLAGS" 
     368  LDFLAGS="$LDFLAGS $ZOLTAN_LIB_FLAGS" 
     369  AC_CHECK_LIB([zoltan],[Zoltan_LB_Partition],[ZOLTAN_LIBS='-lzoltan'], 
     370    [unset ac_cv_lib_zoltan_Zoltan_LB_Partition 
     371     AC_CHECK_LIB([zoltan],[Zoltan_LB_Partition], 
     372                  [ZOLTAN_LIBS="-lzoltan -lparmetis -lmetis"], 
     373                  [AC_MSG_ERROR("mbzoltan requires zoltan")], 
     374                  [-lparmetis -lmetis])]) 
     375  LDFLAGS="$old_LDFLAGS" 
     376   
     377 
    332378  AC_SUBST(ZOLTAN_LIBS) 
    333   AC_SUBST(ZOLTAN_INCLUDES) 
    334   AC_SUBST(ZOLTAN_ARCH
     379  AC_SUBST(ZOLTAN_LIB_FLAGS) 
     380  AC_SUBST(ZOLTAN_INC_FLAGS
    335381fi 
    336382 
  • MOAB/trunk/tools/mbzoltan/Makefile.am

    r985 r2052  
    11AUTOMAKE_OPTIONS = foreign 
    22DEFS = $(DEFINES) -DIS_BUILDING_MB 
    3 INCLUDES += -I$(top_srcdir) -I$(top_builddir) $(ZOLTAN_INCLUDES) 
     3INCLUDES += -I$(top_srcdir) -I$(top_builddir) $(ZOLTAN_INC_FLAGS) 
    44bin_PROGRAMS = mbzoltan 
    55mbzoltan_SOURCES = MBZoltan.cpp MBZoltan.hpp main.cpp 
    6 LDADD = $(top_builddir)/libMOAB.la $(ZOLTAN_LIBS) 
     6mbzoltan_LDADD = $(top_builddir)/libMOAB.la $(ZOLTAN_LIB_FLAGS) $(ZOLTAN_LIBS) 
    77mbzoltan_DEPENDENCIES = $(top_builddir)/libMOAB.la 
    88