Skip to content

Commit 68fe950

Browse files
committed
🎉 Initial Commit.
0 parents  commit 68fe950

File tree

6 files changed

+992
-0
lines changed

6 files changed

+992
-0
lines changed

.gitignore

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
*.App
2+
*.[oadi]
3+
*.ass
4+
*.avi
5+
*.bz2
6+
*.cache
7+
*.dep
8+
*.db
9+
*.dll
10+
*.dmg
11+
*.exe
12+
*.gch
13+
*.gz
14+
*.idb
15+
*.ilk
16+
*.log
17+
*.manifest
18+
!src/dpi_aware.manifest
19+
*.mkv
20+
*.mo
21+
*.ncb
22+
*.obj
23+
*.opensdf
24+
*.orig
25+
*.patch
26+
*.pch
27+
*.pdb
28+
*.profdata
29+
*.profraw
30+
*.sdf
31+
*.so
32+
*.srt
33+
*.suo
34+
*.swp
35+
*.ts
36+
*.user
37+
*.vsp
38+
*.y4m
39+
*.zip
40+
*~
41+
42+
/bin
43+
/include
44+
/ipch
45+
/lib
46+
/obj
47+
/tests/data
48+
49+
.lvimrc
50+
.syntastic_cpp_config
51+
/Makefile.inc
52+
BuildLog.htm
53+
acconf.h
54+
acconf.h.in
55+
aclocal.m4
56+
autom4te.cache
57+
automation/aegisub-lua
58+
build/userconfig/*.props
59+
conf.sh
60+
config.log
61+
config.status
62+
config_windows.h
63+
configure
64+
git_version.h
65+
git_version.xml
66+
packages/desktop/aegisub.desktop
67+
packages/desktop/aegisub.desktop.template
68+
packages/desktop/aegisub.appdata.xml
69+
packages/desktop/aegisub.appdata.xml.template
70+
src/aegisub
71+
resources/configs/default_config_platform.json
72+
svn-revision.h
73+
svn_revision
74+
tests/*.json
75+
tests/run
76+
tools/osx-bundle-restart-helper
77+
tools/osx-bundle.sed
78+
tools/repack-thes-dict
79+
tools/repack-thes-dict.dSYM
80+
vendor/fribidi
81+
vendor/luajit/src/host/buildvm
82+
vendor/luajit/src/host/minilua
83+
vendor/luajit/src/jit/vmdef.lua
84+
vendor/luajit/src/gen
85+
vendor/luajit/src/lj_vm.s
86+
vendor/luajit/src/luajit
87+
88+
.nuget
89+
.vs
90+
.vscode
91+
92+
src/generated
93+
out
94+
temp
95+
CMakeSettings.json
96+
/t2

CMakeLists.txt

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
cmake_minimum_required(VERSION 3.5)
2+
project(obs-streamlink)
3+
4+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
5+
6+
include(FindLibObs.cmake)
7+
find_package(LibObs REQUIRED)
8+
9+
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
10+
set(ARCH 64)
11+
else()
12+
set(ARCH 32)
13+
endif()
14+
15+
add_library(obs-streamlink MODULE
16+
main.cpp)
17+
18+
target_include_directories(obs-streamlink PUBLIC "${LIBOBS_INCLUDE_DIR}/../UI/obs-frontend-api")
19+
target_link_libraries(obs-streamlink libobs)
20+
21+
# Windows
22+
if(WIN32)
23+
set(OBS_FRONTEND_LIB "OBS_FRONTEND_LIB-NOTFOUND" CACHE FILEPATH "OBS frontend library")
24+
if(OBS_FRONTEND_LIB EQUAL "OBS_FRONTEND_LIB-NOTFOUND")
25+
message(FATAL_ERROR "Could not find OBS Frontend API\'s library !")
26+
endif()
27+
28+
string(REGEX REPLACE "/RTC(su|[1su])" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
29+
message("${CMAKE_CXX_FLAGS_RELEASE}")
30+
31+
if(ARCH EQUAL 64)
32+
set(OBS_ARCH_NAME "64bit")
33+
set(OBS_BUILDDIR_ARCH "build64")
34+
else()
35+
set(OBS_ARCH_NAME "32bit")
36+
set(OBS_BUILDDIR_ARCH "build32")
37+
add_definitions(/arch:SSE2)
38+
endif()
39+
40+
find_package(w32-pthreads REQUIRED)
41+
42+
target_link_libraries(obs-streamlink
43+
"${OBS_FRONTEND_LIB}"
44+
w32-pthreads)
45+
46+
set(RELEASE_DIR "${PROJECT_SOURCE_DIR}/release")
47+
add_custom_command(TARGET obs-streamlink POST_BUILD
48+
COMMAND if $<CONFIG:Release>==1 (
49+
"${CMAKE_COMMAND}" -E make_directory
50+
"${RELEASE_DIR}/data/obs-plugins/obs-streamlink"
51+
"${RELEASE_DIR}/obs-plugins/${OBS_ARCH_NAME}")
52+
53+
COMMAND if $<CONFIG:Release>==1 (
54+
"${CMAKE_COMMAND}" -E copy_directory
55+
"${PROJECT_SOURCE_DIR}/data"
56+
"${RELEASE_DIR}/data/obs-plugins/obs-streamlink")
57+
58+
COMMAND if $<CONFIG:Release>==1 (
59+
"${CMAKE_COMMAND}" -E copy
60+
"$<TARGET_FILE:obs-streamlink>"
61+
"${RELEASE_DIR}/obs-plugins/${OBS_ARCH_NAME}")
62+
63+
# Copy to obs-studio dev environment for immediate testing
64+
COMMAND if $<CONFIG:Debug>==1 (
65+
"${CMAKE_COMMAND}" -E copy
66+
"$<TARGET_FILE:obs-streamlink>"
67+
"${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/obs-plugins/${OBS_ARCH_NAME}")
68+
69+
COMMAND if $<CONFIG:Debug>==1 (
70+
"${CMAKE_COMMAND}" -E make_directory
71+
"${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/data/obs-plugins/obs-streamlink")
72+
73+
COMMAND if $<CONFIG:Debug>==1 (
74+
"${CMAKE_COMMAND}" -E copy_directory
75+
"${PROJECT_SOURCE_DIR}/data"
76+
"${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/data/obs-plugins/obs-streamlink")
77+
)
78+
endif()
79+
80+
# OSX
81+
if(APPLE)
82+
set_target_properties(obs-streamlink PROPERTIES PREFIX "")
83+
target_link_libraries(obs-streamlink
84+
"${OBS_FRONTEND_LIB}")
85+
endif()
86+
87+
# Linux
88+
if(UNIX AND NOT APPLE)
89+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -mtune=core2 -Ofast")
90+
91+
if(ARCH EQUAL 64)
92+
set(ARCH_NAME "x86_64")
93+
else()
94+
set(ARCH_NAME "i686")
95+
endif()
96+
97+
set_target_properties(obs-streamlink PROPERTIES PREFIX "")
98+
99+
target_link_libraries(obs-streamlink
100+
obs-frontend-api)
101+
102+
file(GLOB locale_files data/locale/*.ini)
103+
execute_process(COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE UNAME_MACHINE)
104+
105+
install(TARGETS obs-streamlink
106+
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/obs-plugins)
107+
# Dirty fix for Ubuntu
108+
install(TARGETS obs-streamlink
109+
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${UNAME_MACHINE}-linux-gnu/obs-plugins)
110+
111+
install(FILES ${locale_files}
112+
DESTINATION "${CMAKE_INSTALL_PREFIX}/share/obs/obs-plugins/obs-streamlink/locale")
113+
endif()

FindLibObs.cmake

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# This module can be copied and used by external plugins for OBS
2+
#
3+
# Once done these will be defined:
4+
#
5+
# LIBOBS_FOUND
6+
# LIBOBS_INCLUDE_DIRS
7+
# LIBOBS_LIBRARIES
8+
9+
find_package(PkgConfig QUIET)
10+
if (PKG_CONFIG_FOUND)
11+
pkg_check_modules(_OBS QUIET obs libobs)
12+
endif()
13+
14+
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
15+
set(_lib_suffix 64)
16+
else()
17+
set(_lib_suffix 32)
18+
endif()
19+
20+
if(DEFINED CMAKE_BUILD_TYPE)
21+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
22+
set(_build_type_base "debug")
23+
else()
24+
set(_build_type_base "release")
25+
endif()
26+
endif()
27+
28+
find_path(LIBOBS_INCLUDE_DIR
29+
NAMES obs.h
30+
HINTS
31+
ENV obsPath${_lib_suffix}
32+
ENV obsPath
33+
${obsPath}
34+
PATHS
35+
/usr/include /usr/local/include /opt/local/include /sw/include
36+
PATH_SUFFIXES
37+
libobs
38+
)
39+
40+
function(find_obs_lib base_name repo_build_path lib_name)
41+
string(TOUPPER "${base_name}" base_name_u)
42+
43+
if(DEFINED _build_type_base)
44+
set(_build_type_${repo_build_path} "${_build_type_base}/${repo_build_path}")
45+
set(_build_type_${repo_build_path}${_lib_suffix} "${_build_type_base}${_lib_suffix}/${repo_build_path}")
46+
endif()
47+
48+
find_library(${base_name_u}_LIB
49+
NAMES ${_${base_name_u}_LIBRARIES} ${lib_name} lib${lib_name}
50+
HINTS
51+
ENV obsPath${_lib_suffix}
52+
ENV obsPath
53+
${obsPath}
54+
${_${base_name_u}_LIBRARY_DIRS}
55+
PATHS
56+
/usr/lib /usr/local/lib /opt/local/lib /sw/lib
57+
PATH_SUFFIXES
58+
lib${_lib_suffix} lib
59+
libs${_lib_suffix} libs
60+
bin${_lib_suffix} bin
61+
../lib${_lib_suffix} ../lib
62+
../libs${_lib_suffix} ../libs
63+
../bin${_lib_suffix} ../bin
64+
# base repo non-msvc-specific search paths
65+
${_build_type_${repo_build_path}}
66+
${_build_type_${repo_build_path}${_lib_suffix}}
67+
build/${repo_build_path}
68+
build${_lib_suffix}/${repo_build_path}
69+
# base repo msvc-specific search paths on windows
70+
build${_lib_suffix}/${repo_build_path}/Debug
71+
build${_lib_suffix}/${repo_build_path}/RelWithDebInfo
72+
build/${repo_build_path}/Debug
73+
build/${repo_build_path}/RelWithDebInfo
74+
)
75+
endfunction()
76+
77+
find_obs_lib(LIBOBS libobs obs)
78+
79+
if(MSVC)
80+
find_obs_lib(W32_PTHREADS deps/w32-pthreads w32-pthreads)
81+
endif()
82+
83+
include(FindPackageHandleStandardArgs)
84+
find_package_handle_standard_args(Libobs DEFAULT_MSG LIBOBS_LIB LIBOBS_INCLUDE_DIR)
85+
mark_as_advanced(LIBOBS_INCLUDE_DIR LIBOBS_LIB)
86+
87+
if(LIBOBS_FOUND)
88+
if(MSVC)
89+
if (NOT DEFINED W32_PTHREADS_LIB)
90+
message(FATAL_ERROR "Could not find the w32-pthreads library" )
91+
endif()
92+
93+
set(W32_PTHREADS_INCLUDE_DIR ${LIBOBS_INCLUDE_DIR}/../deps/w32-pthreads)
94+
endif()
95+
96+
set(LIBOBS_INCLUDE_DIRS ${LIBOBS_INCLUDE_DIR} ${W32_PTHREADS_INCLUDE_DIR})
97+
set(LIBOBS_LIBRARIES ${LIBOBS_LIB} ${W32_PTHREADS_LIB})
98+
include(${LIBOBS_INCLUDE_DIR}/../cmake/external/ObsPluginHelpers.cmake)
99+
100+
# allows external plugins to easily use/share common dependencies that are often included with libobs (such as FFmpeg)
101+
if(NOT DEFINED INCLUDED_LIBOBS_CMAKE_MODULES)
102+
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${LIBOBS_INCLUDE_DIR}/../cmake/Modules/")
103+
set(INCLUDED_LIBOBS_CMAKE_MODULES true)
104+
endif()
105+
else()
106+
message(FATAL_ERROR "Could not find the libobs library" )
107+
endif()

0 commit comments

Comments
 (0)