CMakeLists.txt 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. project(libobs)
  2. find_package(Libswscale REQUIRED)
  3. include_directories(${LIBSWSCALE_INCLUDE_DIRS})
  4. add_definitions(${LIBSWSCALE_DEFINITIONS})
  5. find_package(Libswresample REQUIRED)
  6. include_directories(${LIBSWRESAMPLE_INCLUDE_DIRS})
  7. add_definitions(${LIBSWRESAMPLE_DEFINITIONS})
  8. find_package(Libavutil REQUIRED)
  9. include_directories(${LIBAVUTIL_INCLUDE_DIRS})
  10. add_definitions(${LIBAVUTIL_DEFINITIONS})
  11. find_package(Libavformat REQUIRED)
  12. include_directories(${LIBAVFORMAT_INCLUDE_DIRS})
  13. add_definitions(${LIBAVFORMAT_DEFINITIONS})
  14. add_definitions(-DLIBOBS_EXPORTS)
  15. if(WIN32)
  16. set(libobs_PLATFORM_SOURCES
  17. obs-windows.c
  18. util/threading-windows.c
  19. util/platform-windows.c)
  20. set(libobs_PLATFORM_DEPS
  21. w32-pthreads
  22. winmm.lib)
  23. elseif(APPLE)
  24. set(libobs_PLATFORM_SOURCES
  25. obs-cocoa.c
  26. util/threading-posix.c
  27. util/platform-nix.c
  28. util/platform-cocoa.m)
  29. set_source_files_properties(${libobs_PLATFORM_SOURCES}
  30. PROPERTIES
  31. LANGUAGE C
  32. COMPILE_FLAGS "-fobjc-arc")
  33. find_library(COCOA Cocoa)
  34. mark_as_advanced(COCOA)
  35. include_directories(${COCOA})
  36. set(libobs_PLATFORM_DEPS
  37. ${COCOA})
  38. elseif(UNIX)
  39. set(libobs_PLATFORM_SOURCES
  40. obs-nix.c
  41. util/threading-posix.c
  42. util/platform-nix.c)
  43. endif()
  44. if(MSVC)
  45. set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
  46. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /EHc-")
  47. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHc-")
  48. endif()
  49. configure_file(
  50. "${CMAKE_CURRENT_SOURCE_DIR}/obsconfig.h.in"
  51. "${CMAKE_BINARY_DIR}/config/obsconfig.h")
  52. set(libobs_config_HEADERS
  53. "${CMAKE_BINARY_DIR}/config/obsconfig.h"
  54. obs-config.h)
  55. set(libobs_callback_SOURCES
  56. callback/calldata.c
  57. callback/decl.c
  58. callback/signal.c
  59. callback/proc.c)
  60. set(libobs_callback_HEADERS
  61. callback/calldata.h
  62. callback/decl.h
  63. callback/proc.h
  64. callback/signal.h)
  65. set(libobs_graphics_SOURCES
  66. graphics/quat.c
  67. graphics/effect-parser.c
  68. graphics/axisang.c
  69. graphics/vec4.c
  70. graphics/vec2.c
  71. graphics/texture-render.c
  72. graphics/bounds.c
  73. graphics/matrix3.c
  74. graphics/matrix4.c
  75. graphics/vec3.c
  76. graphics/graphics.c
  77. graphics/shader-parser.c
  78. graphics/plane.c
  79. graphics/effect.c
  80. graphics/math-extra.c
  81. graphics/graphics-imports.c)
  82. set(libobs_graphics_HEADERS
  83. graphics/plane.h
  84. graphics/quat.h
  85. graphics/input.h
  86. graphics/axisang.h
  87. graphics/shader-parser.h
  88. graphics/effect.h
  89. graphics/math-defs.h
  90. graphics/matrix4.h
  91. graphics/graphics.h
  92. graphics/graphics-internal.h
  93. graphics/device-exports.h
  94. graphics/vec2.h
  95. graphics/vec4.h
  96. graphics/matrix3.h
  97. graphics/vec3.h
  98. graphics/math-extra.h
  99. graphics/bounds.h
  100. graphics/effect-parser.h)
  101. set(libobs_mediaio_SOURCES
  102. media-io/video-io.c
  103. media-io/video-fourcc.c
  104. media-io/video-matrices.c
  105. media-io/audio-io.c
  106. media-io/video-frame.c
  107. media-io/format-conversion.c
  108. media-io/audio-resampler-ffmpeg.c
  109. media-io/video-scaler-ffmpeg.c)
  110. set(libobs_mediaio_HEADERS
  111. media-io/media-io-defs.h
  112. media-io/video-io.h
  113. media-io/audio-io.h
  114. media-io/video-frame.h
  115. media-io/format-conversion.h
  116. media-io/audio-resampler.h
  117. media-io/video-scaler.h)
  118. set(libobs_util_SOURCES
  119. util/array-serializer.c
  120. util/base.c
  121. util/platform.c
  122. util/cf-lexer.c
  123. util/bmem.c
  124. util/config-file.c
  125. util/lexer.c
  126. util/dstr.c
  127. util/utf8.c
  128. util/text-lookup.c
  129. util/cf-parser.c)
  130. set(libobs_util_HEADERS
  131. util/array-serializer.h
  132. util/utf8.h
  133. util/base.h
  134. util/text-lookup.h
  135. util/vc/vc_inttypes.h
  136. util/vc/vc_stdbool.h
  137. util/vc/vc_stdint.h
  138. util/bmem.h
  139. util/c99defs.h
  140. util/cf-parser.h
  141. util/threading.h
  142. util/cf-lexer.h
  143. util/darray.h
  144. util/circlebuf.h
  145. util/dstr.h
  146. util/serializer.h
  147. util/config-file.h
  148. util/lexer.h
  149. util/platform.h)
  150. set(libobs_libobs_SOURCES
  151. ${libobs_PLATFORM_SOURCES}
  152. obs-avc.c
  153. obs-encoder.c
  154. obs-service.c
  155. obs-source.c
  156. obs-output.c
  157. obs.c
  158. obs-properties.c
  159. obs-data.c
  160. obs-module.c
  161. obs-display.c
  162. obs-view.c
  163. obs-scene.c
  164. obs-video.c)
  165. set(libobs_libobs_HEADERS
  166. obs-defs.h
  167. obs-avc.h
  168. obs-encoder.h
  169. obs-service.h
  170. obs-internal.h
  171. obs.h
  172. obs-ui.h
  173. obs-properties.h
  174. obs-data.h
  175. obs-module.h
  176. obs-scene.h
  177. obs-source.h
  178. obs-output.h)
  179. set(libobs_SOURCES
  180. ${libobs_callback_SOURCES}
  181. ${libobs_graphics_SOURCES}
  182. ${libobs_mediaio_SOURCES}
  183. ${libobs_util_SOURCES}
  184. ${libobs_libobs_SOURCES})
  185. set(libobs_HEADERS
  186. ${libobs_config_HEADERS}
  187. ${libobs_callback_HEADERS}
  188. ${libobs_graphics_HEADERS}
  189. ${libobs_mediaio_HEADERS}
  190. ${libobs_util_HEADERS}
  191. ${libobs_libobs_HEADERS})
  192. source_group("callback\\Source Files" FILES ${libobs_callback_SOURCES})
  193. source_group("callback\\Header Files" FILES ${libobs_callback_HEADERS})
  194. source_group("graphics\\Source Files" FILES ${libobs_graphics_SOURCES})
  195. source_group("graphics\\Header Files" FILES ${libobs_graphics_HEADERS})
  196. source_group("libobs\\Source Files" FILES ${libobs_libobs_SOURCES})
  197. source_group("libobs\\Header Files" FILES ${libobs_libobs_HEADERS})
  198. source_group("media-io\\Source Files" FILES ${libobs_mediaio_SOURCES})
  199. source_group("media-io\\Header Files" FILES ${libobs_mediaio_HEADERS})
  200. source_group("util\\Source Files" FILES ${libobs_util_SOURCES})
  201. source_group("util\\Header Files" FILES ${libobs_util_HEADERS})
  202. add_library(libobs SHARED ${libobs_SOURCES} ${libobs_HEADERS})
  203. set_target_properties(libobs PROPERTIES
  204. OUTPUT_NAME obs
  205. VERSION "0"
  206. SOVERSION "0")
  207. target_compile_definitions(libobs PUBLIC HAVE_OBSCONFIG_H)
  208. if(NOT MSVC)
  209. target_compile_options(libobs PUBLIC "-mmmx" "-msse" "-msse2")
  210. endif()
  211. target_link_libraries(libobs
  212. PRIVATE
  213. jansson
  214. ${libobs_PLATFORM_DEPS}
  215. ${LIBSWSCALE_LIBRARIES}
  216. ${LIBSWRESAMPLE_LIBRARIES}
  217. ${LIBAVFORMAT_LIBRARIES}
  218. ${LIBAVUTIL_LIBRARIES})
  219. install_obs_core(libobs EXPORT LibObs)
  220. install_obs_data(libobs ../build/data/libobs libobs)
  221. install_obs_headers(${libobs_HEADERS})