diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | CMakeLists.txt | 38 | ||||
-rw-r--r-- | include/cru/platform/graphics/web_canvas/WebCanvasPainter.h | 2 | ||||
-rw-r--r-- | scripts/clangd.in | 2 | ||||
-rw-r--r-- | scripts/cmake/patch-compile-commands.cmake | 28 |
5 files changed, 42 insertions, 29 deletions
@@ -8,3 +8,4 @@ vcpkg_installed vcpkg compile_commands.json +.clangd diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e364e63..61845b2c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,31 +53,13 @@ add_subdirectory(src) add_subdirectory(test) add_subdirectory(demos) -function (patch_compile_commands input output_var) - set(ENTRY_FILE ${CMAKE_BINARY_DIR}/compile_commands_entry) - set(RESULT "[]") - string(JSON COUNT LENGTH "${input}") - message("Total commands need to patch: " ${COUNT}) - math(EXPR COUNT "${COUNT} - 1") - foreach(INDEX RANGE ${COUNT}) - message("Patching: " ${INDEX} "/" ${COUNT}) - string(JSON ORIGINAL_COMMAND GET "${input}" ${INDEX} command) - string(JSON WORKING_DIR GET "${input}" ${INDEX} directory) - string(FIND "${ORIGINAL_COMMAND}" " " COMMAND_FIRST_SPACE) - string(SUBSTRING "${ORIGINAL_COMMAND}" 0 ${COMMAND_FIRST_SPACE} COMMAND_COMPILER) - string(SUBSTRING "${ORIGINAL_COMMAND}" ${COMMAND_FIRST_SPACE} -1 ORIGINAL_COMMAND_ARGS) - string(CONCAT COMMAND_GENERATE "${COMMAND_COMPILER}" " -MJ ${ENTRY_FILE}" "${ORIGINAL_COMMAND_ARGS}") - #message("Run: " "${COMMAND_GENERATE}") - execute_process(COMMAND sh -c "${COMMAND_GENERATE}" WORKING_DIRECTORY "${WORKING_DIR}") - file(READ ${ENTRY_FILE} ENTRY) - string(JSON RESULT SET "${RESULT}" ${INDEX} "${ENTRY}") - endforeach() - set(${output_var} "${RESULT}" PARENT_SCOPE) -endfunction() - -function (patch_compile_commands_file) - file(READ ${CMAKE_BINARY_DIR}/compile_commands.json COMPILE_COMMANDS) - patch_compile_commands("${COMPILE_COMMANDS}" COMPILE_COMMANDS_PATCHED) - file(WRITE ${CMAKE_BINARY_DIR}/compile_commands-patched.json "${COMPILE_COMMANDS_PATCHED}") -endfunction() - +set(CLANGD_FILE ${CMAKE_BINARY_DIR}/clangd) +if(EMSCRIPTEN) + execute_process(COMMAND ${CMAKE_C_COMPILER} --cflags OUTPUT_VARIABLE CLANGD_FLAGS_TO_ADD) + separate_arguments(CLANGD_FLAGS_TO_ADD UNIX_COMMAND "${CLANGD_FLAGS_TO_ADD}") + list(JOIN CLANGD_FLAGS_TO_ADD ", " CLANGD_FLAGS_TO_ADD) + set(CLANGD_TEMPLATE ${PROJECT_SOURCE_DIR}/scripts/clangd.in) + configure_file(${CLANGD_TEMPLATE} ${CLANGD_FILE}) +else() + file(WRITE ${CLANGD_FILE} "") +endif() diff --git a/include/cru/platform/graphics/web_canvas/WebCanvasPainter.h b/include/cru/platform/graphics/web_canvas/WebCanvasPainter.h index 44ec1df6..f85f93b0 100644 --- a/include/cru/platform/graphics/web_canvas/WebCanvasPainter.h +++ b/include/cru/platform/graphics/web_canvas/WebCanvasPainter.h @@ -7,6 +7,6 @@ namespace cru::platform::graphics::web_canvas { class WebCanvasPainter: public WebCanvasResource, public virtual IPainter { public: - WebCanvasPainter(WebCanvasGraphicsFactory* factory); + WebCanvasPainter(WebCanvasGraphicsFactory* factory, emscripten::val context); }; } diff --git a/scripts/clangd.in b/scripts/clangd.in new file mode 100644 index 00000000..5db08ed3 --- /dev/null +++ b/scripts/clangd.in @@ -0,0 +1,2 @@ +CompileFlags: + Add: [${CLANGD_FLAGS_TO_ADD}] diff --git a/scripts/cmake/patch-compile-commands.cmake b/scripts/cmake/patch-compile-commands.cmake new file mode 100644 index 00000000..d855ce3c --- /dev/null +++ b/scripts/cmake/patch-compile-commands.cmake @@ -0,0 +1,28 @@ +function (patch_compile_commands input output_var) + set(ENTRY_FILE ${CMAKE_BINARY_DIR}/compile_commands_entry) + set(RESULT "[]") + string(JSON COUNT LENGTH "${input}") + message("Total commands need to patch: " ${COUNT}) + math(EXPR COUNT "${COUNT} - 1") + foreach(INDEX RANGE ${COUNT}) + message("Patching: " ${INDEX} "/" ${COUNT}) + string(JSON ORIGINAL_COMMAND GET "${input}" ${INDEX} command) + string(JSON WORKING_DIR GET "${input}" ${INDEX} directory) + string(FIND "${ORIGINAL_COMMAND}" " " COMMAND_FIRST_SPACE) + string(SUBSTRING "${ORIGINAL_COMMAND}" 0 ${COMMAND_FIRST_SPACE} COMMAND_COMPILER) + string(SUBSTRING "${ORIGINAL_COMMAND}" ${COMMAND_FIRST_SPACE} -1 ORIGINAL_COMMAND_ARGS) + string(CONCAT COMMAND_GENERATE "${COMMAND_COMPILER}" " -MJ ${ENTRY_FILE}" "${ORIGINAL_COMMAND_ARGS}") + #message("Run: " "${COMMAND_GENERATE}") + execute_process(COMMAND sh -c "${COMMAND_GENERATE}" WORKING_DIRECTORY "${WORKING_DIR}") + file(READ ${ENTRY_FILE} ENTRY) + string(JSON RESULT SET "${RESULT}" ${INDEX} "${ENTRY}") + endforeach() + set(${output_var} "${RESULT}" PARENT_SCOPE) +endfunction() + +function (patch_compile_commands_file) + file(READ ${CMAKE_BINARY_DIR}/compile_commands.json COMPILE_COMMANDS) + patch_compile_commands("${COMPILE_COMMANDS}" COMPILE_COMMANDS_PATCHED) + file(WRITE ${CMAKE_BINARY_DIR}/compile_commands-patched.json "${COMPILE_COMMANDS_PATCHED}") +endfunction() + |