-
Notifications
You must be signed in to change notification settings - Fork 7
/
configure.ac
128 lines (108 loc) · 3.75 KB
/
configure.ac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.57)
AC_INIT(libmp, 2.0.0, gpudirect@github.com)
AC_CONFIG_SRCDIR([src/mp.c])
AC_CONFIG_AUX_DIR(config)
AC_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE([1.10 foreign tar-ustar silent-rules subdir-objects])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
AC_PROG_CC
AC_PROG_CXX
AC_GNU_SOURCE
AC_PROG_LN_S
AC_PROG_LIBTOOL
LT_INIT
AC_ARG_ENABLE(
[tests],
[AC_HELP_STRING([--enable-tests],
[Build test programs (default=no)])],
[enable_tests=$enableval],
[enable_tests=no])
AM_CONDITIONAL(TESTS_ENABLED, test x$enable_tests = xyes)
AC_ARG_WITH([libibverbs],
AC_HELP_STRING([--with-libibverbs], [ Set path to libibverbs installation ]))
if test x$with_libibverbs = x || test x$with_libibverbs = xno; then
want_libibverbs=no
else
want_libibverbs=yes
if test -d $with_libibverbs; then
CPPFLAGS="$CPPFLAGS -I$with_libibverbs/include"
LDFLAGS="$LDFLAGS -L$with_libibverbs/lib -L$with_libibverbs/lib64"
fi
fi
AC_ARG_WITH([libgdsync],
AC_HELP_STRING([--with-libgdsync], [ Set path to libgdsync installation ]))
if test x$with_libgdsync = x || test x$with_libgdsync = xno; then
want_libgdsync=no
else
want_libgdsync=yes
if test -d $with_libgdsync; then
CPPFLAGS="$CPPFLAGS -I$with_libgdsync/include"
LDFLAGS="$LDFLAGS -L$with_libgdsync/lib -L$with_libgdsync/lib64"
fi
fi
AC_ARG_WITH([mpi],
AC_HELP_STRING([--with-mpi], [ Set path to mpi installation ]))
if test x$with_mpi = x || test x$with_mpi = xno; then
# assuming system location
mpi_home=/usr
MPICC=$with_home/bin/mpicc
MPICXX=$with_home/bin/mpic++
else
if test -d $with_mpi; then
mpi_home=$with_mpi
MPICC=${mpi_home}/bin/mpicc
MPICXX=${mpi_home}/bin/mpic++
CPPFLAGS="$CPPFLAGS -I${mpi_home}/include"
LDFLAGS="$LDFLAGS -L${mpi_home}/lib -L${mpi_home}/lib64"
else
echo "MPI dir does not exist"
fi
fi
dnl Specify CUDA Location
AC_ARG_WITH(cuda,
AC_HELP_STRING([--with-cuda=CUDADIR], [ Specify CUDA installation directory (default: /usr/local/cuda)]),
[ cuda_home=${withval} ],
[ cuda_home=/usr/local/cuda ]
)
dnl Specify GPU Arch
AC_ARG_ENABLE(gpu-arch,
AC_HELP_STRING([--enable-gpu-arch=arch], [ Set GPU arch: sm_20, sm_21, sm_30, sm_35, sm_50, sm_52 (default: sm_35)]),
[ gpu_arch=${enableval} ],
[ gpu_arch="sm_35" ]
)
dnl Checks for programs
AC_PROG_CC
dnl Checks for header files.
AC_HEADER_STDC
dnl Checks for Verbs support
AC_CHECK_LIB(ibverbs, ibv_get_device_list, [],
AC_MSG_ERROR([ibv_get_device_list() not found. libmp requires libibverbs.]))
AC_CHECK_LIB(gdsync, gds_query_param,
AC_MSG_ERROR([gds_query_param not found. libmp requires libgdsync.]))
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_CHECK_SIZEOF(long)
dnl Output Substitutions
AC_MSG_NOTICE([Setting CUDA_PATH = ${cuda_home} ])
AC_SUBST( CUDA_PATH, [${cuda_home} ])
AC_MSG_NOTICE([Setting GPU_ARCH = ${gpu_arch} ])
AC_SUBST( GPU_ARCH, [${gpu_arch}] )
AC_MSG_NOTICE([Setting MPI_PATH = ${mpi_home} ])
AC_SUBST( MPI_PATH, [${mpi_home} ])
AC_SUBST( MPICC, [${MPICC} ])
AC_SUBST( MPICXX, [${MPICXX} ])
NVCCFLAGS="$NVCCFLAGS"
MPI_CFLAGS="$MPI_CFLAGS -I$MPI_HOME/include"
MPI_LDFLAGS="$MPI_LDFLAGS -L$MPI_HOME/lib"
CUDA_CFLAGS="$CUDA_CFLAGS -arch=${gpu_arch}"
CUDA_CFLAGS="$CUDA_CFLAGS -I$CUDA_PATH/include"
CUDA_LDFLAGS="-L$CUDA_INSTALL_PATH/lib64"
CUDA_LIBS="-lcuda -lcudart -lcufft"
NVCCFLAGS="$NVCCFLAGS $CPPFLAGS $MPI_CFLAGS $CUDA_CFLAGS"
NVCCLDFLAGS="$NVCCLDFLAGS $MPI_LDFLAGS $CUDA_LDFLAGS $CUDA_LIBS"
AC_SUBST(NVCC, [nvcc])
AC_SUBST(NVCCFLAGS)
AC_SUBST(NVCCLDFLAGS)
AC_CONFIG_FILES([Makefile libmp.spec examples/Makefile benchmarks/Makefile comm_library/examples/Makefile])
AC_OUTPUT