From f1b113125404291d2005ac7a953f5de4a8dfb3df Mon Sep 17 00:00:00 2001 From: Brice Videau Date: Tue, 3 Feb 2026 09:45:45 -0600 Subject: [PATCH 1/2] Disable loader managed dispatch when building static libraries. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 03a55c31..78102a1d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,8 +52,8 @@ option(OPENCL_ICD_LOADER_BUILD_SHARED_LIBS "Build OpenCL ICD Loader as shared li # It is currently needed default while the specification is being formalized, # and to study the performance impact. option (ENABLE_OPENCL_LAYERS "Enable OpenCL Layers" ON) -option (ENABLE_OPENCL_LOADER_MANAGED_DISPATCH "Enable OpenCL Loader managed dispatch" ON) include(CMakeDependentOption) +cmake_dependent_option(ENABLE_OPENCL_LOADER_MANAGED_DISPATCH "Enable OpenCL Loader managed dispatch" ON OPENCL_ICD_LOADER_BUILD_SHARED_LIBS OFF) cmake_dependent_option(ENABLE_OPENCL_LAYERINFO "Enable building cllayerinfo tool" ON ENABLE_OPENCL_LAYERS OFF) include(GNUInstallDirs) From 86d9a377afef7f702cfc15d0a2cd59bb3a111719 Mon Sep 17 00:00:00 2001 From: Brice Videau Date: Tue, 3 Feb 2026 10:00:34 -0600 Subject: [PATCH 2/2] Disable DllMain in static builds. --- CMakeLists.txt | 1 + loader/windows/icd_windows.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 78102a1d..265c560e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -170,6 +170,7 @@ set (OPENCL_COMPILE_DEFINITIONS OPENCL_ICD_LOADER_VERSION_REV=8 $<$:CL_ENABLE_LAYERS> $<$:CL_ENABLE_LOADER_MANAGED_DISPATCH> + $<$:CL_SHARED_BUILD> ) target_compile_definitions (OpenCL diff --git a/loader/windows/icd_windows.c b/loader/windows/icd_windows.c index fdc33350..84e2c0d6 100644 --- a/loader/windows/icd_windows.c +++ b/loader/windows/icd_windows.c @@ -411,7 +411,7 @@ void khrIcdOsVendorsEnumerateOnce() InitOnceExecuteOnce(&initialized, khrIcdOsVendorsEnumerate, NULL, NULL); } -#ifndef CL_LAYER_INFO +#if !defined(CL_LAYER_INFO) && defined(CL_SHARED_BUILD) BOOL APIENTRY DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) { (void)hinst; (void)reserved;