@@ -10,9 +10,27 @@ else()
1010 add_compile_options (-ffp-model=strict )
1111endif ()
1212
13- target_compile_definitions (XenonRecomp PRIVATE
14- XENON_RECOMP_CONFIG_FILE_PATH= \"${CMAKE_CURRENT_SOURCE_DIR } /config/SWA.toml\"
15- XENON_RECOMP_HEADER_FILE_PATH=\" ${UNLEASHED_RECOMP_TOOLS_ROOT} /XenonRecomp/XenonUtils/ppc_context.h\" )
13+ set (UNLEASHED_RECOMP_HOST_TOOLS_DIR "" CACHE PATH "Directory containing host-built recompilation tools." )
14+
15+ function (unleashed_recomp_resolve_tool OUT_VAR TARGET_NAME RELATIVE_PATH )
16+ if (UNLEASHED_RECOMP_HOST_TOOLS_DIR)
17+ set (${OUT_VAR} "${UNLEASHED_RECOMP_HOST_TOOLS_DIR} /${RELATIVE_PATH} " PARENT_SCOPE )
18+ elseif (TARGET ${TARGET_NAME} )
19+ set (${OUT_VAR} "$<TARGET_FILE :${TARGET_NAME} >" PARENT_SCOPE )
20+ else ()
21+ message (FATAL_ERROR "Tool ${TARGET_NAME} is not available. Set UNLEASHED_RECOMP_HOST_TOOLS_DIR." )
22+ endif ()
23+ endfunction ()
24+
25+ unleashed_recomp_resolve_tool (UNLEASHED_RECOMP_XENON_RECOMP_TOOL XenonRecomp "tools/XenonRecomp/XenonRecomp/XenonRecomp" )
26+ unleashed_recomp_resolve_tool (UNLEASHED_RECOMP_X_DECOMPRESS_TOOL x_decompress "tools/x_decompress/x_decompress" )
27+ unleashed_recomp_resolve_tool (UNLEASHED_RECOMP_XENOS_RECOMP_TOOL XenosRecomp "tools/XenosRecomp/XenosRecomp/XenosRecomp" )
28+
29+ if (TARGET XenonRecomp)
30+ target_compile_definitions (XenonRecomp PRIVATE
31+ XENON_RECOMP_CONFIG_FILE_PATH= \"${CMAKE_CURRENT_SOURCE_DIR } /config/SWA.toml\"
32+ XENON_RECOMP_HEADER_FILE_PATH=\" ${UNLEASHED_RECOMP_TOOLS_ROOT} /XenonRecomp/XenonUtils/ppc_context.h\" )
33+ endif()
1634
1735set(UNLEASHED_RECOMP_PPC_RECOMPILED_SOURCES
1836 " ${CMAKE_CURRENT_SOURCE_DIR } /ppc/ppc_config.h "
@@ -30,7 +48,7 @@ add_custom_command(
3048 " ${CMAKE_CURRENT_SOURCE_DIR } /private/default_patched.xex "
3149 ${UNLEASHED_RECOMP_PPC_RECOMPILED_SOURCES}
3250 COMMAND
33- $< TARGET_FILE : XenonRecomp >
51+ " ${UNLEASHED_RECOMP_XENON_RECOMP_TOOL} "
3452 DEPENDS
3553 " ${CMAKE_CURRENT_SOURCE_DIR } /private/default.xex "
3654 " ${CMAKE_CURRENT_SOURCE_DIR } /private/default.xexp "
@@ -42,20 +60,22 @@ add_custom_command(
4260 OUTPUT
4361 " ${CMAKE_CURRENT_SOURCE_DIR } /private/shader_decompressed.ar "
4462 COMMAND
45- $< TARGET_FILE : x_decompress > " ${CMAKE_CURRENT_SOURCE_DIR } /private/shader.ar " " ${CMAKE_CURRENT_SOURCE_DIR } /private/shader_decompressed.ar "
63+ " ${UNLEASHED_RECOMP_X_DECOMPRESS_TOOL} " "${CMAKE_CURRENT_SOURCE_DIR } /private/shader.ar " " ${CMAKE_CURRENT_SOURCE_DIR } /private/shader_decompressed.ar "
4664 DEPENDS
4765 " ${CMAKE_CURRENT_SOURCE_DIR } /private/shader.ar "
4866)
4967
5068set(XENOS_RECOMP_ROOT " ${UNLEASHED_RECOMP_TOOLS_ROOT} /XenosRecomp/XenosRecomp ")
5169set(XENOS_RECOMP_INCLUDE " ${XENOS_RECOMP_ROOT} /shader_common.h ")
5270
53- target_compile_definitions(XenosRecomp PRIVATE
54- XENOS_RECOMP_INPUT=\" ${CMAKE_CURRENT_SOURCE_DIR } /private\"
55- XENOS_RECOMP_OUTPUT=\" ${CMAKE_CURRENT_SOURCE_DIR } /shader/shader_cache.cpp\"
56- XENOS_RECOMP_INCLUDE_INPUT=\" ${XENOS_RECOMP_INCLUDE} \"
57- UNLEASHED_RECOMP
58- )
71+ if (TARGET XenosRecomp)
72+ target_compile_definitions(XenosRecomp PRIVATE
73+ XENOS_RECOMP_INPUT=\" ${CMAKE_CURRENT_SOURCE_DIR } /private\"
74+ XENOS_RECOMP_OUTPUT=\" ${CMAKE_CURRENT_SOURCE_DIR } /shader/shader_cache.cpp\"
75+ XENOS_RECOMP_INCLUDE_INPUT=\" ${XENOS_RECOMP_INCLUDE} \"
76+ UNLEASHED_RECOMP
77+ )
78+ endif()
5979
6080file(GLOB XENOS_RECOMP_SOURCES
6181 " ${XENOS_RECOMP_ROOT} /*.h "
@@ -66,7 +86,7 @@ add_custom_command(
6686 OUTPUT
6787 " ${CMAKE_CURRENT_SOURCE_DIR } /shader/shader_cache.cpp "
6888 COMMAND
69- $< TARGET_FILE : XenosRecomp >
89+ " ${UNLEASHED_RECOMP_XENOS_RECOMP_TOOL} "
7090 DEPENDS
7191 " ${CMAKE_CURRENT_SOURCE_DIR } /private/default_patched.xex "
7292 " ${CMAKE_CURRENT_SOURCE_DIR } /private/shader_decompressed.ar "
0 commit comments