@@ -90,6 +90,9 @@ elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID MATCHES "X86" OR
9090elseif (CMAKE_CXX_COMPILER_ARCHITECTURE_ID MATCHES "X64" OR
9191 CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64|x86_64" )
9292 set (DS2_ARCHITECTURE X86_64)
93+ elseif (CMAKE_CXX_COMPILER_ARCHITECTURE_ID MATCHES "RISCV32|RISCV64|RISCV128" OR
94+ CMAKE_SYSTEM_PROCESSOR MATCHES "riscv32|riscv64|riscv128" )
95+ set (DS2_ARCHITECTURE RISCV)
9396else ()
9497 message (SEND_ERROR "Unknown host architecture: ${CMAKE_SYSTEM_PROCESSOR} " )
9598endif ()
@@ -123,7 +126,14 @@ set_target_properties(RegsGen2::RegsGen2 PROPERTIES
123126 IMPORTED_LOCATION ${BINARY_DIR} /${RegsGen2_RELATIVE_PATH} )
124127add_dependencies (RegsGen2::RegsGen2 RegsGen2)
125128
126- foreach (ARCH ARM ARM64 X86 X86_64)
129+ # Generate different pointer size RISC-V definitions.
130+ # FIXME(compnerd) this assumes all targets are RISCVnnnG, which may not be true.
131+ foreach (WORDSIZE 32 64 128)
132+ configure_file (${PROJECT_SOURCE_DIR} /Definitions /RISCVnnn.json
133+ ${PROJECT_SOURCE_DIR} /Definitions /RISCV${WORDSIZE} .json @ONLY)
134+ endforeach ()
135+
136+ foreach (ARCH ARM ARM64 RISCV32 RISCV64 RISCV128 X86 X86_64)
127137 add_custom_command (OUTPUT
128138 ${CMAKE_CURRENT_BINARY_DIR} /Headers/DebugServer2/Architecture/${ARCH} /RegistersDescriptors.h
129139 COMMAND
@@ -222,6 +232,28 @@ elseif(DS2_ARCHITECTURE MATCHES "X86|X86_64")
222232 PROPERTIES
223233 COMPILE_OPTIONS $<$<NOT :$<CXX_COMPILER_ID:MSVC >>:-Wno-unused-const-variable >)
224234 endif ()
235+ elseif (DS2_ARCHITECTURE STREQUAL RISCV)
236+ target_sources (ds2 PRIVATE
237+ Sources /Architecture/RISCV/SoftwareSingleStep.cpp
238+ Sources /Core/RISCV/HardwareBreakpointManager.cpp
239+ Sources /Core/RISCV/SoftwareBreakpointManager.cpp)
240+
241+ if (CMAKE_CXX_COMPILER_ARCHITECTURE_ID MATCHES "RISCV32" OR
242+ CMAKE_SYSTEM_PROCESSOR MATCHES "riscv32" )
243+ target_sources (ds2 PRIVATE
244+ ${CMAKE_CURRENT_BINARY_DIR} /Headers/DebugServer2/Architecture/RISCV32/RegistersDescriptors.h
245+ ${CMAKE_CURRENT_BINARY_DIR} /Sources /Architecture/RISCV32/RegistersDescriptors.cpp)
246+ elseif (CMAKE_CXX_COMPILER_ARCHITECTURE_ID MATCHES "RISCV64" OR
247+ CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64" )
248+ target_sources (ds2 PRIVATE
249+ ${CMAKE_CURRENT_BINARY_DIR} /Headers/DebugServer2/Architecture/RISCV64/RegistersDescriptors.h
250+ ${CMAKE_CURRENT_BINARY_DIR} /Sources /Architecture/RISCV64/RegistersDescriptors.cpp)
251+ elseif (CMAKE_CXX_COMPILER_ARCHITECTURE_ID MATCHES "RISCV128" OR
252+ CMAKE_SYSTEM_PROCESSOR MATCHES "riscv128" )
253+ target_sources (ds2 PRIVATE
254+ ${CMAKE_CURRENT_BINARY_DIR} /Headers/DebugServer2/Architecture/RISCV128/RegistersDescriptors.h
255+ ${CMAKE_CURRENT_BINARY_DIR} /Sources /Architecture/RISCV128/RegistersDescriptors.cpp)
256+ endif ()
225257endif ()
226258
227259# OS Sources
0 commit comments