if(NOT WORKSPACE_ROOT)
message(STATUS "${Yellow}WORKSPACE_ROOT not set, assuming ${CMAKE_CURRENT_SOURCE_DIR}/../../../..${ColorReset}")
set(WORKSPACE_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../../..")
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
set(CLANGD_ADD_FLAGS "Add:
[
-target,
wasm32-unknown-emscripten,
--sysroot=${WORKSPACE_ROOT}/.emsdk/upstream/emscripten/cache/sysroot,
]")
else()
set(CLANGD_ADD_FLAGS "")
endif()
# Check for existence of .clangd file
if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/.clangd.in)
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
message(STATUS "${Cyan}Found ${CMAKE_CURRENT_LIST_DIR}/.clangd.in${ColorReset}")
# Configure the .clangd file from the template
configure_file(
${CMAKE_CURRENT_LIST_DIR}/.clangd.in
${CMAKE_BINARY_DIR}/.clangd
@ONLY
)
# Symlink .clangd to the project root
execute_process(
COMMAND ln -sf ${CMAKE_BINARY_DIR}/.clangd ${WORKSPACE_ROOT}/.clangd
)
message(STATUS "${Cyan}Created ${CMAKE_BINARY_DIR}/.clangd${ColorReset}")
else()
message("${Cyan} ${CMAKE_CURRENT_SOURCE_DIR} is not the root of the project, skipping IDE setup${ColorReset}")
endif()
else()
message("${Yellow}No .clangd.in found, skipping IDE setup${ColorReset}")
endif()