Instead of erroring out completely when it can't determine if the certificate is valid, proceed anyway. This matches how web browsers treat failed cert revocation checks. schannel just has somewhat paranoid defaults.
507 lines
12 KiB
CMake
507 lines
12 KiB
CMake
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})
|
|
endif()
|
|
|
|
if(UNIX)
|
|
if (NOT APPLE)
|
|
find_package(X11_XCB REQUIRED)
|
|
find_package(XCB OPTIONAL_COMPONENTS XINPUT)
|
|
if (XCB_XINPUT_FOUND)
|
|
set(USE_XINPUT "1")
|
|
else()
|
|
set(USE_XINPUT "0")
|
|
endif()
|
|
find_package(PulseAudio)
|
|
if (NOT "${PULSEAUDIO_LIBRARY}" STREQUAL "")
|
|
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(DBus QUIET)
|
|
else()
|
|
set(HAVE_DBUS "0")
|
|
set(HAVE_PULSEAUDIO "0")
|
|
set(USE_XINPUT "0")
|
|
endif()
|
|
|
|
find_package(ImageMagick QUIET COMPONENTS MagickCore)
|
|
|
|
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.")
|
|
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})
|
|
endif()
|
|
|
|
find_package(ZLIB REQUIRED)
|
|
|
|
include_directories(SYSTEM ${ZLIB_INCLUDE_DIR})
|
|
|
|
add_definitions(-DLIBOBS_EXPORTS)
|
|
|
|
include_directories(${OBS_JANSSON_INCLUDE_DIRS})
|
|
|
|
if(WIN32)
|
|
set(libobs_PLATFORM_SOURCES
|
|
obs-win-crash-handler.c
|
|
obs-windows.c
|
|
util/threading-windows.c
|
|
util/pipe-windows.c
|
|
util/platform-windows.c)
|
|
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-output.c
|
|
audio-monitoring/win32/wasapi-enum-devices.c
|
|
)
|
|
set(libobs_audio_monitoring_HEADERS
|
|
audio-monitoring/win32/wasapi-output.h
|
|
)
|
|
set(libobs_PLATFORM_DEPS winmm psapi)
|
|
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-output.c
|
|
)
|
|
set(libobs_audio_monitoring_HEADERS
|
|
audio-monitoring/osx/mac-helpers.h
|
|
)
|
|
|
|
set_source_files_properties(${libobs_PLATFORM_SOURCES}
|
|
PROPERTIES
|
|
LANGUAGE C
|
|
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
|
|
util/threading-posix.c
|
|
util/pipe-posix.c
|
|
util/platform-nix.c)
|
|
|
|
if(NEEDS_SIMDE)
|
|
set(libobs_PLATFORM_HEADERS
|
|
util/simde/check.h
|
|
util/simde/hedley.h
|
|
util/simde/mmx.h
|
|
util/simde/simde-arch.h
|
|
util/simde/simde-common.h
|
|
util/simde/sse.h
|
|
util/simde/sse2.h
|
|
util/threading-posix.h)
|
|
else()
|
|
set(libobs_PLATFORM_HEADERS
|
|
util/threading-posix.h)
|
|
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-output.c)
|
|
else()
|
|
set(libobs_audio_monitoring_SOURCES
|
|
audio-monitoring/null/null-audio-monitoring.c)
|
|
endif()
|
|
if(DBUS_FOUND)
|
|
set(libobs_PLATFORM_SOURCES ${libobs_PLATFORM_SOURCES}
|
|
util/platform-nix-dbus.c)
|
|
include_directories(${DBUS_INCLUDE_DIRS})
|
|
set(libobs_PLATFORM_DEPS
|
|
${libobs_PLATFORM_DEPS}
|
|
${DBUS_LIBRARIES})
|
|
endif()
|
|
|
|
include_directories(
|
|
${X11_XCB_INCLUDE_DIRS})
|
|
add_definitions(
|
|
${X11_XCB_DEFINITIONS})
|
|
set(libobs_PLATFORM_DEPS
|
|
${libobs_PLATFORM_DEPS}
|
|
${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()
|
|
|
|
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/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/dstr.c
|
|
util/utf8.c
|
|
util/crc32.c
|
|
util/text-lookup.c
|
|
util/cf-parser.c
|
|
util/profiler.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_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/platform.h
|
|
util/profiler.h
|
|
util/profiler.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-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
|
|
${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-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}
|
|
)
|
|
|
|
source_group("callback\\Source Files" FILES ${libobs_callback_SOURCES})
|
|
source_group("callback\\Header Files" FILES ${libobs_callback_HEADERS})
|
|
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})
|
|
|
|
if(BUILD_CAPTIONS)
|
|
include_directories(${CMAKE_SOURCE_DIR}/deps/libcaption)
|
|
set(libobs_PLATFORM_DEPS
|
|
${libobs_PLATFORM_DEPS}
|
|
caption)
|
|
endif()
|
|
|
|
add_library(libobs SHARED ${libobs_SOURCES} ${libobs_HEADERS})
|
|
if(UNIX AND NOT APPLE)
|
|
set(DEST_DIR "${CMAKE_INSTALL_PREFIX}")
|
|
foreach(LIB "obs" "rt")
|
|
set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}")
|
|
endforeach()
|
|
CONFIGURE_FILE("libobs.pc.in" "libobs.pc" @ONLY)
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libobs.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
|
endif()
|
|
|
|
set_target_properties(libobs PROPERTIES
|
|
OUTPUT_NAME obs
|
|
VERSION "0"
|
|
SOVERSION "0")
|
|
target_compile_definitions(libobs
|
|
PUBLIC
|
|
HAVE_OBSCONFIG_H)
|
|
|
|
target_compile_options(libobs
|
|
PUBLIC
|
|
${ARCH_SIMD_FLAGS})
|
|
|
|
target_compile_options(libobs
|
|
PUBLIC
|
|
"${THREADS_DEFINITIONS}")
|
|
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}
|
|
PUBLIC
|
|
${THREADS_LIBRARIES})
|
|
|
|
install_obs_core(libobs EXPORT LibObs)
|
|
install_obs_data(libobs data libobs)
|
|
install_obs_headers(${libobs_HEADERS})
|
|
|
|
obs_install_additional(libobs)
|