Merge pull request #77 from BtbN/cmake_export

Export libobs cmake target, so external plugins can be built
This commit is contained in:
Jim
2014-05-08 18:52:01 -07:00
13 changed files with 140 additions and 23 deletions

View File

@@ -78,4 +78,8 @@ endif()
set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}")
if(UNIX_STRUCTURE)
set(CPACK_SET_DESTDIR TRUE)
endif()
include(CPack)

View File

@@ -55,6 +55,8 @@ if(NOT UNIX_STRUCTURE)
set(OBS_PLUGIN64_DESTINATION "obs-plugins/64bit")
add_definitions(-DOBS_DATA_PATH="../../${OBS_DATA_DESTINATION}")
endif()
set(OBS_CMAKE_DESTINATION "cmake")
set(OBS_INCLUDE_DESTINATION "include")
else()
set(OBS_EXECUTABLE_DESTINATION "bin")
set(OBS_EXECUTABLE32_DESTINATION "bin32")
@@ -66,6 +68,8 @@ else()
set(OBS_PLUGIN32_DESTINATION "lib32/obs-plugins")
set(OBS_PLUGIN64_DESTINATION "lib64/obs-plugins")
set(OBS_DATA_DESTINATION "share/obs")
set(OBS_CMAKE_DESTINATION "lib/cmake")
set(OBS_INCLUDE_DESTINATION "include/obs")
add_definitions(-DOBS_DATA_PATH="${OBS_DATA_DESTINATION}")
add_definitions(-DOBS_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}/")
endif()
@@ -137,6 +141,56 @@ function(obs_install_additional)
endif()
endfunction()
macro(export_obs_core target exportname)
install(TARGETS ${target}
EXPORT "${exportname}Target"
LIBRARY DESTINATION "${OBS_LIBRARY_DESTINATION}"
ARCHIVE DESTINATION "${OBS_LIBRARY_DESTINATION}"
RUNTIME DESTINATION "${OBS_EXECUTABLE_DESTINATION}")
export(TARGETS ${target} FILE "${CMAKE_CURRENT_BINARY_DIR}/${exportname}Target.cmake")
export(PACKAGE "${exportname}")
set(CONF_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}")
set(CONF_PLUGIN_DEST "${CMAKE_BINARY_DIR}/rundir/${CMAKE_BUILD_TYPE}/obs-plugins/${_lib_suffix}bit")
set(CONF_PLUGIN_DEST32 "${CMAKE_BINARY_DIR}/rundir/${CMAKE_BUILD_TYPE}/obs-plugins/32bit")
set(CONF_PLUGIN_DEST64 "${CMAKE_BINARY_DIR}/rundir/${CMAKE_BUILD_TYPE}/obs-plugins/64bit")
configure_file("${exportname}Config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${exportname}Config.cmake" @ONLY)
file(RELATIVE_PATH _pdir "${CMAKE_INSTALL_PREFIX}/${OBS_CMAKE_DESTINATION}/${exportname}" "${CMAKE_INSTALL_PREFIX}")
set(CONF_INCLUDE_DIRS "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_INCLUDE_DESTINATION}")
set(CONF_PLUGIN_DEST "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_PLUGIN_DESTINATION}")
set(CONF_PLUGIN_DEST32 "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_PLUGIN32_DESTINATION}")
set(CONF_PLUGIN_DEST64 "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_PLUGIN64_DESTINATION}")
configure_file("${exportname}Config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${exportname}Config.cmake" @ONLY)
set(_pdir)
configure_file("${exportname}ConfigVersion.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${exportname}ConfigVersion.cmake" @ONLY)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${exportname}Config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/${exportname}ConfigVersion.cmake"
DESTINATION "${OBS_CMAKE_DESTINATION}/${exportname}")
install(EXPORT "${exportname}Target"
DESTINATION "${OBS_CMAKE_DESTINATION}/${exportname}")
endmacro()
macro(install_obs_headers)
foreach(hdr ${ARGN})
if(IS_ABSOLUTE "${hdr}")
set(subdir)
else()
get_filename_component(subdir "${hdr}" DIRECTORY)
if(subdir)
set(subdir "/${subdir}")
endif()
endif()
install(FILES "${hdr}" DESTINATION "${OBS_INCLUDE_DESTINATION}${subdir}")
endforeach()
endmacro()
macro(install_obs_core target)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(_bit_suffix "64bit/")
@@ -148,9 +202,14 @@ macro(install_obs_core target)
set(_bit_suffix "")
endif()
install(TARGETS ${target}
LIBRARY DESTINATION "${OBS_LIBRARY_DESTINATION}"
RUNTIME DESTINATION "${OBS_EXECUTABLE_DESTINATION}")
if("${ARGV1}" STREQUAL "EXPORT")
export_obs_core("${target}" "${ARGV2}")
else()
install(TARGETS ${target}
LIBRARY DESTINATION "${OBS_LIBRARY_DESTINATION}"
RUNTIME DESTINATION "${OBS_EXECUTABLE_DESTINATION}")
endif()
add_custom_command(TARGET ${target} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy
"$<TARGET_FILE:${target}>"

5
deps/CMakeLists.txt vendored
View File

@@ -1,7 +1,4 @@
if(WIN32)
add_subdirectory(w32-pthreads)
endif()
add_subdirectory(w32-pthreads)
add_subdirectory(glad)
add_subdirectory(jansson)

View File

@@ -1,5 +1,9 @@
project(w32-pthreads)
if(NOT WIN32)
return()
endif()
set(w32-pthreads_SOURCES
pthread.c)

View File

@@ -26,8 +26,6 @@ if(WIN32)
set(libobs_PLATFORM_DEPS
w32-pthreads
winmm.lib)
add_definitions(-DPTW32_STATIC_LIB)
elseif(APPLE)
set(libobs_PLATFORM_SOURCES
obs-cocoa.c
@@ -59,11 +57,11 @@ if(MSVC)
endif()
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/config.h.in"
"${CMAKE_BINARY_DIR}/config/config.h")
"${CMAKE_CURRENT_SOURCE_DIR}/obsconfig.h.in"
"${CMAKE_BINARY_DIR}/config/obsconfig.h")
set(libobs_config_HEADERS
config.h
"${CMAKE_BINARY_DIR}/config/obsconfig.h"
obs-config.h)
set(libobs_callback_SOURCES
@@ -203,6 +201,7 @@ set(libobs_SOURCES
${libobs_libobs_SOURCES})
set(libobs_HEADERS
${libobs_config_HEADERS}
${libobs_callback_HEADERS}
${libobs_graphics_HEADERS}
${libobs_mediaio_HEADERS}
@@ -225,13 +224,21 @@ set_target_properties(libobs PROPERTIES
OUTPUT_NAME obs
VERSION "0"
SOVERSION "0")
target_compile_definitions(libobs PUBLIC HAVE_OBSCONFIG_H)
if(NOT MSVC)
target_compile_options(libobs PUBLIC "-mmmx" "-msse" "-msse2")
endif()
target_link_libraries(libobs
jansson
${libobs_PLATFORM_DEPS}
${Libswscale_LIBRARIES}
${Libswresample_LIBRARIES}
${Libavutil_LIBRARIES})
PRIVATE
jansson
${libobs_PLATFORM_DEPS}
${Libswscale_LIBRARIES}
${Libswresample_LIBRARIES}
${Libavutil_LIBRARIES})
install_obs_core(libobs)
install_obs_core(libobs EXPORT LibObs)
install_obs_data(libobs ../build/data/libobs libobs)
install_obs_headers(${libobs_HEADERS})

View File

@@ -0,0 +1,23 @@
# - Config file for the LibObs package
# It defines the following variables
# LIBOBS_INCLUDE_DIRS
# LIBOBS_LIBRARIES
# LIBOBS_PLUGIN_DESTINATION{,32,64}
set(LIBOBS_PLUGIN_DESTINATION "@CONF_PLUGIN_DEST@")
set(LIBOBS_PLUGIN_DESTINATION32 "@CONF_PLUGIN_DEST32@")
set(LIBOBS_PLUGIN_DESTINATION64 "@CONF_PLUGIN_DEST64@")
set(LIBOBS_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
# Cleanup possible relative paths
get_filename_component(LIBOBS_PLUGIN_DESTINATION "${LIBOBS_PLUGIN_DESTINATION}" ABSOLUTE)
get_filename_component(LIBOBS_PLUGIN_DESTINATION32 "${LIBOBS_PLUGIN_DESTINATION32}" ABSOLUTE)
get_filename_component(LIBOBS_PLUGIN_DESTINATION64 "${LIBOBS_PLUGIN_DESTINATION64}" ABSOLUTE)
get_filename_component(LIBOBS_INCLUDE_DIRS "${LIBOBS_INCLUDE_DIRS}" ABSOLUTE)
if(NOT TARGET libobs)
include("${CMAKE_CURRENT_LIST_DIR}/LibObsTarget.cmake")
endif()
set(LIBOBS_LIBRARIES libobs)

View File

@@ -0,0 +1,10 @@
set(PACKAGE_VERSION "@OBS_VERSION@")
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
set(PACKAGE_VERSION_COMPATIBLE TRUE)
if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()

View File

@@ -17,8 +17,8 @@
#pragma once
#ifdef HAVE_CONFIG_H
# include "config.h"
#ifdef HAVE_OBSCONFIG_H
# include "obsconfig.h"
#else
#define OBS_VERSION "unknown"

View File

@@ -5,13 +5,14 @@ find_library(COCOA Cocoa)
find_library(COREFOUNDATION CoreFoundation)
find_library(COREMEDIA CoreMedia)
find_library(COREVIDEO CoreVideo)
find_library(COCOA Cocoa)
include_directories(${AVFOUNDATION}
${COCOA}
${COREFOUNDATION}
${COREMEDIA}
${COREVIDEO})
${COREVIDEO}
${COCOA})
set(mac-avcapture_HEADERS
)
@@ -33,6 +34,8 @@ target_link_libraries(mac-avcapture
${COCOA}
${COREFOUNDATION}
${COREMEDIA}
${COREVIDEO})
${COREVIDEO}
${COCOA})
install_obs_plugin(mac-avcapture)

View File

@@ -1,5 +1,10 @@
project(obs-ffmpeg)
if(WIN32)
set(obs-ffmpeg_PLATFORM_DEPS
w32-pthreads)
endif()
find_package(Libavcodec REQUIRED)
include_directories(${Libavcodec_INCLUDE_DIR})
add_definitions(${Libavcodec_DEFINITIONS})
@@ -32,6 +37,7 @@ add_library(obs-ffmpeg MODULE
${obs-ffmpeg_SOURCES})
target_link_libraries(obs-ffmpeg
libobs
${obs-ffmpeg_PLATFORM_DEPS}
${Libavcodec_LIBRARIES}
${Libavutil_LIBRARIES}
${Libswscale_LIBRARIES}

View File

@@ -2,6 +2,7 @@ project(obs-outputs)
if(WIN32)
set(obs-outputs_PLATFORM_DEPS
w32-pthreads
ws2_32.lib
winmm.lib)
endif()

View File

@@ -21,6 +21,9 @@ if(APPLE)
set(test-input_PLATFORM_DEPS
${IOSURF}
${COCOA})
elseif(WIN32)
set(test-input_PLATFORM_DEPS
w32-pthreads)
endif()
set(test-input_SOURCES