<div dir="ltr"><font face="arial, helvetica, sans-serif">>> Ninja should be using relative paths for the build tree and absolute for anything outside of it.<br></font><div><font face="arial, helvetica, sans-serif">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 .". </font></div><div><font face="arial, helvetica, sans-serif">I'm wondering problem those "cd ." calls are solving? Their presences is what's causing everything to be wrapped in "cmd /C"</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">Here's the error that encapsulates the failure</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div><font face="arial, helvetica, sans-serif">CMake Error at D:/Android/sdk/cmake/3.6.<wbr>3155560/share/cmake-3.6/<wbr>Modules/CMakeTestCCompiler.<wbr>cmake:61 (message):</font></div></div><div><div><font face="arial, helvetica, sans-serif">  The C compiler</font></div></div><div><div><font face="arial, helvetica, sans-serif">  "D:/Android/sdk/ndk-bundle/<wbr>toolchains/llvm/prebuilt/<wbr>windows-x86_64/bin/clang.exe"</font></div></div><div><div><font face="arial, helvetica, sans-serif">  is not able to compile a simple test program.</font></div></div><div><div><font face="arial, helvetica, sans-serif">  It fails with the following output:</font></div></div><div><div><font face="arial, helvetica, sans-serif">   Change Dir: D:/src/MyApplication/app/.<wbr>externalNativeBuild/cmake/<wbr>debug/armeabi/CMakeFiles/<wbr>CMakeTmp</font></div></div><div><div><font face="arial, helvetica, sans-serif">  </font></div></div><div><div><font face="arial, helvetica, sans-serif">  Run Build Command:"D:\Android\sdk\cmake\<wbr>3.6.3155560\bin\ninja.exe"</font></div></div><div><div><font face="arial, helvetica, sans-serif">  "cmTC_0dcd8"</font></div></div><div><div><font face="arial, helvetica, sans-serif">  [1/2] Building C object CMakeFiles/cmTC_0dcd8.dir/<wbr>testCCompiler.c.o</font></div></div><div><div><font face="arial, helvetica, sans-serif">  [2/2] Linking C executable cmTC_0dcd8</font></div></div><div><div><font face="arial, helvetica, sans-serif">  FAILED: cmd.exe /C "cd .  &&</font></div></div><div><div><font face="arial, helvetica, sans-serif">  D:\Android\sdk\ndk-bundle\<wbr>toolchains\llvm\prebuilt\<wbr>windows-x86_64\bin\clang.exe</font></div></div><div><div><font face="arial, helvetica, sans-serif">  --target=armv5te-none-linux-<wbr>androideabi</font></div></div><div><div><font face="arial, helvetica, sans-serif">  --gcc-toolchain=D:/Android/<wbr>sdk/ndk-bundle/toolchains/arm-<wbr>linux-androideabi-4.9/<wbr>prebuilt/windows-x86_64</font></div></div><div><div><font face="arial, helvetica, sans-serif">  --sysroot=D:/Android/sdk/ndk-<wbr>bundle/sysroot -isystem</font></div></div><div><div><font face="arial, helvetica, sans-serif">  D:/Android/sdk/ndk-bundle/<wbr>sysroot/usr/include/arm-linux-<wbr>androideabi</font></div></div><div><div><font face="arial, helvetica, sans-serif">  -D__ANDROID_API__=14 -g -DANDROID -ffunction-sections -funwind-tables</font></div></div><div><div><font face="arial, helvetica, sans-serif">  -fstack-protector-strong -no-canonical-prefixes -march=armv5te</font></div></div><div><div><font face="arial, helvetica, sans-serif">  -mtune=xscale -msoft-float -fno-integrated-as -mthumb -Wa,--noexecstack</font></div></div><div><div><font face="arial, helvetica, sans-serif">  -Wformat -Werror=format-security -Wl,--exclude-libs,libgcc.a --sysroot</font></div></div><div><div><font face="arial, helvetica, sans-serif">  D:/Android/sdk/ndk-bundle/<wbr>platforms/android-14/arch-arm -Wl,--build-id</font></div></div><div><div><font face="arial, helvetica, sans-serif">  -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined</font></div></div><div><div><font face="arial, helvetica, sans-serif">  -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now</font></div></div><div><div><font face="arial, helvetica, sans-serif">  -Wl,--gc-sections -Wl,-z,nocopyreloc</font></div></div><div><div><font face="arial, helvetica, sans-serif">  CMakeFiles/cmTC_0dcd8.dir/<wbr>testCCompiler.c.o -o cmTC_0dcd8 -lm && cd ."</font></div></div><div><div><font face="arial, helvetica, sans-serif">  clang.exe: error: no such file or directory:</font></div></div><div><div><font face="arial, helvetica, sans-serif">  'CMakeFiles/cmTC_0dcd8.dir/<wbr>testCCompiler.c.o'</font></div></div><div><div><font face="arial, helvetica, sans-serif">  ninja: build stopped: subcommand failed.</font></div></div></blockquote><div><span style="color:rgb(42,42,42)"><font face="arial, helvetica, sans-serif"><br></font></span></div><div><span style="color:rgb(42,42,42)"><font face="arial, helvetica, sans-serif">Notes:</font></span></div><div><span style="color:rgb(42,42,42)"><font face="arial, helvetica, sans-serif">(1) The change dir doesn't appear to have any non-ascii characters:</font></span></div><div><font face="arial, helvetica, sans-serif">   Change Dir: D:/src/MyApplication/app/.<wbr>externalNativeBuild/cmake/<wbr>debug/armeabi/CMakeFiles/<wbr>CMakeTmp<span style="color:rgb(42,42,42)"><br></span></font></div><div><font face="arial, helvetica, sans-serif">(2) The compile phase succeeds and produces a .o file:</font></div><div><font face="arial, helvetica, sans-serif">  [1/2] Building C object CMakeFiles/cmTC_0dcd8.dir/<wbr>testCCompiler.c.o<span style="color:rgb(42,42,42)"><br></span></font></div><div><font face="arial, helvetica, sans-serif">(3) The link phase fails to consume the exact same _relative_ .o file:</font></div><div><div><font face="arial, helvetica, sans-serif">  clang.exe: error: no such file or directory:</font></div><div><font face="arial, helvetica, sans-serif">  'CMakeFiles/cmTC_0dcd8.dir/<wbr>testCCompiler.c.o'</font></div></div><div><br></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><span style="color:rgb(42,42,42);font-family:"Segoe UI","Lucida Grande",Verdana,Arial,Helvetica,sans-serif;font-size:13px"><br></span></div><div><span style="color:rgb(42,42,42);font-family:"Segoe UI","Lucida Grande",Verdana,Arial,Helvetica,sans-serif;font-size:13px"><br></span></div><div><span style="color:rgb(42,42,42);font-family:"Segoe UI","Lucida Grande",Verdana,Arial,Helvetica,sans-serif;font-size:13px"><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 29, 2017 at 7:02 AM, Ben Boeckel <span dir="ltr"><<a href="mailto:ben.boeckel@kitware.com" target="_blank">ben.boeckel@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Thu, Dec 28, 2017 at 12:51:20 -0800, Jom O'Fisher wrote:<br>
> (1) Invoke cmake to generate ninja project. Success.<br>
> * Note that generated rules.ninja has .o compilation dependencies with<br>
> absolute paths and .so link dependencies with relative paths.<br>
<br>
</span>Ninja should be using relative paths for the build tree and absolute for<br>
anything outside of it.<br>
<span class=""><br>
> (3) CMake changes tries to change it's working directory here:<br>
> <a href="https://github.com/Kitware/CMake/blob/08ce62bee5bee6805fbb01c1821c43" rel="noreferrer" target="_blank">https://github.com/Kitware/<wbr>CMake/blob/<wbr>08ce62bee5bee6805fbb01c1821c43</a><br>
> 8028e858dc/Source/<wbr>cmGlobalGenerator.cxx#L1811<br>
<br>
</span>What would cause `ChangeDirectory` to fail? Is there some non-ASCII in<br>
the directory path?<br>
<span class="HOEnZb"><font color="#888888"><br>
--Ben<br>
</font></span></blockquote></div><br></div>