ObsHelpers.cmake 6.4 KB
Newer Older
B
BtbN 已提交
1 2
set(OBS_OUTPUT_DIR "${CMAKE_BINARY_DIR}/rundir")

3 4 5 6 7
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
	set(_lib_suffix 64)
else()
	set(_lib_suffix 32)
endif()
B
BtbN 已提交
8 9

if(WIN32 OR APPLE)
10
	set(_struct_def FALSE)
B
BtbN 已提交
11
else()
12
	set(_struct_def TRUE)
B
BtbN 已提交
13 14
endif()

15
option(INSTALLER_RUN "Build a multiarch installer, needs to run indenepdently after both archs have compiled" FALSE)
B
BtbN 已提交
16 17
option(UNIX_STRUCTURE "Build with standard unix filesystem structure" ${_struct_def})

18 19 20 21
if(INSTALLER_RUN AND NOT DEFINED ENV{obsInstallerTempDir})
	message(FATAL_ERROR "Environment variable obsInstallerTempDir is needed for multiarch installer generation")
endif()

B
BtbN 已提交
22 23
if(NOT UNIX_STRUCTURE)
	set(OBS_DATA_DESTINATION "data")
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
	if(APPLE)
		set(OBS_EXECUTABLE_DESTINATION "bin")
		set(OBS_EXECUTABLE32_DESTINATION "bin")
		set(OBS_EXECUTABLE64_DESTINATION "bin")
		set(OBS_LIBRARY_DESTINATION "bin")
		set(OBS_LIBRARY32_DESTINATION "bin")
		set(OBS_LIBRARY64_DESTINATION "bin")
		set(OBS_PLUGIN_DESTINATION "obs-plugins")
		set(OBS_PLUGIN32_DESTINATION "obs-plugins")
		set(OBS_PLUGIN64_DESTINATION "obs-plugins")
		add_definitions(-DOBS_DATA_PATH="../${OBS_DATA_DESTINATION}")
	else()
		set(OBS_EXECUTABLE_DESTINATION "bin/${_lib_suffix}bit")
		set(OBS_EXECUTABLE32_DESTINATION "bin/32bit")
		set(OBS_EXECUTABLE64_DESTINATION "bin/64bit")
		set(OBS_LIBRARY_DESTINATION "bin/${_lib_suffix}bit")
		set(OBS_LIBRARY32_DESTINATION "bin/32bit")
		set(OBS_LIBRARY64_DESTINATION "bin/64bit")
		set(OBS_PLUGIN_DESTINATION "obs-plugins/${_lib_suffix}bit")
		set(OBS_PLUGIN32_DESTINATION "obs-plugins/32bit")
		set(OBS_PLUGIN64_DESTINATION "obs-plugins/64bit")
		add_definitions(-DOBS_DATA_PATH="../../${OBS_DATA_DESTINATION}")
	endif()
B
BtbN 已提交
47
else()
48 49 50 51 52 53 54 55 56 57 58
	set(OBS_EXECUTABLE_DESTINATION "bin")
	set(OBS_EXECUTABLE32_DESTINATION "bin32")
	set(OBS_EXECUTABLE64_DESTINATION "bin64")
	set(OBS_LIBRARY_DESTINATION "lib")
	set(OBS_LIBRARY32_DESTINATION "lib32")
	set(OBS_LIBRARY64_DESTINATION "lib64")
	set(OBS_PLUGIN_DESTINATION "lib/obs-plugins")
	set(OBS_PLUGIN32_DESTINATION "lib32/obs-plugins")
	set(OBS_PLUGIN64_DESTINATION "lib64/obs-plugins")
	set(OBS_DATA_DESTINATION "share/obs")
	add_definitions(-DOBS_DATA_PATH="${OBS_DATA_DESTINATION}")
B
BtbN 已提交
59 60 61
	add_definitions(-DOBS_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}/")
endif()

62 63 64 65 66
function(obs_generate_multiarch_installer)
	install(DIRECTORY "$ENV{obsInstallerTempDir}/"
		DESTINATION "."
		USE_SOURCE_PERMISSIONS)
endfunction()
B
BtbN 已提交
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81

function(obs_install_additional)
	set(addfdir "${CMAKE_SOURCE_DIR}/additional_install_files")
	if(DEFINED ENV{obsAdditionalInstallFiles})
		set(addfdir "$ENV{obsAdditionalInstallFiles}")
	endif()

	if(CMAKE_SIZEOF_VOID_P EQUAL 8)
		set(_lib_suffix 64)
	else()
		set(_lib_suffix 32)
	endif()

	install(DIRECTORY "${addfdir}/misc/"
		DESTINATION "."
82 83
		USE_SOURCE_PERMISSIONS
		PATTERN ".gitignore" EXCLUDE)
