Windows build: generate the OpenCL import library, drop the SDK dependency
Building the `gpu` (OpenCL) backend on Windows no longer needs a vendor OpenCL SDK. `cl-sys` links `OpenCL` (#[link(name = "OpenCL")]); instead of requiring an SDK-provided OpenCL.lib, build.rs now generates a vendor-neutral import library at build time from windows/OpenCL.def (all 118 cl-sys exports) — lib.exe for MSVC (located via the cc crate), dlltool for MinGW — and puts it on the link search path. The real OpenCL.dll is supplied at runtime by the GPU driver. build.rs no-ops on non-Windows targets and when the gpu feature is off, and warns rather than panics if the toolchain tool is absent so `cargo check` still works. Combined with the runtime-loaded (dlopen) CUDA/NVML, a Windows build now needs zero external GPU libraries. Add BUILD-windows.md (toolchain, build, crt-static packaging, runtime deps, CI) and link it from the README. Verified the whole crate compiles for x86_64-pc-windows-gnu (default features and gpu,cuda); Linux is unaffected. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
; OpenCL import library definition for jackpotminer's Windows build.
|
||||
; Generated from the cl-sys 0.4.3 exports so a vendor-neutral OpenCL.lib /
|
||||
; libOpenCL.a can be produced at build time without an OpenCL SDK. The actual
|
||||
; OpenCL.dll (ICD loader) is provided at runtime by the GPU driver.
|
||||
LIBRARY OpenCL
|
||||
EXPORTS
|
||||
clBuildProgram
|
||||
clCloneKernel
|
||||
clCompileProgram
|
||||
clCreateBuffer
|
||||
clCreateCommandQueue
|
||||
clCreateCommandQueueWithProperties
|
||||
clCreateContext
|
||||
clCreateContextFromType
|
||||
clCreateFromGLBuffer
|
||||
clCreateFromGLRenderbuffer
|
||||
clCreateFromGLTexture
|
||||
clCreateFromGLTexture2D
|
||||
clCreateFromGLTexture3D
|
||||
clCreateImage
|
||||
clCreateImage2D
|
||||
clCreateImage3D
|
||||
clCreateKernel
|
||||
clCreateKernelsInProgram
|
||||
clCreatePipe
|
||||
clCreateProgramWithBinary
|
||||
clCreateProgramWithBuiltInKernels
|
||||
clCreateProgramWithIL
|
||||
clCreateProgramWithSource
|
||||
clCreateSampler
|
||||
clCreateSamplerWithProperties
|
||||
clCreateSubBuffer
|
||||
clCreateSubDevices
|
||||
clCreateUserEvent
|
||||
clEnqueueAcquireGLObjects
|
||||
clEnqueueBarrier
|
||||
clEnqueueBarrierWithWaitList
|
||||
clEnqueueCopyBuffer
|
||||
clEnqueueCopyBufferRect
|
||||
clEnqueueCopyBufferToImage
|
||||
clEnqueueCopyImage
|
||||
clEnqueueCopyImageToBuffer
|
||||
clEnqueueFillBuffer
|
||||
clEnqueueFillImage
|
||||
clEnqueueMapBuffer
|
||||
clEnqueueMapImage
|
||||
clEnqueueMarker
|
||||
clEnqueueMarkerWithWaitList
|
||||
clEnqueueMigrateMemObjects
|
||||
clEnqueueNativeKernel
|
||||
clEnqueueNDRangeKernel
|
||||
clEnqueueReadBuffer
|
||||
clEnqueueReadBufferRect
|
||||
clEnqueueReadImage
|
||||
clEnqueueReleaseGLObjects
|
||||
clEnqueueSVMFree
|
||||
clEnqueueSVMMap
|
||||
clEnqueueSVMMemcpy
|
||||
clEnqueueSVMMemFill
|
||||
clEnqueueSVMMigrateMem
|
||||
clEnqueueSVMUnmap
|
||||
clEnqueueTask
|
||||
clEnqueueUnmapMemObject
|
||||
clEnqueueWaitForEvents
|
||||
clEnqueueWriteBuffer
|
||||
clEnqueueWriteBufferRect
|
||||
clEnqueueWriteImage
|
||||
clFinish
|
||||
clFlush
|
||||
clGetCommandQueueInfo
|
||||
clGetContextInfo
|
||||
clGetDeviceAndHostTimer
|
||||
clGetDeviceIDs
|
||||
clGetDeviceInfo
|
||||
clGetEventInfo
|
||||
clGetEventProfilingInfo
|
||||
clGetExtensionFunctionAddress
|
||||
clGetExtensionFunctionAddressForPlatform
|
||||
clGetGLContextInfoKHR
|
||||
clGetGLObjectInfo
|
||||
clGetGLTextureInfo
|
||||
clGetHostTimer
|
||||
clGetImageInfo
|
||||
clGetKernelArgInfo
|
||||
clGetKernelInfo
|
||||
clGetKernelSubGroupInfo
|
||||
clGetKernelWorkGroupInfo
|
||||
clGetMemObjectInfo
|
||||
clGetPipeInfo
|
||||
clGetPlatformIDs
|
||||
clGetPlatformInfo
|
||||
clGetProgramBuildInfo
|
||||
clGetProgramInfo
|
||||
clGetSamplerInfo
|
||||
clGetSupportedImageFormats
|
||||
clLinkProgram
|
||||
clReleaseCommandQueue
|
||||
clReleaseContext
|
||||
clReleaseDevice
|
||||
clReleaseEvent
|
||||
clReleaseKernel
|
||||
clReleaseMemObject
|
||||
clReleaseProgram
|
||||
clReleaseSampler
|
||||
clRetainCommandQueue
|
||||
clRetainContext
|
||||
clRetainDevice
|
||||
clRetainEvent
|
||||
clRetainKernel
|
||||
clRetainMemObject
|
||||
clRetainProgram
|
||||
clRetainSampler
|
||||
clSetDefaultDeviceCommandQueue
|
||||
clSetEventCallback
|
||||
clSetKernelArg
|
||||
clSetKernelArgSVMPointer
|
||||
clSetKernelExecInfo
|
||||
clSetMemObjectDestructorCallback
|
||||
clSetUserEventStatus
|
||||
clSVMAlloc
|
||||
clSVMFree
|
||||
clUnloadCompiler
|
||||
clUnloadPlatformCompiler
|
||||
clWaitForEvents
|
||||
Reference in New Issue
Block a user