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