compnerd created this revision. compnerd added a reviewer: JDevlieghere. compnerd added a project: LLDB. Herald added a subscriber: mgorny. compnerd requested review of this revision. Herald added a subscriber: lldb-commits.
The previous code path only happened to work incidentally. The `file(MAKE_DIRECTORY)` is executed early, without the generator expression being evaluated. The result is that the literal value is being treated as a path. However, on Windows `:` is not a valid character for a file name. This would cause the operation to fail. The subsequent commands are delayed until runtime, and the operations will expand the value at generation time yielding the correct result. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D95185 Files: lldb/source/API/CMakeLists.txt Index: lldb/source/API/CMakeLists.txt =================================================================== --- lldb/source/API/CMakeLists.txt +++ lldb/source/API/CMakeLists.txt @@ -207,13 +207,12 @@ # When building the LLDB framework, this isn't necessary as there we copy everything we need into # the framework (including the Clang resourece directory). if(NOT LLDB_BUILD_FRAMEWORK) - set(LLDB_CLANG_RESOURCE_DIR_PARENT "$<TARGET_FILE_DIR:liblldb>/clang") - file(MAKE_DIRECTORY "${LLDB_CLANG_RESOURCE_DIR_PARENT}") + get_target_property(liblldb_TARGET_FILE_DIR liblldb TARGET_FILE_DIR) + file(MAKE_DIRECTORY "${liblldb_TARGET_FILE_DIR}/clang") add_custom_command(TARGET liblldb POST_BUILD - COMMENT "Linking Clang resource dir into LLDB build directory: ${LLDB_CLANG_RESOURCE_DIR_PARENT}" - COMMAND ${CMAKE_COMMAND} -E make_directory "${LLDB_CLANG_RESOURCE_DIR_PARENT}" - COMMAND ${CMAKE_COMMAND} -E create_symlink "${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}" - "${LLDB_CLANG_RESOURCE_DIR_PARENT}/${LLDB_CLANG_RESOURCE_DIR_NAME}" + COMMENT "Linking Clang resource dir into LLDB build directory: ${liblldb_TARGET_FILE_DIR}/clang" + COMMAND ${CMAKE_COMMAND} -E make_directory "${liblldb_TARGET_FILE_DIR}/clang" + COMMAND ${CMAKE_COMMAND} -E create_symlink "${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}" "${liblldb_TARGET_FILE_DIR}/clang/${LLDB_CLANG_RESOURCE_DIR_NAME}" ) endif() endif()
Index: lldb/source/API/CMakeLists.txt =================================================================== --- lldb/source/API/CMakeLists.txt +++ lldb/source/API/CMakeLists.txt @@ -207,13 +207,12 @@ # When building the LLDB framework, this isn't necessary as there we copy everything we need into # the framework (including the Clang resourece directory). if(NOT LLDB_BUILD_FRAMEWORK) - set(LLDB_CLANG_RESOURCE_DIR_PARENT "$<TARGET_FILE_DIR:liblldb>/clang") - file(MAKE_DIRECTORY "${LLDB_CLANG_RESOURCE_DIR_PARENT}") + get_target_property(liblldb_TARGET_FILE_DIR liblldb TARGET_FILE_DIR) + file(MAKE_DIRECTORY "${liblldb_TARGET_FILE_DIR}/clang") add_custom_command(TARGET liblldb POST_BUILD - COMMENT "Linking Clang resource dir into LLDB build directory: ${LLDB_CLANG_RESOURCE_DIR_PARENT}" - COMMAND ${CMAKE_COMMAND} -E make_directory "${LLDB_CLANG_RESOURCE_DIR_PARENT}" - COMMAND ${CMAKE_COMMAND} -E create_symlink "${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}" - "${LLDB_CLANG_RESOURCE_DIR_PARENT}/${LLDB_CLANG_RESOURCE_DIR_NAME}" + COMMENT "Linking Clang resource dir into LLDB build directory: ${liblldb_TARGET_FILE_DIR}/clang" + COMMAND ${CMAKE_COMMAND} -E make_directory "${liblldb_TARGET_FILE_DIR}/clang" + COMMAND ${CMAKE_COMMAND} -E create_symlink "${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}" "${liblldb_TARGET_FILE_DIR}/clang/${LLDB_CLANG_RESOURCE_DIR_NAME}" ) endif() endif()
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits