deps: Update CMake target source lists with alphabetic sorting

Also manually updates some CMake script files to make code more
readable.
This commit is contained in:
PatTheMav 2023-10-02 22:41:59 +02:00 committed by Ryan Foster
parent 9ae47a7937
commit aa137f0766
18 changed files with 216 additions and 180 deletions

12
deps/CMakeLists.txt vendored
View file

@ -1,16 +1,14 @@
if(OS_WINDOWS)
if(NOT MINGW)
add_subdirectory(w32-pthreads)
endif()
add_subdirectory(ipc-util)
add_subdirectory(w32-pthreads)
endif()
add_subdirectory(blake2)
add_subdirectory(glad)
add_subdirectory(media-playback)
add_subdirectory(file-updater)
add_subdirectory(glad)
add_subdirectory(happy-eyeballs)
add_subdirectory(libcaption)
add_subdirectory(media-playback)
add_subdirectory(obs-scripting)
add_subdirectory(opts-parser)
add_subdirectory(libcaption)
add_subdirectory(uthash)
add_subdirectory(happy-eyeballs)

View file

@ -1,18 +1,13 @@
cmake_minimum_required(VERSION 3.22...3.25)
add_library(blake2 STATIC EXCLUDE_FROM_ALL )
add_library(blake2 OBJECT)
add_library(OBS::blake2 ALIAS blake2)
target_sources(blake2 PRIVATE src/blake2b-ref.c src/blake2.h src/blake2-impl.h)
target_sources(
blake2
PRIVATE src/blake2-impl.h src/blake2b-ref.c
PUBLIC src/blake2.h)
target_include_directories(blake2 PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/src")
set_source_files_properties(
src/blake2b-ref.c PROPERTIES COMPILE_OPTIONS
"$<$<C_COMPILER_ID:AppleClang,Clang>:-Wno-error=implicit-int-conversion>")
if(OS_WINDOWS)
target_compile_options(blake2 PRIVATE $<IF:$<CONFIG:Debug>,/MTd,/MT> /Zl)
target_compile_definitions(blake2 PRIVATE inline=_inline restrict=__restrict)
endif()
set_target_properties(blake2 PROPERTIES FOLDER deps)

View file

@ -7,6 +7,6 @@ add_library(OBS::file-updater ALIAS file-updater)
target_sources(file-updater INTERFACE file-updater/file-updater.c file-updater/file-updater.h)
target_link_libraries(file-updater INTERFACE CURL::libcurl $<$<PLATFORM_ID:Windows>:OBS::w32-pthreads>)
target_include_directories(file-updater INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
target_link_libraries(file-updater INTERFACE CURL::libcurl $<$<PLATFORM_ID:Windows>:OBS::w32-pthreads>)

View file

@ -2,29 +2,32 @@ cmake_minimum_required(VERSION 3.22...3.25)
find_package(OpenGL REQUIRED)
add_library(obsglad STATIC EXCLUDE_FROM_ALL )
add_library(obsglad OBJECT)
add_library(OBS::glad ALIAS obsglad)
if(OBS_CMAKE_VERSION VERSION_LESS 3.0.0)
add_library(OBS::obsglad ALIAS obsglad)
endif()
target_sources(obsglad PRIVATE src/glad.c include/glad/glad.h)
# cmake-format: off
target_sources(
obsglad
PRIVATE src/glad.c
$<$<PLATFORM_ID:Windows>:src/glad_wgl.c>
$<$<TARGET_EXISTS:OpenGL::EGL>:src/glad_egl.c>
$<$<TARGET_EXISTS:OpenGL::EGL>:include/EGL/eglplatform.h>
PUBLIC include/glad/glad.h
"$<$<PLATFORM_ID:Windows>:${CMAKE_CURRENT_SOURCE_DIR}/include/glad/glad_wgl.h>"
"$<$<TARGET_EXISTS:OpenGL::EGL>:${CMAKE_CURRENT_SOURCE_DIR}/include/glad/glad_egl.h>")
# cmake-format: on
target_compile_options(obsglad PRIVATE $<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-strict-prototypes>)
target_include_directories(obsglad PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
target_link_libraries(obsglad PUBLIC OpenGL::GL)
if(OS_WINDOWS)
target_sources(obsglad PRIVATE src/glad_wgl.c include/glad/glad_wgl.h)
elseif(OS_MACOS)
target_compile_options(obsglad PRIVATE -Wno-strict-prototypes)
elseif(OS_LINUX OR OS_FREEBSD)
if(TARGET OpenGL::EGL)
target_sources(obsglad PRIVATE src/glad_egl.c include/EGL/eglplatform.h include/glad/glad_egl.h)
target_link_libraries(obsglad PRIVATE OpenGL::EGL)
endif()
endif()
target_link_libraries(
obsglad
PRIVATE $<$<NOT:$<PLATFORM_ID:Windows,Darwin>>:${CMAKE_DL_LIBS}>
PUBLIC OpenGL::GL $<$<TARGET_EXISTS:OpenGL::EGL>:OpenGL::EGL>)
set_target_properties(obsglad PROPERTIES FOLDER deps POSITION_INDEPENDENT_CODE TRUE)

View file

@ -1,16 +1,15 @@
cmake_minimum_required(VERSION 3.22...3.25)
add_library(happy-eyeballs INTERFACE)
add_library(happy-eyeballs OBJECT)
add_library(OBS::happy-eyeballs ALIAS happy-eyeballs)
target_sources(happy-eyeballs INTERFACE happy-eyeballs.c happy-eyeballs.h)
target_sources(
happy-eyeballs
PRIVATE happy-eyeballs.c
PUBLIC happy-eyeballs.h)
target_include_directories(happy-eyeballs INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(happy-eyeballs PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
target_link_libraries(happy-eyeballs INTERFACE OBS::libobs)
target_link_libraries(happy-eyeballs PUBLIC OBS::libobs)
if(OS_WINDOWS)
target_link_libraries(happy-eyeballs INTERFACE OBS::w32-pthreads)
endif()
set_target_properties(happy-eyeballs PROPERTIES FOLDER deps)
set_target_properties(happy-eyeballs PROPERTIES FOLDER deps POSITION_INDEPENDENT_CODE TRUE)

View file

@ -1,14 +1,12 @@
cmake_minimum_required(VERSION 3.24...3.25)
# cmake-format: off
add_library(ipc-util STATIC EXCLUDE_FROM_ALL)
# cmake-format: on
add_library(ipc-util INTERFACE)
add_library(OBS::ipc-util ALIAS ipc-util)
target_sources(ipc-util PRIVATE ipc-util/pipe.h)
target_include_directories(ipc-util PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
target_sources(
ipc-util INTERFACE "$<$<PLATFORM_ID:Windows>:${CMAKE_CURRENT_SOURCE_DIR}/ipc-util/pipe-windows.c>" ipc-util/pipe.h
"$<$<PLATFORM_ID:Windows>:${CMAKE_CURRENT_SOURCE_DIR}/ipc-util/pipe-windows.h>")
target_sources(ipc-util PRIVATE ipc-util/pipe-windows.c ipc-util/pipe-windows.h)
target_compile_options(ipc-util PRIVATE $<IF:$<CONFIG:Debug>,/MTd,/MT> /Zl)
target_include_directories(ipc-util INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
set_target_properties(ipc-util PROPERTIES FOLDER deps POSITION_INDEPENDENT_CODE ON)
set_target_properties(ipc-util PROPERTIES FOLDER deps)

View file

@ -1,9 +1,17 @@
cmake_minimum_required(VERSION 3.22...3.25)
add_library(json11 INTERFACE)
add_library(json11 OBJECT)
add_library(OBS::json11 ALIAS json11)
target_include_directories(json11 INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
target_compile_options(json11 INTERFACE $<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:-Wno-unqualified-std-cast-call>)
target_sources(
json11
PRIVATE json11.cpp
PUBLIC json11.hpp)
target_sources(json11 INTERFACE json11.cpp json11.hpp)
target_include_directories(json11 PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
if(CMAKE_CXX_COMPILER_ID MATCHES "(AppleClang|Clang)" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 14)
target_compile_options(json11 PUBLIC -Wno-unqualified-std-cast-call)
endif()
set_target_properties(json11 PROPERTIES FOLDER deps)

View file

@ -5,33 +5,38 @@ add_library(OBS::caption ALIAS caption)
target_sources(
caption
PRIVATE src/caption.c
PRIVATE # cmake-format: sortable
caption/cea708.h
caption/eia608.h
caption/eia608_charmap.h
caption/mpeg.h
caption/scc.h
caption/utf8.h
src/caption.c
src/cea708.c
src/eia608.c
src/eia608_charmap.c
src/eia608_from_utf8.c
src/mpeg.c
src/srt.c
src/scc.c
src/srt.c
src/utf8.c
src/xds.c
caption/eia608.h
caption/eia608_charmap.h
caption/cea708.h
caption/mpeg.h
caption/scc.h
caption/utf8.h
PUBLIC caption/caption.h)
target_compile_definitions(caption PRIVATE __STDC_CONSTANT_MACROS $<$<CXX_COMPILER_ID:MSVC>:_CRT_SECURE_NO_WARNINGS>)
target_compile_options(
caption
PRIVATE "$<$<CXX_COMPILER_ID:Clang,AppleClang,GNU>:-Wno-unused-but-set-parameter;-Wno-comma;-Wno-strict-prototypes>")
target_include_directories(
caption
PRIVATE caption
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
set_target_properties(caption PROPERTIES FOLDER deps POSITION_INDEPENDENT_CODE ON)
target_compile_definitions(caption PRIVATE __STDC_CONSTANT_MACROS)
# cmake-format: off
target_compile_options(
caption
PRIVATE $<$<COMPILE_LANG_AND_ID:C,Clang,AppleClang,GNU>:-Wno-unused-but-set-parameter>
$<$<COMPILE_LANG_AND_ID:C,Clang,AppleClang,GNU>:-Wno-strict-prototypes>
$<$<COMPILE_LANG_AND_ID:C,Clang,AppleClang>:-Wno-comma>)
# cmake-format: on
set_target_properties(caption PROPERTIES FOLDER deps POSITION_INDEPENDENT_CODE TRUE)

View file

@ -1,24 +1,28 @@
cmake_minimum_required(VERSION 3.22...3.25)
find_package(FFmpeg REQUIRED COMPONENTS avcodec avdevice avutil avformat)
find_package(FFmpeg REQUIRED avcodec avdevice avutil avformat)
add_library(media-playback INTERFACE)
add_library(OBS::media-playback ALIAS media-playback)
target_sources(
media-playback
INTERFACE media-playback/media.c
media-playback/media.h
INTERFACE # cmake-format: sortable
media-playback/cache.c
media-playback/cache.h
media-playback/closest-format.h
media-playback/decode.c
media-playback/decode.h
media-playback/media-playback.c
media-playback/media-playback.h
media-playback/closest-format.h)
media-playback/media.c
media-playback/media.h)
target_include_directories(media-playback INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
target_compile_options(media-playback INTERFACE ${ARCH_SIMD_FLAGS})
target_compile_definitions(media-playback INTERFACE ${ARCH_SIMD_DEFINES})
if(OBS_CMAKE_VERSION VERSION_LESS 3.0)
target_compile_options(media-playback INTERFACE ${ARCH_SIMD_FLAGS})
target_compile_definitions(media-playback INTERFACE ${ARCH_SIMD_DEFINES})
endif()
target_link_libraries(media-playback INTERFACE FFmpeg::avcodec FFmpeg::avdevice FFmpeg::avutil FFmpeg::avformat)

View file

@ -7,11 +7,7 @@ if(NOT ENABLE_SCRIPTING)
return()
endif()
add_library(obs-cstrcache INTERFACE)
add_library(OBS::cstrcache ALIAS obs-cstrcache)
target_sources(obs-cstrcache INTERFACE cstrcache.cpp cstrcache.h)
target_include_directories(obs-cstrcache INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
include(cmake/cstrcache.cmake)
find_package(SWIG 4 REQUIRED)
@ -31,20 +27,28 @@ endif()
target_sources(
obs-scripting
PUBLIC obs-scripting.h
PRIVATE obs-scripting.c obs-scripting-logging.c obs-scripting-callback.h
$<$<BOOL:${ENABLE_UI}>:obs-scripting-python-frontend.c> $<$<BOOL:${ENABLE_UI}>:obs-scripting-lua-frontend.c>)
PRIVATE obs-scripting-callback.h obs-scripting-logging.c obs-scripting.c)
target_compile_definitions(obs-scripting PRIVATE SCRIPT_DIR="${OBS_SCRIPT_PLUGIN_PATH}"
$<$<BOOL:${ENABLE_UI}>:ENABLE_UI>)
target_compile_features(obs-scripting PRIVATE cxx_auto_type)
target_include_directories(obs-scripting PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(obs-scripting PRIVATE OBS::libobs OBS::cstrcache $<$<BOOL:${ENABLE_UI}>:OBS::frontend-api>
$<$<PLATFORM_ID:Windows>:OBS::w32-pthreads> $<$<PLATFORM_ID:Darwin>:objc>)
target_include_directories(obs-scripting PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
# cmake-format: off
target_link_libraries(
obs-scripting
PRIVATE OBS::libobs
OBS::cstrcache
$<$<BOOL:${ENABLE_UI}>:OBS::frontend-api>
$<$<PLATFORM_ID:Windows>:OBS::w32-pthreads>
$<$<PLATFORM_ID:Darwin>:objc>)
# cmake-format: on
if(OS_WINDOWS)
configure_file(cmake/windows/obs-module.rc.in obs-scripting.rc)
target_sources(obs-scripting PRIVATE obs-scripting.rc)
endif()
# cmake-format: off
set_target_properties_obs(obs-scripting PROPERTIES FOLDER scripting PREFIX "")
# cmake-format: on

View file

@ -0,0 +1,5 @@
add_library(obs-cstrcache INTERFACE)
add_library(OBS::cstrcache ALIAS obs-cstrcache)
target_sources(obs-cstrcache INTERFACE cstrcache.cpp cstrcache.h)
target_include_directories(obs-cstrcache INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")

View file

@ -4,26 +4,32 @@ option(ENABLE_SCRIPTING_LUA "Enable Lua scripting support" ON)
if(ENABLE_SCRIPTING_LUA)
add_subdirectory(obslua)
find_package(Luajit REQUIRED)
add_custom_command(
OUTPUT swig/swigluarun.h
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory swig
COMMAND ${CMAKE_COMMAND} -E env "SWIG_LIB=${SWIG_DIR}" ${SWIG_EXECUTABLE} -lua -external-runtime swig/swigluarun.h
COMMENT "obs-scripting - generating Luajit SWIG interface headers")
set_source_files_properties(swig/swigluarun.h PROPERTIES GENERATED TRUE)
target_sources(
obs-scripting
PRIVATE # cmake-format: sortable
$<$<BOOL:${ENABLE_UI}>:obs-scripting-lua-frontend.c> obs-scripting-lua-source.c obs-scripting-lua.c
obs-scripting-lua.h swig/swigluarun.h)
target_compile_definitions(obs-scripting PUBLIC LUAJIT_FOUND)
set_source_files_properties(
obs-scripting-lua.c obs-scripting-lua-source.c
PROPERTIES COMPILE_OPTIONS $<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-error=shorten-64-to-32>)
target_link_libraries(obs-scripting PRIVATE Luajit::Luajit)
else()
target_disable_feature(obs-scripting "Lua scripting support")
endif()
target_sources(obs-scripting PRIVATE obs-scripting-lua.c obs-scripting-lua.h obs-scripting-lua-source.c)
target_compile_definitions(obs-scripting PUBLIC LUAJIT_FOUND)
add_custom_command(
OUTPUT swig/swigluarun.h
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory swig
COMMAND ${CMAKE_COMMAND} -E env "SWIG_LIB=${SWIG_DIR}" ${SWIG_EXECUTABLE} -lua -external-runtime swig/swigluarun.h
COMMENT "obs-scripting - generating Luajit SWIG interface headers")
target_sources(obs-scripting PRIVATE swig/swigluarun.h)
set_source_files_properties(swig/swigluarun.h PROPERTIES GENERATED ON)
set_source_files_properties(
obs-scripting-lua.c obs-scripting-lua-source.c
PROPERTIES COMPILE_OPTIONS "$<$<C_COMPILER_ID:AppleClang,Clang>:-Wno-error=shorten-64-to-32;-Wno-error=shadow>")
target_link_libraries(obs-scripting PRIVATE Luajit::Luajit)

View file

@ -4,46 +4,46 @@ option(ENABLE_SCRIPTING_PYTHON "Enable Python scripting support" ON)
if(ENABLE_SCRIPTING_PYTHON)
add_subdirectory(obspython)
if(OS_WINDOWS)
find_package(Python 3.8...<3.11 REQUIRED Interpreter Development)
else()
find_package(Python 3.8...<3.12 REQUIRED Interpreter Development)
endif()
add_custom_command(
OUTPUT swig/swigpyrun.h
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory swig
COMMAND ${CMAKE_COMMAND} -E env "SWIG_LIB=${SWIG_DIR}" ${SWIG_EXECUTABLE} -python
$<$<PLATFORM_ID:Windows,Darwin>:-py3-stable-abi> -external-runtime swig/swigpyrun.h
COMMENT "obs-scripting - generating Python 3 SWIG interface headers")
set_source_files_properties(swig/swigpyrun.h PROPERTIES GENERATED TRUE)
target_sources(
obs-scripting
PRIVATE # cmake-format: sortable
$<$<BOOL:${ENABLE_UI}>:obs-scripting-python-frontend.c>
$<$<PLATFORM_ID:Windows,Darwin>:obs-scripting-python-import.c>
obs-scripting-python-import.h
obs-scripting-python.c
obs-scripting-python.h
swig/swigpyrun.h)
target_compile_definitions(
obs-scripting
PRIVATE ENABLE_SCRIPTING PYTHON_LIB="$<TARGET_LINKER_FILE_NAME:Python::Python>"
PUBLIC Python_FOUND)
target_include_directories(
obs-scripting
PRIVATE "$<$<PLATFORM_ID:Windows,Darwin>:$<TARGET_PROPERTY:Python::Python,INTERFACE_INCLUDE_DIRECTORIES>>")
target_link_libraries(obs-scripting PRIVATE $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:Python::Python>)
target_link_options(obs-scripting PRIVATE $<$<PLATFORM_ID:Darwin>:LINKER:-undefined,dynamic_lookup>)
else()
target_disable_feature(obs-scripting "Python scripting support")
endif()
target_sources(obs-scripting PRIVATE obs-scripting-python.c obs-scripting-python.h obs-scripting-python-import.h)
target_compile_definitions(
obs-scripting
PRIVATE ENABLE_SCRIPTING PYTHON_LIB="$<TARGET_LINKER_FILE_NAME:Python::Python>"
PUBLIC Python_FOUND)
add_custom_command(
OUTPUT swig/swigpyrun.h
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory swig
COMMAND ${CMAKE_COMMAND} -E env "SWIG_LIB=${SWIG_DIR}" ${SWIG_EXECUTABLE} -python
$<IF:$<BOOL:${OS_LINUX}>,-py3,-py3-stable-abi> -external-runtime swig/swigpyrun.h
COMMENT "obs-scripting - generating Python 3 SWIG interface headers")
target_sources(obs-scripting PRIVATE swig/swigpyrun.h)
set_source_files_properties(swig/swigpyrun.h PROPERTIES GENERATED ON)
if(OS_WINDOWS)
target_sources(obs-scripting PRIVATE obs-scripting-python-import.c)
get_target_property(_python_include_directory Python::Python INTERFACE_INCLUDE_DIRECTORIES)
target_include_directories(obs-scripting PRIVATE ${_python_include_directory})
elseif(OS_MACOS)
target_sources(obs-scripting PRIVATE obs-scripting-python-import.c)
get_target_property(_python_include_directory Python::Python INTERFACE_INCLUDE_DIRECTORIES)
target_include_directories(obs-scripting PRIVATE ${_python_include_directory})
target_link_options(obs-scripting PRIVATE LINKER:-undefined LINKER:dynamic_lookup)
elseif(OS_LINUX OR OS_FREEBSD)
target_link_libraries(obs-scripting PRIVATE Python::Python)
endif()

View file

@ -11,12 +11,12 @@ if(POLICY CMP0086)
endif()
find_package(Luajit REQUIRED)
find_package(SWIG 4 REQUIRED)
include(UseSWIG)
set_source_files_properties(obslua.i PROPERTIES USE_TARGET_INCLUDE_DIRECTORIES TRUE)
swig_add_library(
obslua
LANGUAGE lua
@ -25,21 +25,21 @@ swig_add_library(
add_library(OBS::lua ALIAS obslua)
target_compile_options(obslua PRIVATE "$<$<C_COMPILER_ID:AppleClang,Clang>:-Wno-error=shorten-64-to-32>")
target_compile_options(
obslua
PRIVATE $<$<PLATFORM_ID:Windows>:/wd4054>
$<$<PLATFORM_ID:Windows>:/wd4197>
$<$<PLATFORM_ID:Windows>:/wd4244>
$<$<PLATFORM_ID:Windows>:/wd4267>
$<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-shorten-64-to-32>
$<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-unreachable-code>
$<$<COMPILE_LANG_AND_ID:C,GNU>:-Wno-maybe-uninitialized>)
target_compile_definitions(obslua PRIVATE SWIG_TYPE_TABLE=obslua SWIG_LUA_INTERPRETER_NO_DEBUG
$<$<BOOL:${ENABLE_UI}>:ENABLE_UI>)
target_link_libraries(obslua PRIVATE OBS::scripting OBS::cstrcache OBS::libobs Luajit::Luajit
$<$<BOOL:ENABLE_UI>:OBS::frontend-api>)
if(OS_WINDOWS)
target_compile_options(obslua PRIVATE /wd4054 /wd4197 /wd4244 /wd4267)
elseif(OS_MACOS)
set_property(TARGET obslua PROPERTY XCODE_ATTRIBUTE_STRIP_STYLE non-global)
target_compile_options(obslua PRIVATE -Wno-unreachable-code)
elseif(OS_LINUX OR OS_FREEBSD)
target_compile_options(obslua PRIVATE -Wno-maybe-uninitialized)
endif()
target_link_libraries(obslua PRIVATE OBS::cstrcache OBS::libobs OBS::scripting Luajit::Luajit
$<$<BOOL:${ENABLE_UI}>:OBS::frontend-api>)
set_property(
TARGET obslua
@ -47,4 +47,6 @@ set_property(
PROPERTY SWIG_COMPILE_DEFINITIONS "SWIG_TYPE_TABLE=obslua" "SWIG_LUA_INTERPRETER_NO_DEBUG"
"$<$<BOOL:${ENABLE_UI}>:ENABLE_UI>")
set_target_properties_obs(obslua PROPERTIES FOLDER scripting)
# cmake-format: off
set_target_properties_obs(obslua PROPERTIES FOLDER scripting XCODE_ATTRIBUTE_STRIP_STYLE non-global)
# cmake-format: on

View file

@ -20,7 +20,7 @@ find_package(SWIG 4 REQUIRED)
include(UseSWIG)
set_source_files_properties(obspython.i PROPERTIES USE_TARGET_INCLUDE_DIRECTORIES TRUE
SWIG_FLAGS "$<IF:$<BOOL:${OS_LINUX}>,-py3,-py3-stable-abi>")
SWIG_FLAGS $<$<PLATFORM_ID:Windows,Darwin>:-py3-stable-abi>)
swig_add_library(
obspython
@ -35,29 +35,26 @@ file(
OUTPUT $<$<PLATFORM_ID:Windows>:$<CONFIG>/>obspython.h
CONTENT "#pragma once\n\n#define PYTHON_LIB \"$<TARGET_LINKER_FILE_NAME:Python::Python>\"\n")
target_include_directories(obspython PRIVATE "$<$<PLATFORM_ID:Windows>:${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>>")
target_include_directories(
obspython PRIVATE "$<$<PLATFORM_ID:Windows>:${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>>"
"$<$<PLATFORM_ID:Darwin>:$<TARGET_PROPERTY:Python::Python,INTERFACE_INCLUDE_DIRECTORIES>>")
list(APPEND _SWIG_DEFINITIONS "SWIG_TYPE_TABLE=obspython" "Py_ENABLE_SHARED=1" "SWIG_PYTHON_INTERPRETER_NO_DEBUG")
target_compile_options(
obspython
PRIVATE $<$<PLATFORM_ID:Windows>:/wd4100>
$<$<PLATFORM_ID:Windows>:/wd4197>
$<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-unused-parameter>
$<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-macro-redefined>
$<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-unreachable-code>)
target_compile_definitions(obspython PRIVATE SWIG_TYPE_TABLE=obspython Py_ENABLE_SHARED=1
SWIG_PYTHON_INTERPRETER_NO_DEBUG $<$<BOOL:${ENABLE_UI}>:ENABLE_UI>)
target_link_libraries(obspython PRIVATE OBS::scripting OBS::cstrcache OBS::libobs
$<$<BOOL:${ENABLE_UI}>:OBS::frontend-api>)
target_link_libraries(
obspython PRIVATE OBS::cstrcache OBS::libobs OBS::scripting $<$<BOOL:${ENABLE_UI}>:OBS::frontend-api>
$<$<NOT:$<PLATFORM_ID:Darwin>>:Python::Python>)
if(OS_WINDOWS)
target_link_libraries(obspython PRIVATE Python::Python)
target_compile_options(obspython PRIVATE /wd4100 /wd4197)
elseif(OS_MACOS)
get_target_property(_python_include_directory Python::Python INTERFACE_INCLUDE_DIRECTORIES)
target_include_directories(obspython PRIVATE ${_python_include_directory})
target_compile_options(obspython PRIVATE -Wno-unused-parameter -Wno-macro-redefined -Wno-unreachable-code)
target_link_options(obspython PUBLIC LINKER:-undefined,dynamic_lookup)
set_property(TARGET obspython PROPERTY XCODE_ATTRIBUTE_STRIP_STYLE non-global)
elseif(OS_LINUX OR OS_FREEBSD)
target_link_libraries(obspython PRIVATE Python::Python)
endif()
target_link_options(obspython PRIVATE $<$<PLATFORM_ID:Darwin>:LINKER:-undefined,dynamic_lookup>)
if(MSVC OR XCODE)
add_custom_command(
@ -74,4 +71,6 @@ set_property(
PROPERTY SWIG_COMPILE_DEFINITIONS "SWIG_TYPE_TABLE=obspython" "Py_ENABLE_SHARED=1" "SWIG_PYTHON_INTERPRETER_NO_DEBUG"
"$<$<BOOL:${ENABLE_UI}>:ENABLE_UI>" "$<$<PLATFORM_ID:Windows>:MS_NO_COREDLL>")
set_target_properties_obs(obspython PROPERTIES FOLDER scripting PREFIX "_")
# cmake-format: off
set_target_properties_obs(obspython PROPERTIES FOLDER scripting PREFIX "_" XCODE_ATTRIBUTE_STRIP_STYLE non-global)
# cmake-format: on

View file

@ -1,9 +1,15 @@
cmake_minimum_required(VERSION 3.22...3.25)
add_library(opts-parser INTERFACE)
add_library(opts-parser OBJECT)
add_library(OBS::opts-parser ALIAS opts-parser)
target_sources(opts-parser INTERFACE opts-parser.c opts-parser.h)
target_include_directories(opts-parser INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
target_sources(
opts-parser
PRIVATE opts-parser.c
PUBLIC opts-parser.h)
target_link_libraries(opts-parser INTERFACE OBS::libobs)
target_include_directories(opts-parser PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
target_link_libraries(opts-parser PUBLIC OBS::libobs)
set_target_properties(opts-parser PROPERTIES FOLDER deps)

View file

@ -5,4 +5,4 @@ add_library(OBS::uthash ALIAS uthash)
target_sources(uthash INTERFACE uthash/uthash.h)
set_target_properties(uthash PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}")
target_include_directories(uthash INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")

View file

@ -5,8 +5,11 @@ legacy_check()
add_library(w32-pthreads SHARED EXCLUDE_FROM_ALL )
add_library(OBS::w32-pthreads ALIAS w32-pthreads)
target_sources(w32-pthreads PRIVATE implement.h pthread.c pthread.h sched.h semaphore.h w32-pthreads.rc)
target_sources(w32-pthreads PRIVATE # cmake-format: sortable
implement.h pthread.c pthread.h sched.h semaphore.h w32-pthreads.rc)
target_compile_definitions(w32-pthreads PRIVATE __CLEANUP_C PTW32_BUILD)
target_include_directories(w32-pthreads PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>")
configure_file(cmake/windows/obs-module.rc.in w32-pthreads.rc)
@ -17,4 +20,5 @@ set_property(
TARGET w32-pthreads
APPEND
PROPERTY PUBLIC_HEADER pthread.h sched.h)
target_export(w32-pthreads)