@@ -90,6 +90,9 @@ elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID MATCHES "X86" OR
90
90
elseif (CMAKE_CXX_COMPILER_ARCHITECTURE_ID MATCHES "X64" OR
91
91
CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64|x86_64" )
92
92
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)
93
96
else ()
94
97
message (SEND_ERROR "Unknown host architecture: ${CMAKE_SYSTEM_PROCESSOR} " )
95
98
endif ()
@@ -123,7 +126,14 @@ set_target_properties(RegsGen2::RegsGen2 PROPERTIES
123
126
IMPORTED_LOCATION ${BINARY_DIR} /${RegsGen2_RELATIVE_PATH} )
124
127
add_dependencies (RegsGen2::RegsGen2 RegsGen2)
125
128
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)
127
137
add_custom_command (OUTPUT
128
138
${CMAKE_CURRENT_BINARY_DIR} /Headers/DebugServer2/Architecture/${ARCH} /RegistersDescriptors.h
129
139
COMMAND
@@ -222,6 +232,28 @@ elseif(DS2_ARCHITECTURE MATCHES "X86|X86_64")
222
232
PROPERTIES
223
233
COMPILE_OPTIONS $<$<NOT :$<CXX_COMPILER_ID:MSVC >>:-Wno-unused-const-variable >)
224
234
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 ()
225
257
endif ()
226
258
227
259
# OS Sources
0 commit comments