winksaville added a comment.

@beanz I found what I think is the reason libclang_shared.so isn't being 
created.
I added a bunch of debug output using `message` to add_llvm_subdirectory:

  1041  function(add_llvm_subdirectory project type name)
  1042    message(STATUS "add_llvm_subdirectory ${project} ${type} ${name}:+")
  1043    set(add_llvm_external_dir "${ARGN}")
  1044    if("${add_llvm_external_dir}" STREQUAL "")
  1045      message(STATUS "add_llvm_subdirectory ${project} ${type} ${name}: 
1")
  1046      set(add_llvm_external_dir ${name})
  1047    endif()
  1048    canonicalize_tool_name(${name} nameUPPER)
  1049    set(canonical_full_name ${project}_${type}_${nameUPPER})
  1050    get_property(already_processed GLOBAL PROPERTY 
${canonical_full_name}_PROCESSED)
  1051    if(already_processed)
  1052      message(STATUS "add_llvm_subdirectory ${project} ${type} ${name}:- 
already_processed")
  1053      return()
  1054    endif()
  1055    set_property(GLOBAL PROPERTY ${canonical_full_name}_PROCESSED YES)
  1056    message(STATUS "add_llvm_subdirectory ${project} ${type} ${name}: 1.1 
canonical_full_name=${canonical_full_name} nameUPPER=${nameUPPER}")
  1057  
  1058    if(EXISTS 
${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}/CMakeLists.txt)
  1059      message(STATUS "add_llvm_subdirectory ${project} ${type} ${name}: 
2")
  1060      # Treat it as in-tree subproject.
  1061      option(${canonical_full_name}_BUILD
  1062             "Whether to build ${name} as part of ${project}" On)
  1063      mark_as_advanced(${project}_${type}_${name}_BUILD)
  1064      if(${canonical_full_name}_BUILD)
  1065        
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir} 
${add_llvm_external_dir})
  1066      endif()
  1067    else()
  1068      set(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR
  1069        "${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}"
  1070        CACHE PATH "Path to ${name} source directory")
  1071      message(STATUS "add_llvm_subdirectory ${project} ${type} ${name}: 3 
LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR=\"${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}\"")
  1072      set(${canonical_full_name}_BUILD_DEFAULT ON)
  1073      if(NOT LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR OR NOT EXISTS 
${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR})
  1074        set(${canonical_full_name}_BUILD_DEFAULT OFF)
  1075        message(STATUS "add_llvm_subdirectory ${project} ${type} ${name}: 
3.1 
${canonical_full_name}_BUILD_DEFAULT=${${canonical_full_name}_BUILD_DEFAULT}")
  1076      endif()
  1077      if("${LLVM_EXTERNAL_${nameUPPER}_BUILD}" STREQUAL "OFF")
  1078        set(${canonical_full_name}_BUILD_DEFAULT OFF)
  1079        message(STATUS "add_llvm_subdirectory ${project} ${type} ${name}: 
3.2 ${LLVM_EXTERNAL_${nameUPPER}_BUILD} 
${canonical_full_name}_BUILD_DEFAULT=${${canonical_full_name}_BUILD_DEFAULT}")
  1080      endif()
  1081      option(${canonical_full_name}_BUILD
  1082        "Whether to build ${name} as part of LLVM"
  1083        ${${canonical_full_name}_BUILD_DEFAULT})
  1084      message(STATUS "add_llvm_subdirectory ${project} ${type} ${name}: 
3.3 ${canonical_full_name}_BUILD=${${canonical_full_name}_BUILD}")
  1085      if (${canonical_full_name}_BUILD)
  1086        message(STATUS "add_llvm_subdirectory ${project} ${type} ${name}: 
3.4")
  1087        if(EXISTS ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR})
  1088          message(STATUS "add_llvm_subdirectory ${project} ${type} 
${name}: 3.4.1")
  1089          add_subdirectory(${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} 
${add_llvm_external_dir})
  1090        elseif(NOT "${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}" STREQUAL "")
  1091          message(STATUS "add_llvm_subdirectory ${project} ${type} 
${name}: 3.4.2")
  1092          message(WARNING "Nonexistent directory for ${name}: 
${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}")
  1093        endif()
  1094        message(STATUS "add_llvm_subdirectory ${project} ${type} ${name}: 
3.4.99")
  1095      endif()
  1096      message(STATUS "add_llvm_subdirectory ${project} ${type} ${name}: 
3.99")
  1097    endif()
  1098    message(STATUS "add_llvm_subdirectory ${project} ${type} ${name}:-")
  1099  endfunction()

The typical output when adding a subdirectory is:

  -- add_llvm_subdirectory CLANG TOOL clang-refactor:+
  -- add_llvm_subdirectory CLANG TOOL clang-refactor: 1
  -- add_llvm_subdirectory CLANG TOOL clang-refactor: 1.1 
canonical_full_name=CLANG_TOOL_CLANG_REFACTOR nameUPPER=CLANG_REFACTOR
  -- add_llvm_subdirectory CLANG TOOL clang-refactor: 2
  -- add_llvm_subdirectory CLANG TOOL clang-refactor:-

Where at line 1058 the clause `if(EXISTS 
${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}/CMakeLists.txt)`
is TRUE and we go through path `2`; lines 1059 - 1066.

The only time we don't go though path 2 is clang-shlib which goes though path 
3,  lines 1068 - 1096.
In that case we endup with CLANG_TOOL_CLANG_SHLIB_BUILD_DEFAULT=OFF
and CLANG_TOOL_CLANG_SHLIB_BUILD=OFF so libclang_shared.so isn't built:

  -- add_llvm_subdirectory CLANG TOOL clang-shlib:+
  -- add_llvm_subdirectory CLANG TOOL clang-shlib: 1
  -- add_llvm_subdirectory CLANG TOOL clang-shlib: 1.1 
canonical_full_name=CLANG_TOOL_CLANG_SHLIB nameUPPER=CLANG_SHLIB
  -- add_llvm_subdirectory CLANG TOOL clang-shlib: 3 
LLVM_EXTERNAL_CLANG_SHLIB_SOURCE_DIR=""
  -- add_llvm_subdirectory CLANG TOOL clang-shlib: 3.1 
CLANG_TOOL_CLANG_SHLIB_BUILD_DEFAULT=OFF
  -- add_llvm_subdirectory CLANG TOOL clang-shlib: 3.3 
CLANG_TOOL_CLANG_SHLIB_BUILD=OFF
  -- add_llvm_subdirectory CLANG TOOL clang-shlib: 3.99
  -- add_llvm_subdirectory CLANG TOOL clang-shlib:-

Also notice that LLVM_EXTERNAL_CLANG_SHLIB_SOURCE_DIR is empty:

  -- add_llvm_subdirectory CLANG TOOL clang-shlib: 3 
LLVM_EXTERNAL_CLANG_SHLIB_SOURCE_DIR=""

It looks weird that LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR is being set to
a deference of itself "${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}":

  1068      set(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR
  1069        "${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}"
  1070        CACHE PATH "Path to ${name} source directory")

Maybe that's idiom which causes cmake to cache something, but seems odd to me 
so I thought I'd point it out.

Of course I could be analyzing all of this totally wrong, so help appreciated.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D61804/new/

https://reviews.llvm.org/D61804



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to