Skip to content
Snippets Groups Projects
configure.ac 3.85 KiB
Newer Older
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.69])

AC_INIT([Purdue Molecular Dynamics Suite], [1.0], [ohearnku@msu.edu hma@msu.edu])
AM_INIT_AUTOMAKE([1.15])
LT_PREREQ([2.2])
LT_INIT([dlopen])

AC_CONFIG_MACRO_DIR([m4])

# Enable silent build rules by default.
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],[AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])

AC_ARG_ENABLE([serial],
	      [AS_HELP_STRING([--enable-serial],
			      [enable serial support @<:@default: no@:>@])],
			      [package_serial_enabled=${enableval}], [package_serial_enabled=no])
AC_ARG_ENABLE([openmp],
	      [AS_HELP_STRING([--enable-openmp],
			      [enable OpenMP support @<:@default: yes@:>@])],
			      [package_openmp_enabled=${enableval}], [package_openmp_enabled=yes])
AC_ARG_ENABLE([mpi],
	      [AS_HELP_STRING([--enable-mpi],
			      [enable MPI support @<:@default: no@:>@])],
			      [package_mpi_enabled=${enableval}], [package_mpi_enabled=no])
AC_ARG_ENABLE([mpi-single-gpu],
	      [AS_HELP_STRING([--enable-mpi-single-gpu],
			      [enable MPI+CUDA (single GPU) support @<:@default: no@:>@])],
			      [package_mpi_single_gpu_enabled=${enableval}], [package_mpi_single_gpu_enabled=no])
AC_ARG_ENABLE([mpi-multi-gpu],
	      [AS_HELP_STRING([--enable-mpi-multi-gpu],
			      [enable MPI+CUDA (multi GPU) support @<:@default: no@:>@])],
			      [package_mpi_multi_gpu_enabled=${enableval}], [package_mpi_multi_gpu_enabled=no])

AC_CONFIG_SUBDIRS([sPuReMD])
#TODO: find a way to enable/disable serial/OpenMP builds
#if test "x${package_serial_enabled}" = "xyes" || test "x${package_openmp_enabled}" = "xyes"; then
#	AC_CONFIG_SUBDIRS([sPuReMD])
#	if test "x${package_serial_enabled}" = "xyes"; then
#
#	fi
#fi
if test "x${package_mpi_enabled}" = "xyes"; then
	AC_CONFIG_SUBDIRS([PuReMD])
fi
AM_CONDITIONAL([BUILD_MPI], [test "x${package_mpi_enabled}" = "xyes"])
if test "x${package_mpi_single_gpu_enabled}" = "xyes"; then
	AC_CONFIG_SUBDIRS([PuReMD-GPU])
fi
AM_CONDITIONAL([BUILD_SINGLE_GPU], [test "x${package_mpi_single_gpu_enabled}" = "xyes"])
if test "x${package_mpi_multi_gpu_enabled}" = "xyes"; then
	AC_CONFIG_SUBDIRS([PG-PuReMD])
fi
AM_CONDITIONAL([BUILD_MULTI_GPU], [test "x${package_mpi_multi_gpu_enabled}" = "xyes"])

# Provides debug compilation mode.
AC_ARG_ENABLE([debug],
	      [  --enable-debug    Turn on debugging],
	      [case "${enableval}" in
		       yes) DEBUG=true ;;
		       no)  DEBUG=false ;;
		       *)   AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;;
	       esac],
	       [DEBUG=false]
	       )
if test "x$DEBUG" = "xtrue"
then
	CFLAGS="-g3 -O0 -D_GLIBCXX_DEBUG ${CFLAGS}"
	BUILD_DEBUG="true"
else
	CFLAGS="-O3 ${CFLAGS}"
fi

# gprof flags.
AC_ARG_ENABLE([gprof],
	[  --enable-gprof    Turn on profiling with gprof (pass gnu or intel as argument)],
	[case "${enableval}" in
		gnu | yes) 
			gprof_enabled=true 
			gprof_compiler="gnu compiler"
			gprof_flags="-pg"
			;;
		intel)
			gprof_enabled=true
			gprof_compiler="intel compiler"
			gprof_flags="-p"
			;;
		no)
			gprof_enabled=false 
			gprof_compiler="none"
			gprof_flags=""
			;;
		*)
			AC_MSG_ERROR([bad value ${enableval} for --enable-gprof (only yes, gnu or intel are possible)]) ;;
	esac],
	[gprof_enabled=false
	 gprof_compiler="none"
	 gprof_flags=""
	]	      
)
if test "x$gprof_enabled" = "xtrue"
then
	CPPFLAGS="${CPPFLAGS} ${gprof_flags}"
	LDFLAGS="${LDFLAGS} ${gprof_flags}"
	BUILD_PROF="true"
fi

# Timing measurements.
AC_ARG_ENABLE([timing],
	[  --enable-timing    Turn on timing measurement and report],
	[case "${enableval}" in
		yes) 
			timing_enabled=true 
			;;
		no)
			timing_enabled=false 
			;;
		*)
			AC_MSG_ERROR([bad value ${enableval} for --enable-timing]) ;;
	esac],
	[timing_enabled=false]
)
if test "x$gprof_enabled" = "xtrue"
then
	BUILD_TIMING="true"
fi