-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFixCompileCommands.cmake
More file actions
29 lines (26 loc) · 1.67 KB
/
FixCompileCommands.cmake
File metadata and controls
29 lines (26 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
project(Nostalgia)
include(Sources.cmake)
set(CMAKE_COMPILE_COMMANDS ${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json)
set(FIXED_COMPILE_COMMANDS ${CMAKE_CURRENT_SOURCE_DIR}/compile_commands.json)
set(FIX_PREFIX "\n{\n\t\"directory\": \"${CMAKE_CURRENT_BINARY_DIR}\",")
set(FIX_SUFFIX "\n\t\"output\": \"this doesn't matter at all\"\n},")
set(ALL_NOSTALGIA_HEADERS ${NOSTALGIA_HEADERS} ${NOSTALGIA_PCH_HEADERS})
function(fix_compile_commands)
file(READ ${CMAKE_COMPILE_COMMANDS} COMPILE_COMMANDS_STR)
string(REGEX REPLACE "(command\": \"[^\n ]+)([^\n]+gl_renderer_api.cpp)" "\\1 -DCLANGD_KEEPS_CRASHING_HERE\\2" COMPILE_COMMANDS_STR_CLANGD_FIX ${COMPILE_COMMANDS_STR})
file(WRITE ${FIXED_COMPILE_COMMANDS} ${COMPILE_COMMANDS_STR_CLANGD_FIX})
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
set(VERSION_FLAG -DNOSTALGIA_DEBUGGING)
endif()
set(OUT_DIR Nostalgia)
if(${CMAKE_CXX_COMPILER_ID} EQUAL Clang)
set(FIX_COMMAND_LINE "\n\t\"command\": \"${CMAKE_CXX_COMPILER} ${VERSION_FLAG} -Xclang -include-pch -Xclang ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${OUT_DIR}.dir/cmake_pch.hxx.pch -Xclang -include -Xclang ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${OUT_DIR}.dir/cmake_pch.hxx\",")
else()
set(FIX_COMMAND_LINE "\n\t\"command\": \"${CMAKE_CXX_COMPILER} ${VERSION_FLAG} -include ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${OUT_DIR}.dir/cmake_pch.hxx\",")
endif()
foreach(HEADER ${ALL_NOSTALGIA_HEADERS})
set(FIX_FILE_LINE "\n\t\"file\": \"${HEADER}\",")
file(APPEND ${FIXED_COMPILE_COMMANDS} ${FIX_PREFIX} ${FIX_COMMAND_LINE} ${FIX_FILE_LINE} ${FIX_SUFFIX})
endforeach()
file(APPEND ${FIXED_COMPILE_COMMANDS} "\n")
endfunction()