2023-08-04 01:22:48 +02:00
|
|
|
cmake_minimum_required(VERSION 3.22...3.25)
|
2023-03-26 03:55:25 +02:00
|
|
|
|
|
|
|
legacy_check()
|
2014-01-20 16:58:58 +01:00
|
|
|
|
2023-05-19 15:05:07 +02:00
|
|
|
# cmake-format: off
|
|
|
|
add_library(libobs-version STATIC EXCLUDE_FROM_ALL)
|
|
|
|
add_library(OBS::libobs-version ALIAS libobs-version)
|
|
|
|
# cmake-format: on
|
|
|
|
configure_file(obsversion.c.in obsversion.c @ONLY)
|
|
|
|
target_sources(libobs-version PRIVATE obsversion.c obsversion.h)
|
|
|
|
set_property(TARGET libobs-version PROPERTY FOLDER core)
|
|
|
|
|
2023-03-26 03:55:25 +02:00
|
|
|
add_library(libobs SHARED)
|
|
|
|
add_library(OBS::libobs ALIAS libobs)
|
2015-09-13 04:18:03 +02:00
|
|
|
|
2022-02-01 00:27:47 +01:00
|
|
|
find_package(Threads REQUIRED)
|
2023-03-26 03:55:25 +02:00
|
|
|
find_package(FFmpeg REQUIRED avformat avutil swscale swresample OPTIONAL_COMPONENTS avcodec)
|
2022-02-01 00:27:47 +01:00
|
|
|
find_package(ZLIB REQUIRED)
|
2014-06-28 20:37:33 +02:00
|
|
|
|
2022-07-28 23:29:34 +02:00
|
|
|
if(ENABLE_UI)
|
|
|
|
find_qt(COMPONENTS Core)
|
|
|
|
endif()
|
|
|
|
|
2023-03-26 03:55:25 +02:00
|
|
|
find_package(jansson REQUIRED)
|
|
|
|
add_subdirectory("${CMAKE_SOURCE_DIR}/deps/libcaption" "${CMAKE_BINARY_DIR}/deps/libcaption")
|
|
|
|
add_subdirectory("${CMAKE_SOURCE_DIR}/deps/uthash" "${CMAKE_BINARY_DIR}/deps/uthash")
|
2022-02-01 00:27:47 +01:00
|
|
|
|
|
|
|
target_sources(
|
|
|
|
libobs
|
2023-04-07 19:46:15 +02:00
|
|
|
PRIVATE # cmake-format: sortable
|
|
|
|
$<$<BOOL:${ENABLE_HEVC}>:obs-hevc.c>
|
|
|
|
$<$<BOOL:${ENABLE_HEVC}>:obs-hevc.h>
|
|
|
|
obs-audio-controls.c
|
2022-02-01 00:27:47 +01:00
|
|
|
obs-audio-controls.h
|
2023-03-30 20:03:34 +02:00
|
|
|
obs-audio.c
|
2023-05-02 13:14:18 +02:00
|
|
|
obs-av1.c
|
|
|
|
obs-av1.h
|
2022-02-01 00:27:47 +01:00
|
|
|
obs-avc.c
|
|
|
|
obs-avc.h
|
|
|
|
obs-data.c
|
|
|
|
obs-data.h
|
|
|
|
obs-defs.h
|
|
|
|
obs-display.c
|
|
|
|
obs-encoder.c
|
|
|
|
obs-encoder.h
|
|
|
|
obs-ffmpeg-compat.h
|
2023-03-30 20:03:34 +02:00
|
|
|
obs-hotkey-name-map.c
|
2022-02-01 00:27:47 +01:00
|
|
|
obs-hotkey.c
|
|
|
|
obs-hotkey.h
|
|
|
|
obs-hotkeys.h
|
|
|
|
obs-interaction.h
|
|
|
|
obs-internal.h
|
2023-03-30 20:03:34 +02:00
|
|
|
obs-missing-files.c
|
|
|
|
obs-missing-files.h
|
2022-02-01 00:27:47 +01:00
|
|
|
obs-module.c
|
|
|
|
obs-module.h
|
2023-03-30 20:03:34 +02:00
|
|
|
obs-nal.c
|
|
|
|
obs-nal.h
|
|
|
|
obs-output-delay.c
|
2022-02-01 00:27:47 +01:00
|
|
|
obs-output.c
|
|
|
|
obs-output.h
|
|
|
|
obs-properties.c
|
|
|
|
obs-properties.h
|
|
|
|
obs-scene.c
|
|
|
|
obs-scene.h
|
2023-03-30 20:03:34 +02:00
|
|
|
obs-service.c
|
|
|
|
obs-service.h
|
2022-02-01 00:27:47 +01:00
|
|
|
obs-source-deinterlace.c
|
|
|
|
obs-source-transition.c
|
2023-03-30 20:03:34 +02:00
|
|
|
obs-source.c
|
|
|
|
obs-source.h
|
2022-02-01 00:27:47 +01:00
|
|
|
obs-ui.h
|
|
|
|
obs-video-gpu-encode.c
|
2023-03-30 20:03:34 +02:00
|
|
|
obs-video.c
|
2022-02-01 00:27:47 +01:00
|
|
|
obs-view.c
|
2023-03-30 20:03:34 +02:00
|
|
|
obs.c
|
|
|
|
obs.h
|
2023-04-07 19:46:15 +02:00
|
|
|
obs.hpp)
|
2023-03-26 03:55:25 +02:00
|
|
|
|
|
|
|
target_sources(
|
|
|
|
libobs
|
2023-04-07 19:46:15 +02:00
|
|
|
PRIVATE # cmake-format: sortable
|
|
|
|
util/array-serializer.c
|
2023-03-26 03:55:25 +02:00
|
|
|
util/array-serializer.h
|
|
|
|
util/base.c
|
|
|
|
util/base.h
|
|
|
|
util/bitstream.c
|
|
|
|
util/bitstream.h
|
|
|
|
util/bmem.c
|
2023-03-30 20:03:34 +02:00
|
|
|
util/bmem.h
|
2023-03-26 03:55:25 +02:00
|
|
|
util/c99defs.h
|
|
|
|
util/cf-lexer.c
|
|
|
|
util/cf-lexer.h
|
|
|
|
util/cf-parser.c
|
|
|
|
util/cf-parser.h
|
|
|
|
util/circlebuf.h
|
|
|
|
util/config-file.c
|
|
|
|
util/config-file.h
|
|
|
|
util/crc32.c
|
|
|
|
util/crc32.h
|
2023-04-07 19:46:15 +02:00
|
|
|
util/curl/curl-helper.h
|
2023-03-26 03:55:25 +02:00
|
|
|
util/darray.h
|
|
|
|
util/dstr.c
|
|
|
|
util/dstr.h
|
|
|
|
util/file-serializer.c
|
|
|
|
util/file-serializer.h
|
|
|
|
util/lexer.c
|
|
|
|
util/lexer.h
|
|
|
|
util/pipe.h
|
|
|
|
util/platform.c
|
|
|
|
util/platform.h
|
|
|
|
util/profiler.c
|
|
|
|
util/profiler.h
|
|
|
|
util/profiler.hpp
|
|
|
|
util/serializer.h
|
|
|
|
util/sse-intrin.h
|
|
|
|
util/task.c
|
|
|
|
util/task.h
|
|
|
|
util/text-lookup.c
|
|
|
|
util/text-lookup.h
|
|
|
|
util/threading.h
|
|
|
|
util/utf8.c
|
|
|
|
util/utf8.h
|
|
|
|
util/uthash.h
|
2023-03-30 20:03:34 +02:00
|
|
|
util/util.hpp
|
2023-03-26 03:55:25 +02:00
|
|
|
util/util_uint128.h
|
2023-04-07 19:46:15 +02:00
|
|
|
util/util_uint64.h)
|
2022-02-01 00:27:47 +01:00
|
|
|
|
|
|
|
target_sources(
|
|
|
|
libobs
|
2023-04-07 19:46:15 +02:00
|
|
|
PRIVATE # cmake-format: sortable
|
|
|
|
util/simde/check.h
|
2022-02-01 00:27:47 +01:00
|
|
|
util/simde/debug-trap.h
|
|
|
|
util/simde/hedley.h
|
|
|
|
util/simde/simde-align.h
|
|
|
|
util/simde/simde-arch.h
|
|
|
|
util/simde/simde-common.h
|
|
|
|
util/simde/simde-constify.h
|
|
|
|
util/simde/simde-detect-clang.h
|
|
|
|
util/simde/simde-diagnostic.h
|
|
|
|
util/simde/simde-features.h
|
|
|
|
util/simde/simde-math.h
|
|
|
|
util/simde/x86/mmx.h
|
2023-03-30 20:03:34 +02:00
|
|
|
util/simde/x86/sse.h
|
|
|
|
util/simde/x86/sse2.h)
|
2022-02-01 00:27:47 +01:00
|
|
|
|
|
|
|
target_sources(
|
|
|
|
libobs
|
2023-04-07 19:46:15 +02:00
|
|
|
PRIVATE # cmake-format: sortable
|
|
|
|
callback/calldata.c
|
2022-02-01 00:27:47 +01:00
|
|
|
callback/calldata.h
|
|
|
|
callback/decl.c
|
|
|
|
callback/decl.h
|
|
|
|
callback/proc.c
|
2023-03-30 20:03:34 +02:00
|
|
|
callback/proc.h
|
|
|
|
callback/signal.c
|
|
|
|
callback/signal.h)
|
2022-02-01 00:27:47 +01:00
|
|
|
|
|
|
|
target_sources(
|
|
|
|
libobs
|
2023-04-07 19:46:15 +02:00
|
|
|
PRIVATE # cmake-format: sortable
|
|
|
|
media-io/audio-io.c
|
2023-03-26 03:55:25 +02:00
|
|
|
media-io/audio-io.h
|
|
|
|
media-io/audio-math.h
|
|
|
|
media-io/audio-resampler-ffmpeg.c
|
2023-03-30 20:03:34 +02:00
|
|
|
media-io/audio-resampler.h
|
2023-03-26 03:55:25 +02:00
|
|
|
media-io/format-conversion.c
|
|
|
|
media-io/format-conversion.h
|
|
|
|
media-io/frame-rate.h
|
2023-03-30 20:03:34 +02:00
|
|
|
media-io/media-io-defs.h
|
2023-03-26 03:55:25 +02:00
|
|
|
media-io/media-remux.c
|
|
|
|
media-io/media-remux.h
|
|
|
|
media-io/video-fourcc.c
|
|
|
|
media-io/video-frame.c
|
|
|
|
media-io/video-frame.h
|
|
|
|
media-io/video-io.c
|
|
|
|
media-io/video-io.h
|
|
|
|
media-io/video-matrices.c
|
|
|
|
media-io/video-scaler-ffmpeg.c
|
|
|
|
media-io/video-scaler.h)
|
|
|
|
|
|
|
|
target_sources(
|
|
|
|
libobs
|
2023-04-07 19:46:15 +02:00
|
|
|
PRIVATE # cmake-format: sortable
|
|
|
|
graphics/axisang.c
|
2022-02-01 00:27:47 +01:00
|
|
|
graphics/axisang.h
|
|
|
|
graphics/bounds.c
|
|
|
|
graphics/bounds.h
|
|
|
|
graphics/device-exports.h
|
|
|
|
graphics/effect-parser.c
|
|
|
|
graphics/effect-parser.h
|
2023-03-30 20:03:34 +02:00
|
|
|
graphics/effect.c
|
|
|
|
graphics/effect.h
|
2023-03-26 03:55:25 +02:00
|
|
|
graphics/graphics-ffmpeg.c
|
|
|
|
graphics/graphics-imports.c
|
|
|
|
graphics/graphics-internal.h
|
2023-03-30 20:03:34 +02:00
|
|
|
graphics/graphics.c
|
|
|
|
graphics/graphics.h
|
2023-03-26 03:55:25 +02:00
|
|
|
graphics/half.h
|
2023-03-30 20:03:34 +02:00
|
|
|
graphics/image-file.c
|
2022-02-01 00:27:47 +01:00
|
|
|
graphics/image-file.h
|
2023-04-07 19:46:15 +02:00
|
|
|
graphics/input.h
|
|
|
|
graphics/libnsgif/libnsgif.c
|
|
|
|
graphics/libnsgif/libnsgif.h
|
|
|
|
graphics/math-defs.h
|
2022-02-01 00:27:47 +01:00
|
|
|
graphics/math-extra.c
|
|
|
|
graphics/math-extra.h
|
|
|
|
graphics/matrix3.c
|
|
|
|
graphics/matrix3.h
|
|
|
|
graphics/matrix4.c
|
|
|
|
graphics/matrix4.h
|
|
|
|
graphics/plane.c
|
|
|
|
graphics/plane.h
|
|
|
|
graphics/quat.c
|
|
|
|
graphics/quat.h
|
|
|
|
graphics/shader-parser.c
|
|
|
|
graphics/shader-parser.h
|
|
|
|
graphics/srgb.h
|
|
|
|
graphics/texture-render.c
|
|
|
|
graphics/vec2.c
|
|
|
|
graphics/vec2.h
|
|
|
|
graphics/vec3.c
|
|
|
|
graphics/vec3.h
|
|
|
|
graphics/vec4.c
|
2023-04-07 19:46:15 +02:00
|
|
|
graphics/vec4.h)
|
2022-02-01 00:27:47 +01:00
|
|
|
|
2023-03-28 19:50:59 +02:00
|
|
|
target_compile_features(libobs PUBLIC cxx_std_17)
|
2023-03-26 03:55:25 +02:00
|
|
|
target_compile_definitions(
|
2022-02-01 00:27:47 +01:00
|
|
|
libobs
|
2023-03-26 03:55:25 +02:00
|
|
|
PRIVATE IS_LIBOBS
|
2023-03-28 19:50:59 +02:00
|
|
|
PUBLIC $<BUILD_INTERFACE:$<$<BOOL:${ENABLE_HEVC}>:ENABLE_HEVC>>
|
2023-03-26 03:55:25 +02:00
|
|
|
$<BUILD_INTERFACE:$<$<BOOL:${ENABLE_FFMPEG_MUX_DEBUG}>:SHOW_SUBPROCESSES>>)
|
2014-06-28 20:37:33 +02:00
|
|
|
|
2022-02-01 00:27:47 +01:00
|
|
|
target_link_libraries(
|
|
|
|
libobs
|
2023-03-26 03:55:25 +02:00
|
|
|
PRIVATE OBS::caption
|
|
|
|
OBS::uthash
|
2023-05-19 15:05:07 +02:00
|
|
|
OBS::libobs-version
|
2023-03-26 03:55:25 +02:00
|
|
|
FFmpeg::avcodec
|
2022-02-01 00:27:47 +01:00
|
|
|
FFmpeg::avformat
|
|
|
|
FFmpeg::avutil
|
|
|
|
FFmpeg::swscale
|
|
|
|
FFmpeg::swresample
|
2023-03-26 03:55:25 +02:00
|
|
|
jansson::jansson
|
2022-02-01 00:27:47 +01:00
|
|
|
ZLIB::ZLIB
|
|
|
|
PUBLIC Threads::Threads)
|
|
|
|
|
|
|
|
if(OS_WINDOWS)
|
2023-03-26 03:55:25 +02:00
|
|
|
include(cmake/os-windows.cmake)
|
2022-02-01 00:27:47 +01:00
|
|
|
elseif(OS_MACOS)
|
2023-03-26 03:55:25 +02:00
|
|
|
include(cmake/os-macos.cmake)
|
|
|
|
elseif(OS_LINUX)
|
|
|
|
include(cmake/os-linux.cmake)
|
|
|
|
elseif(OS_FREEBSD)
|
|
|
|
include(cmake/os-freebsd.cmake)
|
|
|
|
endif()
|
2022-02-01 00:27:47 +01:00
|
|
|
|
2023-03-26 03:55:25 +02:00
|
|
|
configure_file(obsconfig.h.in "${CMAKE_BINARY_DIR}/config/obsconfig.h" @ONLY)
|
|
|
|
target_include_directories(libobs PUBLIC "$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/config>"
|
|
|
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>")
|
|
|
|
target_compile_definitions(libobs PUBLIC HAVE_OBSCONFIG_H)
|
2022-02-01 00:27:47 +01:00
|
|
|
|
2023-04-07 19:46:15 +02:00
|
|
|
set(public_headers
|
|
|
|
# cmake-format: sortable
|
|
|
|
callback/calldata.h
|
2023-11-01 14:22:02 +01:00
|
|
|
callback/decl.h
|
2023-04-07 19:46:15 +02:00
|
|
|
callback/proc.h
|
|
|
|
callback/signal.h
|
2023-11-01 14:22:02 +01:00
|
|
|
graphics/axisang.h
|
|
|
|
graphics/bounds.h
|
|
|
|
graphics/effect-parser.h
|
|
|
|
graphics/effect.h
|
2023-04-07 19:46:15 +02:00
|
|
|
graphics/graphics.h
|
2023-11-01 14:22:02 +01:00
|
|
|
graphics/image-file.h
|
2023-04-07 19:46:15 +02:00
|
|
|
graphics/input.h
|
2023-11-01 14:22:02 +01:00
|
|
|
graphics/libnsgif/libnsgif.h
|
2023-04-07 19:46:15 +02:00
|
|
|
graphics/math-defs.h
|
2023-11-01 14:22:02 +01:00
|
|
|
graphics/math-extra.h
|
|
|
|
graphics/matrix3.h
|
|
|
|
graphics/matrix4.h
|
|
|
|
graphics/plane.h
|
|
|
|
graphics/quat.h
|
|
|
|
graphics/shader-parser.h
|
2023-04-07 19:46:15 +02:00
|
|
|
graphics/srgb.h
|
|
|
|
graphics/vec2.h
|
|
|
|
graphics/vec3.h
|
|
|
|
graphics/vec4.h
|
|
|
|
media-io/audio-io.h
|
2023-11-01 14:22:02 +01:00
|
|
|
media-io/audio-math.h
|
|
|
|
media-io/audio-resampler.h
|
|
|
|
media-io/format-conversion.h
|
2023-04-07 19:46:15 +02:00
|
|
|
media-io/frame-rate.h
|
|
|
|
media-io/media-io-defs.h
|
2023-11-01 14:22:02 +01:00
|
|
|
media-io/media-remux.h
|
2023-08-03 08:58:55 +02:00
|
|
|
media-io/video-frame.h
|
2023-04-07 19:46:15 +02:00
|
|
|
media-io/video-io.h
|
2023-11-01 14:22:02 +01:00
|
|
|
media-io/video-scaler.h
|
2023-04-07 19:46:15 +02:00
|
|
|
obs-audio-controls.h
|
2023-11-01 14:22:02 +01:00
|
|
|
obs-avc.h
|
2023-04-07 19:46:15 +02:00
|
|
|
obs-config.h
|
|
|
|
obs-data.h
|
|
|
|
obs-defs.h
|
|
|
|
obs-encoder.h
|
|
|
|
obs-hotkey.h
|
|
|
|
obs-hotkeys.h
|
|
|
|
obs-interaction.h
|
|
|
|
obs-missing-files.h
|
|
|
|
obs-module.h
|
2023-11-01 14:22:02 +01:00
|
|
|
obs-nal.h
|
|
|
|
obs-nix-platform.h
|
2023-04-07 19:46:15 +02:00
|
|
|
obs-output.h
|
|
|
|
obs-properties.h
|
|
|
|
obs-service.h
|
|
|
|
obs-source.h
|
|
|
|
obs-ui.h
|
|
|
|
obs.h
|
2023-05-16 14:42:28 +02:00
|
|
|
obs.hpp
|
2023-11-01 14:22:02 +01:00
|
|
|
util/AlignedNew.hpp
|
|
|
|
util/apple/cfstring-utils.h
|
|
|
|
util/array-serializer.h
|
2023-04-07 19:46:15 +02:00
|
|
|
util/base.h
|
2023-11-01 14:22:02 +01:00
|
|
|
util/bitstream.h
|
2023-04-07 19:46:15 +02:00
|
|
|
util/bmem.h
|
|
|
|
util/c99defs.h
|
2023-11-01 14:22:02 +01:00
|
|
|
util/cf-lexer.h
|
|
|
|
util/cf-parser.h
|
2023-07-12 11:16:53 +02:00
|
|
|
util/circlebuf.h
|
|
|
|
util/config-file.h
|
2023-11-01 14:22:02 +01:00
|
|
|
util/crc32.h
|
2023-04-07 19:46:15 +02:00
|
|
|
util/darray.h
|
2023-07-12 11:16:53 +02:00
|
|
|
util/dstr.h
|
2023-11-01 14:22:02 +01:00
|
|
|
util/dstr.hpp
|
|
|
|
util/file-serializer.h
|
|
|
|
util/lexer.h
|
|
|
|
util/pipe.h
|
2023-07-12 11:16:53 +02:00
|
|
|
util/platform.h
|
2023-04-07 19:46:15 +02:00
|
|
|
util/profiler.h
|
2023-07-12 11:16:53 +02:00
|
|
|
util/profiler.hpp
|
2023-11-01 14:22:02 +01:00
|
|
|
util/serializer.h
|
2023-10-26 18:00:34 +02:00
|
|
|
util/simde/check.h
|
|
|
|
util/simde/debug-trap.h
|
|
|
|
util/simde/hedley.h
|
|
|
|
util/simde/simde-align.h
|
|
|
|
util/simde/simde-arch.h
|
|
|
|
util/simde/simde-common.h
|
|
|
|
util/simde/simde-constify.h
|
|
|
|
util/simde/simde-detect-clang.h
|
|
|
|
util/simde/simde-diagnostic.h
|
|
|
|
util/simde/simde-features.h
|
|
|
|
util/simde/simde-math.h
|
|
|
|
util/simde/x86/mmx.h
|
|
|
|
util/simde/x86/sse.h
|
|
|
|
util/simde/x86/sse2.h
|
2023-04-07 19:46:15 +02:00
|
|
|
util/sse-intrin.h
|
2023-11-01 14:22:02 +01:00
|
|
|
util/task.h
|
2023-04-07 19:46:15 +02:00
|
|
|
util/text-lookup.h
|
2023-11-01 14:22:02 +01:00
|
|
|
util/threading-posix.h
|
|
|
|
util/threading-windows.h
|
2023-07-12 11:16:53 +02:00
|
|
|
util/threading.h
|
2023-11-01 14:22:02 +01:00
|
|
|
util/uthash.h
|
2023-07-12 11:16:53 +02:00
|
|
|
util/util.hpp
|
2023-11-01 14:22:02 +01:00
|
|
|
util/util_uint128.h
|
|
|
|
util/util_uint64.h
|
|
|
|
util/windows/ComPtr.hpp
|
|
|
|
util/windows/CoTaskMemPtr.hpp
|
|
|
|
util/windows/device-enum.h
|
|
|
|
util/windows/HRError.hpp
|
|
|
|
util/windows/win-registry.h
|
|
|
|
util/windows/win-version.h
|
|
|
|
util/windows/window-helpers.h
|
|
|
|
util/windows/WinHandle.hpp)
|
2022-02-01 00:27:47 +01:00
|
|
|
|
2023-03-26 03:55:25 +02:00
|
|
|
if(ENABLE_HEVC)
|
|
|
|
list(APPEND public_headers obs-hevc.h)
|
2014-06-28 20:37:33 +02:00
|
|
|
endif()
|
2014-06-28 00:33:03 +02:00
|
|
|
|
2023-03-28 19:50:59 +02:00
|
|
|
# cmake-format: off
|
|
|
|
set_property(TARGET libobs APPEND PROPERTY OBS_PUBLIC_HEADERS ${public_headers})
|
2022-02-01 00:27:47 +01:00
|
|
|
|
2023-03-26 03:55:25 +02:00
|
|
|
set_target_properties_obs(
|
|
|
|
libobs
|
|
|
|
PROPERTIES FOLDER core
|
|
|
|
VERSION 0
|
|
|
|
SOVERSION "${OBS_VERSION_MAJOR}")
|
2023-03-28 19:50:59 +02:00
|
|
|
# cmake-format: on
|
2022-02-01 00:27:47 +01:00
|
|
|
|
2023-03-26 03:55:25 +02:00
|
|
|
target_export(libobs)
|