<div dir="ltr">r288679 fixes it for the VS build here.  Thanks for the quick fix!<div><br></div><div>-Greg</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 5 December 2016 at 17:13, Chris Bieneman <span dir="ltr"><<a href="mailto:beanz@apple.com" target="_blank">beanz@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">I think this is squared away with r288679. I tested with the Xcode generator, and it seems to be doing the right thing. Can you verify that it fixes VS as well?<div><br></div><div>Thanks,</div><div>-Chris</div><div><div class="h5"><div><br><div><blockquote type="cite"><div>On Dec 5, 2016, at 8:42 AM, Chris Bieneman via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:</div><br class="m_2032593277691239604Apple-interchange-newline"><div><div style="word-wrap:break-word">Looking into this now. Thanks for the heads up.<div><br></div><div>-Chris</div><div><br><div><blockquote type="cite"><div>On Dec 5, 2016, at 5:20 AM, Greg Bedwell <<a href="mailto:gregbedwell@gmail.com" target="_blank">gregbedwell@gmail.com</a>> wrote:</div><br class="m_2032593277691239604Apple-interchange-newline"><div><div dir="ltr"><div>Hi,</div><div><br></div>Looks like this commit has caused new failures when using the multi-configuration Visual Studio CMake generators (e.g. "Visual Studio 14 2015 Win64".  All the regular executables are going to the expected place: "<build>/Release/bin", "<build>/Debug/bin", etc. but the "symlink" files (actually just copies on Windows) now get placed in "<build>/bin" instead:<div><br></div><div><div>  Failing Tests (6):</div><div>      LLVM :: LibDriver/infer-output-path.<wbr>test</div><div>      LLVM :: LibDriver/libpath.test</div><div>      LLVM :: LibDriver/no-inputs.test</div><div>      LLVM :: LibDriver/thin.test</div><div>      LLVM :: Object/archive-symtab.test</div><div>      LLVM :: Object/nm-archive.test</div></div><div><br></div><div>The fails are all of this sort of form:</div><div>"'C:/work/public-git/upstream-<wbr>llvm/build-vs2015-ps4-master/<wbr>Release/bin/llvm-lib': command not found"</div><div><br></div><div>Cheers,</div><div>Greg</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 5 December 2016 at 03:28, Chris Bieneman via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: cbieneman<br>
Date: Sun Dec  4 21:28:03 2016<br>
New Revision: 288632<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=288632&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=288632&view=rev</a><br>
Log:<br>
[CMake] Refactor add_llvm_tool_symlink for reuse<br>
<br>
The old implementation of add_llvm_tool_symlink could fail in odd ways when building out of tree. This version solves that problem by not using the LLVM_* variables, and instead reaeding the target's properties.<br>
<br>
Modified:<br>
    llvm/trunk/cmake/modules/AddLL<wbr>VM.cmake<br>
<br>
Modified: llvm/trunk/cmake/modules/AddLL<wbr>VM.cmake<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/AddLLVM.cmake?rev=288632&r1=288631&r2=288632&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/cmake/modules<wbr>/AddLLVM.cmake?rev=288632&r1=<wbr>288631&r2=288632&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/cmake/modules/AddLL<wbr>VM.cmake (original)<br>
+++ llvm/trunk/cmake/modules/AddLL<wbr>VM.cmake Sun Dec  4 21:28:03 2016<br>
@@ -1288,43 +1288,54 @@ function(llvm_install_symlink name dest)<br>
   endif()<br>
 endfunction()<br>
