>> Ninja should be using relative paths for the build tree and absolute for anything outside of it. That appears to be the case, so I need a better theory. I noticed another difference between compilation phase and link phase. The link phase is bracketed by cmd.exe /C "cd . && <actual-link-command> && cd .". I'm wondering problem those "cd ." calls are solving? Their presences is what's causing everything to be wrapped in "cmd /C"
Here's the error that encapsulates the failure CMake Error at D:/Android/sdk/cmake/3.6.3155560/share/cmake-3.6/ Modules/CMakeTestCCompiler.cmake:61 (message): The C compiler "D:/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/ windows-x86_64/bin/clang.exe" is not able to compile a simple test program. It fails with the following output: Change Dir: D:/src/MyApplication/app/.externalNativeBuild/cmake/ debug/armeabi/CMakeFiles/CMakeTmp Run Build Command:"D:\Android\sdk\cmake\3.6.3155560\bin\ninja.exe" "cmTC_0dcd8" [1/2] Building C object CMakeFiles/cmTC_0dcd8.dir/testCCompiler.c.o [2/2] Linking C executable cmTC_0dcd8 FAILED: cmd.exe /C "cd . && D:\Android\sdk\ndk-bundle\toolchains\llvm\prebuilt\ windows-x86_64\bin\clang.exe --target=armv5te-none-linux-androideabi --gcc-toolchain=D:/Android/sdk/ndk-bundle/toolchains/arm- linux-androideabi-4.9/prebuilt/windows-x86_64 --sysroot=D:/Android/sdk/ndk-bundle/sysroot -isystem D:/Android/sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=14 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv5te -mtune=xscale -msoft-float -fno-integrated-as -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -Wl,--exclude-libs,libgcc.a --sysroot D:/Android/sdk/ndk-bundle/platforms/android-14/arch-arm -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -Wl,--gc-sections -Wl,-z,nocopyreloc CMakeFiles/cmTC_0dcd8.dir/testCCompiler.c.o -o cmTC_0dcd8 -lm && cd ." clang.exe: error: no such file or directory: 'CMakeFiles/cmTC_0dcd8.dir/testCCompiler.c.o' ninja: build stopped: subcommand failed. Notes: (1) The change dir doesn't appear to have any non-ascii characters: Change Dir: D:/src/MyApplication/app/.externalNativeBuild/cmake/ debug/armeabi/CMakeFiles/CMakeTmp (2) The compile phase succeeds and produces a .o file: [1/2] Building C object CMakeFiles/cmTC_0dcd8.dir/testCCompiler.c.o (3) The link phase fails to consume the exact same _relative_ .o file: clang.exe: error: no such file or directory: 'CMakeFiles/cmTC_0dcd8.dir/testCCompiler.c.o' On Fri, Dec 29, 2017 at 7:02 AM, Ben Boeckel <[email protected]> wrote: > On Thu, Dec 28, 2017 at 12:51:20 -0800, Jom O'Fisher wrote: > > (1) Invoke cmake to generate ninja project. Success. > > * Note that generated rules.ninja has .o compilation dependencies with > > absolute paths and .so link dependencies with relative paths. > > Ninja should be using relative paths for the build tree and absolute for > anything outside of it. > > > (3) CMake changes tries to change it's working directory here: > > https://github.com/Kitware/CMake/blob/08ce62bee5bee6805fbb01c1821c43 > > 8028e858dc/Source/cmGlobalGenerator.cxx#L1811 > > What would cause `ChangeDirectory` to fail? Is there some non-ASCII in > the directory path? > > --Ben >
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake-developers
