mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-09-24 23:31:36 +08:00
Merge pull request #34 from BtbN/master
Include $ORIGIN in portable mode on unix
This commit is contained in:
+4
-2
@@ -47,9 +47,11 @@ endif()
|
||||
|
||||
if(APPLE)
|
||||
set(CMAKE_MACOSX_RPATH TRUE)
|
||||
set(CMAKE_INSTALL_RPATH
|
||||
"${CMAKE_INSTALL_RPATH};@loader_path/;@executable_path/")
|
||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
list(APPEND CMAKE_INSTALL_RPATH "@loader_path/" "@executable_path/")
|
||||
elseif(UNIX AND NOT UNIX_STRUCTURE)
|
||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
list(APPEND CMAKE_INSTALL_RPATH "$ORIGIN")
|
||||
endif()
|
||||
|
||||
if(NOT INSTALLER_RUN)
|
||||
|
||||
@@ -29,7 +29,7 @@ else()
|
||||
|
||||
find_library(AVCODEC_LIB
|
||||
NAMES avcodec
|
||||
HINTS ${_AVCODEC_LIBRARY_DIRS} ${FFMPEG_INCLUDE_DIR}/../lib ${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
|
||||
HINTS ${FFMPEG_INCLUDE_DIR}/../lib ${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix} ${_AVCODEC_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
|
||||
|
||||
set(Libavcodec_INCLUDE_DIR ${FFMPEG_INCLUDE_DIR} CACHE PATH "Libavcodec include dir")
|
||||
set(Libavcodec_LIBRARIES ${AVCODEC_LIB} CACHE STRING "Libavcodec libraries")
|
||||
|
||||
@@ -29,7 +29,7 @@ else()
|
||||
|
||||
find_library(AVFORMAT_LIB
|
||||
NAMES avformat
|
||||
HINTS ${_AVFORMAT_LIBRARY_DIRS} ${FFMPEG_INCLUDE_DIR}/../lib ${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
|
||||
HINTS ${FFMPEG_INCLUDE_DIR}/../lib ${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix} ${_AVFORMAT_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
|
||||
|
||||
set(Libavformat_INCLUDE_DIR ${FFMPEG_INCLUDE_DIR} CACHE PATH "Libavformat include dir")
|
||||
set(Libavformat_LIBRARIES ${AVFORMAT_LIB} CACHE STRING "Libavformat libraries")
|
||||
|
||||
@@ -29,7 +29,7 @@ else()
|
||||
|
||||
find_library(AVUTIL_LIB
|
||||
NAMES avutil
|
||||
HINTS ${_AVUTIL_LIBRARY_DIRS} ${FFMPEG_INCLUDE_DIR}/../lib ${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
|
||||
HINTS ${FFMPEG_INCLUDE_DIR}/../lib ${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix} ${_AVUTIL_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
|
||||
|
||||
set(Libavutil_INCLUDE_DIR ${FFMPEG_INCLUDE_DIR} CACHE PATH "Libavutil include dir")
|
||||
set(Libavutil_LIBRARIES ${AVUTIL_LIB} CACHE STRING "Libavutil libraries")
|
||||
|
||||
@@ -29,7 +29,7 @@ else()
|
||||
|
||||
find_library(SWRESAMPLE_LIB
|
||||
NAMES swresample
|
||||
HINTS ${_SWRESAMPLE_LIBRARY_DIRS} ${FFMPEG_INCLUDE_DIR}/../lib ${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
|
||||
HINTS ${FFMPEG_INCLUDE_DIR}/../lib ${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix} ${_SWRESAMPLE_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
|
||||
|
||||
set(Libswresample_INCLUDE_DIR ${FFMPEG_INCLUDE_DIR} CACHE PATH "Libswresample include dir")
|
||||
set(Libswresample_LIBRARIES ${SWRESAMPLE_LIB} CACHE STRING "Libswresample libraries")
|
||||
|
||||
@@ -28,7 +28,7 @@ else()
|
||||
|
||||
find_library(X264_LIB
|
||||
NAMES x264 libx264
|
||||
HINTS ${_X264_LIBRARY_DIRS} ${X264_INCLUDE_DIR}/../lib ${X264_INCLUDE_DIR}/lib${_lib_suffix} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
|
||||
HINTS ${X264_INCLUDE_DIR}/../lib ${X264_INCLUDE_DIR}/lib${_lib_suffix} ${_X264_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
|
||||
|
||||
set(Libx264_INCLUDE_DIR ${X264_INCLUDE_DIR} CACHE PATH "x264 include dir")
|
||||
set(Libx264_LIBRARIES ${X264_LIB} CACHE STRING "x264 libraries")
|
||||
|
||||
@@ -14,6 +14,9 @@ endif()
|
||||
|
||||
option(INSTALLER_RUN "Build a multiarch installer, needs to run indenepdently after both archs have compiled" FALSE)
|
||||
option(UNIX_STRUCTURE "Build with standard unix filesystem structure" ${_struct_def})
|
||||
if(APPLE)
|
||||
option(BUILD_REDISTRIBUTABLE "Fix rpath of external libraries" FALSE)
|
||||
endif()
|
||||
|
||||
if(INSTALLER_RUN AND NOT DEFINED ENV{obsInstallerTempDir})
|
||||
message(FATAL_ERROR "Environment variable obsInstallerTempDir is needed for multiarch installer generation")
|
||||
@@ -67,6 +70,31 @@ else()
|
||||
add_definitions(-DOBS_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}/")
|
||||
endif()
|
||||
|
||||
function(obs_fixup_install_target target type)
|
||||
if(NOT APPLE OR NOT BUILD_REDISTRIBUTABLE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
foreach(data ${ARGN})
|
||||
if(type STREQUAL "TARGET")
|
||||
get_property(fullpath TARGET "${data}" PROPERTY LOCATION)
|
||||
else()
|
||||
set(fullpath "${data}")
|
||||
endif()
|
||||
|
||||
execute_process(COMMAND otool -D "${fullpath}" OUTPUT_VARIABLE otool_out)
|
||||
string(REGEX REPLACE "(\r?\n)+$" "" otool_out "${otool_out}")
|
||||
string(REGEX REPLACE ".*\n" "" otool_out "${otool_out}")
|
||||
|
||||
string(REGEX REPLACE ".*/" "@rpath/" newpath "${otool_out}")
|
||||
|
||||
add_custom_command(TARGET ${target} POST_BUILD
|
||||
COMMAND
|
||||
install_name_tool -change "${otool_out}" "${newpath}" "$<TARGET_FILE:${target}>"
|
||||
VERBATIM)
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
function(obs_generate_multiarch_installer)
|
||||
install(DIRECTORY "$ENV{obsInstallerTempDir}/"
|
||||
DESTINATION "."
|
||||
@@ -143,9 +171,9 @@ macro(install_obs_core target)
|
||||
"${OBS_OUTPUT_DIR}/$<CONFIGURATION>/bin/${_bit_suffix}$<TARGET_FILE_NAME:${target}>"
|
||||
VERBATIM)
|
||||
|
||||
|
||||
if(DEFINED ENV{obsInstallerTempDir})
|
||||
get_property(target_type TARGET ${target} PROPERTY TYPE)
|
||||
|
||||
if("${target_type}" STREQUAL "EXECUTABLE")
|
||||
set(tmp_target_dir "${OBS_EXECUTABLE_DESTINATION}")
|
||||
else()
|
||||
|
||||
@@ -192,3 +192,5 @@ target_link_libraries(libobs
|
||||
|
||||
install_obs_core(libobs)
|
||||
install_obs_data(libobs ../build/data/libobs libobs)
|
||||
|
||||
obs_fixup_install_target(libobs PATH ${Libswresample_LIBRARIES} ${Libavutil_LIBRARIES})
|
||||
|
||||
@@ -93,3 +93,7 @@ target_link_libraries(obs
|
||||
|
||||
install_obs_core(obs)
|
||||
install_obs_data(obs ../build/data/obs-studio obs-studio)
|
||||
|
||||
obs_fixup_install_target(obs TARGET Qt5::Widgets)
|
||||
obs_fixup_install_target(obs TARGET Qt5::Gui)
|
||||
obs_fixup_install_target(obs TARGET Qt5::Core)
|
||||
|
||||
@@ -24,3 +24,6 @@ target_link_libraries(obs-ffmpeg
|
||||
${Libswresample_LIBRARIES})
|
||||
|
||||
install_obs_plugin(obs-ffmpeg)
|
||||
|
||||
obs_fixup_install_target(obs-ffmpeg PATH ${Libavformat_LIBRARIES})
|
||||
obs_fixup_install_target(obs-ffmpeg PATH ${Libswresample_LIBRARIES})
|
||||
|
||||
@@ -21,3 +21,5 @@ target_link_libraries(obs-outputs
|
||||
${Libx264_LIBRARIES})
|
||||
|
||||
install_obs_plugin(obs-outputs)
|
||||
|
||||
obs_fixup_install_target(obs-outputs PATH ${Libx264_LIBRARIES})
|
||||
|
||||
Reference in New Issue
Block a user