CMakeLists.txt 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. # SPDX-FileCopyrightText: 2018 yuzu Emulator Project
  2. # SPDX-License-Identifier: GPL-2.0-or-later
  3. add_library(audio_core STATIC
  4. adsp/adsp.cpp
  5. adsp/adsp.h
  6. adsp/mailbox.h
  7. adsp/apps/audio_renderer/audio_renderer.cpp
  8. adsp/apps/audio_renderer/audio_renderer.h
  9. adsp/apps/audio_renderer/command_buffer.h
  10. adsp/apps/audio_renderer/command_list_processor.cpp
  11. adsp/apps/audio_renderer/command_list_processor.h
  12. adsp/apps/opus/opus_decoder.cpp
  13. adsp/apps/opus/opus_decoder.h
  14. adsp/apps/opus/opus_decode_object.cpp
  15. adsp/apps/opus/opus_decode_object.h
  16. adsp/apps/opus/opus_multistream_decode_object.cpp
  17. adsp/apps/opus/opus_multistream_decode_object.h
  18. adsp/apps/opus/shared_memory.h
  19. audio_core.cpp
  20. audio_core.h
  21. audio_event.h
  22. audio_event.cpp
  23. audio_render_manager.cpp
  24. audio_render_manager.h
  25. audio_in_manager.cpp
  26. audio_in_manager.h
  27. audio_out_manager.cpp
  28. audio_out_manager.h
  29. audio_manager.cpp
  30. audio_manager.h
  31. common/audio_renderer_parameter.h
  32. common/common.h
  33. common/feature_support.h
  34. common/wave_buffer.h
  35. common/workbuffer_allocator.h
  36. device/audio_buffer.h
  37. device/audio_buffers.h
  38. device/device_session.cpp
  39. device/device_session.h
  40. in/audio_in.cpp
  41. in/audio_in.h
  42. in/audio_in_system.cpp
  43. in/audio_in_system.h
  44. opus/hardware_opus.cpp
  45. opus/hardware_opus.h
  46. opus/decoder_manager.cpp
  47. opus/decoder_manager.h
  48. opus/decoder.cpp
  49. opus/decoder.h
  50. opus/parameters.h
  51. out/audio_out.cpp
  52. out/audio_out.h
  53. out/audio_out_system.cpp
  54. out/audio_out_system.h
  55. precompiled_headers.h
  56. renderer/audio_device.cpp
  57. renderer/audio_device.h
  58. renderer/audio_renderer.h
  59. renderer/audio_renderer.cpp
  60. renderer/behavior/behavior_info.cpp
  61. renderer/behavior/behavior_info.h
  62. renderer/behavior/info_updater.cpp
  63. renderer/behavior/info_updater.h
  64. renderer/command/data_source/adpcm.cpp
  65. renderer/command/data_source/adpcm.h
  66. renderer/command/data_source/decode.cpp
  67. renderer/command/data_source/decode.h
  68. renderer/command/data_source/pcm_float.cpp
  69. renderer/command/data_source/pcm_float.h
  70. renderer/command/data_source/pcm_int16.cpp
  71. renderer/command/data_source/pcm_int16.h
  72. renderer/command/effect/aux_.cpp
  73. renderer/command/effect/aux_.h
  74. renderer/command/effect/biquad_filter.cpp
  75. renderer/command/effect/biquad_filter.h
  76. renderer/command/effect/capture.cpp
  77. renderer/command/effect/capture.h
  78. renderer/command/effect/compressor.cpp
  79. renderer/command/effect/compressor.h
  80. renderer/command/effect/delay.cpp
  81. renderer/command/effect/delay.h
  82. renderer/command/effect/i3dl2_reverb.cpp
  83. renderer/command/effect/i3dl2_reverb.h
  84. renderer/command/effect/light_limiter.cpp
  85. renderer/command/effect/light_limiter.h
  86. renderer/command/effect/multi_tap_biquad_filter.cpp
  87. renderer/command/effect/multi_tap_biquad_filter.h
  88. renderer/command/effect/reverb.cpp
  89. renderer/command/effect/reverb.h
  90. renderer/command/mix/clear_mix.cpp
  91. renderer/command/mix/clear_mix.h
  92. renderer/command/mix/copy_mix.cpp
  93. renderer/command/mix/copy_mix.h
  94. renderer/command/mix/depop_for_mix_buffers.cpp
  95. renderer/command/mix/depop_for_mix_buffers.h
  96. renderer/command/mix/depop_prepare.cpp
  97. renderer/command/mix/depop_prepare.h
  98. renderer/command/mix/mix.cpp
  99. renderer/command/mix/mix.h
  100. renderer/command/mix/mix_ramp.cpp
  101. renderer/command/mix/mix_ramp.h
  102. renderer/command/mix/mix_ramp_grouped.cpp
  103. renderer/command/mix/mix_ramp_grouped.h
  104. renderer/command/mix/volume.cpp
  105. renderer/command/mix/volume.h
  106. renderer/command/mix/volume_ramp.cpp
  107. renderer/command/mix/volume_ramp.h
  108. renderer/command/performance/performance.cpp
  109. renderer/command/performance/performance.h
  110. renderer/command/resample/downmix_6ch_to_2ch.cpp
  111. renderer/command/resample/downmix_6ch_to_2ch.h
  112. renderer/command/resample/resample.h
  113. renderer/command/resample/resample.cpp
  114. renderer/command/resample/upsample.cpp
  115. renderer/command/resample/upsample.h
  116. renderer/command/sink/device.cpp
  117. renderer/command/sink/device.h
  118. renderer/command/sink/circular_buffer.cpp
  119. renderer/command/sink/circular_buffer.h
  120. renderer/command/command_buffer.cpp
  121. renderer/command/command_buffer.h
  122. renderer/command/command_generator.cpp
  123. renderer/command/command_generator.h
  124. renderer/command/command_list_header.h
  125. renderer/command/command_processing_time_estimator.cpp
  126. renderer/command/command_processing_time_estimator.h
  127. renderer/command/commands.h
  128. renderer/command/icommand.h
  129. renderer/effect/aux_.cpp
  130. renderer/effect/aux_.h
  131. renderer/effect/biquad_filter.cpp
  132. renderer/effect/biquad_filter.h
  133. renderer/effect/buffer_mixer.cpp
  134. renderer/effect/buffer_mixer.h
  135. renderer/effect/capture.cpp
  136. renderer/effect/capture.h
  137. renderer/effect/compressor.cpp
  138. renderer/effect/compressor.h
  139. renderer/effect/delay.cpp
  140. renderer/effect/delay.h
  141. renderer/effect/effect_context.cpp
  142. renderer/effect/effect_context.h
  143. renderer/effect/effect_info_base.h
  144. renderer/effect/effect_reset.h
  145. renderer/effect/effect_result_state.h
  146. renderer/effect/i3dl2.cpp
  147. renderer/effect/i3dl2.h
  148. renderer/effect/light_limiter.cpp
  149. renderer/effect/light_limiter.h
  150. renderer/effect/reverb.h
  151. renderer/effect/reverb.cpp
  152. renderer/mix/mix_context.cpp
  153. renderer/mix/mix_context.h
  154. renderer/mix/mix_info.cpp
  155. renderer/mix/mix_info.h
  156. renderer/memory/address_info.h
  157. renderer/memory/memory_pool_info.cpp
  158. renderer/memory/memory_pool_info.h
  159. renderer/memory/pool_mapper.cpp
  160. renderer/memory/pool_mapper.h
  161. renderer/nodes/bit_array.h
  162. renderer/nodes/edge_matrix.cpp
  163. renderer/nodes/edge_matrix.h
  164. renderer/nodes/node_states.cpp
  165. renderer/nodes/node_states.h
  166. renderer/performance/detail_aspect.cpp
  167. renderer/performance/detail_aspect.h
  168. renderer/performance/entry_aspect.cpp
  169. renderer/performance/entry_aspect.h
  170. renderer/performance/performance_detail.h
  171. renderer/performance/performance_entry.h
  172. renderer/performance/performance_entry_addresses.h
  173. renderer/performance/performance_frame_header.h
  174. renderer/performance/performance_manager.cpp
  175. renderer/performance/performance_manager.h
  176. renderer/sink/circular_buffer_sink_info.cpp
  177. renderer/sink/circular_buffer_sink_info.h
  178. renderer/sink/device_sink_info.cpp
  179. renderer/sink/device_sink_info.h
  180. renderer/sink/sink_context.cpp
  181. renderer/sink/sink_context.h
  182. renderer/sink/sink_info_base.cpp
  183. renderer/sink/sink_info_base.h
  184. renderer/splitter/splitter_context.cpp
  185. renderer/splitter/splitter_context.h
  186. renderer/splitter/splitter_destinations_data.cpp
  187. renderer/splitter/splitter_destinations_data.h
  188. renderer/splitter/splitter_info.cpp
  189. renderer/splitter/splitter_info.h
  190. renderer/system.cpp
  191. renderer/system.h
  192. renderer/system_manager.cpp
  193. renderer/system_manager.h
  194. renderer/upsampler/upsampler_info.h
  195. renderer/upsampler/upsampler_manager.cpp
  196. renderer/upsampler/upsampler_manager.h
  197. renderer/upsampler/upsampler_state.h
  198. renderer/voice/voice_channel_resource.h
  199. renderer/voice/voice_context.cpp
  200. renderer/voice/voice_context.h
  201. renderer/voice/voice_info.cpp
  202. renderer/voice/voice_info.h
  203. renderer/voice/voice_state.h
  204. sink/null_sink.h
  205. sink/sink.h
  206. sink/sink_details.cpp
  207. sink/sink_details.h
  208. sink/sink_stream.cpp
  209. sink/sink_stream.h
  210. )
  211. if (MSVC)
  212. target_compile_options(audio_core PRIVATE
  213. /we4242 # 'identifier': conversion from 'type1' to 'type2', possible loss of data
  214. /we4244 # 'conversion': conversion from 'type1' to 'type2', possible loss of data
  215. /we4245 # 'conversion': conversion from 'type1' to 'type2', signed/unsigned mismatch
  216. /we4254 # 'operator': conversion from 'type1:field_bits' to 'type2:field_bits', possible loss of data
  217. /we4800 # Implicit conversion from 'type' to bool. Possible information loss
  218. )
  219. else()
  220. target_compile_options(audio_core PRIVATE
  221. -Werror=conversion
  222. -Wno-sign-conversion
  223. )
  224. endif()
  225. target_link_libraries(audio_core PUBLIC common core Opus::opus)
  226. if (ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64)
  227. target_link_libraries(audio_core PRIVATE dynarmic::dynarmic)
  228. endif()
  229. if (ENABLE_CUBEB)
  230. target_sources(audio_core PRIVATE
  231. sink/cubeb_sink.cpp
  232. sink/cubeb_sink.h
  233. )
  234. target_link_libraries(audio_core PRIVATE cubeb::cubeb)
  235. target_compile_definitions(audio_core PRIVATE -DHAVE_CUBEB=1)
  236. endif()
  237. if (ENABLE_SDL2)
  238. target_sources(audio_core PRIVATE
  239. sink/sdl2_sink.cpp
  240. sink/sdl2_sink.h
  241. )
  242. target_link_libraries(audio_core PRIVATE SDL2::SDL2)
  243. target_compile_definitions(audio_core PRIVATE HAVE_SDL2)
  244. endif()
  245. if (ANDROID)
  246. target_sources(audio_core PRIVATE
  247. sink/oboe_sink.cpp
  248. sink/oboe_sink.h
  249. )
  250. # FIXME: this port seems broken, it cannot be imported with find_package(oboe REQUIRED)
  251. target_link_libraries(audio_core PRIVATE "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/liboboe.a")
  252. target_compile_definitions(audio_core PRIVATE HAVE_OBOE)
  253. endif()
  254. if (SUYU_USE_PRECOMPILED_HEADERS)
  255. target_precompile_headers(audio_core PRIVATE precompiled_headers.h)
  256. endif()
  257. create_target_directory_groups(audio_core)