1# Process this file with autoconf to produce a configure script. 2 3############################################################################### 4# Init autoconf 5############################################################################### 6AC_PREREQ([2.67]) 7AC_INIT([Communication Runtime for Extreme Scale (comex)], 8 [1.1], 9 [hpctools@pnl.gov], 10 [comex], 11 [http://www.emsl.pnl.gov/docs/global/]) 12AC_CONFIG_AUX_DIR([build-aux]) 13AC_CONFIG_HEADER([config.h]) 14AC_CONFIG_MACRO_DIR([m4]) 15AC_CONFIG_SRCDIR([src-common/comex.h]) 16 17############################################################################### 18# Init automake 19############################################################################### 20AM_INIT_AUTOMAKE([color-tests foreign parallel-tests silent-rules subdir-objects]) 21 22# Don't emit "rebuild rules" for configure, Makefile.ins, etc. 23AM_MAINTAINER_MODE 24 25############################################################################### 26# Misc. information and package setup. 27############################################################################### 28COMEX_WITH_HELP 29 30COMEX_TOP_BUILDDIR="`pwd`" 31cd "$srcdir" 32COMEX_TOP_SRCDIR="`pwd`" 33cd "$COMEX_TOP_BUILDDIR" 34AS_IF([test "$COMEX_TOP_BUILDDIR" != "$COMEX_TOP_SRCDIR"], 35 [AC_MSG_NOTICE([Detected VPATH build])]) 36 37# We use the MPI compiler wrappers instead of the standard compilers. 38COMEX_WITH_MPI 39 40# In case users don't care whether MPI actually works during configure. 41COMEX_DISABLE_MPI_TESTS 42 43# ARMCI profiling layer 44COMEX_ENABLE_PROFILING_ARMCI 45 46######################################### 47# C compiler 48######################################## 49AC_MSG_NOTICE 50AC_MSG_NOTICE([C compiler]) 51AC_MSG_NOTICE 52 53COMEX_PROG_MPICC 54AC_USE_SYSTEM_EXTENSIONS 55 56AS_IF([test x$with_mpi_wrappers = xyes], 57 [COMEX_MPI_UNWRAP], 58 [COMEX_ARG_PARSE([with_mpi], [MPI_LIBS], [MPI_LDFLAGS], [MPI_CPPFLAGS])]) 59AS_CASE([$enable_mpi_tests], 60 [yes],[COMEX_MPICC_TEST_LINK], 61 [no], [COMEX_MPICC_TEST_COMPILE]) 62 63AM_CONDITIONAL([CROSS_COMPILING], [test "x$cross_compiling" = xyes]) 64 65# Establish the underlying network infrastructure (MPI, OFA, DMAPP, etc) 66COMEX_NETWORK_SETUP 67 68# Checks for C header files. 69AC_HEADER_ASSERT 70AC_HEADER_DIRENT 71AC_HEADER_STDBOOL 72AC_HEADER_STDC 73AC_HEADER_SYS_WAIT 74COMEX_CHECK_HEADERS([assert.h]) 75COMEX_CHECK_HEADERS([errno.h]) 76COMEX_CHECK_HEADERS([getopt.h]) 77COMEX_CHECK_HEADERS([math.h]) 78COMEX_CHECK_HEADERS([pthread.h]) 79COMEX_CHECK_HEADERS([sched.h]) 80COMEX_CHECK_HEADERS([semaphore.h]) 81COMEX_CHECK_HEADERS([stdint.h]) 82COMEX_CHECK_HEADERS([stdio.h]) 83COMEX_CHECK_HEADERS([stdlib.h]) 84COMEX_CHECK_HEADERS([string.h]) 85COMEX_CHECK_HEADERS([strings.h]) 86COMEX_CHECK_HEADERS([sys/time.h]) 87COMEX_CHECK_HEADERS([sys/types.h]) 88COMEX_CHECK_HEADERS([unistd.h]) 89 90# Checks for C typedefs, structures, and compiler characteristics. 91AC_C_CONST 92AC_C_INLINE 93AC_C_RESTRICT 94AC_C_VOLATILE 95AC_TYPE_INT8_T 96AC_TYPE_INT16_T 97AC_TYPE_INT32_T 98AC_TYPE_INT64_T 99AC_TYPE_OFF_T 100AC_TYPE_PID_T 101AC_TYPE_SIZE_T 102AC_TYPE_UINT8_T 103AC_TYPE_UINT16_T 104AC_TYPE_UINT32_T 105AC_TYPE_UINT64_T 106AC_CHECK_TYPES([ptrdiff_t]) 107COMEX_FUNCTION 108COMEX_DISABLE_SYS_WEAK_ALIAS 109COMEX_SYS_WEAK_ALIAS 110 111# Checks for C type sizes. 112comex_save_LIBS="$LIBS"; LIBS="$LIBS $MPI_LIBS" 113comex_save_LDFLAGS="$LDFLAGS"; LDFLAGS="$LDFLAGS $MPI_LDFLAGS" 114comex_save_CPPFLAGS="$CPPFLAGS"; CPPFLAGS="$CPPFLAGS $MPI_CPPFLAGS" 115AC_CHECK_SIZEOF([MPI_Aint], [], [[#include <mpi.h>]]) 116LIBS="$comex_save_LIBS" 117LDFLAGS="$comex_save_LDFLAGS" 118CPPFLAGS="$comex_save_CPPFLAGS" 119AC_CHECK_SIZEOF([void*]) 120AC_CHECK_SIZEOF([char]) 121AC_CHECK_SIZEOF([short]) 122AC_CHECK_SIZEOF([int]) 123AC_CHECK_SIZEOF([long]) 124AC_CHECK_SIZEOF([long long]) 125AC_CHECK_SIZEOF([float]) 126AC_CHECK_SIZEOF([double]) 127 128# Checks for C library functions. 129AC_FUNC_MMAP 130COMEX_SEARCH_LIBS([sqrt], [m]) 131COMEX_SEARCH_LIBS([sem_open], [rt pthread]) 132COMEX_SEARCH_LIBS([shm_open], [rt]) 133COMEX_SEARCH_LIBS([shm_unlink], [rt]) 134COMEX_CHECK_FUNCS([bzero]) 135COMEX_CHECK_FUNCS([gettimeofday]) 136COMEX_CHECK_FUNCS([memset]) 137COMEX_CHECK_FUNCS([munmap]) 138COMEX_CHECK_FUNCS([pthread_setaffinity_np]) 139COMEX_CHECK_FUNCS([sched_setaffinity]) 140COMEX_CHECK_FUNCS([strchr]) 141COMEX_CHECK_FUNCS([strdup]) 142COMEX_CHECK_FUNCS([strncasecmp]) 143COMEX_CHECK_FUNCS([strstr]) 144 145# Checks for advanced MPI functions. 146comex_save_LIBS="$LIBS"; LIBS="$LIBS $MPI_LIBS" 147comex_save_LDFLAGS="$LDFLAGS"; LDFLAGS="$LDFLAGS $MPI_LDFLAGS" 148comex_save_CPPFLAGS="$CPPFLAGS"; CPPFLAGS="$CPPFLAGS $MPI_CPPFLAGS" 149COMEX_CHECK_FUNCS([MPI_Ibarrier]) 150COMEX_CHECK_FUNCS([MPIX_Ibarrier]) 151LIBS="$comex_save_LIBS" 152LDFLAGS="$comex_save_LDFLAGS" 153CPPFLAGS="$comex_save_CPPFLAGS" 154 155# Checks for C libraries. 156COMEX_BLAS 157 158############################################################################### 159# Checks for programs. 160############################################################################### 161AC_MSG_NOTICE 162AC_MSG_NOTICE([Checks for additional programs]) 163AC_MSG_NOTICE 164 165AC_PROG_GREP 166AC_PROG_SED 167 168############################################################################### 169# Libtool setup -- no compiler/linker tests after this 170############################################################################### 171AC_MSG_NOTICE 172AC_MSG_NOTICE([Libtool setup]) 173AC_MSG_NOTICE 174# temporarily restore unwrapped compilers 175# this works around a bug where libtool sadly relies on matching compiler 176# names in order to determine features (Fortran only, I think) 177# libtool doesn't recognize MPI compiler names, nor should it 178AS_IF([test x$with_mpi_wrappers = xyes], [COMEX_MPI_UNWRAP_PUSH]) 179COMEX_AR 180LT_INIT([disable-shared]) 181# and now that that's over, put the MPI compilers back 182# also, the above hack incorrectly sets the base compiler as the linker 183AS_IF([test x$with_mpi_wrappers = xyes], 184 [COMEX_MPI_UNWRAP_POP 185 compiler="$CC" 186 LTCC="$CC" 187 lt_save_CC="$CC" 188 compiler_DEFAULT="$CC"]) 189 190############################################################################### 191# Test suite setup 192############################################################################### 193AC_ARG_VAR([NPROCS], [number of procs to use for parallel tests (default 4)]) 194AS_IF([test "x$NPROCS" = x], [NPROCS=4]) 195AC_SUBST([NPROCS]) 196AC_ARG_VAR([MPIEXEC], 197 [how to run parallel tests if built with MPI e.g. "mpiexec -np %NP%"]) 198AS_IF([test "x$MPIEXEC" = x], 199 [AC_PATH_PROGS([MPIEXEC], [mpirun mpiexec]) 200 MPIEXEC="$MPIEXEC -n %NP%"]) 201AC_SUBST([MPIEXEC]) 202 203############################################################################### 204# The End 205############################################################################### 206AC_CONFIG_FILES([Makefile]) 207AC_CONFIG_FILES([tools/comex-config], [chmod +x tools/comex-config]) 208AC_CONFIG_FILES([tools/armci-config], [chmod +x tools/armci-config]) 209AC_OUTPUT 210 211# Report on what we found. 212AC_MSG_NOTICE([]) 213AC_MSG_NOTICE([**************************************************************]) 214AC_MSG_NOTICE([ $PACKAGE_NAME configured as follows:]) 215AC_MSG_NOTICE([**************************************************************]) 216AC_MSG_NOTICE([]) 217AC_MSG_NOTICE([ MPI_LIBS=$MPI_LIBS]) 218AC_MSG_NOTICE([ MPI_LDFLAGS=$MPI_LDFLAGS]) 219AC_MSG_NOTICE([ MPI_CPPFLAGS=$MPI_CPPFLAGS]) 220AC_MSG_NOTICE([ COMEX_NETWORK=$comex_network]) 221AC_MSG_NOTICE([ COMEX_NETWORK_LDFLAGS=$COMEX_NETWORK_LDFLAGS]) 222AC_MSG_NOTICE([ COMEX_NETWORK_LIBS=$COMEX_NETWORK_LIBS]) 223AC_MSG_NOTICE([COMEX_NETWORK_CPPFLAGS=$COMEX_NETWORK_CPPFLAGS]) 224AC_MSG_NOTICE([ CC=$CC]) 225AS_IF([test "x$with_mpi_wrappers" = xyes], [ 226AC_MSG_NOTICE([ unwrapped CC=$comex_cv_mpic_naked]) 227]) 228AC_MSG_NOTICE([ CFLAGS=$CFLAGS]) 229AC_MSG_NOTICE([ CPP=$CPP]) 230AC_MSG_NOTICE([ CPPFLAGS=$CPPFLAGS]) 231AC_MSG_NOTICE([ LDFLAGS=$LDFLAGS]) 232AC_MSG_NOTICE([ LIBS=$LIBS]) 233AC_MSG_NOTICE([ FLIBS=$FLIBS]) 234AC_MSG_NOTICE([ AR=$AR]) 235AC_MSG_NOTICE([ AR_FLAGS=$AR_FLAGS]) 236AC_MSG_NOTICE([ DEFS=$DEFS]) 237AC_MSG_NOTICE([ SHELL=$SHELL]) 238AC_MSG_NOTICE([ MPIEXEC=$MPIEXEC]) 239AC_MSG_NOTICE([ NPROCS=$NPROCS]) 240AC_MSG_NOTICE([]) 241