Browse Source

Add support for build time dependency copying

BtbN 11 years ago
parent
commit
415a698bac

+ 0 - 2
CMakeLists.txt

@@ -82,5 +82,3 @@ if(NOT INSTALLER_RUN)
 else()
 	obs_generate_multiarch_installer()
 endif()
-
-obs_install_additional()

+ 8 - 0
additional_install_files/.gitignore

@@ -0,0 +1,8 @@
+*
+!.gitignore
+!data/
+!exec32/
+!exec64/
+!libs32/
+!libs64/
+!misc/

+ 10 - 2
cmake/Modules/FindLibavcodec.cmake

@@ -22,14 +22,22 @@ else()
 	find_path(FFMPEG_INCLUDE_DIR
 		NAMES libavcodec/avcodec.h
 		HINTS
+			"${CMAKE_SOURCE_DIR}/additional_install_files/include"
+			"$ENV{obsAdditionalInstallFiles}/include"
 			ENV FFmpegPath
-			${_AVCODEC_INCLUDE_DIRS}
+			"${_AVCODEC_INCLUDE_DIRS}"
 			/usr/include /usr/local/include /opt/local/include /sw/include
 		PATH_SUFFIXES ffmpeg libav)
 
 	find_library(AVCODEC_LIB
 		NAMES avcodec
-		HINTS ${FFMPEG_INCLUDE_DIR}/../lib ${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix} ${_AVCODEC_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
+		HINTS
+			"${FFMPEG_INCLUDE_DIR}/../lib"
+			"${FFMPEG_INCLUDE_DIR}/../lib${_lib_suffix}"
+			"${FFMPEG_INCLUDE_DIR}/../libs${_lib_suffix}"
+			"${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix}"
+			"${_AVCODEC_LIBRARY_DIRS}"
+			/usr/lib /usr/local/lib /opt/local/lib /sw/lib)
 
 	set(LIBAVCODEC_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIR} CACHE PATH "Libavcodec include dir")
 	set(LIBAVCODEC_LIBRARIES ${AVCODEC_LIB} CACHE STRING "Libavcodec libraries")

+ 10 - 2
cmake/Modules/FindLibavformat.cmake

@@ -22,14 +22,22 @@ else()
 	find_path(FFMPEG_INCLUDE_DIR
 		NAMES libavformat/avformat.h
 		HINTS
+			"${CMAKE_SOURCE_DIR}/additional_install_files/include"
+			"$ENV{obsAdditionalInstallFiles}/include"
 			ENV FFmpegPath
-			${_AVFORMAT_INCLUDE_DIRS}
+			"${_AVFORMAT_INCLUDE_DIRS}"
 			/usr/include /usr/local/include /opt/local/include /sw/include
 		PATH_SUFFIXES ffmpeg libav)
 
 	find_library(AVFORMAT_LIB
 		NAMES avformat
-		HINTS ${FFMPEG_INCLUDE_DIR}/../lib ${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix} ${_AVFORMAT_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
+		HINTS
+			"${FFMPEG_INCLUDE_DIR}/../lib"
+			"${FFMPEG_INCLUDE_DIR}/../lib${_lib_suffix}"
+			"${FFMPEG_INCLUDE_DIR}/../libs${_lib_suffix}"
+			"${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix}"
+			"${_AVFORMAT_LIBRARY_DIRS}"
+			/usr/lib /usr/local/lib /opt/local/lib /sw/lib)
 
 	set(LIBAVFORMAT_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIR} CACHE PATH "Libavformat include dir")
 	set(LIBAVFORMAT_LIBRARIES ${AVFORMAT_LIB} CACHE STRING "Libavformat libraries")

+ 10 - 2
cmake/Modules/FindLibavutil.cmake

@@ -22,14 +22,22 @@ else()
 	find_path(FFMPEG_INCLUDE_DIR
 		NAMES libavutil/avutil.h
 		HINTS
+			"${CMAKE_SOURCE_DIR}/additional_install_files/include"
+			"$ENV{obsAdditionalInstallFiles}/include"
 			ENV FFmpegPath
-			${_AVUTIL_INCLUDE_DIRS}
+			"${_AVUTIL_INCLUDE_DIRS}"
 			/usr/include /usr/local/include /opt/local/include /sw/include
 		PATH_SUFFIXES ffmpeg libav)
 
 	find_library(AVUTIL_LIB
 		NAMES avutil
-		HINTS ${FFMPEG_INCLUDE_DIR}/../lib ${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix} ${_AVUTIL_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
+		HINTS
+			"${FFMPEG_INCLUDE_DIR}/../lib"
+			"${FFMPEG_INCLUDE_DIR}/../lib${_lib_suffix}"
+			"${FFMPEG_INCLUDE_DIR}/../libs${_lib_suffix}"
+			"${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix}"
+			"${_AVUTIL_LIBRARY_DIRS}"
+			/usr/lib /usr/local/lib /opt/local/lib /sw/lib)
 
 	set(LIBAVUTIL_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIR} CACHE PATH "Libavutil include dir")
 	set(LIBAVUTIL_LIBRARIES ${AVUTIL_LIB} CACHE STRING "Libavutil libraries")

