@echo off setlocal @rem I rely on environment variables here. @rem set CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4 @rem set CUDSS_PATH=C:\Program Files\NVIDIA\cuDSS set nvccArch=sm_120 set commLayerSource=commlayer set mainSource=main set CommonXCompFlags=/W3 /O2 /EHsc set DllXcompilerFlags="%CommonXCompFlags% /MD" set ExeXcompilerFlags="%CommonXCompFlags% /MT" set IgnoreWarnings=-Wno-deprecated-gpu-targets set CudaIncludes=-I"%CUDA_PATH%\include" -I"%CUDSS_PATH%\include" set OtherIncludes=-Iinclude set CudaLibPaths=-L"%CUDA_PATH%\lib\x64" -L"%CUDSS_PATH%\lib\12" nvcc -c -o build/%commLayerSource%.obj src/%commLayerSource%.cu ^ -arch=%nvccArch% ^ %CudaIncludes% %OtherIncludes% %CudaLibPaths% ^ -lcudss -lcudart ^ %IgnoreWarnings% ^ -Xcompiler %DllXcompilerFlags% if %ERRORLEVEL% NEQ 0 ( echo Compile failed: %commLayerSource%.cu exit /b 1 ) nvcc -shared -o build/%commLayerSource%.dll build/%commLayerSource%.obj ^ -arch=%nvccArch% ^ %IgnoreWarnings% ^ -Xcompiler %DllXcompilerFlags% ^ -Xlinker "/NODEFAULTLIB:LIBCMT" if %ERRORLEVEL% NEQ 0 ( echo DLL link failed exit /b 1 ) nvcc -o build/%mainSource% src/%mainSource%.cu ^ -arch=%nvccArch% ^ %CudaIncludes% %OtherIncludes% %CudaLibPaths% ^ -lcudss -lcudart ^ %IgnoreWarnings% ^ -Xcompiler %ExeXcompilerFlags% @rem nvcc -o build/cudss_test.exe src/cudss_test.cu ^ @rem -I"%CUDA_PATH%\include" ^ @rem -I"%CUDSS_PATH%\include" ^ @rem -L"%CUDA_PATH%\lib\x64" ^ @rem -L"%CUDSS_PATH%\lib\12" ^ @rem -lcudss -lcudart ^ @rem -Xcompiler "/W3 /O2" if %ERRORLEVEL% EQU 0 ( echo Build successful: %mainSource%.exe ) else ( echo Build failed exit /b 1 )