[#] start of __file__ dnl begin_generated_IBM_copyright_prolog dnl dnl This is an automatically generated copyright prolog. dnl After initializing, DO NOT MODIFY OR MOVE dnl --------------------------------------------------------------- dnl Licensed Materials - Property of IBM dnl Blue Gene/Q 5765-PER 5765-PRP dnl dnl (C) Copyright IBM Corp. 2011, 2012 All Rights Reserved dnl US Government Users Restricted Rights - dnl Use, duplication, or disclosure restricted dnl by GSA ADP Schedule Contract with IBM Corp. dnl dnl --------------------------------------------------------------- dnl dnl end_generated_IBM_copyright_prolog dnl -*- mode: makefile-gmake; -*- dnl MPICH_SUBCFG_BEFORE=src/mpid/common/sched dnl MPICH_SUBCFG_BEFORE=src/mpid/common/datatype dnl MPICH_SUBCFG_BEFORE=src/mpid/common/thread dnl _PREREQ handles the former role of mpichprereq, setup_device, etc [#] expansion is: PAC_SUBCFG_PREREQ_[]PAC_SUBCFG_AUTO_SUFFIX AC_DEFUN([PAC_SUBCFG_PREREQ_]PAC_SUBCFG_AUTO_SUFFIX,[ AM_CONDITIONAL([BUILD_PAMID],[test "$device_name" = "pamid"]) AM_CONDITIONAL([QUEUE_BINARY_SEARCH_SUPPORT],[test "$enable_queue_binary_search" = "yes"]) AC_ARG_VAR([PAMILIBNAME],[can be used to override the name of the PAMI library (default: "pami")]) original_PAMILIBNAME=${PAMILIBNAME} PAMILIBNAME=${PAMILIBNAME:-"pami"} AC_SUBST(PAMILIBNAME) export PAMILIBNAME dnl this subconfigure.m4 handles the configure work for the ftb subdir too dnl this AM_CONDITIONAL only works because enable_ftb is set very early on by dnl autoconf's argument parsing code. The "action-if-given" from the dnl AC_ARG_ENABLE has not yet run dnl AM_CONDITIONAL([BUILD_CH3_UTIL_FTB],[test "x$enable_ftb" = "xyes"]) AM_COND_IF([BUILD_PAMID],[ pamid_platform=${device_args} if test x"$pamid_platform" == "x"; then AS_CASE([$host], [*-bgq-*],[pamid_platform=BGQ]) fi AC_MSG_NOTICE([Using the pamid platform '$pamid_platform']) dnl Set a value for the maximum processor name. MPID_MAX_PROCESSOR_NAME=128 PM_REQUIRES_PMI=pmi2 if test "${pamid_platform}" = "PE" ; then with_shared_memory=sysv PM_REQUIRES_PMI=pmi2/poe elif test "${pamid_platform}" = "BGQ" ; then with_shared_memory=mmap MPID_DEFAULT_CROSS_FILE=${master_top_srcdir}/src/mpid/pamid/cross/bgq8 MPID_DEFAULT_PM=no fi MPID_DEVICE_TIMER_TYPE=double MPID_MAX_THREAD_LEVEL=MPI_THREAD_MULTIPLE dnl the PAMID device depends on the common NBC scheduler code build_mpid_common_sched=yes build_mpid_common_datatype=yes build_mpid_common_thread=yes ])dnl end AM_COND_IF(BUILD_PAMID,...) ])dnl end PREREQ AC_DEFUN([PAC_SUBCFG_BODY_]PAC_SUBCFG_AUTO_SUFFIX,[ AM_COND_IF([BUILD_PAMID],[ AC_MSG_NOTICE([RUNNING CONFIGURE FOR PAMI DEVICE]) ASSERT_LEVEL=2 AC_ARG_WITH(assert-level, AS_HELP_STRING([--with-assert-level={0 1 2}],[pamid build assert-level (default: 2)]), [ ASSERT_LEVEL=$withval ]) AC_SUBST(ASSERT_LEVEL) AC_DEFINE_UNQUOTED([ASSERT_LEVEL], $ASSERT_LEVEL, [The pamid assert level]) dnl dnl This macro adds the -I to CPPFLAGS and/or the -L to LDFLAGS dnl PAC_SET_HEADER_LIB_PATH(pami) dnl dnl Set the pamid platform define. dnl PAC_APPEND_FLAG([-D__${pamid_platform}__], [CPPFLAGS]) dnl Check for available shared memory functions PAC_ARG_SHARED_MEMORY if test "$with_shared_memory" != "mmap" -a "$with_shared_memory" != "sysv"; then AC_MSG_ERROR([cannot support shared memory: need either sysv shared memory functions or mmap in order to support shared memory]) fi dnl dnl The default is to enable the use of the recv queue binary search dnl ... except on BGQ dnl enable_queue_binary_search=yes if test "${pamid_platform}" = "BGQ" ; then enable_queue_binary_search=no fi AM_CONDITIONAL([QUEUE_BINARY_SEARCH_SUPPORT],[test "$enable_queue_binary_search" = "yes"]) dnl dnl This configure option allows "sandbox" bgq system software to be used. dnl AC_ARG_WITH(bgq-install-dir, AS_HELP_STRING([--with-bgq-install-dir=PATH],[specify path where bgq system software can be found; may also be specified with the 'BGQ_INSTALL_DIR' environment variable]), [ BGQ_INSTALL_DIR=$withval ]) AC_SUBST(BGQ_INSTALL_DIR) dnl dnl Add bgq-specific build options. dnl if test "${pamid_platform}" = "BGQ" ; then AC_MSG_CHECKING([for BGQ system software directory]) dnl dnl Specify the default bgq system software paths dnl bgq_driver_search_path="${BGQ_INSTALL_DIR} " for bgq_version in `echo 4 3 2 1`; do for bgq_release in `echo 4 3 2 1`; do for bgq_mod in `echo 4 3 2 1 0`; do bgq_driver_search_path+="/bgsys/drivers/V${bgq_version}R${bgq_release}M${bgq_mod}/ppc64 " done done done dnl Look for a bgq driver to use. for bgq_driver in $bgq_driver_search_path ; do if test -d ${bgq_driver}/spi/include ; then found_bgq_driver=yes PAC_APPEND_FLAG([-I${bgq_driver}], [CPPFLAGS]) PAC_APPEND_FLAG([-I${bgq_driver}/spi/include/kernel/cnk], [CPPFLAGS]) PAC_APPEND_FLAG([-L${bgq_driver}/spi/lib], [LDFLAGS]) PAC_APPEND_FLAG([-L${bgq_driver}/spi/lib], [WRAPPER_LDFLAGS]) dnl If the '--with-pami' and the '--with-pami-include' configure options dnl were NOT specified then test for a V1R2M1+ comm include directory. dnl AS_IF([test "x${with_pami_include}" = "x" ], [AS_IF([test "x${with_pami}" = "x" ], [AS_IF([test -d ${bgq_driver}/comm/include ], [PAC_APPEND_FLAG([-I${bgq_driver}/comm/include], [CPPFLAGS])], [PAC_APPEND_FLAG([-I${bgq_driver}/comm/sys/include],[CPPFLAGS])])])]) dnl If the '--with-pami' and the '--with-pami-lib' configure options were dnl NOT specified then dnl dnl if a custom pami library name was NOT specified then test for a dnl V1R2M1+ pami lib in a V1R2M1+ comm lib directory then test for a dnl pre-V1R2M1 pami lib in a pre-V1R2M1 comm lib directory; otherwise dnl dnl if a custom pami library name WAS specified then test for a custom dnl pami lib in a V1R2M1+ comm lib directory then test for a custom dnl pami lib in a pre-V1R2M1 comm lib directory dnl AS_IF([test "x${with_pami_lib}" = "x" ], [AS_IF([test "x${with_pami}" = "x" ], [AS_IF([test "x${original_PAMILIBNAME}" = "x" ], [AS_IF([test -f ${bgq_driver}/comm/lib/libpami-gcc.a ], [PAMILIBNAME=pami-gcc PAC_APPEND_FLAG([-L${bgq_driver}/comm/lib], [LDFLAGS]) PAC_APPEND_FLAG([-L${bgq_driver}/comm/lib], [WRAPPER_LDFLAGS])], [AS_IF([test -f ${bgq_driver}/comm/sys/lib/libpami.a ], [PAC_APPEND_FLAG([-L${bgq_driver}/comm/sys/lib],[LDFLAGS]) PAC_APPEND_FLAG([-L${bgq_driver}/comm/sys/lib],[WRAPPER_LDFLAGS])])])], [AS_IF([test -f ${bgq_driver}/comm/lib/lib${PAMILIBNAME}.a ], [PAC_APPEND_FLAG([-L${bgq_driver}/comm/lib], [LDFLAGS]) PAC_APPEND_FLAG([-L${bgq_driver}/comm/lib], [WRAPPER_LDFLAGS])], [AS_IF([test -f ${bgq_driver}/comm/sys/lib/lib${PAMILIBNAME}.a ], [PAC_APPEND_FLAG([-L${bgq_driver}/comm/sys/lib],[LDFLAGS]) PAC_APPEND_FLAG([-L${bgq_driver}/comm/sys/lib],[WRAPPER_LDFLAGS])])])])])]) break fi done if test "x${found_bgq_driver}" = "xyes"; then AC_MSG_RESULT('$bgq_driver') else AC_MSG_RESULT('no') fi dnl dnl The bgq compile requires these libraries. dnl PAC_APPEND_FLAG([-lSPI], [LIBS]) PAC_APPEND_FLAG([-lSPI_cnk], [LIBS]) PAC_APPEND_FLAG([-lrt], [LIBS]) PAC_APPEND_FLAG([-lpthread], [LIBS]) PAC_APPEND_FLAG([-lstdc++], [LIBS]) dnl dnl The wrapper scripts require these libraries. dnl PAC_APPEND_FLAG([-l${PAMILIBNAME}], [WRAPPER_LIBS]) PAC_APPEND_FLAG([-lSPI], [WRAPPER_LIBS]) PAC_APPEND_FLAG([-lSPI_cnk], [WRAPPER_LIBS]) PAC_APPEND_FLAG([-lrt], [WRAPPER_LIBS]) PAC_APPEND_FLAG([-lpthread], [WRAPPER_LIBS]) PAC_APPEND_FLAG([-lstdc++], [WRAPPER_LIBS]) AC_SEARCH_LIBS([PAMI_Send], [${PAMILIBNAME} pami-gcc]) dnl For some reason, on bgq, libtool will incorrectly attempt a static link dnl of libstdc++.so unless this '-all-static' option is used. This seems to dnl be a problem specific to libstdc++. dnl dnl Only the 'cpi', 'mpivars', and 'mpichversion' executables have this problem. MPID_LIBTOOL_STATIC_FLAG="-all-static" dnl Another bgq special case. The default linker behavior is to use static versions dnl of libraries. This makes supporting interlibrary dependencies difficult. Just dnl disable them to make our lives easier. if test "$INTERLIB_DEPS" = "yes"; then INTERLIB_DEPS="no" fi fi if test "${pamid_platform}" = "PE" ; then MPID_MAX_ERROR_STRING=512 fi PAC_APPEND_FLAG([-I${master_top_srcdir}/src/include], [CPPFLAGS]) PAC_APPEND_FLAG([-I${master_top_srcdir}/src/util/wrappers], [CPPFLAGS]) PAC_APPEND_FLAG([-I${master_top_srcdir}/src/mpid/pamid/include], [CPPFLAGS]) PAC_APPEND_FLAG([-I${master_top_srcdir}/src/mpid/common/datatype], [CPPFLAGS]) PAC_APPEND_FLAG([-I${master_top_srcdir}/src/mpid/common/locks], [CPPFLAGS]) PAC_APPEND_FLAG([-I${master_top_srcdir}/src/mpid/common/thread], [CPPFLAGS]) PAC_APPEND_FLAG([-I${master_top_srcdir}/src/mpid/common/sched], [CPPFLAGS]) dnl dnl Check for PAMI_IN_PLACE dnl AC_MSG_CHECKING([for PAMI_IN_PLACE support]) have_pami_in_place=0 AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include "pami.h"]], [[void * foo = PAMI_IN_PLACE;]])], have_pami_in_place=1 ) if test "$have_pami_in_place" != "0"; then AC_DEFINE(HAVE_PAMI_IN_PLACE,1,[Define if PAMI_IN_PLACE is defined in pami.h]) AC_MSG_RESULT('yes') else AC_DEFINE(PAMI_IN_PLACE,((void *) -1L),[Define if PAMI_IN_PLACE is not defined in pami.h]) AC_MSG_RESULT('no') fi dnl dnl Check for PAMI_CLIENT_NONCONTIG dnl AC_MSG_CHECKING([for PAMI_CLIENT_NONCONTIG support]) have_pami_client_noncontig=0 AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include "pami.h"]], [[int foo = PAMI_CLIENT_NONCONTIG;]])], have_pami_client_noncontig=1 ) if test "$have_pami_client_noncontig" != "0"; then AC_DEFINE(HAVE_PAMI_CLIENT_NONCONTIG,1,[Define if PAMI_CLIENT_NONCONTIG is defined in pami.h]) AC_MSG_RESULT('yes') else AC_MSG_RESULT('no') fi dnl dnl Check for PAMI_CLIENT_MEMORY_OPTIMIZE dnl AC_MSG_CHECKING([for PAMI_CLIENT_MEMORY_OPTIMIZE support]) have_pami_client_memory_optimize=0 AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include "pami.h"]], [[int foo = PAMI_CLIENT_MEMORY_OPTIMIZE;]])], have_pami_client_memory_optimize=1 ) if test "$have_pami_client_memory_optimize" != "0"; then AC_DEFINE(HAVE_PAMI_CLIENT_MEMORY_OPTIMIZE,1,[Define if PAMI_CLIENT_MEMORY_OPTIMIZE is defined in pami.h]) AC_MSG_RESULT('yes') else AC_MSG_RESULT('no') fi dnl dnl Check for PAMI_GEOMETRY_NONCONTIG dnl AC_MSG_CHECKING([for PAMI_GEOMETRY_NONCONTIG support]) have_pami_geometry_noncontig=0 AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include "pami.h"]], [[int foo = PAMI_GEOMETRY_NONCONTIG;]])], have_pami_geometry_noncontig=1 ) if test "$have_pami_geometry_noncontig" != "0"; then AC_DEFINE(HAVE_PAMI_GEOMETRY_NONCONTIG,1,[Define if PAMI_GEOMETRY_NONCONTIG is defined in pami.h]) AC_MSG_RESULT('yes') else AC_MSG_RESULT('no') fi dnl dnl Check for PAMI_GEOMETRY_MEMORY_OPTIMIZE dnl AC_MSG_CHECKING([for PAMI_GEOMETRY_MEMORY_OPTIMIZE support]) have_pami_geometry_memory_optimize=0 AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include "pami.h"]], [[int foo = PAMI_GEOMETRY_MEMORY_OPTIMIZE;]])], have_pami_geometry_memory_optimize=1 ) if test "$have_pami_geometry_memory_optimize" != "0"; then AC_DEFINE(HAVE_PAMI_GEOMETRY_MEMORY_OPTIMIZE,1,[Define if PAMI_GEOMETRY_MEMORY_OPTIMIZE is defined in pami.h]) AC_MSG_RESULT('yes') else AC_MSG_RESULT('no') fi ])dnl end AM_COND_IF(BUILD_PAMID,...) ])dnl end _BODY [#] end of __file__