+ 8 - 4
cmake/Modules/FindLibfdk.cmake

@@ -22,17 +22,21 @@ else()
 	find_path(Libfdk_INCLUDE_DIR
 		NAMES fdk-aac/aacenc_lib.h
 		HINTS
+			"${CMAKE_SOURCE_DIR}/additional_install_files/include"
+			"$ENV{obsAdditionalInstallFiles}/include"
 			ENV LibfdkPath
 			ENV FFmpegPath
-			${_LIBFDK_INCLUDE_DIRS}
+			"${_LIBFDK_INCLUDE_DIRS}"
 			/usr/include /usr/local/include /opt/local/include /sw/include)
 
 	find_library(Libfdk_LIB
 		NAMES fdk-aac libfdk-aac
 		HINTS
-			${Libfdk_INCLUDE_DIR}/../lib
-			${Libfdk_INCLUDE_DIR}/lib${_lib_suffix}
-			${_LIBFDK_LIBRARY_DIRS}
+			"${Libfdk_INCLUDE_DIR}/../lib"
+			"${Libfdk_INCLUDE_DIR}/../lib${_lib_suffix}"
+			"${Libfdk_INCLUDE_DIR}/../libs${_lib_suffix}"
+			"${Libfdk_INCLUDE_DIR}/lib${_lib_suffix}"
+			"${_LIBFDK_LIBRARY_DIRS}"
 			/usr/lib /usr/local/lib /opt/local/lib /sw/lib)
 
 	set(LIBFDK_INCLUDE_DIRS ${Libfdk_INCLUDE_DIR} CACHE PATH "Libfdk include dir")

+ 10 - 2
cmake/Modules/FindLibswresample.cmake

@@ -22,14 +22,22 @@ else()
 	find_path(FFMPEG_INCLUDE_DIR
 		NAMES libswresample/swresample.h
 		HINTS
+			"${CMAKE_SOURCE_DIR}/additional_install_files/include"
+			"$ENV{obsAdditionalInstallFiles}/include"
 			ENV FFmpegPath
-			${_SWRESAMPLE_INCLUDE_DIRS}
+			"${_SWRESAMPLE_INCLUDE_DIRS}"
 			/usr/include /usr/local/include /opt/local/include /sw/include
 		PATH_SUFFIXES ffmpeg libav)
 
 	find_library(SWRESAMPLE_LIB
 		NAMES swresample
-		HINTS ${FFMPEG_INCLUDE_DIR}/../lib ${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix} ${_SWRESAMPLE_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
+		HINTS
+			"${FFMPEG_INCLUDE_DIR}/../lib"
+			"${FFMPEG_INCLUDE_DIR}/../lib${_lib_suffix}"
+			"${FFMPEG_INCLUDE_DIR}/../libs${_lib_suffix}"
+			"${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix}"
+			"${_SWRESAMPLE_LIBRARY_DIRS}"
+			/usr/lib /usr/local/lib /opt/local/lib /sw/lib)
 
 	set(LIBSWRESAMPLE_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIR} CACHE PATH "Libswresample include dir")
 	set(LIBSWRESAMPLE_LIBRARIES ${SWRESAMPLE_LIB} CACHE STRING "Libswresample libraries")

+ 10 - 2
cmake/Modules/FindLibswscale.cmake

@@ -22,14 +22,22 @@ else()
 	find_path(FFMPEG_INCLUDE_DIR
 		NAMES libswscale/swscale.h
 		HINTS
+			"${CMAKE_SOURCE_DIR}/additional_install_files/include"
+			"$ENV{obsAdditionalInstallFiles}/include"
 			ENV FFmpegPath
-			${_SWSCALE_INCLUDE_DIRS}
+			"${_SWSCALE_INCLUDE_DIRS}"
 			/usr/include /usr/local/include /opt/local/include /sw/include
 		PATH_SUFFIXES ffmpeg libav)
 
 	find_library(SWSCALE_LIB
 		NAMES swscale
-		HINTS ${FFMPEG_INCLUDE_DIR}/../lib ${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix} ${_SWSCALE_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
+		HINTS
+			"${FFMPEG_INCLUDE_DIR}/../lib"
+			"${FFMPEG_INCLUDE_DIR}/../lib${_lib_suffix}"
+			"${FFMPEG_INCLUDE_DIR}/../libs${_lib_suffix}"
+			"${FFMPEG_INCLUDE_DIR}/lib${_lib_suffix}"
+			"${_SWSCALE_LIBRARY_DIRS}"
+			/usr/lib /usr/local/lib /opt/local/lib /sw/lib)
 
 	set(LIBSWSCALE_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIR} CACHE PATH "Libswscale include dir")
 	set(LIBSWSCALE_LIBRARIES ${SWSCALE_LIB} CACHE STRING "Libswscale libraries")

