aboutsummaryrefslogtreecommitdiff
path: root/externals/dynarmic/CMakeModules/TargetArchitectureSpecificSources.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'externals/dynarmic/CMakeModules/TargetArchitectureSpecificSources.cmake')
-rw-r--r--externals/dynarmic/CMakeModules/TargetArchitectureSpecificSources.cmake26
1 files changed, 26 insertions, 0 deletions
diff --git a/externals/dynarmic/CMakeModules/TargetArchitectureSpecificSources.cmake b/externals/dynarmic/CMakeModules/TargetArchitectureSpecificSources.cmake
new file mode 100644
index 0000000000..f08911c6f2
--- /dev/null
+++ b/externals/dynarmic/CMakeModules/TargetArchitectureSpecificSources.cmake
@@ -0,0 +1,26 @@
+function(target_architecture_specific_sources project arch)
+ if (NOT DYNARMIC_MULTIARCH_BUILD)
+ target_sources("${project}" PRIVATE ${ARGN})
+ return()
+ endif()
+
+ foreach(input_file IN LISTS ARGN)
+ if(input_file MATCHES ".cpp$")
+ if(NOT IS_ABSOLUTE ${input_file})
+ set(input_file "${CMAKE_CURRENT_SOURCE_DIR}/${input_file}")
+ endif()
+
+ set(output_file "${CMAKE_CURRENT_BINARY_DIR}/arch_gen/${input_file}")
+ add_custom_command(
+ OUTPUT "${output_file}"
+ COMMAND ${CMAKE_COMMAND} "-Darch=${arch}"
+ "-Dinput_file=${input_file}"
+ "-Doutput_file=${output_file}"
+ -P "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/impl/TargetArchitectureSpecificSourcesWrapFile.cmake"
+ DEPENDS "${input_file}"
+ VERBATIM
+ )
+ target_sources(${project} PRIVATE "${output_file}")
+ endif()
+ endforeach()
+endfunction()