B
BtbN 已提交
84 85
	install(DIRECTORY "${addfdir}/data/"
		DESTINATION "${OBS_DATA_DESTINATION}"
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
		USE_SOURCE_PERMISSIONS
		PATTERN ".gitignore" EXCLUDE)
	
	if(INSTALLER_RUN)
		install(DIRECTORY "${addfdir}/libs32/"
			DESTINATION "${OBS_LIBRARY32_DESTINATION}"
			USE_SOURCE_PERMISSIONS
			PATTERN ".gitignore" EXCLUDE)
		install(DIRECTORY "${addfdir}/exec32/"
			DESTINATION "${OBS_EXECUTABLE32_DESTINATION}"
			USE_SOURCE_PERMISSIONS
			PATTERN ".gitignore" EXCLUDE)
		install(DIRECTORY "${addfdir}/libs64/"
			DESTINATION "${OBS_LIBRARY64_DESTINATION}"
			USE_SOURCE_PERMISSIONS
			PATTERN ".gitignore" EXCLUDE)
		install(DIRECTORY "${addfdir}/exec64/"
			DESTINATION "${OBS_EXECUTABLE64_DESTINATION}"
			USE_SOURCE_PERMISSIONS
			PATTERN ".gitignore" EXCLUDE)
	else()
		install(DIRECTORY "${addfdir}/libs${_lib_suffix}/"
			DESTINATION "${OBS_LIBRARY_DESTINATION}"
			USE_SOURCE_PERMISSIONS
			PATTERN ".gitignore" EXCLUDE)
		install(DIRECTORY "${addfdir}/exec${_lib_suffix}/"
			DESTINATION "${OBS_EXECUTABLE_DESTINATION}"
			USE_SOURCE_PERMISSIONS
			PATTERN ".gitignore" EXCLUDE)
	endif()
B
BtbN 已提交
116 117 118
endfunction()

macro(install_obs_core target)
119
	if(CMAKE_SIZEOF_VOID_P EQUAL 8)
120
		set(_bit_suffix "64bit/")
121
	else()
122 123 124 125 126
		set(_bit_suffix "32bit/")
	endif()

	if(APPLE)
		set(_bit_suffix "")
127 128
	endif()

B
BtbN 已提交
129 130 131 132
	install(TARGETS ${target}
		LIBRARY DESTINATION "${OBS_LIBRARY_DESTINATION}"
		RUNTIME DESTINATION "${OBS_EXECUTABLE_DESTINATION}")
	add_custom_command(TARGET ${target} POST_BUILD
133
		COMMAND "${CMAKE_COMMAND}" -E copy
134 135
			"$<TARGET_FILE:${target}>"
			"${OBS_OUTPUT_DIR}/$<CONFIGURATION>/bin/${_bit_suffix}$<TARGET_FILE_NAME:${target}>"
B
BtbN 已提交
136
		VERBATIM)
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151

	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()
			set(tmp_target_dir "${OBS_LIBRARY_DESTINATION}")
		endif()

		add_custom_command(TARGET ${target} POST_BUILD
			COMMAND "${CMAKE_COMMAND}" -E copy
				"$<TARGET_FILE:${target}>" "$ENV{obsInstallerTempDir}/${tmp_target_dir}/$<TARGET_FILE_NAME:${target}>"
			VERBATIM)
	endif()
B
BtbN 已提交
152 153 154
endmacro()

macro(install_obs_plugin target)
155
	if(CMAKE_SIZEOF_VOID_P EQUAL 8)
156
		set(_bit_suffix "64bit/")
157
	else()
158 159 160 161 162
		set(_bit_suffix "32bit/")
	endif()

	if(APPLE)
		set(_bit_suffix "")
163 164
	endif()

B
BtbN 已提交
165 166 167 168
	install(TARGETS ${target}
		LIBRARY DESTINATION "${OBS_PLUGIN_DESTINATION}"
		RUNTIME DESTINATION "${OBS_PLUGIN_DESTINATION}")
	add_custom_command(TARGET ${target} POST_BUILD
169
		COMMAND "${CMAKE_COMMAND}" -E copy
170 171
			"$<TARGET_FILE:${target}>"
			"${OBS_OUTPUT_DIR}/$<CONFIGURATION>/obs-plugins/${_bit_suffix}$<TARGET_FILE_NAME:${target}>"
B
BtbN 已提交
172
		VERBATIM)
173 174 175 176 177 178 179

	if(DEFINED ENV{obsInstallerTempDir})
		add_custom_command(TARGET ${target} POST_BUILD
			COMMAND "${CMAKE_COMMAND}" -E copy
				"$<TARGET_FILE:${target}>" "$ENV{obsInstallerTempDir}/${OBS_PLUGIN_DESTINATION}/$<TARGET_FILE_NAME:${target}>"
			VERBATIM)
	endif()
B
BtbN 已提交
180 181 182 183 184 185 186
endmacro()

macro(install_obs_data target datadir datadest)
	install(DIRECTORY ${datadir}/
		DESTINATION "${OBS_DATA_DESTINATION}/${datadest}"
		USE_SOURCE_PERMISSIONS)
	add_custom_command(TARGET ${target} POST_BUILD
187
		COMMAND "${CMAKE_COMMAND}" -E copy_directory
B
BtbN 已提交
188 189
			"${CMAKE_CURRENT_SOURCE_DIR}/${datadir}" "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/${datadest}"
		VERBATIM)
190 191 192 193 194 195 196

	if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND DEFINED ENV{obsInstallerTempDir})
		add_custom_command(TARGET ${target} POST_BUILD
			COMMAND "${CMAKE_COMMAND}" -E copy_directory
				"${CMAKE_CURRENT_SOURCE_DIR}/${datadir}" "$ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/${datadest}"
			VERBATIM)
	endif()
B
BtbN 已提交
197 198 199 200 201 202
endmacro()

macro(install_obs_plugin_data target datadir)
	install_obs_plugin(${target})
	install_obs_data(${target} "${datadir}" "obs-plugins/${target}")
endmacro()