Hi! On 2017-01-13T19:11:23+0100, Jakub Jelinek <ja...@redhat.com> wrote: > Especially for distributions it is undesirable to need to have proprietary > CUDA libraries and headers installed when building GCC.
> I've talked to our lawyers and they said that the cuda.h header included > in this patch doesn't infringe anyone's copyright or is otherwise a fair > use, it has been created by gathering all the cu*/CU* symbols from the > current and older nvptx plugin and some oacc tests, then stubbing the > pointer-ish typedefs, grabing most enum values and function prototypes from > https://raw.githubusercontent.com/shinpei0208/gdev/master/cuda/driver/cuda.h > and verifying assembly with that header against assembly when compiled > against NVidia's cuda.h. ..., and later accordingly was slightly extended, as necessary to use further CUDA features in libgomp's nvptx plugin. > --- libgomp/plugin/cuda/cuda.h.jj 2017-01-13 15:58:00.966544147 +0100 > +++ libgomp/plugin/cuda/cuda.h 2017-01-13 17:02:47.355817896 +0100 > @@ -0,0 +1,174 @@ > +/* CUDA API description. > + Copyright (C) 2017 Free Software Foundation, Inc. > + > +This file is part of GCC. > + > +GCC 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 3, or (at your option) > +any later version. > + > +GCC 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 GCC; see the file COPYING3. If not see > +<http://www.gnu.org/licenses/>. > + > +This header provides the minimum amount of typedefs, enums and function > +declarations to be able to compile plugin-nvptx.c if cuda.h and > +libcuda.so.1 are not available. */ > + > +#ifndef GCC_CUDA_H > +#define GCC_CUDA_H > +[...] > +#endif /* GCC_CUDA_H */ OK to push the attached "Move 'libgomp/plugin/cuda/cuda.h' to 'include/cuda/cuda.h'", so that I'm also able to use that file in the nvptx-tools, which inherit GCC's 'include' directory? Grüße Thomas ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
>From a6f9d53277ff8408cdbd7b89f3e7595e40333d48 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge <tho...@codesourcery.com> Date: Wed, 6 Apr 2022 14:12:29 +0200 Subject: [PATCH] Move 'libgomp/plugin/cuda/cuda.h' to 'include/cuda/cuda.h' ... so that it may be used by other projects that inherit GCC's 'include' directory. include/ * cuda/cuda.h: New file. libgomp/ * plugin/cuda/cuda.h: Remove file. * plugin/plugin-nvptx.c [PLUGIN_NVPTX_DYNAMIC]: Include "cuda/cuda.h" instead of <cuda.h>. * plugin/configfrag.ac <PLUGIN_NVPTX_DYNAMIC>: Don't set 'PLUGIN_NVPTX_CPPFLAGS'. * configure: Regenerate. --- {libgomp/plugin => include}/cuda/cuda.h | 7 +++---- libgomp/configure | 1 - libgomp/plugin/configfrag.ac | 1 - libgomp/plugin/plugin-nvptx.c | 6 +++++- 4 files changed, 8 insertions(+), 7 deletions(-) rename {libgomp/plugin => include}/cuda/cuda.h (97%) diff --git a/libgomp/plugin/cuda/cuda.h b/include/cuda/cuda.h similarity index 97% rename from libgomp/plugin/cuda/cuda.h rename to include/cuda/cuda.h index 5c679c1767a..5c813ad2cf8 100644 --- a/libgomp/plugin/cuda/cuda.h +++ b/include/cuda/cuda.h @@ -1,4 +1,4 @@ -/* CUDA API description. +/* CUDA Driver API description. Copyright (C) 2017-2022 Free Software Foundation, Inc. This file is part of GCC. @@ -22,9 +22,8 @@ a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see <http://www.gnu.org/licenses/>. -This header provides the minimum amount of typedefs, enums and function -declarations to be able to compile plugin-nvptx.c if cuda.h and -libcuda.so.1 are not available. */ +This header provides parts of the CUDA Driver API, without having to rely on +the proprietary CUDA toolkit. */ #ifndef GCC_CUDA_H #define GCC_CUDA_H diff --git a/libgomp/configure b/libgomp/configure index b1b620cabc3..f863aa2ead4 100755 --- a/libgomp/configure +++ b/libgomp/configure @@ -15297,7 +15297,6 @@ rm -f core conftest.err conftest.$ac_objext \ && (test "x$CUDA_DRIVER_LIB" = x \ || test "x$CUDA_DRIVER_LIB" = xno); then PLUGIN_NVPTX=1 - PLUGIN_NVPTX_CPPFLAGS='-I$(srcdir)/plugin/cuda' PLUGIN_NVPTX_LIBS='-ldl' PLUGIN_NVPTX_DYNAMIC=1 else diff --git a/libgomp/plugin/configfrag.ac b/libgomp/plugin/configfrag.ac index fc298391d4c..54d4b675c4e 100644 --- a/libgomp/plugin/configfrag.ac +++ b/libgomp/plugin/configfrag.ac @@ -156,7 +156,6 @@ if test x"$enable_offload_targets" != x; then && (test "x$CUDA_DRIVER_LIB" = x \ || test "x$CUDA_DRIVER_LIB" = xno); then PLUGIN_NVPTX=1 - PLUGIN_NVPTX_CPPFLAGS='-I$(srcdir)/plugin/cuda' PLUGIN_NVPTX_LIBS='-ldl' PLUGIN_NVPTX_DYNAMIC=1 else diff --git a/libgomp/plugin/plugin-nvptx.c b/libgomp/plugin/plugin-nvptx.c index b4f0a84d77a..b28dfca00fa 100644 --- a/libgomp/plugin/plugin-nvptx.c +++ b/libgomp/plugin/plugin-nvptx.c @@ -41,7 +41,11 @@ #include "oacc-int.h" #include <pthread.h> -#include <cuda.h> +#if PLUGIN_NVPTX_DYNAMIC +# include "cuda/cuda.h" +#else +# include <cuda.h> +#endif #include <stdbool.h> #include <limits.h> #include <string.h> -- 2.25.1