<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jun 25, 2015, at 3:30 PM, Justin Bogner <<a href="mailto:mail@justinbogner.com" class="">mail@justinbogner.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Chris Bieneman <</span><a href="mailto:beanz@apple.com" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">beanz@apple.com</a><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">> writes:</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Hi bogner, samsonov, chapuni,<br class=""><br class="">The tools CMakeLists file already had implicit tool registration, but<br class="">there were a few things off about it that needed to be altered to make<br class="">it work. This change addresses all that. The changes in this patch<br class="">are:<br class=""><br class="">* factored out canonicalizing tool names from paths to CMake variables<br class="">* removed the LLVM_IMPLICIT_PROJECT_IGNORE mechanism in favor of<br class="">LLVM_EXTERNAL_${nameUPPER}_BUILD which I renamed to<br class="">LLVM_TOOL_${nameUPPER}_BUILD because it applies to internal and<br class="">external tools<br class="">* removed ignore_llvm_tool_subdirectory() in favor of just setting<br class="">LLVM_TOOL_${nameUPPER}_BUILD to Off<br class="">* Added create_llvm_tool_options() to resolve a bug in<br class="">add_llvm_external_project() - the old LLVM_EXTERNAL_${nameUPPER}_BUILD<br class="">would not work on a clean CMake directory because the option could be<br class="">created after it was set in code.<br class="">* Removed all but the minimum required calls to<br class="">add_llvm_external_project from tools/CMakeLists.txt<br class=""></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Looks like a fairly obvious cleanup. Other than a couple of comments</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">about the comments this LGTM.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D10665&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=b48LiHTIr31PPcnOR5Nw1EtywHWvJb0kp8ULjFrV7i8&s=1F-KofrAb2MT41ThO-bEPNybCvHkfV-5WryI-0zm8b0&e=" class="">http://reviews.llvm.org/D10665</a><br class=""><br class="">Files:<br class=""> cmake/modules/AddLLVM.cmake<br class=""> tools/CMakeLists.txt<br class=""><br class="">EMAIL PREFERENCES<br class=""> <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_settings_panel_emailpreferences_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=b48LiHTIr31PPcnOR5Nw1EtywHWvJb0kp8ULjFrV7i8&s=8Dij5NgqfVpUs7WhuTxzoPD0ykvky28s5DTmp1-39lM&e=" class="">http://reviews.llvm.org/settings/panel/emailpreferences/</a><br class="">Index: cmake/modules/AddLLVM.cmake<br class="">===================================================================<br class="">--- cmake/modules/AddLLVM.cmake<br class="">+++ cmake/modules/AddLLVM.cmake<br class="">@@ -681,6 +681,13 @@<br class="">  set( CURRENT_LLVM_TARGET LLVM${target_name} )<br class="">endmacro(add_llvm_target)<br class=""><br class="">+function(canonicalize_tool_name name output)<br class="">+  string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" nameStrip ${name})<br class="">+  string(REPLACE "-" "_" nameUNDERSCORE ${nameStrip})<br class="">+  string(TOUPPER ${nameUNDERSCORE} nameUPPER)<br class="">+  set(${output} "${nameUPPER}" PARENT_SCOPE)<br class="">+endfunction(canonicalize_tool_name)<br class="">+<br class=""># Add external project that may want to be built as part of llvm such as Clang,<br class=""># lld, and Polly. This adds two options. One for the source directory of the<br class=""># project, which defaults to ${CMAKE_CURRENT_SOURCE_DIR}/${name}. Another to<br class="">@@ -691,38 +698,43 @@<br class="">  if("${add_llvm_external_dir}" STREQUAL "")<br class="">    set(add_llvm_external_dir ${name})<br class="">  endif()<br class="">-  list(APPEND LLVM_IMPLICIT_PROJECT_IGNORE "${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}")<br class="">-  string(REPLACE "-" "_" nameUNDERSCORE ${name})<br class="">-  string(TOUPPER ${nameUNDERSCORE} nameUPPER)<br class="">-  set(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}"<br class="">+  canonicalize_tool_name(${name} nameUPPER)<br class="">+  set(LLVM_TOOL_${nameUPPER}_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}"<br class="">      CACHE PATH "Path to ${name} source directory")<br class="">-  if (NOT ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} STREQUAL ""<br class="">-      AND EXISTS ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}/CMakeLists.txt)<br class="">-    option(LLVM_EXTERNAL_${nameUPPER}_BUILD<br class="">+  if (NOT ${LLVM_TOOL_${nameUPPER}_SOURCE_DIR} STREQUAL ""<br class="">+      AND EXISTS ${LLVM_TOOL_${nameUPPER}_SOURCE_DIR}/CMakeLists.txt)<br class="">+    option(LLVM_TOOL_${nameUPPER}_BUILD<br class="">           "Whether to build ${name} as part of LLVM" ON)<br class="">-    if (LLVM_EXTERNAL_${nameUPPER}_BUILD)<br class="">-      add_subdirectory(${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} ${add_llvm_external_dir})<br class="">+    if (LLVM_TOOL_${nameUPPER}_BUILD)<br class="">+      add_subdirectory(${LLVM_TOOL_${nameUPPER}_SOURCE_DIR} ${add_llvm_external_dir})<br class="">+      set(LLVM_TOOL_${nameUPPER}_BUILD Off)<br class="">    endif()<br class="">  endif()<br class="">endmacro(add_llvm_external_project)<br class=""><br class="">macro(add_llvm_tool_subdirectory name)<br class="">-  list(APPEND LLVM_IMPLICIT_PROJECT_IGNORE "${CMAKE_CURRENT_SOURCE_DIR}/${name}")<br class="">+  set(LLVM_TOOL_${nameUPPER}_BUILD Off)<br class="">  add_subdirectory(${name})<br class="">endmacro(add_llvm_tool_subdirectory)<br class=""><br class="">-macro(ignore_llvm_tool_subdirectory name)<br class="">-  list(APPEND LLVM_IMPLICIT_PROJECT_IGNORE "${CMAKE_CURRENT_SOURCE_DIR}/${name}")<br class="">-endmacro(ignore_llvm_tool_subdirectory)<br class="">+function(create_llvm_tool_options)<br class="">+  file(GLOB sub-dirs "${CMAKE_CURRENT_SOURCE_DIR}/*")<br class="">+  foreach(dir ${sub-dirs})<br class="">+    if(IS_DIRECTORY "${dir}" AND EXISTS "${dir}/CMakeLists.txt")<br class="">+      canonicalize_tool_name(${dir} name)<br class="">+      option(LLVM_TOOL_${name}_BUILD<br class="">+           "Whether to build ${name} as part of LLVM" On)<br class="">+    endif()<br class="">+  endforeach()<br class="">+endfunction(create_llvm_tool_options)<br class=""><br class="">-function(add_llvm_implicit_external_projects)<br class="">+function(add_llvm_implicit_projects)<br class="">  set(list_of_implicit_subdirs "")<br class="">  file(GLOB sub-dirs "${CMAKE_CURRENT_SOURCE_DIR}/*")<br class="">  foreach(dir ${sub-dirs})<br class="">-    if(IS_DIRECTORY "${dir}")<br class="">-      list(FIND LLVM_IMPLICIT_PROJECT_IGNORE "${dir}" tool_subdir_ignore)<br class="">-      if( tool_subdir_ignore EQUAL -1<br class="">-          AND EXISTS "${dir}/CMakeLists.txt")<br class="">+    if(IS_DIRECTORY "${dir}" AND EXISTS "${dir}/CMakeLists.txt")<br class="">+      canonicalize_tool_name(${dir} name)<br class="">+      if (LLVM_TOOL_${name}_BUILD)<br class="">        get_filename_component(fn "${dir}" NAME)<br class="">        list(APPEND list_of_implicit_subdirs "${fn}")<br class="">      endif()<br class="">@@ -732,7 +744,7 @@<br class="">  foreach(external_proj ${list_of_implicit_subdirs})<br class="">    add_llvm_external_project("${external_proj}")<br class="">  endforeach()<br class="">-endfunction(add_llvm_implicit_external_projects)<br class="">+endfunction(add_llvm_implicit_projects)<br class=""><br class=""># Generic support for adding a unittest.<br class="">function(add_unittest test_suite test_name)<br class="">Index: tools/CMakeLists.txt<br class="">===================================================================<br class="">--- tools/CMakeLists.txt<br class="">+++ tools/CMakeLists.txt<br class="">@@ -1,85 +1,37 @@<br class="">-add_llvm_tool_subdirectory(llvm-config)<br class="">+# This file will recurse into all subdirectories that contain CMakeLists.txt<br class="">+# Setting variables that match the pattern LLVM_TOOL_{NAME}_BUILD to Off will<br class="">+# prevent traversing into a directory.<br class="">+#<br class="">+# The only tools that need to be explicitly added are ones that have explicit<br class="">+# ordering requirements.<br class=""></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">I'm not sure I understand this comment - it looks to me like we don't</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">specifically add *any* tools anymore. Is this just a warning in case we</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">add tools that depend on each other in the future?</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""></div></blockquote><div><br class=""></div><div>This was mostly as a general warning, but it also serves as an explanation for why Polly is explicitly added below.</div><br class=""><blockquote type="cite" class=""><div class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">+<br class="">+# Iterates all the subdirectories to create CMake options to enable/disable<br class="">+# traversing each directory.<br class="">+create_llvm_tool_options()<br class=""><br class=""># Build polly before the tools: the tools link against polly when<br class=""># LINK_POLLY_INTO_TOOLS is set.<br class="">if(WITH_POLLY)<br class="">  add_llvm_external_project(polly)<br class="">-else(WITH_POLLY)<br class="">-  list(APPEND LLVM_IMPLICIT_PROJECT_IGNORE "${LLVM_MAIN_SRC_DIR}/tools/polly")<br class="">-endif(WITH_POLLY)<br class="">-<br class="">-if( LLVM_BUILD_LLVM_DYLIB )<br class="">-  add_llvm_tool_subdirectory(llvm-shlib)<br class="">else()<br class="">-  ignore_llvm_tool_subdirectory(llvm-shlib)<br class="">+  set(LLVM_TOOL_POLLY_BUILD Off)<br class="">endif()<br class=""><br class="">-add_llvm_tool_subdirectory(opt)<br class="">-add_llvm_tool_subdirectory(llvm-as)<br class="">-add_llvm_tool_subdirectory(llvm-dis)<br class="">-add_llvm_tool_subdirectory(llvm-mc)<br class="">-<br class="">-add_llvm_tool_subdirectory(llc)<br class="">-add_llvm_tool_subdirectory(llvm-ar)<br class="">-add_llvm_tool_subdirectory(llvm-nm)<br class="">-add_llvm_tool_subdirectory(llvm-size)<br class="">-<br class="">-add_llvm_tool_subdirectory(llvm-cov)<br class="">-add_llvm_tool_subdirectory(llvm-profdata)<br class="">-add_llvm_tool_subdirectory(llvm-link)<br class="">-add_llvm_tool_subdirectory(lli)<br class="">-<br class="">-add_llvm_tool_subdirectory(llvm-extract)<br class="">-add_llvm_tool_subdirectory(llvm-diff)<br class="">-add_llvm_tool_subdirectory(macho-dump)<br class="">-add_llvm_tool_subdirectory(llvm-objdump)<br class="">-add_llvm_tool_subdirectory(llvm-readobj)<br class="">-add_llvm_tool_subdirectory(llvm-rtdyld)<br class="">-add_llvm_tool_subdirectory(llvm-dwarfdump)<br class="">-add_llvm_tool_subdirectory(dsymutil)<br class="">-add_llvm_tool_subdirectory(llvm-cxxdump)<br class="">-if( LLVM_USE_INTEL_JITEVENTS )<br class="">-  add_llvm_tool_subdirectory(llvm-jitlistener)<br class="">-else()<br class="">-  ignore_llvm_tool_subdirectory(llvm-jitlistener)<br class="">-endif( LLVM_USE_INTEL_JITEVENTS )<br class="">-<br class="">-add_llvm_tool_subdirectory(bugpoint)<br class="">-add_llvm_tool_subdirectory(bugpoint-passes)<br class="">-add_llvm_tool_subdirectory(llvm-bcanalyzer)<br class="">-add_llvm_tool_subdirectory(llvm-stress)<br class="">-add_llvm_tool_subdirectory(llvm-mcmarkup)<br class="">-<br class="">-add_llvm_tool_subdirectory(verify-uselistorder)<br class="">-<br class="">-add_llvm_tool_subdirectory(llvm-symbolizer)<br class="">-<br class="">-add_llvm_tool_subdirectory(llvm-c-test)<br class="">-<br class="">-add_llvm_tool_subdirectory(obj2yaml)<br class="">-add_llvm_tool_subdirectory(yaml2obj)<br class="">-<br class="">-add_llvm_tool_subdirectory(llvm-go)<br class="">-<br class="">-add_llvm_tool_subdirectory(llvm-pdbdump)<br class="">-<br class="">-if(NOT CYGWIN AND LLVM_ENABLE_PIC)<br class="">-  add_llvm_tool_subdirectory(lto)<br class="">-  add_llvm_tool_subdirectory(llvm-lto)<br class="">-else()<br class="">-  ignore_llvm_tool_subdirectory(lto)<br class="">-  ignore_llvm_tool_subdirectory(llvm-lto)<br class="">+if(NOT LLVM_BUILD_LLVM_DYLIB )<br class="">+  set(LLVM_TOOL_LLVM_SHLIB_BUILD Off)<br class="">endif()<br class=""><br class="">-add_llvm_tool_subdirectory(gold)<br class="">+if(NOT LLVM_USE_INTEL_JITEVENTS )<br class="">+  set(LLVM_TOOL_LLVM_JITLISTENER_BUILD Off)<br class="">+endif()<br class=""><br class="">-add_llvm_external_project(clang)<br class="">-add_llvm_external_project(llgo)<br class="">-add_llvm_external_project(lld)<br class="">-add_llvm_external_project(lldb)<br class="">+if(CYGWIN OR NOT LLVM_ENABLE_PIC)<br class="">+  set(LLVM_TOOL_LTO_BUILD Off)<br class="">+  set(LLVM_TOOL_LLVM_LTO_BUILD Off)<br class="">+endif()<br class=""><br class=""># Automatically add remaining sub-directories containing a 'CMakeLists.txt'<br class=""># file as external projects.<br class=""></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">This comment is out of date - It can probably just be "Automatically add</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">all sub-directories containing a 'CMakeLists.txt'" now.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""></div></blockquote><div><br class=""></div>I’ll reword this. It is more accurate to say “Add everything else that wasn’t explicitly disabled”.</div><div><br class=""></div><div>My vacation starts in a few hours, so I probably won’t update this until I get back.</div><div><br class=""></div><div>Thanks,</div><div>-Chris</div><div><br class=""><blockquote type="cite" class=""><div class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">-add_llvm_implicit_external_projects()<br class="">+add_llvm_implicit_projects()<br class=""><br class="">set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} PARENT_SCOPE)</blockquote></div></blockquote></div><br class=""></body></html>