<br>
-function(add_llvm_tool_symlin<wbr>k name dest)<br>
-  cmake_parse_arguments(ARG "ALWAYS_GENERATE" "" "" ${ARGN})<br>
+function(add_llvm_tool_symlin<wbr>k link_name target)<br>
+  cmake_parse_arguments(ARG "ALWAYS_GENERATE" "OUTPUT_DIR" "" ${ARGN})<br>
+  if(NOT ARG_OUTPUT_DIR)<br>
+    get_target_property(target_typ<wbr>e ${target} TYPE)<br>
+    if(${target_type} STREQUAL "STATIC_LIBRARY")<br>
+      get_target_property(ARG_OUTPUT<wbr>_DIR ${target} ARCHIVE_OUTPUT_DIRECTORY)<br>
+    elseif(UNIX AND ${target_type} STREQUAL "SHARED_LIBRARY")<br>
+      get_target_property(ARG_OUTPUT<wbr>_DIR ${target} LIBRARY_OUTPUT_DIRECTORY)<br>
+    else()<br>
+      get_target_property(ARG_OUTPUT<wbr>_DIR ${target} RUNTIME_OUTPUT_DIRECTORY)<br>
+    endif()<br>
+  endif()<br>
+<br>
   if(UNIX)<br>
     set(LLVM_LINK_OR_COPY create_symlink)<br>
-    set(dest_binary "${dest}${CMAKE_EXECUTABLE_SUF<wbr>FIX}")<br>
+    set(dest_binary "$<TARGET_FILE_NAME:${target}><wbr>")<br>
   else()<br>
     set(LLVM_LINK_OR_COPY copy)<br>
-    set(dest_binary "${LLVM_RUNTIME_OUTPUT_INTDIR}<wbr>/${dest}${CMAKE_EXECUTABLE_SUF<wbr>FIX}")<br>
+    set(dest_binary "$<TARGET_FILE:${target}>")<br>
   endif()<br>
<br>
-  set(output_path "${LLVM_RUNTIME_OUTPUT_INTDIR}<wbr>/${name}${CMAKE_EXECUTABLE_SUF<wbr>FIX}")<br>
+  set(output_path "${ARG_OUTPUT_DIR}/${link_name<wbr>}${CMAKE_EXECUTABLE_SUFFIX}")<br>
<br>
-  set(target_name ${name})<br>
-  if(TARGET ${name})<br>
-    set(target_name ${name}-link)<br>
+  set(target_name ${link_name})<br>
+  if(TARGET ${link_name})<br>
+    set(target_name ${link_name}-link)<br>
   endif()<br>
<br>
<br>
   if(ARG_ALWAYS_GENERATE)<br>
     set_property(DIRECTORY APPEND PROPERTY<br>
       ADDITIONAL_MAKE_CLEAN_FILES ${dest_binary})<br>
-    add_custom_command(TARGET ${dest} POST_BUILD<br>
+    add_custom_command(TARGET ${target} POST_BUILD<br>
       COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${dest_binary}" "${output_path}")<br>
   else()<br>
     add_custom_command(OUTPUT ${output_path}<br>
                      COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${dest_binary}" "${output_path}"<br>
-                     DEPENDS ${dest})<br>
-    add_custom_target(${target_nam<wbr>e} ALL DEPENDS ${output_path})<br>
+                     DEPENDS ${target})<br>
+    add_custom_target(${target_nam<wbr>e} ALL DEPENDS ${target} ${output_path})<br>
     set_target_properties(${targe<wbr>t_name} PROPERTIES FOLDER Tools)<br>
<br>
     # Make sure both the link and target are toolchain tools<br>
-    if (${name} IN_LIST LLVM_TOOLCHAIN_TOOLS AND ${dest} IN_LIST LLVM_TOOLCHAIN_TOOLS)<br>
+    if (${link_name} IN_LIST LLVM_TOOLCHAIN_TOOLS AND ${target} IN_LIST LLVM_TOOLCHAIN_TOOLS)<br>
       set(TOOL_IS_TOOLCHAIN ON)<br>
     endif()<br>
<br>
     if ((TOOL_IS_TOOLCHAIN OR NOT LLVM_INSTALL_TOOLCHAIN_ONLY) AND LLVM_BUILD_TOOLS)<br>
-      llvm_install_symlink(${name} ${dest})<br>
+      llvm_install_symlink(${link_na<wbr>me} ${target})<br>
     endif()<br>
   endif()<br>
 endfunction()<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>
</div></blockquote></div><br></div></div>______________________________<wbr>_________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br></div></blockquote></div><br></div></div></div></div></blockquote></div><br></div>