CMakeLists.txt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. # This file is part of Desktop App Toolkit,
  2. # a set of libraries for developing nice desktop applications.
  3. #
  4. # For license and copyright information please follow this link:
  5. # https://github.com/desktop-app/legal/blob/master/LEGAL
  6. add_library(external_webrtc INTERFACE IMPORTED GLOBAL)
  7. add_library(desktop-app::external_webrtc ALIAS external_webrtc)
  8. if (DESKTOP_APP_USE_PACKAGED)
  9. find_package(tg_owt REQUIRED)
  10. target_link_libraries(external_webrtc INTERFACE tg_owt::tg_owt)
  11. return()
  12. endif()
  13. set(webrtc_loc ${libs_loc}/tg_owt/src)
  14. set(webrtc_build_loc ${libs_loc}/tg_owt/out/$<IF:$<CONFIG:Debug>,Debug,Release>)
  15. target_compile_definitions(external_webrtc
  16. INTERFACE
  17. WEBRTC_ENABLE_PROTOBUF=0
  18. WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE
  19. RTC_ENABLE_H265
  20. RTC_ENABLE_VP9
  21. HAVE_SCTP
  22. WEBRTC_USE_H264
  23. WEBRTC_USE_BUILTIN_ISAC_FLOAT
  24. WEBRTC_LIBRARY_IMPL
  25. WEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=1
  26. WEBRTC_HAVE_DCSCTP
  27. WEBRTC_HAVE_SCTP
  28. ABSL_ALLOCATOR_NOTHROW=1
  29. )
  30. if (WIN32)
  31. set(webrtc_lib_prefix "")
  32. set(webrtc_lib_suffix .lib)
  33. target_compile_definitions(external_webrtc
  34. INTERFACE
  35. WEBRTC_WIN
  36. RTC_ENABLE_WIN_WGC
  37. )
  38. else()
  39. set(webrtc_lib_prefix lib)
  40. set(webrtc_lib_suffix .a)
  41. if (APPLE)
  42. target_compile_definitions(external_webrtc
  43. INTERFACE
  44. WEBRTC_MAC
  45. )
  46. else()
  47. target_compile_definitions(external_webrtc
  48. INTERFACE
  49. WEBRTC_LINUX
  50. WEBRTC_USE_X11
  51. WEBRTC_USE_PIPEWIRE
  52. )
  53. endif()
  54. target_compile_definitions(external_webrtc
  55. INTERFACE
  56. WEBRTC_POSIX
  57. )
  58. endif()
  59. if (NOT WIN32 AND NOT EXISTS ${libs_loc}/tg_owt/out/Debug/${webrtc_lib_prefix}tg_owt${webrtc_lib_suffix})
  60. set(webrtc_build_loc ${libs_loc}/tg_owt/out/Release)
  61. target_compile_definitions(external_webrtc INTERFACE $<$<CONFIG:Debug>:NDEBUG>)
  62. endif()
  63. target_include_directories(external_webrtc SYSTEM
  64. INTERFACE
  65. ${webrtc_loc}
  66. ${webrtc_loc}/third_party/abseil-cpp
  67. ${webrtc_loc}/third_party/libyuv/include
  68. )
  69. set(webrtc_libs
  70. ${webrtc_lib_prefix}tg_owt
  71. )
  72. if (APPLE)
  73. target_include_directories(external_webrtc SYSTEM
  74. INTERFACE
  75. ${webrtc_loc}/sdk/objc
  76. ${webrtc_loc}/sdk/objc/base
  77. ${webrtc_loc}/sdk/objc/components/video_codec
  78. )
  79. endif()
  80. foreach (lib ${webrtc_libs})
  81. list(APPEND webrtc_libs_list "${webrtc_build_loc}/${lib}${webrtc_lib_suffix}")
  82. endforeach()
  83. target_link_libraries(external_webrtc
  84. INTERFACE
  85. ${webrtc_libs_list}
  86. $<LINK_ONLY:desktop-app::external_openssl>
  87. $<LINK_ONLY:desktop-app::external_jpeg>
  88. $<TARGET_FILE:desktop-app::external_jpeg>
  89. $<LINK_ONLY:desktop-app::external_openh264>
  90. $<TARGET_FILE:desktop-app::external_openh264>
  91. $<LINK_ONLY:desktop-app::external_opus>
  92. $<TARGET_FILE:desktop-app::external_opus>
  93. $<LINK_ONLY:desktop-app::external_vpx>
  94. $<TARGET_FILE:desktop-app::external_vpx>
  95. )
  96. if (WIN32)
  97. target_link_libraries(external_webrtc
  98. INTERFACE
  99. Secur32.lib # Required for rtc_base/http_common.cc
  100. )
  101. elseif (APPLE)
  102. target_link_libraries(external_webrtc
  103. INTERFACE
  104. -ObjC
  105. )
  106. else()
  107. # Required for desktop_capture
  108. target_link_static_libraries(external_webrtc
  109. INTERFACE
  110. Xcomposite
  111. Xdamage
  112. Xext
  113. Xfixes
  114. Xrandr
  115. Xrender
  116. Xtst
  117. )
  118. target_link_libraries(external_webrtc
  119. INTERFACE
  120. X11
  121. gio-2.0
  122. gobject-2.0
  123. glib-2.0
  124. )
  125. endif()