+ 10 - 2
cmake/Modules/FindLibx264.cmake

@@ -22,14 +22,22 @@ else()
 	find_path(X264_INCLUDE_DIR
 		NAMES x264.h
 		HINTS
+			"${CMAKE_SOURCE_DIR}/additional_install_files/include"
+			"$ENV{obsAdditionalInstallFiles}/include"
 			ENV x264Path
 			ENV FFmpegPath
-			${_X264_INCLUDE_DIRS}
+			"${_X264_INCLUDE_DIRS}"
 			/usr/include /usr/local/include /opt/local/include /sw/include)
 
 	find_library(X264_LIB
 		NAMES x264 libx264
-		HINTS ${X264_INCLUDE_DIR}/../lib ${X264_INCLUDE_DIR}/lib${_lib_suffix} ${_X264_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib)
+		HINTS
+			"${X264_INCLUDE_DIR}/../lib"
+			"${X264_INCLUDE_DIR}/../lib${_lib_suffix}"
+			"${X264_INCLUDE_DIR}/../libs${_lib_suffix}"
+			"${X264_INCLUDE_DIR}/lib${_lib_suffix}"
+			"${_X264_LIBRARY_DIRS}"
+			/usr/lib /usr/local/lib /opt/local/lib /sw/lib)
 
 	set(LIBX264_INCLUDE_DIRS ${X264_INCLUDE_DIR} CACHE PATH "x264 include dir")
 	set(LIBX264_LIBRARIES ${X264_LIB} CACHE STRING "x264 libraries")

+ 20 - 2
cmake/Modules/ObsHelpers.cmake

@@ -91,7 +91,15 @@ function(obs_generate_multiarch_installer)
 		USE_SOURCE_PERMISSIONS)
 endfunction()
 
-function(obs_install_additional)
+function(obs_helper_copy_dir target source dest)
+	add_custom_command(TARGET ${target} POST_BUILD
+		COMMAND "${CMAKE_COMMAND}" -E copy_directory
+			"${source}"
+			"${dest}"
+		VERBATIM)
+endfunction()
+
+function(obs_install_additional maintarget)
 	set(addfdir "${CMAKE_SOURCE_DIR}/additional_install_files")
 	if(DEFINED ENV{obsAdditionalInstallFiles})
 		set(addfdir "$ENV{obsAdditionalInstallFiles}")
@@ -111,7 +119,7 @@ function(obs_install_additional)
 		DESTINATION "${OBS_DATA_DESTINATION}"
 		USE_SOURCE_PERMISSIONS
 		PATTERN ".gitignore" EXCLUDE)
-	
+
 	if(INSTALLER_RUN)
 		install(DIRECTORY "${addfdir}/libs32/"
 			DESTINATION "${OBS_LIBRARY32_DESTINATION}"
@@ -139,6 +147,16 @@ function(obs_install_additional)
 			USE_SOURCE_PERMISSIONS
 			PATTERN ".gitignore" EXCLUDE)
 	endif()
+
+	obs_helper_copy_dir(${maintarget}
+		"${addfdir}/misc/"
+		"${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/")
+	obs_helper_copy_dir(${maintarget}
+		"${addfdir}/data/"
+		"${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_DATA_DESTINATION}/")
+	obs_helper_copy_dir(${maintarget}
+		"${addfdir}/exec${_lib_suffix}/"
+		"${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_EXECUTABLE_DESTINATION}/")
 endfunction()
 
 macro(export_obs_core target exportname)

+ 2 - 0
libobs/CMakeLists.txt

@@ -287,3 +287,5 @@ target_link_libraries(libobs
 install_obs_core(libobs EXPORT LibObs)
 install_obs_data(libobs data libobs)
 install_obs_headers(${libobs_HEADERS})
+
+obs_install_additional(libobs)

+ 0 - 1
obs/CMakeLists.txt

@@ -129,4 +129,3 @@ target_link_libraries(obs
 
 install_obs_core(obs)
 install_obs_data(obs data obs-studio)
-