|
@@ -1,593 +1,467 @@
|
|
|
-project(libobs)
|
|
|
-
|
|
|
-find_package(Threads REQUIRED)
|
|
|
-
|
|
|
-find_package(FFmpeg REQUIRED
|
|
|
- COMPONENTS avformat avutil swscale swresample
|
|
|
- OPTIONAL_COMPONENTS avcodec)
|
|
|
-include_directories(${FFMPEG_INCLUDE_DIRS})
|
|
|
-
|
|
|
-if (NOT "${FFMPEG_AVCODEC_LIBRARIES}" STREQUAL "")
|
|
|
- list(REMOVE_ITEM FFMPEG_LIBRARIES ${FFMPEG_AVCODEC_LIBRARIES})
|
|
|
+if(POLICY CMP0090)
|
|
|
+ cmake_policy(SET CMP0090 NEW)
|
|
|
endif()
|
|
|
|
|
|
-add_definitions(-DIS_LIBOBS=1)
|
|
|
-
|
|
|
-if(DEBUG_FFMPEG_MUX)
|
|
|
- add_definitions(-DSHOW_SUBPROCESSES)
|
|
|
-endif()
|
|
|
-
|
|
|
-if(UNIX)
|
|
|
- if (NOT APPLE)
|
|
|
- find_package(X11 REQUIRED)
|
|
|
- find_package(X11_XCB REQUIRED)
|
|
|
- find_package(XCB OPTIONAL_COMPONENTS XINPUT)
|
|
|
- find_package(XCB)
|
|
|
- find_library(M_LIBRARY NAMES m)
|
|
|
- find_library(DL_LIBRARY NAMES dl)
|
|
|
- if (XCB_XINPUT_FOUND)
|
|
|
- set(USE_XINPUT "1")
|
|
|
- else()
|
|
|
- set(USE_XINPUT "0")
|
|
|
- endif()
|
|
|
- if (NOT DISABLE_PULSEAUDIO)
|
|
|
- find_package(PulseAudio REQUIRED)
|
|
|
- message(STATUS "Found PulseAudio - Audio Monitor enabled")
|
|
|
- set(HAVE_PULSEAUDIO "1")
|
|
|
- else()
|
|
|
- set(HAVE_PULSEAUDIO "0")
|
|
|
- endif()
|
|
|
- else()
|
|
|
- set(HAVE_PULSEAUDIO "0")
|
|
|
- set(USE_XINPUT "0")
|
|
|
- endif()
|
|
|
- find_package(Gio QUIET)
|
|
|
-else()
|
|
|
- set(HAVE_DBUS "0")
|
|
|
- set(HAVE_PULSEAUDIO "0")
|
|
|
- set(USE_XINPUT "0")
|
|
|
-endif()
|
|
|
+project(libobs)
|
|
|
|
|
|
-find_package(ImageMagick QUIET COMPONENTS MagickCore)
|
|
|
+find_package(Threads REQUIRED)
|
|
|
+find_package(
|
|
|
+ FFmpeg REQUIRED
|
|
|
+ COMPONENTS avformat avutil swscale swresample
|
|
|
+ OPTIONAL_COMPONENTS avcodec)
|
|
|
+find_package(ZLIB REQUIRED)
|
|
|
|
|
|
-if(NOT ImageMagick_MagickCore_FOUND AND NOT FFMPEG_AVCODEC_FOUND)
|
|
|
- message(FATAL_ERROR "Either MagickCore or Libavcodec is required, but neither were found.")
|
|
|
-elseif(NOT ImageMagick_MagickCore_FOUND AND LIBOBS_PREFER_IMAGEMAGICK)
|
|
|
- message(FATAL_ERROR "ImageMagick support was requested, but was not found.")
|
|
|
+add_library(libobs SHARED)
|
|
|
+add_library(OBS::libobs ALIAS libobs)
|
|
|
+
|
|
|
+target_sources(
|
|
|
+ libobs
|
|
|
+ PRIVATE obs.c
|
|
|
+ obs.h
|
|
|
+ obs.hpp
|
|
|
+ obs-audio.c
|
|
|
+ obs-audio-controls.c
|
|
|
+ obs-audio-controls.h
|
|
|
+ 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
|
|
|
+ obs-hotkey.c
|
|
|
+ obs-hotkey.h
|
|
|
+ obs-hotkeys.h
|
|
|
+ obs-missing-files.c
|
|
|
+ obs-missing-files.h
|
|
|
+ obs-hotkey-name-map.c
|
|
|
+ obs-interaction.h
|
|
|
+ obs-internal.h
|
|
|
+ obs-module.c
|
|
|
+ obs-module.h
|
|
|
+ obs-output.c
|
|
|
+ obs-output.h
|
|
|
+ obs-output-delay.c
|
|
|
+ obs-properties.c
|
|
|
+ obs-properties.h
|
|
|
+ obs-service.c
|
|
|
+ obs-service.h
|
|
|
+ obs-scene.c
|
|
|
+ obs-scene.h
|
|
|
+ obs-source.c
|
|
|
+ obs-source.h
|
|
|
+ obs-source-deinterlace.c
|
|
|
+ obs-source-transition.c
|
|
|
+ obs-ui.h
|
|
|
+ obs-video.c
|
|
|
+ obs-video-gpu-encode.c
|
|
|
+ obs-view.c
|
|
|
+ obs-config.h)
|
|
|
+
|
|
|
+target_sources(
|
|
|
+ libobs
|
|
|
+ PRIVATE 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/sse2.h
|
|
|
+ util/simde/x86/sse.h)
|
|
|
+
|
|
|
+target_sources(
|
|
|
+ libobs
|
|
|
+ PRIVATE callback/calldata.c
|
|
|
+ callback/calldata.h
|
|
|
+ callback/decl.c
|
|
|
+ callback/decl.h
|
|
|
+ callback/signal.c
|
|
|
+ callback/signal.h
|
|
|
+ callback/proc.c
|
|
|
+ callback/proc.h)
|
|
|
+
|
|
|
+target_sources(
|
|
|
+ libobs
|
|
|
+ PRIVATE graphics/graphics.c
|
|
|
+ graphics/graphics.h
|
|
|
+ graphics/graphics-imports.c
|
|
|
+ graphics/graphics-internal.h
|
|
|
+ graphics/axisang.c
|
|
|
+ graphics/axisang.h
|
|
|
+ graphics/bounds.c
|
|
|
+ graphics/bounds.h
|
|
|
+ graphics/device-exports.h
|
|
|
+ graphics/effect.c
|
|
|
+ graphics/effect.h
|
|
|
+ graphics/effect-parser.c
|
|
|
+ graphics/effect-parser.h
|
|
|
+ graphics/half.h
|
|
|
+ graphics/image-file.c
|
|
|
+ graphics/image-file.h
|
|
|
+ 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
|
|
|
+ graphics/vec4.h
|
|
|
+ graphics/libnsgif/libnsgif.c
|
|
|
+ graphics/libnsgif/libnsgif.h
|
|
|
+ graphics/graphics-ffmpeg.c)
|
|
|
+
|
|
|
+target_sources(
|
|
|
+ libobs
|
|
|
+ PRIVATE media-io/audio-io.c
|
|
|
+ media-io/audio-io.h
|
|
|
+ media-io/audio-math.h
|
|
|
+ media-io/audio-resampler.h
|
|
|
+ media-io/audio-resampler-ffmpeg.c
|
|
|
+ media-io/format-conversion.c
|
|
|
+ media-io/format-conversion.h
|
|
|
+ media-io/frame-rate.h
|
|
|
+ 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/media-io-defs.h
|
|
|
+ media-io/video-matrices.c
|
|
|
+ media-io/video-scaler-ffmpeg.c
|
|
|
+ media-io/video-scaler.h)
|
|
|
+
|
|
|
+target_sources(
|
|
|
+ libobs
|
|
|
+ PRIVATE util/array-serializer.c
|
|
|
+ util/array-serializer.h
|
|
|
+ util/base.c
|
|
|
+ util/base.h
|
|
|
+ util/bitstream.c
|
|
|
+ util/bitstream.h
|
|
|
+ util/bmem.c
|
|
|
+ util/bmem.h
|
|
|
+ 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
|
|
|
+ util/dstr.c
|
|
|
+ util/dstr.h
|
|
|
+ util/file-serializer.c
|
|
|
+ util/file-serializer.h
|
|
|
+ util/lexer.c
|
|
|
+ util/lexer.h
|
|
|
+ util/platform.c
|
|
|
+ util/platform.h
|
|
|
+ util/profiler.c
|
|
|
+ util/profiler.h
|
|
|
+ util/profiler.hpp
|
|
|
+ util/pipe.h
|
|
|
+ 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/util_uint64.h
|
|
|
+ util/util_uint128.h
|
|
|
+ util/curl/curl-helper.h
|
|
|
+ util/darray.h
|
|
|
+ util/util.hpp)
|
|
|
+
|
|
|
+# Contents of "data" dir already automatically added to bundles on macOS
|
|
|
+if(NOT OS_MACOS)
|
|
|
+ target_sources(
|
|
|
+ libobs
|
|
|
+ PRIVATE data/area.effect
|
|
|
+ data/bicubic_scale.effect
|
|
|
+ data/bilinear_lowres_scale.effect
|
|
|
+ data/default.effect
|
|
|
+ data/default_rect.effect
|
|
|
+ data/deinterlace_base.effect
|
|
|
+ data/deinterlace_blend.effect
|
|
|
+ data/deinterlace_blend_2x.effect
|
|
|
+ data/deinterlace_discard.effect
|
|
|
+ data/deinterlace_discard_2x.effect
|
|
|
+ data/deinterlace_linear.effect
|
|
|
+ data/deinterlace_linear_2x.effect
|
|
|
+ data/deinterlace_yadif.effect
|
|
|
+ data/deinterlace_yadif_2x.effect
|
|
|
+ data/format_conversion.effect
|
|
|
+ data/lanczos_scale.effect
|
|
|
+ data/opaque.effect
|
|
|
+ data/premultiplied_alpha.effect
|
|
|
+ data/repeat.effect
|
|
|
+ data/solid.effect)
|
|
|
endif()
|
|
|
|
|
|
-option(LIBOBS_PREFER_IMAGEMAGICK "Prefer ImageMagick over ffmpeg for image loading" OFF)
|
|
|
-
|
|
|
-if(NOT FFMPEG_AVCODEC_FOUND OR (ImageMagick_MagickCore_FOUND AND LIBOBS_PREFER_IMAGEMAGICK))
|
|
|
- message(STATUS "Using ImageMagick for image loading in libobs")
|
|
|
-
|
|
|
- if(${ImageMagick_VERSION_STRING} LESS 7)
|
|
|
- set(LIBOBS_IMAGEMAGICK_DIR_STYLE LIBOBS_IMAGEMAGICK_DIR_STYLE_6L)
|
|
|
- elseif(${ImageMagick_VERSION_STRING} GREATER_EQUAL 7)
|
|
|
- set(LIBOBS_IMAGEMAGICK_DIR_STYLE LIBOBS_IMAGEMAGICK_DIR_STYLE_7GE)
|
|
|
- endif()
|
|
|
-
|
|
|
- set(libobs_image_loading_SOURCES
|
|
|
- graphics/graphics-magick.c)
|
|
|
- set(libobs_image_loading_LIBRARIES
|
|
|
- ${ImageMagick_LIBRARIES})
|
|
|
-
|
|
|
- include_directories(${ImageMagick_INCLUDE_DIRS})
|
|
|
-else()
|
|
|
- message(STATUS "Using libavcodec for image loading in libobs")
|
|
|
-
|
|
|
- set(libobs_image_loading_SOURCES
|
|
|
- graphics/graphics-ffmpeg.c)
|
|
|
- set(libobs_image_loading_LIBRARIES
|
|
|
- ${FFMPEG_AVCODEC_LIBRARIES})
|
|
|
+target_link_libraries(
|
|
|
+ libobs
|
|
|
+ PRIVATE FFmpeg::avcodec
|
|
|
+ FFmpeg::avformat
|
|
|
+ FFmpeg::avutil
|
|
|
+ FFmpeg::swscale
|
|
|
+ FFmpeg::swresample
|
|
|
+ Jansson::Jansson
|
|
|
+ OBS::caption
|
|
|
+ ZLIB::ZLIB
|
|
|
+ PUBLIC Threads::Threads)
|
|
|
+
|
|
|
+set_target_properties(
|
|
|
+ libobs
|
|
|
+ PROPERTIES OUTPUT_NAME obs
|
|
|
+ FOLDER "core"
|
|
|
+ VERSION "${OBS_VERSION_MAJOR}"
|
|
|
+ SOVERSION "0")
|
|
|
+
|
|
|
+target_compile_definitions(
|
|
|
+ libobs
|
|
|
+ PUBLIC ${ARCH_SIMD_DEFINES}
|
|
|
+ PRIVATE IS_LIBOBS)
|
|
|
+
|
|
|
+target_compile_features(libobs PRIVATE cxx_alias_templates)
|
|
|
+
|
|
|
+target_compile_options(libobs PUBLIC ${ARCH_SIMD_FLAGS})
|
|
|
+
|
|
|
+target_include_directories(
|
|
|
+ libobs PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
|
|
+ $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/config>)
|
|
|
+
|
|
|
+if(OS_WINDOWS)
|
|
|
+ set(MODULE_DESCRIPTION "OBS Library")
|
|
|
+ set(UI_VERSION "${OBS_VERSION_CANONICAL}")
|
|
|
+
|
|
|
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/bundle/windows/obs-module.rc.in
|
|
|
+ libobs.rc)
|
|
|
+
|
|
|
+ target_sources(
|
|
|
+ libobs
|
|
|
+ PRIVATE obs-win-crash-handler.c
|
|
|
+ obs-windows.c
|
|
|
+ util/threading-windows.c
|
|
|
+ util/threading-windows.h
|
|
|
+ util/pipe-windows.c
|
|
|
+ util/platform-windows.c
|
|
|
+ util/windows/win-registry.h
|
|
|
+ util/windows/win-version.h
|
|
|
+ util/windows/ComPtr.hpp
|
|
|
+ util/windows/CoTaskMemPtr.hpp
|
|
|
+ util/windows/HRError.hpp
|
|
|
+ util/windows/WinHandle.hpp
|
|
|
+ libobs.rc
|
|
|
+ audio-monitoring/win32/wasapi-output.c
|
|
|
+ audio-monitoring/win32/wasapi-enum-devices.c
|
|
|
+ audio-monitoring/win32/wasapi-output.h
|
|
|
+ audio-monitoring/win32/wasapi-monitoring-available.c)
|
|
|
+
|
|
|
+ target_compile_definitions(
|
|
|
+ libobs PRIVATE UNICODE _UNICODE _CRT_SECURE_NO_WARNINGS
|
|
|
+ _CRT_NONSTDC_NO_WARNINGS)
|
|
|
+
|
|
|
+ target_link_libraries(libobs PRIVATE Avrt winmm)
|
|
|
+
|
|
|
+ if(MSVC)
|
|
|
+ target_link_libraries(libobs PRIVATE OBS::w32-pthreads)
|
|
|
+
|
|
|
+ target_compile_options(libobs PRIVATE "$<$<COMPILE_LANGUAGE:C>:/EHc->"
|
|
|
+ "$<$<COMPILE_LANGUAGE:CXX>:/EHc->")
|
|
|
+
|
|
|
+ target_link_options(libobs PRIVATE "LINKER:/SAFESEH:NO")
|
|
|
+ endif()
|
|
|
+
|
|
|
+elseif(OS_MACOS)
|
|
|
+
|
|
|
+ find_library(COCOA Cocoa)
|
|
|
+ find_library(COREAUDIO CoreAudio)
|
|
|
+ find_library(AUDIOTOOLBOX AudioToolbox)
|
|
|
+ find_library(AUDIOUNIT AudioUnit)
|
|
|
+ find_library(APPKIT AppKit)
|
|
|
+ find_library(IOKIT IOKit)
|
|
|
+ find_library(CARBON Carbon)
|
|
|
+
|
|
|
+ mark_as_advanced(
|
|
|
+ COCOA
|
|
|
+ COREAUDIO
|
|
|
+ AUDIOTOOLBOX
|
|
|
+ AUDIOUNIT
|
|
|
+ APPKIT
|
|
|
+ IOKIT
|
|
|
+ CARBON)
|
|
|
+
|
|
|
+ target_link_libraries(
|
|
|
+ libobs
|
|
|
+ PRIVATE ${COCOA}
|
|
|
+ ${COREAUDIO}
|
|
|
+ ${AUDIOTOOLBOX}
|
|
|
+ ${AUDIOUNIT}
|
|
|
+ ${APPKIT}
|
|
|
+ ${IOKIT}
|
|
|
+ ${CARBON})
|
|
|
+
|
|
|
+ target_sources(
|
|
|
+ libobs
|
|
|
+ PRIVATE obs-cocoa.m
|
|
|
+ util/pipe-posix.c
|
|
|
+ util/platform-cocoa.m
|
|
|
+ util/platform-nix.c
|
|
|
+ util/threading-posix.c
|
|
|
+ util/threading-posix.h
|
|
|
+ util/apple/cfstring-utils.h
|
|
|
+ audio-monitoring/osx/coreaudio-enum-devices.c
|
|
|
+ audio-monitoring/osx/coreaudio-output.c
|
|
|
+ audio-monitoring/osx/coreaudio-monitoring-available.c
|
|
|
+ audio-monitoring/osx/mac-helpers.h)
|
|
|
+
|
|
|
+ set_source_files_properties(util/platform-cocoa.m obs-cocoa.m
|
|
|
+ PROPERTIES COMPILE_FLAGS -fobjc-arc)
|
|
|
+
|
|
|
+ set_target_properties(
|
|
|
+ libobs PROPERTIES SOVERSION "1" BUILD_RPATH
|
|
|
+ "$<TARGET_FILE_DIR:OBS::libobs-opengl>")
|
|
|
+
|
|
|
+elseif(OS_POSIX)
|
|
|
+ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
|
|
|
+ target_compile_definitions(libobs PRIVATE ENABLE_DARRAY_TYPE_TEST)
|
|
|
+ endif()
|
|
|
+
|
|
|
+ find_package(X11 REQUIRED)
|
|
|
+ find_package(
|
|
|
+ XCB
|
|
|
+ COMPONENTS XCB
|
|
|
+ OPTIONAL_COMPONENTS XINPUT
|
|
|
+ QUIET)
|
|
|
+ find_package(X11_XCB REQUIRED)
|
|
|
+
|
|
|
+ target_sources(
|
|
|
+ libobs
|
|
|
+ PRIVATE obs-nix.c
|
|
|
+ obs-nix-platform.c
|
|
|
+ obs-nix-platform.h
|
|
|
+ obs-nix-x11.c
|
|
|
+ util/threading-posix.c
|
|
|
+ util/threading-posix.h
|
|
|
+ util/pipe-posix.c
|
|
|
+ util/platform-nix.c)
|
|
|
+
|
|
|
+ target_link_libraries(libobs PRIVATE X11::X11_xcb XCB::XCB)
|
|
|
+
|
|
|
+ if(USE_XDG)
|
|
|
+ target_compile_definitions(libobs PRIVATE USE_XDG)
|
|
|
+ endif()
|
|
|
+
|
|
|
+ if(ENABLE_PULSEAUDIO)
|
|
|
+ find_package(PulseAudio REQUIRED)
|
|
|
+ message(STATUS "OBS: PulseAudio found - audio monitoring enabled")
|
|
|
+ target_sources(
|
|
|
+ libobs
|
|
|
+ PRIVATE audio-monitoring/pulse/pulseaudio-output.c
|
|
|
+ audio-monitoring/pulse/pulseaudio-enum-devices.c
|
|
|
+ audio-monitoring/pulse/pulseaudio-wrapper.c
|
|
|
+ audio-monitoring/pulse/pulseaudio-wrapper.h
|
|
|
+ audio-monitoring/pulse/pulseaudio-monitoring-available.c)
|
|
|
+
|
|
|
+ target_link_libraries(libobs PRIVATE ${PULSEAUDIO_LIBRARY})
|
|
|
+ else()
|
|
|
+ target_sources(libobs PRIVATE audio-monitoring/null/null-audio-monitoring.c)
|
|
|
+ endif()
|
|
|
+
|
|
|
+ find_package(Gio)
|
|
|
+ if(TARGET GIO::GIO)
|
|
|
+ target_link_libraries(libobs PRIVATE GIO::GIO)
|
|
|
+
|
|
|
+ target_sources(libobs PRIVATE util/platform-nix-dbus.c
|
|
|
+ util/platform-nix-portal.c)
|
|
|
+ endif()
|
|
|
+
|
|
|
+ if(TARGET XCB::XINPUT)
|
|
|
+ target_link_libraries(libobs PRIVATE XCB::XINPUT)
|
|
|
+ endif()
|
|
|
+
|
|
|
+ if(ENABLE_WAYLAND)
|
|
|
+ find_package(
|
|
|
+ Wayland
|
|
|
+ COMPONENTS Client
|
|
|
+ REQUIRED)
|
|
|
+ find_package(Xkbcommon REQUIRED)
|
|
|
+
|
|
|
+ target_link_libraries(libobs PRIVATE Wayland::Client Xkbcommon::Xkbcommon)
|
|
|
+
|
|
|
+ target_sources(libobs PRIVATE obs-nix-wayland.c)
|
|
|
+ endif()
|
|
|
+
|
|
|
+ if(OS_LINUX)
|
|
|
+ target_link_libraries(glad PRIVATE ${CMAKE_DL_LIBS})
|
|
|
+ endif()
|
|
|
+
|
|
|
+ if(OS_FREEBSD)
|
|
|
+ find_package(Sysinfo REQUIRED)
|
|
|
+ target_link_libraries(libobs PRIVATE Sysinfo::Sysinfo)
|
|
|
+ endif()
|
|
|
+
|
|
|
+ set_target_properties(
|
|
|
+ libobs PROPERTIES BUILD_RPATH "$<TARGET_FILE_DIR:OBS::libobs-opengl>")
|
|
|
endif()
|
|
|
|
|
|
-find_package(ZLIB REQUIRED)
|
|
|
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/obsconfig.h.in
|
|
|
+ ${CMAKE_BINARY_DIR}/config/obsconfig.h)
|
|
|
|
|
|
-include_directories(SYSTEM ${ZLIB_INCLUDE_DIRS})
|
|
|
-
|
|
|
-add_definitions(-DLIBOBS_EXPORTS)
|
|
|
-
|
|
|
-include_directories(${OBS_JANSSON_INCLUDE_DIRS})
|
|
|
-
|
|
|
-if(WIN32)
|
|
|
- set(MODULE_DESCRIPTION "OBS Library")
|
|
|
- file(STRINGS obs-config.h _version_parse REGEX "^.*(MAJOR|MINOR|PATCH)_VER[ \t]+[0-9]+[ \t]*$")
|
|
|
-
|
|
|
- string(REGEX REPLACE ".*MAJOR_VER[ \t]+([0-9]+).*" "\\1" UI_VERSION_MAJOR "${_version_parse}")
|
|
|
- string(REGEX REPLACE ".*MINOR_VER[ \t]+([0-9]+).*" "\\1" UI_VERSION_MINOR "${_version_parse}")
|
|
|
- string(REGEX REPLACE ".*PATCH_VER[ \t]+([0-9]+).*" "\\1" UI_VERSION_PATCH "${_version_parse}")
|
|
|
- set(UI_VERSION "${UI_VERSION_MAJOR}.${UI_VERSION_MINOR}.${UI_VERSION_PATCH}")
|
|
|
-
|
|
|
- configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in libobs.rc)
|
|
|
- set(libobs_PLATFORM_SOURCES
|
|
|
- obs-win-crash-handler.c
|
|
|
- obs-windows.c
|
|
|
- util/threading-windows.c
|
|
|
- util/pipe-windows.c
|
|
|
- util/platform-windows.c
|
|
|
- libobs.rc)
|
|
|
- set(libobs_PLATFORM_HEADERS
|
|
|
- util/threading-windows.h
|
|
|
- util/windows/win-registry.h
|
|
|
- util/windows/win-version.h
|
|
|
- util/windows/ComPtr.hpp
|
|
|
- util/windows/CoTaskMemPtr.hpp
|
|
|
- util/windows/HRError.hpp
|
|
|
- util/windows/WinHandle.hpp)
|
|
|
- set(libobs_audio_monitoring_SOURCES
|
|
|
- audio-monitoring/win32/wasapi-enum-devices.c
|
|
|
- audio-monitoring/win32/wasapi-monitoring-available.c
|
|
|
- audio-monitoring/win32/wasapi-output.c
|
|
|
- )
|
|
|
- set(libobs_audio_monitoring_HEADERS
|
|
|
- audio-monitoring/win32/wasapi-output.h
|
|
|
- )
|
|
|
- set(libobs_PLATFORM_DEPS Avrt winmm)
|
|
|
- if(MSVC)
|
|
|
- set(libobs_PLATFORM_DEPS
|
|
|
- ${libobs_PLATFORM_DEPS}
|
|
|
- w32-pthreads)
|
|
|
- endif()
|
|
|
-elseif(APPLE)
|
|
|
- set(libobs_PLATFORM_SOURCES
|
|
|
- obs-cocoa.m
|
|
|
- util/threading-posix.c
|
|
|
- util/pipe-posix.c
|
|
|
- util/platform-nix.c
|
|
|
- util/platform-cocoa.m)
|
|
|
- set(libobs_PLATFORM_HEADERS
|
|
|
- util/threading-posix.h
|
|
|
- util/apple/cfstring-utils.h)
|
|
|
- set(libobs_audio_monitoring_SOURCES
|
|
|
- audio-monitoring/osx/coreaudio-enum-devices.c
|
|
|
- audio-monitoring/osx/coreaudio-monitoring-available.c
|
|
|
- audio-monitoring/osx/coreaudio-output.c
|
|
|
- )
|
|
|
- set(libobs_audio_monitoring_HEADERS
|
|
|
- audio-monitoring/osx/mac-helpers.h
|
|
|
- )
|
|
|
-
|
|
|
- set_source_files_properties(${libobs_PLATFORM_SOURCES}
|
|
|
- PROPERTIES
|
|
|
- COMPILE_FLAGS "-fobjc-arc")
|
|
|
-
|
|
|
- find_library(COCOA Cocoa)
|
|
|
- mark_as_advanced(COCOA)
|
|
|
- include_directories(${COCOA})
|
|
|
-
|
|
|
- find_library(COREAUDIO CoreAudio)
|
|
|
- mark_as_advanced(COREAUDIO)
|
|
|
- include_directories(${COREAUDIO})
|
|
|
-
|
|
|
- find_library(AUDIOTOOLBOX AudioToolbox)
|
|
|
- mark_as_advanced(AUDIOTOOLBOX)
|
|
|
- include_directories(${AUDIOTOOLBOX})
|
|
|
-
|
|
|
- find_library(AUDIOUNIT AudioUnit)
|
|
|
- mark_as_advanced(AUDIOUNIT)
|
|
|
- include_directories(${AUDIOUNIT})
|
|
|
-
|
|
|
- find_library(APPKIT AppKit)
|
|
|
- mark_as_advanced(APPKIT)
|
|
|
- include_directories(${APPKIT})
|
|
|
-
|
|
|
- find_library(IOKIT IOKit)
|
|
|
- mark_as_advanced(IOKIT)
|
|
|
- include_directories(${IOKIT})
|
|
|
-
|
|
|
- find_library(CARBON Carbon)
|
|
|
- mark_as_advanced(CARBON)
|
|
|
- include_directories(${CARBON})
|
|
|
-
|
|
|
- set(libobs_PLATFORM_DEPS
|
|
|
- ${COCOA}
|
|
|
- ${COREAUDIO}
|
|
|
- ${AUDIOUNIT}
|
|
|
- ${AUDIOTOOLBOX}
|
|
|
- ${APPKIT}
|
|
|
- ${IOKIT}
|
|
|
- ${CARBON})
|
|
|
-elseif(UNIX)
|
|
|
- set(libobs_PLATFORM_SOURCES
|
|
|
- obs-nix.c
|
|
|
- obs-nix-platform.c
|
|
|
- obs-nix-x11.c
|
|
|
- util/threading-posix.c
|
|
|
- util/pipe-posix.c
|
|
|
- util/platform-nix.c)
|
|
|
-
|
|
|
- set(libobs_PLATFORM_HEADERS
|
|
|
- util/threading-posix.h
|
|
|
- obs-nix-platform.h)
|
|
|
-
|
|
|
- if(ENABLE_WAYLAND)
|
|
|
- find_package(Wayland COMPONENTS Client REQUIRED)
|
|
|
- find_package(Xkbcommon REQUIRED)
|
|
|
-
|
|
|
- set(libobs_PLATFORM_SOURCES ${libobs_PLATFORM_SOURCES}
|
|
|
- obs-nix-wayland.c)
|
|
|
-
|
|
|
- include_directories(
|
|
|
- ${WAYLAND_CLIENT_INCLUDE_DIR}
|
|
|
- ${XKBCOMMON_INCLUDE_DIR})
|
|
|
- add_definitions(
|
|
|
- ${WAYLAND_DEFINITIONS})
|
|
|
- set(libobs_PLATFORM_DEPS
|
|
|
- ${libobs_PLATFORM_DEPS}
|
|
|
- ${WAYLAND_CLIENT_LIBRARIES}
|
|
|
- ${XKBCOMMON_LIBRARIES})
|
|
|
- endif()
|
|
|
-
|
|
|
- if(HAVE_PULSEAUDIO)
|
|
|
- set(libobs_audio_monitoring_HEADERS
|
|
|
- audio-monitoring/pulse/pulseaudio-wrapper.h)
|
|
|
-
|
|
|
- set(libobs_audio_monitoring_SOURCES
|
|
|
- audio-monitoring/pulse/pulseaudio-wrapper.c
|
|
|
- audio-monitoring/pulse/pulseaudio-enum-devices.c
|
|
|
- audio-monitoring/pulse/pulseaudio-monitoring-available.c
|
|
|
- audio-monitoring/pulse/pulseaudio-output.c)
|
|
|
- else()
|
|
|
- set(libobs_audio_monitoring_SOURCES
|
|
|
- audio-monitoring/null/null-audio-monitoring.c)
|
|
|
- endif()
|
|
|
- if(GIO_FOUND)
|
|
|
- set(libobs_PLATFORM_SOURCES ${libobs_PLATFORM_SOURCES}
|
|
|
- util/platform-nix-dbus.c
|
|
|
- util/platform-nix-portal.c)
|
|
|
- include_directories(${GIO_INCLUDE_DIRS})
|
|
|
- add_definitions(
|
|
|
- ${GIO_DEFINITIONS})
|
|
|
- set(libobs_PLATFORM_DEPS
|
|
|
- ${libobs_PLATFORM_DEPS}
|
|
|
- ${GIO_LIBRARIES})
|
|
|
- endif()
|
|
|
-
|
|
|
- include_directories(
|
|
|
- ${X11_X11_INCLUDE_PATH}
|
|
|
- ${X11_XCB_INCLUDE_DIRS})
|
|
|
- add_definitions(
|
|
|
- ${X11_XCB_DEFINITIONS})
|
|
|
- set(libobs_PLATFORM_DEPS
|
|
|
- ${libobs_PLATFORM_DEPS}
|
|
|
- ${DL_LIBRARY}
|
|
|
- ${M_LIBRARY}
|
|
|
- ${X11_X11_LIB}
|
|
|
- ${XCB_LIBRARIES}
|
|
|
- ${X11_XCB_LIBRARIES})
|
|
|
-
|
|
|
- if(USE_XINPUT)
|
|
|
- include_directories(
|
|
|
- ${XCB_XINPUT_INCLUDE_DIR})
|
|
|
- add_definitions(
|
|
|
- ${XCB_DEFINITIONS})
|
|
|
- set(libobs_PLATFORM_DEPS
|
|
|
- ${XCB_XINPUT_LIBRARY}
|
|
|
- ${libobs_PLATFORM_DEPS})
|
|
|
- endif()
|
|
|
-
|
|
|
- if(HAVE_PULSEAUDIO)
|
|
|
- set(libobs_PLATFORM_DEPS
|
|
|
- ${libobs_PLATFORM_DEPS}
|
|
|
- ${PULSEAUDIO_LIBRARY})
|
|
|
- endif()
|
|
|
-
|
|
|
- if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
|
|
- # use the sysinfo compatibility library on bsd
|
|
|
- find_package(Libsysinfo REQUIRED)
|
|
|
- include_directories(${SYSINFO_INCLUDE_DIRS})
|
|
|
- set(libobs_PLATFORM_DEPS
|
|
|
- ${libobs_PLATFORM_DEPS}
|
|
|
- ${SYSINFO_LIBRARIES})
|
|
|
- endif()
|
|
|
-endif()
|
|
|
-
|
|
|
-if(MSVC)
|
|
|
- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
|
|
|
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /EHc-")
|
|
|
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHc-")
|
|
|
-endif()
|
|
|
+target_compile_definitions(libobs PUBLIC HAVE_OBSCONFIG_H)
|
|
|
|
|
|
-configure_file(
|
|
|
- "${CMAKE_CURRENT_SOURCE_DIR}/obsconfig.h.in"
|
|
|
- "${CMAKE_BINARY_DIR}/config/obsconfig.h")
|
|
|
-
|
|
|
-set(libobs_config_HEADERS
|
|
|
- "${CMAKE_BINARY_DIR}/config/obsconfig.h"
|
|
|
- obs-config.h)
|
|
|
-
|
|
|
-set(libobs_callback_SOURCES
|
|
|
- callback/calldata.c
|
|
|
- callback/decl.c
|
|
|
- callback/signal.c
|
|
|
- callback/proc.c)
|
|
|
-set(libobs_callback_HEADERS
|
|
|
- callback/calldata.h
|
|
|
- callback/decl.h
|
|
|
- callback/proc.h
|
|
|
- callback/signal.h)
|
|
|
-
|
|
|
-set(libobs_graphics_SOURCES
|
|
|
- ${libobs_image_loading_SOURCES}
|
|
|
- graphics/quat.c
|
|
|
- graphics/effect-parser.c
|
|
|
- graphics/axisang.c
|
|
|
- graphics/vec4.c
|
|
|
- graphics/vec2.c
|
|
|
- graphics/libnsgif/libnsgif.c
|
|
|
- graphics/texture-render.c
|
|
|
- graphics/image-file.c
|
|
|
- graphics/bounds.c
|
|
|
- graphics/matrix3.c
|
|
|
- graphics/matrix4.c
|
|
|
- graphics/vec3.c
|
|
|
- graphics/graphics.c
|
|
|
- graphics/shader-parser.c
|
|
|
- graphics/plane.c
|
|
|
- graphics/effect.c
|
|
|
- graphics/math-extra.c
|
|
|
- graphics/graphics-imports.c)
|
|
|
-set(libobs_graphics_HEADERS
|
|
|
- graphics/half.h
|
|
|
- graphics/plane.h
|
|
|
- graphics/quat.h
|
|
|
- graphics/input.h
|
|
|
- graphics/axisang.h
|
|
|
- graphics/shader-parser.h
|
|
|
- graphics/effect.h
|
|
|
- graphics/math-defs.h
|
|
|
- graphics/matrix4.h
|
|
|
- graphics/graphics.h
|
|
|
- graphics/graphics-internal.h
|
|
|
- graphics/libnsgif/libnsgif.h
|
|
|
- graphics/device-exports.h
|
|
|
- graphics/image-file.h
|
|
|
- graphics/srgb.h
|
|
|
- graphics/vec2.h
|
|
|
- graphics/vec4.h
|
|
|
- graphics/matrix3.h
|
|
|
- graphics/vec3.h
|
|
|
- graphics/math-extra.h
|
|
|
- graphics/bounds.h
|
|
|
- graphics/effect-parser.h)
|
|
|
-
|
|
|
-set(libobs_mediaio_SOURCES
|
|
|
- media-io/video-io.c
|
|
|
- media-io/video-fourcc.c
|
|
|
- media-io/video-matrices.c
|
|
|
- media-io/audio-io.c
|
|
|
- media-io/video-frame.c
|
|
|
- media-io/format-conversion.c
|
|
|
- media-io/audio-resampler-ffmpeg.c
|
|
|
- media-io/video-scaler-ffmpeg.c
|
|
|
- media-io/media-remux.c)
|
|
|
-set(libobs_mediaio_HEADERS
|
|
|
- media-io/media-io-defs.h
|
|
|
- media-io/video-io.h
|
|
|
- media-io/audio-io.h
|
|
|
- media-io/audio-math.h
|
|
|
- media-io/video-frame.h
|
|
|
- media-io/format-conversion.h
|
|
|
- media-io/audio-resampler.h
|
|
|
- media-io/video-scaler.h
|
|
|
- media-io/media-remux.h
|
|
|
- media-io/frame-rate.h)
|
|
|
-
|
|
|
-set(libobs_util_SOURCES
|
|
|
- util/array-serializer.c
|
|
|
- util/file-serializer.c
|
|
|
- util/base.c
|
|
|
- util/platform.c
|
|
|
- util/cf-lexer.c
|
|
|
- util/bmem.c
|
|
|
- util/config-file.c
|
|
|
- util/lexer.c
|
|
|
- util/task.c
|
|
|
- util/dstr.c
|
|
|
- util/utf8.c
|
|
|
- util/crc32.c
|
|
|
- util/text-lookup.c
|
|
|
- util/cf-parser.c
|
|
|
- util/profiler.c
|
|
|
- util/bitstream.c)
|
|
|
-set(libobs_util_HEADERS
|
|
|
- util/curl/curl-helper.h
|
|
|
- util/sse-intrin.h
|
|
|
- util/array-serializer.h
|
|
|
- util/file-serializer.h
|
|
|
- util/utf8.h
|
|
|
- util/crc32.h
|
|
|
- util/base.h
|
|
|
- util/text-lookup.h
|
|
|
- util/bmem.h
|
|
|
- util/c99defs.h
|
|
|
- util/util_uint64.h
|
|
|
- util/util_uint128.h
|
|
|
- util/cf-parser.h
|
|
|
- util/threading.h
|
|
|
- util/pipe.h
|
|
|
- util/cf-lexer.h
|
|
|
- util/darray.h
|
|
|
- util/circlebuf.h
|
|
|
- util/dstr.h
|
|
|
- util/serializer.h
|
|
|
- util/config-file.h
|
|
|
- util/lexer.h
|
|
|
- util/task.h
|
|
|
- util/platform.h
|
|
|
- util/profiler.h
|
|
|
- util/profiler.hpp
|
|
|
- util/bitstream.h
|
|
|
- util/util.hpp)
|
|
|
-
|
|
|
-set(libobs_libobs_SOURCES
|
|
|
- ${libobs_PLATFORM_SOURCES}
|
|
|
- obs-audio-controls.c
|
|
|
- obs-avc.c
|
|
|
- obs-encoder.c
|
|
|
- obs-service.c
|
|
|
- obs-source.c
|
|
|
- obs-source-deinterlace.c
|
|
|
- obs-source-transition.c
|
|
|
- obs-output.c
|
|
|
- obs-output-delay.c
|
|
|
- obs.c
|
|
|
- obs-properties.c
|
|
|
- obs-data.c
|
|
|
- obs-missing-files.c
|
|
|
- obs-hotkey.c
|
|
|
- obs-hotkey-name-map.c
|
|
|
- obs-module.c
|
|
|
- obs-display.c
|
|
|
- obs-view.c
|
|
|
- obs-scene.c
|
|
|
- obs-audio.c
|
|
|
- obs-video-gpu-encode.c
|
|
|
- obs-video.c)
|
|
|
-set(libobs_libobs_HEADERS
|
|
|
- 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/sse2.h
|
|
|
- util/simde/x86/sse.h
|
|
|
- ${libobs_PLATFORM_HEADERS}
|
|
|
- obs-audio-controls.h
|
|
|
- obs-defs.h
|
|
|
- obs-avc.h
|
|
|
- obs-encoder.h
|
|
|
- obs-service.h
|
|
|
- obs-internal.h
|
|
|
- obs.h
|
|
|
- obs-ui.h
|
|
|
- obs-properties.h
|
|
|
- obs-data.h
|
|
|
- obs-missing-files.h
|
|
|
- obs-interaction.h
|
|
|
- obs-hotkey.h
|
|
|
- obs-hotkeys.h
|
|
|
- obs-module.h
|
|
|
- obs-scene.h
|
|
|
- obs-source.h
|
|
|
- obs-output.h
|
|
|
- obs-ffmpeg-compat.h
|
|
|
- obs.hpp)
|
|
|
-
|
|
|
-set(libobs_SOURCES
|
|
|
- ${libobs_callback_SOURCES}
|
|
|
- ${libobs_graphics_SOURCES}
|
|
|
- ${libobs_mediaio_SOURCES}
|
|
|
- ${libobs_util_SOURCES}
|
|
|
- ${libobs_libobs_SOURCES}
|
|
|
- ${libobs_audio_monitoring_SOURCES}
|
|
|
- )
|
|
|
-
|
|
|
-set(libobs_HEADERS
|
|
|
- ${libobs_config_HEADERS}
|
|
|
- ${libobs_callback_HEADERS}
|
|
|
- ${libobs_graphics_HEADERS}
|
|
|
- ${libobs_mediaio_HEADERS}
|
|
|
- ${libobs_util_HEADERS}
|
|
|
- ${libobs_libobs_HEADERS}
|
|
|
- ${libobs_audio_monitoring_HEADERS}
|
|
|
- )
|
|
|
-
|
|
|
-set(libobs_data_EFFECTS
|
|
|
- data/area.effect
|
|
|
- data/bicubic_scale.effect
|
|
|
- data/bilinear_lowres_scale.effect
|
|
|
- data/default.effect
|
|
|
- data/default_rect.effect
|
|
|
- data/deinterlace_base.effect
|
|
|
- data/deinterlace_blend.effect
|
|
|
- data/deinterlace_blend_2x.effect
|
|
|
- data/deinterlace_discard.effect
|
|
|
- data/deinterlace_discard_2x.effect
|
|
|
- data/deinterlace_linear.effect
|
|
|
- data/deinterlace_linear_2x.effect
|
|
|
- data/deinterlace_yadif.effect
|
|
|
- data/deinterlace_yadif_2x.effect
|
|
|
- data/format_conversion.effect
|
|
|
- data/lanczos_scale.effect
|
|
|
- data/opaque.effect
|
|
|
- data/premultiplied_alpha.effect
|
|
|
- data/repeat.effect
|
|
|
- data/solid.effect)
|
|
|
-
|
|
|
-source_group("callback\\Source Files" FILES ${libobs_callback_SOURCES})
|
|
|
-source_group("callback\\Header Files" FILES ${libobs_callback_HEADERS})
|
|
|
-source_group("data\\Effect Files" FILES ${libobs_data_EFFECTS})
|
|
|
-source_group("graphics\\Source Files" FILES ${libobs_graphics_SOURCES})
|
|
|
-source_group("graphics\\Header Files" FILES ${libobs_graphics_HEADERS})
|
|
|
-source_group("libobs\\Source Files" FILES ${libobs_libobs_SOURCES})
|
|
|
-source_group("libobs\\Header Files" FILES ${libobs_libobs_HEADERS})
|
|
|
-source_group("media-io\\Source Files" FILES ${libobs_mediaio_SOURCES})
|
|
|
-source_group("media-io\\Header Files" FILES ${libobs_mediaio_HEADERS})
|
|
|
-source_group("util\\Source Files" FILES ${libobs_util_SOURCES})
|
|
|
-source_group("util\\Header Files" FILES ${libobs_util_HEADERS})
|
|
|
-source_group("audio-monitoring\\Source Files" FILES ${libobs_audio_monitoring_SOURCES})
|
|
|
-source_group("audio-monitoring\\Header Files" FILES ${libobs_audio_monitoring_HEADERS})
|
|
|
-
|
|
|
-include_directories(${CMAKE_SOURCE_DIR}/deps/libcaption)
|
|
|
-set(libobs_PLATFORM_DEPS
|
|
|
- ${libobs_PLATFORM_DEPS}
|
|
|
- caption)
|
|
|
-
|
|
|
-add_library(libobs SHARED ${libobs_SOURCES} ${libobs_HEADERS} ${libobs_data_EFFECTS})
|
|
|
-if(UNIX AND NOT APPLE)
|
|
|
- set(DEST_DIR "${CMAKE_INSTALL_PREFIX}")
|
|
|
- foreach(LIB "obs" "rt")
|
|
|
- set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}")
|
|
|
- endforeach()
|
|
|
- if(LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64(le)?")
|
|
|
- set(PPC64_CFLAGS "-DNO_WARN_X86_INTRINSICS -mvsx")
|
|
|
- endif()
|
|
|
- CONFIGURE_FILE("libobs.pc.in" "libobs.pc" @ONLY)
|
|
|
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libobs.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
|
|
+if(ENABLE_FFMPEG_MUX_DEBUG)
|
|
|
+ target_compile_definitions(libobs PRIVATE SHOW_SUBPROCESSES)
|
|
|
endif()
|
|
|
|
|
|
-set_target_properties(libobs PROPERTIES
|
|
|
- FOLDER "core"
|
|
|
- OUTPUT_NAME obs
|
|
|
- VERSION "0"
|
|
|
- SOVERSION "0")
|
|
|
-target_compile_definitions(libobs
|
|
|
- PUBLIC
|
|
|
- HAVE_OBSCONFIG_H)
|
|
|
-
|
|
|
-target_compile_definitions(libobs
|
|
|
- PUBLIC
|
|
|
- ${ARCH_SIMD_DEFINES})
|
|
|
-
|
|
|
-target_compile_options(libobs
|
|
|
- PUBLIC
|
|
|
- ${ARCH_SIMD_FLAGS})
|
|
|
-
|
|
|
-target_include_directories(libobs
|
|
|
- PUBLIC
|
|
|
- "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
|
|
|
- "$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/config>"
|
|
|
- "$<INSTALL_INTERFACE:${OBS_INCLUDE_DESTINATION}>")
|
|
|
-target_link_libraries(libobs
|
|
|
- PRIVATE
|
|
|
- ${libobs_PLATFORM_DEPS}
|
|
|
- ${libobs_image_loading_LIBRARIES}
|
|
|
- ${OBS_JANSSON_IMPORT}
|
|
|
- ${FFMPEG_LIBRARIES}
|
|
|
- ${ZLIB_LIBRARIES}
|
|
|
- Threads::Threads)
|
|
|
-
|
|
|
-install_obs_core(libobs EXPORT LibObs)
|
|
|
-install_obs_data(libobs data libobs)
|
|
|
-install_obs_headers(${libobs_HEADERS})
|
|
|
-
|
|
|
-obs_install_additional(libobs)
|
|
|
+get_target_property(_OBS_SOURCES libobs SOURCES)
|
|
|
+set(_OBS_HEADERS ${_OBS_SOURCES})
|
|
|
+set(_OBS_FILTERS ${_OBS_SOURCES})
|
|
|
+list(FILTER _OBS_HEADERS INCLUDE REGEX ".*\\.h(pp)?")
|
|
|
+list(FILTER _OBS_SOURCES INCLUDE REGEX ".*\\.(m|c[cp]?p?)")
|
|
|
+list(FILTER _OBS_FILTERS INCLUDE REGEX ".*\\.effect")
|
|
|
+
|
|
|
+source_group(
|
|
|
+ TREE "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
|
+ PREFIX "Source Files"
|
|
|
+ FILES ${_OBS_SOURCES})
|
|
|
+source_group(
|
|
|
+ TREE "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
|
+ PREFIX "Header Files"
|
|
|
+ FILES ${_OBS_HEADERS})
|
|
|
+source_group(
|
|
|
+ TREE "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
|
+ PREFIX "Effect Files"
|
|
|
+ FILES ${_OBS_FILTERS})
|
|
|
+
|
|
|
+setup_binary_target(libobs)
|
|
|
+setup_target_resources(libobs libobs)
|
|
|
+export_target(libobs)
|
|
|
+install_headers(libobs)
|