]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgomp/plugin/configfrag.ac
Update copyright years.
[thirdparty/gcc.git] / libgomp / plugin / configfrag.ac
CommitLineData
41dbbb37
TS
1# Plugins for offload execution, configure.ac fragment. -*- mode: autoconf -*-
2#
8d9254fc 3# Copyright (C) 2014-2020 Free Software Foundation, Inc.
41dbbb37
TS
4#
5# Contributed by Mentor Embedded.
6#
7# This file is part of the GNU Offloading and Multi Processing Library
8# (libgomp).
9#
10# Libgomp is free software; you can redistribute it and/or modify it
11# under the terms of the GNU General Public License as published by
12# the Free Software Foundation; either version 3, or (at your option)
13# any later version.
14#
15# Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
16# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17# FOR A PARTICULAR PURPOSE. See the GNU General Public License for
18# more details.
19#
20# Under Section 7 of GPL version 3, you are granted additional
21# permissions described in the GCC Runtime Library Exception, version
22# 3.1, as published by the Free Software Foundation.
23#
24# You should have received a copy of the GNU General Public License and
25# a copy of the GCC Runtime Library Exception along with this program;
26# see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
27# <http://www.gnu.org/licenses/>.
28
41dbbb37
TS
29plugin_support=yes
30AC_CHECK_LIB(dl, dlsym, , [plugin_support=no])
31if test x"$plugin_support" = xyes; then
32 AC_DEFINE(PLUGIN_SUPPORT, 1,
33 [Define if all infrastructure, needed for plugins, is supported.])
41dbbb37
TS
34elif test "x${enable_offload_targets-no}" != xno; then
35 AC_MSG_ERROR([Can't support offloading without support for plugins])
36fi
b8d89b03
ML
37AC_CHECK_HEADERS_ONCE(unistd.h)
38AC_CHECK_FUNCS_ONCE(secure_getenv __secure_getenv getuid geteuid getgid getegid)
39
41dbbb37
TS
40
41# Look for the CUDA driver package.
42CUDA_DRIVER_INCLUDE=
43CUDA_DRIVER_LIB=
44AC_SUBST(CUDA_DRIVER_INCLUDE)
45AC_SUBST(CUDA_DRIVER_LIB)
46CUDA_DRIVER_CPPFLAGS=
47CUDA_DRIVER_LDFLAGS=
48AC_ARG_WITH(cuda-driver,
49 [AS_HELP_STRING([--with-cuda-driver=PATH],
50 [specify prefix directory for installed CUDA driver package.
51 Equivalent to --with-cuda-driver-include=PATH/include
52 plus --with-cuda-driver-lib=PATH/lib])])
53AC_ARG_WITH(cuda-driver-include,
54 [AS_HELP_STRING([--with-cuda-driver-include=PATH],
55 [specify directory for installed CUDA driver include files])])
56AC_ARG_WITH(cuda-driver-lib,
57 [AS_HELP_STRING([--with-cuda-driver-lib=PATH],
58 [specify directory for the installed CUDA driver library])])
2393d337 59case "x$with_cuda_driver" in
09940090
TV
60 x) ;;
61 xno)
62 CUDA_DRIVER_INCLUDE=no
63 CUDA_DRIVER_LIB=no
64 ;;
2393d337
JJ
65 *) CUDA_DRIVER_INCLUDE=$with_cuda_driver/include
66 CUDA_DRIVER_LIB=$with_cuda_driver/lib
67 ;;
68esac
41dbbb37
TS
69if test "x$with_cuda_driver_include" != x; then
70 CUDA_DRIVER_INCLUDE=$with_cuda_driver_include
71fi
72if test "x$with_cuda_driver_lib" != x; then
73 CUDA_DRIVER_LIB=$with_cuda_driver_lib
74fi
09940090
TV
75if test "x$CUDA_DRIVER_INCLUDE" != x \
76 && test "x$CUDA_DRIVER_INCLUDE" != xno; then
41dbbb37
TS
77 CUDA_DRIVER_CPPFLAGS=-I$CUDA_DRIVER_INCLUDE
78fi
09940090
TV
79if test "x$CUDA_DRIVER_LIB" != x \
80 && test "x$CUDA_DRIVER_LIB" != xno; then
41dbbb37
TS
81 CUDA_DRIVER_LDFLAGS=-L$CUDA_DRIVER_LIB
82fi
83
84PLUGIN_NVPTX=0
85PLUGIN_NVPTX_CPPFLAGS=
86PLUGIN_NVPTX_LDFLAGS=
87PLUGIN_NVPTX_LIBS=
2393d337 88PLUGIN_NVPTX_DYNAMIC=0
41dbbb37
TS
89AC_SUBST(PLUGIN_NVPTX)
90AC_SUBST(PLUGIN_NVPTX_CPPFLAGS)
91AC_SUBST(PLUGIN_NVPTX_LDFLAGS)
92AC_SUBST(PLUGIN_NVPTX_LIBS)
93
b2b40051
MJ
94# Look for HSA run-time, its includes and libraries
95
96HSA_RUNTIME_INCLUDE=
97HSA_RUNTIME_LIB=
98AC_SUBST(HSA_RUNTIME_INCLUDE)
99AC_SUBST(HSA_RUNTIME_LIB)
100HSA_RUNTIME_CPPFLAGS=
101HSA_RUNTIME_LDFLAGS=
102
103AC_ARG_WITH(hsa-runtime,
104 [AS_HELP_STRING([--with-hsa-runtime=PATH],
105 [specify prefix directory for installed HSA run-time package.
106 Equivalent to --with-hsa-runtime-include=PATH/include
107 plus --with-hsa-runtime-lib=PATH/lib])])
108AC_ARG_WITH(hsa-runtime-include,
109 [AS_HELP_STRING([--with-hsa-runtime-include=PATH],
110 [specify directory for installed HSA run-time include files])])
111AC_ARG_WITH(hsa-runtime-lib,
112 [AS_HELP_STRING([--with-hsa-runtime-lib=PATH],
113 [specify directory for the installed HSA run-time library])])
114if test "x$with_hsa_runtime" != x; then
115 HSA_RUNTIME_INCLUDE=$with_hsa_runtime/include
116 HSA_RUNTIME_LIB=$with_hsa_runtime/lib
117fi
118if test "x$with_hsa_runtime_include" != x; then
119 HSA_RUNTIME_INCLUDE=$with_hsa_runtime_include
120fi
121if test "x$with_hsa_runtime_lib" != x; then
122 HSA_RUNTIME_LIB=$with_hsa_runtime_lib
123fi
124if test "x$HSA_RUNTIME_INCLUDE" != x; then
125 HSA_RUNTIME_CPPFLAGS=-I$HSA_RUNTIME_INCLUDE
126fi
127if test "x$HSA_RUNTIME_LIB" != x; then
128 HSA_RUNTIME_LDFLAGS=-L$HSA_RUNTIME_LIB
129fi
130
b2b40051
MJ
131PLUGIN_HSA=0
132PLUGIN_HSA_CPPFLAGS=
133PLUGIN_HSA_LDFLAGS=
134PLUGIN_HSA_LIBS=
135AC_SUBST(PLUGIN_HSA)
136AC_SUBST(PLUGIN_HSA_CPPFLAGS)
137AC_SUBST(PLUGIN_HSA_LDFLAGS)
138AC_SUBST(PLUGIN_HSA_LIBS)
139
237957cc
AS
140PLUGIN_GCN=0
141PLUGIN_GCN_CPPFLAGS=
142PLUGIN_GCN_LDFLAGS=
143PLUGIN_GCN_LIBS=
144AC_SUBST(PLUGIN_GCN)
145AC_SUBST(PLUGIN_GCN_CPPFLAGS)
146AC_SUBST(PLUGIN_GCN_LDFLAGS)
147AC_SUBST(PLUGIN_GCN_LIBS)
148
ee332b4a
TS
149# Parse '--enable-offload-targets', figure out the corresponding libgomp
150# plugins, and configure to find the corresponding offload compilers.
0a0384b4 151# 'offload_plugins' and 'offload_targets' will be populated in the same order.
ee332b4a 152offload_plugins=
0a0384b4 153offload_targets=
ee332b4a 154AC_SUBST(offload_plugins)
0a0384b4 155AC_SUBST(offload_targets)
41dbbb37
TS
156offload_additional_options=
157offload_additional_lib_paths=
158AC_SUBST(offload_additional_options)
159AC_SUBST(offload_additional_lib_paths)
160if test x"$enable_offload_targets" != x; then
161 for tgt in `echo $enable_offload_targets | sed -e 's#,# #g'`; do
162 tgt_dir=`echo $tgt | grep '=' | sed 's/.*=//'`
163 tgt=`echo $tgt | sed 's/=.*//'`
ee332b4a 164 tgt_plugin=
41dbbb37
TS
165 case $tgt in
166 *-intelmic-* | *-intelmicemul-*)
ee332b4a 167 tgt_plugin=intelmic
41dbbb37
TS
168 ;;
169 nvptx*)
ee332b4a 170 tgt_plugin=nvptx
41dbbb37 171 PLUGIN_NVPTX=$tgt
09940090
TV
172 if test "x$CUDA_DRIVER_LIB" != xno \
173 && test "x$CUDA_DRIVER_LIB" != xno; then
174 PLUGIN_NVPTX_CPPFLAGS=$CUDA_DRIVER_CPPFLAGS
175 PLUGIN_NVPTX_LDFLAGS=$CUDA_DRIVER_LDFLAGS
176 PLUGIN_NVPTX_LIBS='-lcuda'
41dbbb37 177
09940090
TV
178 PLUGIN_NVPTX_save_CPPFLAGS=$CPPFLAGS
179 CPPFLAGS="$PLUGIN_NVPTX_CPPFLAGS $CPPFLAGS"
180 PLUGIN_NVPTX_save_LDFLAGS=$LDFLAGS
181 LDFLAGS="$PLUGIN_NVPTX_LDFLAGS $LDFLAGS"
182 PLUGIN_NVPTX_save_LIBS=$LIBS
183 LIBS="$PLUGIN_NVPTX_LIBS $LIBS"
184 AC_LINK_IFELSE(
185 [AC_LANG_PROGRAM(
186 [#include "cuda.h"],
187 [CUresult r = cuCtxPushCurrent (NULL);])],
188 [PLUGIN_NVPTX=1])
189 CPPFLAGS=$PLUGIN_NVPTX_save_CPPFLAGS
190 LDFLAGS=$PLUGIN_NVPTX_save_LDFLAGS
191 LIBS=$PLUGIN_NVPTX_save_LIBS
192 fi
41dbbb37
TS
193 case $PLUGIN_NVPTX in
194 nvptx*)
09940090
TV
195 if (test "x$CUDA_DRIVER_INCLUDE" = x \
196 || test "x$CUDA_DRIVER_INCLUDE" = xno) \
197 && (test "x$CUDA_DRIVER_LIB" = x \
198 || test "x$CUDA_DRIVER_LIB" = xno); then
2393d337
JJ
199 PLUGIN_NVPTX=1
200 PLUGIN_NVPTX_CPPFLAGS='-I$(srcdir)/plugin/cuda'
201 PLUGIN_NVPTX_LIBS='-ldl'
202 PLUGIN_NVPTX_DYNAMIC=1
203 else
204 PLUGIN_NVPTX=0
205 AC_MSG_ERROR([CUDA driver package required for nvptx support])
206 fi
207 ;;
41dbbb37
TS
208 esac
209 ;;
b2b40051
MJ
210 hsa*)
211 case "${target}" in
212 x86_64-*-*)
213 case " ${CC} ${CFLAGS} " in
214 *" -m32 "*)
215 PLUGIN_HSA=0
216 ;;
217 *)
ee332b4a 218 tgt_plugin=hsa
b2b40051
MJ
219 PLUGIN_HSA=$tgt
220 PLUGIN_HSA_CPPFLAGS=$HSA_RUNTIME_CPPFLAGS
b8d89b03
ML
221 PLUGIN_HSA_LDFLAGS="$HSA_RUNTIME_LDFLAGS"
222 PLUGIN_HSA_LIBS="-ldl"
b2b40051
MJ
223
224 PLUGIN_HSA_save_CPPFLAGS=$CPPFLAGS
225 CPPFLAGS="$PLUGIN_HSA_CPPFLAGS $CPPFLAGS"
226 PLUGIN_HSA_save_LDFLAGS=$LDFLAGS
227 LDFLAGS="$PLUGIN_HSA_LDFLAGS $LDFLAGS"
228 PLUGIN_HSA_save_LIBS=$LIBS
229 LIBS="$PLUGIN_HSA_LIBS $LIBS"
230
b8d89b03 231 PLUGIN_HSA=1
b2b40051
MJ
232 CPPFLAGS=$PLUGIN_HSA_save_CPPFLAGS
233 LDFLAGS=$PLUGIN_HSA_save_LDFLAGS
234 LIBS=$PLUGIN_HSA_save_LIBS
235 case $PLUGIN_HSA in
ee332b4a 236 hsa*)
b2b40051
MJ
237 HSA_PLUGIN=0
238 AC_MSG_ERROR([HSA run-time package required for HSA support])
239 ;;
240 esac
241 ;;
242 esac
243 ;;
244 *-*-*)
245 PLUGIN_HSA=0
246 ;;
247 esac
248 ;;
237957cc
AS
249
250 amdgcn*)
251 case "${target}" in
252 x86_64-*-*)
253 case " ${CC} ${CFLAGS} " in
254 *" -m32 "*)
255 PLUGIN_GCN=0
256 ;;
257 *)
258 tgt_plugin=gcn
259 PLUGIN_GCN=$tgt
260 PLUGIN_GCN_CPPFLAGS=$HSA_RUNTIME_CPPFLAGS
261 PLUGIN_GCN_LDFLAGS="$HSA_RUNTIME_LDFLAGS"
262 PLUGIN_GCN_LIBS="-ldl"
263 PLUGIN_GCN=1
264 ;;
265 esac
266 ;;
267 *-*-*)
268 PLUGIN_GCN=0
269 ;;
270 esac
271 ;;
41dbbb37
TS
272 *)
273 AC_MSG_ERROR([unknown offload target specified])
274 ;;
275 esac
ee332b4a
TS
276 if test x"$tgt_plugin" = x; then
277 # Not configuring libgomp for this offload target if we're not building
278 # the corresponding offload plugin.
41d809d3 279 continue
ee332b4a
TS
280 elif test x"$offload_plugins" = x; then
281 offload_plugins=$tgt_plugin
0a0384b4 282 offload_targets=$tgt
41dbbb37 283 else
ee332b4a 284 offload_plugins=$offload_plugins,$tgt_plugin
0a0384b4 285 offload_targets=$offload_targets,$tgt
41dbbb37 286 fi
ee332b4a
TS
287 # Configure additional search paths.
288 if test "$tgt_plugin" = hsa; then
4a88d9b7
TS
289 # Offloading compilation is all handled by the target compiler.
290 :
291 elif test x"$tgt_dir" != x; then
41dbbb37
TS
292 offload_additional_options="$offload_additional_options -B$tgt_dir/libexec/gcc/\$(target_alias)/\$(gcc_version) -B$tgt_dir/bin"
293 offload_additional_lib_paths="$offload_additional_lib_paths:$tgt_dir/lib64:$tgt_dir/lib:$tgt_dir/lib32"
294 else
295 offload_additional_options="$offload_additional_options -B\$(libexecdir)/gcc/\$(target_alias)/\$(gcc_version) -B\$(bindir)"
296 offload_additional_lib_paths="$offload_additional_lib_paths:$toolexeclibdir"
297 fi
298 done
299fi
ee332b4a
TS
300AC_DEFINE_UNQUOTED(OFFLOAD_PLUGINS, "$offload_plugins",
301 [Define to offload plugins, separated by commas.])
41dbbb37
TS
302AM_CONDITIONAL([PLUGIN_NVPTX], [test $PLUGIN_NVPTX = 1])
303AC_DEFINE_UNQUOTED([PLUGIN_NVPTX], [$PLUGIN_NVPTX],
304 [Define to 1 if the NVIDIA plugin is built, 0 if not.])
2393d337
JJ
305AC_DEFINE_UNQUOTED([PLUGIN_NVPTX_DYNAMIC], [$PLUGIN_NVPTX_DYNAMIC],
306 [Define to 1 if the NVIDIA plugin should dlopen libcuda.so.1, 0 if it should be linked against it.])
b2b40051
MJ
307AM_CONDITIONAL([PLUGIN_HSA], [test $PLUGIN_HSA = 1])
308AC_DEFINE_UNQUOTED([PLUGIN_HSA], [$PLUGIN_HSA],
309 [Define to 1 if the HSA plugin is built, 0 if not.])
237957cc
AS
310AM_CONDITIONAL([PLUGIN_GCN], [test $PLUGIN_GCN = 1])
311AC_DEFINE_UNQUOTED([PLUGIN_GCN], [$PLUGIN_GCN],
312 [Define to 1 if the GCN plugin is built, 0 if not.])
b8d89b03
ML
313
314if test "$HSA_RUNTIME_LIB" != ""; then
315 HSA_RUNTIME_LIB="$HSA_RUNTIME_LIB/"
316fi
317
318AC_DEFINE_UNQUOTED([HSA_RUNTIME_LIB], ["$HSA_RUNTIME_LIB"],
319 [Define path to HSA runtime.])