@@ -3,13 +3,21 @@ set(CMAKE_CXX_STANDARD 14)
33set (CMAKE_C_STANDARD 99)
44project (parallel-rsp LANGUAGES CXX C)
55
6+
7+ set (NAME_PLUGIN_M64P "mupen64plus-rsp-parallel" )
8+
9+ include_directories (../mupen64plus-core/src/api)
10+ add_definitions (-DM64P_PLUGIN_API)
11+ add_definitions (-DPARALLEL_INTEGRATION)
12+
613if (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" ))
714 set (PARALLEL_RSP_CXX_FLAGS -Wall -Wextra -Wno-missing-field-initializers -Wno-empty-body -ffast-math -Wno-unused-parameter)
815elseif (MSVC )
916 set (PARALLEL_RSP_CXX_FLAGS /D_CRT_SECURE_NO_WARNINGS /wd4267 /wd4244 /wd4309 /wd4005 /MP /DNOMINMAX)
1017endif ()
1118
12- add_library (parallel-rsp STATIC
19+ add_library (${NAME_PLUGIN_M64P} SHARED
20+ parallel.cpp
1321 rsp/vfunctions.cpp
1422 rsp_jit.cpp rsp_jit.hpp
1523 jit_allocator.cpp jit_allocator.hpp
@@ -49,24 +57,15 @@ add_library(parallel-rsp STATIC
4957 arch/simd/rsp/vxor.h
5058 arch/simd/rsp/vmulm.h)
5159
52- option (PARALLEL_RSP_DEBUG_JIT "Enable the debug JIT." ON )
53-
54- if (PARALLEL_RSP_DEBUG_JIT)
55- if (ANDROID)
56- message ("Android does not support debug JIT. Disabling it." )
57- elseif (NOT WIN32 )
58- target_sources (parallel-rsp PRIVATE debug_rsp.cpp debug_rsp.hpp debug_jit.cpp debug_jit.hpp)
59- target_compile_definitions (parallel-rsp PUBLIC PARALLEL_RSP_DEBUG_JIT)
60- endif ()
61- endif ()
62-
63- target_include_directories (parallel-rsp PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} )
64- target_include_directories (parallel-rsp PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} /arch/simd/rsp)
65- target_compile_options (parallel-rsp PRIVATE ${PARALLEL_RSP_CXX_FLAGS} )
60+ set_target_properties (${NAME_PLUGIN_M64P} PROPERTIES PREFIX "" )
61+ target_include_directories (${NAME_PLUGIN_M64P} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} )
62+ target_include_directories (${NAME_PLUGIN_M64P} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} /arch/simd/rsp)
63+ target_include_directories (${NAME_PLUGIN_M64P} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} /api)
64+ target_compile_options (${NAME_PLUGIN_M64P} PRIVATE ${PARALLEL_RSP_CXX_FLAGS} )
6665
6766option (PARALLEL_RSP_BAKED_LIGHTNING "Use built-in Lightning." ON )
6867
69- target_compile_definitions (parallel-rsp PUBLIC PARALLEL_RSP_LIGHTNING)
68+ target_compile_definitions (${NAME_PLUGIN_M64P} PUBLIC PARALLEL_RSP_LIGHTNING)
7069if (PARALLEL_RSP_BAKED_LIGHTNING)
7170 add_library (lightning STATIC
7271 lightning/lib/jit_disasm.c
@@ -76,127 +75,12 @@ if (PARALLEL_RSP_BAKED_LIGHTNING)
7675 lightning/lib/jit_print.c
7776 lightning/lib/jit_size.c
7877 lightning/lib/lightning.c)
78+ set_property (TARGET lightning PROPERTY POSITION_INDEPENDENT_CODE ON )
7979 target_include_directories (lightning PUBLIC
8080 ${CMAKE_CURRENT_SOURCE_DIR} /lightning/include )
8181 if (WIN32 )
8282 target_sources (lightning PRIVATE win32 /mman/sys/mman.c)
8383 target_include_directories (lightning PRIVATE win32 /mman)
8484 endif ()
8585endif ()
86- target_link_libraries (parallel-rsp PUBLIC lightning)
87- target_compile_definitions (parallel-rsp PUBLIC DEBUG_JIT)
88-
89- if (NOT WIN32 )
90- target_link_libraries (parallel-rsp PRIVATE dl)
91- endif ()
92-
93- add_executable (rsp-runner main.cpp)
94- target_link_libraries (rsp-runner PRIVATE parallel-rsp)
95- target_compile_options (rsp-runner PRIVATE ${PARALLEL_RSP_CXX_FLAGS} )
96-
97- if (PARALLEL_RSP_DEBUG_JIT AND NOT WIN32 )
98- set_target_properties (rsp-runner PROPERTIES LINK_FLAGS "-rdynamic" )
99- endif ()
100-
101- option (PARALLEL_RSP_TESTS "Enable unit tests for Lightning CPU." ON )
102-
103- add_executable (rsp-vu-fuzzer rsp_vu_fuzzer.cpp)
104- target_link_libraries (rsp-vu-fuzzer PRIVATE parallel-rsp)
105- target_compile_options (rsp-vu-fuzzer PRIVATE ${PARALLEL_RSP_CXX_FLAGS} )
106-
107- if (PARALLEL_RSP_TESTS)
108- enable_testing ()
109-
110- if (ANDROID)
111- add_test (NAME rsp-vu-fuzz
112- COMMAND ${CMAKE_CURRENT_SOURCE_DIR} /android_fuzz_runner.sh
113- ${CMAKE_CURRENT_BINARY_DIR} /rsp-vu-fuzzer)
114- else ()
115- add_test (NAME rsp-vu-fuzz COMMAND $<TARGET_FILE:rsp-vu-fuzzer>)
116- endif ()
117- add_custom_target (rsp-tests ALL )
118-
119- add_custom_target (rsp-test -crt
120- COMMAND ${CMAKE_MAKE_PROGRAM} crt-obj -j1
121- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /debug-toolchain)
122-
123- function (rsp_add_test NAME )
124- add_custom_target (rsp-test -binary-${NAME}
125- COMMAND ${CMAKE_MAKE_PROGRAM} RSP_TEST=${NAME} -j1
126- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /debug-toolchain
127- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /debug-toolchain/${NAME} .s)
128- add_dependencies (rsp-test -binary-${NAME} rsp-test -crt)
129- add_dependencies (rsp-tests rsp-test -binary-${NAME} )
130-
131- if (ANDROID)
132- add_test (NAME rsp-test -${NAME}
133- COMMAND ${CMAKE_CURRENT_SOURCE_DIR} /android_test_runner.sh
134- ${CMAKE_CURRENT_BINARY_DIR} /rsp-runner
135- ${CMAKE_CURRENT_SOURCE_DIR} /debug-toolchain ${NAME} )
136- else ()
137- add_test (NAME rsp-test -${NAME}
138- COMMAND $<TARGET_FILE:rsp-runner>
139- ${CMAKE_CURRENT_SOURCE_DIR} /debug-toolchain/${NAME} .global .bin
140- ${CMAKE_CURRENT_SOURCE_DIR} /debug-toolchain/${NAME} .bin)
141- endif ()
142- endfunction ()
143-
144- rsp_add_test(sll)
145- rsp_add_test(srl)
146- rsp_add_test(sra)
147- rsp_add_test(sllv)
148- rsp_add_test(srlv)
149- rsp_add_test(srav)
150- rsp_add_test(add)
151- rsp_add_test(sub)
152- rsp_add_test(or )
153- rsp_add_test(and )
154- rsp_add_test(xor)
155- rsp_add_test(nor)
156- rsp_add_test(slt)
157- rsp_add_test(sltu)
158- rsp_add_test(addi)
159- rsp_add_test(slti)
160- rsp_add_test(sltiu)
161- rsp_add_test(andi)
162- rsp_add_test(ori)
163- rsp_add_test(xori)
164- rsp_add_test(lui)
165- rsp_add_test(lb)
166- rsp_add_test(lbu)
167- rsp_add_test(lh)
168- rsp_add_test(lhu)
169- rsp_add_test(lh-unaligned)
170- rsp_add_test(lhu-unaligned)
171- rsp_add_test(lw)
172- rsp_add_test(lw-unaligned)
173- rsp_add_test(sb)
174- rsp_add_test(sh)
175- rsp_add_test(sw)
176- rsp_add_test(sh-unaligned)
177- rsp_add_test(sw-unaligned)
178- rsp_add_test(beq-impossible-delay-slot-second-taken)
179- rsp_add_test(beq-impossible-delay-slot-first-taken)
180- #rsp_add_test(beq-impossible-delay-slot-both-taken) Hangs the reference implementation :D
181- rsp_add_test(bne)
182- rsp_add_test(blez)
183- rsp_add_test(bltz)
184- rsp_add_test(bltzal)
185- rsp_add_test(bgtz)
186- rsp_add_test(bgezal)
187- rsp_add_test(j)
188- rsp_add_test(jal)
189- rsp_add_test(jr)
190- rsp_add_test(jalr)
191- rsp_add_test(lw-unaligned-in-branch-delay)
192- rsp_add_test(delay-slot-before-break)
193- rsp_add_test(delay-slot-before-new-block)
194- rsp_add_test(delay-slot-before-new-block-illegal)
195- rsp_add_test(delay-slot-before-new-block-not -taken)
196- rsp_add_test(unconditional-delay-slot-before-break)
197- rsp_add_test(cop0)
198- rsp_add_test(cop2-basic)
199- rsp_add_test(cop2-ls)
200- rsp_add_test(cop2-vector)
201- rsp_add_test(bug-shl-into-branch)
202- endif ()
86+ target_link_libraries (${NAME_PLUGIN_M64P} PUBLIC lightning)
0 commit comments