/ CMakeModules / TargetArchitectureSpecificSources.cmake
TargetArchitectureSpecificSources.cmake
 1  function(target_architecture_specific_sources project arch)
 2      if (NOT DYNARMIC_MULTIARCH_BUILD)
 3          target_sources("${project}" PRIVATE ${ARGN})
 4          return()
 5      endif()
 6  
 7      foreach(input_file IN LISTS ARGN)
 8          if(input_file MATCHES ".cpp$")
 9              if(NOT IS_ABSOLUTE ${input_file})
10                  set(input_file "${CMAKE_CURRENT_SOURCE_DIR}/${input_file}")
11              endif()
12  
13              set(output_file "${CMAKE_CURRENT_BINARY_DIR}/arch_gen/${input_file}")
14              add_custom_command(
15                  OUTPUT "${output_file}"
16                  COMMAND ${CMAKE_COMMAND} "-Darch=${arch}"
17                                           "-Dinput_file=${input_file}"
18                                           "-Doutput_file=${output_file}"
19                                           -P "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/impl/TargetArchitectureSpecificSourcesWrapFile.cmake"
20                  DEPENDS "${input_file}"
21                  VERBATIM
22              )
23              target_sources(${project} PRIVATE "${output_file}")
24          endif()
25      endforeach()
26  endfunction()