Ninja Multi-Config: custom commands with long command lines fail
I believe this has been going on for a while, but Ninja Multi-Config even as of CMake 3.20 is unable to successfully compile Halide.
Here are repro steps on Windows using vcpkg to manage dependencies. This happens inside an "x64 Native Tools Command Prompt for VS 2019"
D:\>cmake --version
cmake version 3.20.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).
D:\>ninja --version
1.10.2
D:\vcpkg> vcpkg install libpng:x64-windows libjpeg-turbo:x64-windows llvm[target-all]:x64-windows
This step will likely take a long time because LLVM is slow to build.
D:\> git clone https://github.com/halide/Halide.git
D:\> cmake -G "Ninja Multi-Config" -S Halide -B Halide\build -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake
D:\> cmake --build Halide\build --config Release
...
[1908/4290] Generating included_schedule_file.runtime.obj
FAILED: src/autoschedulers/adams2019/included_schedule_file.runtime.obj
src\autoschedulers\adams2019\CMakeFiles\included_schedule_file.runtime.obj-51b089f.bat 19f43066e9a3772e
The system cannot find the file specified
Batch file failed at line 3 with errorcode 1
[1909/4290] Generating demo.runtime.obj
FAILED: src/autoschedulers/adams2019/demo.runtime.obj
src\autoschedulers\adams2019\CMakeFiles\demo.runtime.obj-f96ccee.bat 009edd0500709949
The system cannot find the file specified
Batch file failed at line 3 with errorcode 1
[1929/4290] Linking CXX executable bin\Release\buffer_copy.generator.exe
ninja: build stopped: subcommand failed.
This works perfectly well with the "Visual Studio 16 2019" generator with -A x64 -Thost=x64
.
The batch file src\autoschedulers\adams2019\CMakeFiles\demo.runtime.obj-f96ccee.bat
has the following contents:
@echo off
cd /D D:\Halide\build\src\autoschedulers\adams2019 || (set FAIL_LINE=2& goto :ABORT)
"C:\Program Files\CMake\bin\cmake.exe" -E env "PATH=D:\Halide\build\bin\RelWithDebInfo;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\\Extensions\Microsoft\IntelliCode\CLI;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\VC\VCPackages;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\bin\Roslyn;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Team Tools\Performance Tools\x64;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Team Tools\Performance Tools;C:\Program Files (x86)\Microsoft Visual Studio\Shared\Common\VSPerfCollectionTools\vs2019\\x64;C:\Program Files (x86)\Microsoft Visual Studio\Shared\Common\VSPerfCollectionTools\vs2019;C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64;C:\Program Files (x86)\HTML Help Workshop;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\FSharp;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\devinit;C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64;C:\Program Files (x86)\Windows Kits\10\bin\x64;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\\MSBuild\Current\Bin;C:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\libnvvp;C:\Program Files\Python39\Scripts;C:\Program Files\Python39;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\libnvvp;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64_win\mpirt;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32_win\mpirt;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64_win\compiler;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32_win\compiler;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;C:\Program Files\Microsoft MPI\Bin;C:\Program Files\PuTTY;C:\Program Files\dotnet;C:\Program Files\Microsoft SQL Server\130\Tools\Binn;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\doxygen\bin;C:\Program Files\MATLAB\R2020b\runtime\win64;C:\Program Files\MATLAB\R2020b\bin;C:\Program Files\Wolfram Research\WolframScript;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\CMake\bin;C:\ProgramData\chocolatey\bin;C:\Program Files (x86)\dotnet;C:\Program Files\Git\cmd;C:\Program Files\NVIDIA Corporation\Nsight Compute 2020.3.0;C:\Program Files\nodejs;C:\Ruby30-x64\bin;C:\Users\Alex Reinking\AppData\Roaming\local\bin;C:\Users\Alex Reinking\AppData\Local\Microsoft\WindowsApps;C:\Users\Alex Reinking\AppData\Local\atom\bin;C:\Users\Alex Reinking\.dotnet\tools;C:\Users\Alex Reinking\AppData\Roaming\npm;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\Llvm\x64\bin;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\VC\Linux\bin\ConnectionManagerExe" D:/Halide/build/bin/RelWithDebInfo/demo.generator.exe -r demo.runtime -o . -e object target=x86-64-windows || (set FAIL_LINE=3& goto :ABORT)
goto :EOF
:ABORT
set ERROR_CODE=%ERRORLEVEL%
echo Batch file failed at line %FAIL_LINE% with errorcode %ERRORLEVEL%
exit /b %ERROR_CODE%
There's an erroneous reference on the first line to D:\Halide\build\bin\RelWithDebInfo
and to D:/Halide/build/bin/RelWithDebInfo/demo.generator.exe
. The chosen config was Release.
Edited by Brad King