150 lines
4.8 KiB
Plaintext
150 lines
4.8 KiB
Plaintext
# -*- mode: autoconf -*-
|
|
#
|
|
# AX_HAVE_OPENCL
|
|
#
|
|
# Check for an OpenCL implementation. If CL is found, HAVE_OPENCL is defined
|
|
# and the required CPP and linker flags are included in the output variables
|
|
# "CL_CPPFLAGS" and "CL_LIBS", respectively. If no usable CL implementation is
|
|
# found then "no_cl" is set to "yes" (otherwise it is set to "no").
|
|
#
|
|
# If the header <CL/OpenCL.h> is found, "HAVE_CL_OPENCL_H" is defined. If the
|
|
# header <OpenCL/OpenCL.h> is found, HAVE_OPENCL_OPENCL_H is defined. These
|
|
# preprocessor definitions may not be mutually exclusive.
|
|
#
|
|
# This macro first checks /usr/include and /usr/lib for OpenCL support; if it is not
|
|
# found in those locations, then it checks in the standard installation locations
|
|
# for AMD's (/opt/AMDAPP) and NVIDIA's (/usr/local/cuda) SDKs.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2, or (at your option)
|
|
# any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
# 02110-1301, USA.
|
|
#
|
|
# As a special exception, the you may copy, distribute and modify the
|
|
# configure scripts that are the output of Autoconf when processing
|
|
# the Macro. You need not follow the terms of the GNU General Public
|
|
# License when using or distributing such scripts.
|
|
#
|
|
AC_DEFUN([AX_HAVE_OPENCL],
|
|
[dnl
|
|
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
|
AC_ARG_ENABLE([opencl],
|
|
[AS_HELP_STRING([--enable-opencl],
|
|
[use OpenCL])],
|
|
[enable_opencl=$enableval],
|
|
[enable_opencl='no'])
|
|
if test x"$enable_opencl" != xno ; then
|
|
CPPFLAGS_CL=""
|
|
AC_CHECK_HEADERS([CL/cl.h OpenCL/cl.h], [HAVE_CL_H="yes"; break], [HAVE_CL_H="no"])
|
|
if test x"$HAVE_CL_H" = xno ; then
|
|
# check for AMD's SDK
|
|
AC_MSG_CHECKING([for AMD's SDK cl.h])
|
|
if test -d /opt/AMDAPP/include/CL ; then
|
|
HAVE_CL_H="yes"
|
|
AC_DEFINE([HAVE_CL_CL_H])
|
|
CPPFLAGS_CL="-I/opt/AMDAPP/include"
|
|
fi
|
|
AC_MSG_RESULT([$HAVE_CL_H])
|
|
fi
|
|
if test x"$HAVE_CL_H" = xno ; then
|
|
# check for NVIDIA's SDK
|
|
AC_MSG_CHECKING([for NVIDIA's SDK cl.h])
|
|
if test -d /usr/local/cuda/include/CL ; then
|
|
HAVE_CL_H="yes"
|
|
AC_DEFINE([HAVE_CL_CL_H])
|
|
CPPFLAGS_CL="-I/usr/local/cuda/include"
|
|
elif test -d /usr/local/cuda-6.5/include/CL ; then
|
|
HAVE_CL_H="yes"
|
|
AC_DEFINE([HAVE_CL_CL_H])
|
|
CPPFLAGS_CL="-I/usr/local/cuda-6.5/include"
|
|
elif test -d /usr/local/cuda-6.0/include/CL ; then
|
|
HAVE_CL_H="yes"
|
|
AC_DEFINE([HAVE_CL_CL_H])
|
|
CPPFLAGS_CL="-I/usr/local/cuda-6.0/include"
|
|
elif test -d /usr/local/cuda-5.5/include/CL ; then
|
|
HAVE_CL_H="yes"
|
|
AC_DEFINE([HAVE_CL_CL_H])
|
|
CPPFLAGS_CL="-I/usr/local/cuda-5.5/include"
|
|
fi
|
|
AC_MSG_RESULT([$HAVE_CL_H])
|
|
fi
|
|
if test x"$HAVE_CL_H" = xno ; then
|
|
no_cl=yes
|
|
AC_MSG_WARN([no OpenCL headers found])
|
|
CL_ENABLED=false
|
|
CL_VERSION=0
|
|
else
|
|
#
|
|
# First we check for Mac OS X, since OpenCL is standard there
|
|
#
|
|
LIBS_CL="none"
|
|
AC_MSG_CHECKING([for OpenCL library])
|
|
case "$host_os" in
|
|
darwin*) # On Mac OS X we check for installed frameworks
|
|
AX_CHECK_FRAMEWORK([OpenCL], [
|
|
LIBS_CL="-framework OpenCL"
|
|
no_cl=no
|
|
AC_MSG_RESULT(yes)
|
|
CL_ENABLED=true
|
|
CL_VERSION=1
|
|
]
|
|
,
|
|
[
|
|
no_cl=yes
|
|
AC_MSG_RESULT(no)
|
|
CL_ENABLED=false
|
|
CL_VERSION=0
|
|
])
|
|
;;
|
|
*)
|
|
save_LIBS=$LIBS
|
|
save_CFLAGS=$CFLAGS
|
|
CFLAGS=$CPPFLAGS_CL
|
|
LIBS="$save_LIBS -L/usr/lib64/nvidia -L/usr/lib/nvidia -lOpenCL"
|
|
AC_LINK_IFELSE(
|
|
[AC_LANG_PROGRAM([
|
|
#ifdef HAVE_OPENCL_CL_H
|
|
#include <OpenCL/cl.h>
|
|
#elif defined(HAVE_CL_CL_H)
|
|
#include <CL/cl.h>
|
|
#endif
|
|
#include <stddef.h>
|
|
],[
|
|
clGetPlatformIDs(0, NULL, NULL);
|
|
])],[
|
|
no_cl=no
|
|
AC_MSG_RESULT(yes)
|
|
CL_ENABLED=true
|
|
CL_VERSION=1
|
|
LIBS_CL="$save_LIBS -L/usr/lib64/nvidia -L/usr/lib/nvidia -lOpenCL"
|
|
],[
|
|
no_cl=yes
|
|
AC_MSG_RESULT(no)
|
|
CL_ENABLED=false
|
|
CL_VERSION=0
|
|
])
|
|
|
|
LIBS=$save_LIBS
|
|
CFLAGS=$save_CFLAGS
|
|
;;
|
|
esac
|
|
fi
|
|
else
|
|
no_cl=yes
|
|
AC_MSG_CHECKING([for OpenCL library])
|
|
AC_MSG_RESULT(disabled)
|
|
CL_ENABLED=false
|
|
CL_VERSION=0
|
|
fi
|
|
])
|