aboutsummaryrefslogtreecommitdiff
path: root/libgomp/target.c
diff options
context:
space:
mode:
authorTobias Burnus <tobias@codesourcery.com>2021-04-28 18:46:47 +0200
committerTobias Burnus <tobias@codesourcery.com>2021-04-28 18:46:47 +0200
commitfe5bfa6704179f8db7d1ae0b485439e9896df8eb (patch)
tree7687db287a1ef04b1399cf8db2a06eb9398cc995 /libgomp/target.c
parent3da80ed7efd582575e7850a403ce693ec882d087 (diff)
downloadgcc-fe5bfa6704179f8db7d1ae0b485439e9896df8eb.zip
gcc-fe5bfa6704179f8db7d1ae0b485439e9896df8eb.tar.gz
gcc-fe5bfa6704179f8db7d1ae0b485439e9896df8eb.tar.bz2
offload-defaulted: Config option to silently ignore uninstalled offload compilers
If configured with --enable-offload-defaulted, configured but not installed offload compilers and libgomp plugins are silently ignored. Useful for distribution compilers where those are in separate optional packages. 2021-04-28 Jakub Jelinek <jakub@redhat.com> Tobias Burnus <tobias@codesourcery.com> ChangeLog: * configure.ac (--enable-offload-defaulted): New. * configure: Regenerate. gcc/ChangeLog: * configure.ac (OFFLOAD_DEFAULTED): AC_DEFINE if offload-defaulted. * gcc.c (process_command): New variable. (driver::maybe_putenv_OFFLOAD_TARGETS): If OFFLOAD_DEFAULTED, set it if -foffload is defaulted. * lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define. (compile_offload_image): If OFFLOAD_DEFAULTED and OFFLOAD_TARGET_DEFAULT is in the environment, don't fail if corresponding mkoffload can't be found. (compile_images_for_offload_targets): Likewise. Free and clear offload_names if no valid offload is found. * config.in: Regenerate. * configure: Regenerate. libgomp/ChangeLog: * configure.ac (OFFLOAD_DEFAULTED): AC_DEFINE if offload-defaulted. * target.c (gomp_load_plugin_for_device): If set and if a plugin can't be dlopened, silently assume it has no devices. * Makefile.in: Regenerate. * config.h.in: Regenerate. * configure: Regenerate.
Diffstat (limited to 'libgomp/target.c')
-rw-r--r--libgomp/target.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libgomp/target.c b/libgomp/target.c
index 4a4e1f8..2150e5d 100644
--- a/libgomp/target.c
+++ b/libgomp/target.c
@@ -3173,7 +3173,11 @@ gomp_load_plugin_for_device (struct gomp_device_descr *device,
void *plugin_handle = dlopen (plugin_name, RTLD_LAZY);
if (!plugin_handle)
+#if OFFLOAD_DEFAULTED
+ return 0;
+#else
goto dl_fail;
+#endif
/* Check if all required functions are available in the plugin and store
their handlers. None of the symbols can legitimately be NULL,