From 8c809415305cd8874ef11019437f3032658bfc2f Mon Sep 17 00:00:00 2001 From: BtbN Date: Wed, 29 Jan 2014 14:56:06 +0100 Subject: [PATCH 1/2] Add support for "git describe" based version numbers. Also, move cpack related code into its own module, to clean up the main CMakeLists.txt --- CMakeLists.txt | 74 ++----------------------------- cmake/Modules/ObsCpack.cmake | 85 ++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 71 deletions(-) create mode 100644 cmake/Modules/ObsCpack.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f1796bd5..f167dce2b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,9 @@ project(obs-studio) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") include(ObsHelpers) +include(ObsCpack) + +add_definitions(-DOBS_VERSION="${OBS_VERSION}") if(NOT _one_time_action_done) if(MSVC) @@ -72,74 +75,3 @@ else() endif() obs_install_additional() - -# CPack Configuration - -if(APPLE AND NOT CPACK_GENERATOR) - set(CPACK_GENERATOR "Bundle") -elseif(WIN32 AND NOT CPACK_GENERATOR) - set(CPACK_GENERATOR "NSIS" "ZIP") -endif() - -set(CPACK_PACKAGE_NAME "OBS Studio") -set(CPACK_PACKAGE_VENDOR "obsproject.com") -set(CPACK_PACKAGE_VERSION "0.0.1") -set(CPACK_PACKAGE_VERSION_MAJOR "0") -set(CPACK_PACKAGE_VERSION_MINOR "0") -set(CPACK_PACKAGE_VERSION_PATCH "1") -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OBS Studio - Multi-platform broadcasting software") - -if(INSTALLER_RUN) - file(TO_NATIVE_PATH "${OBS_EXECUTABLE32_DESTINATION}/obs" _obs32) - file(TO_NATIVE_PATH "${OBS_EXECUTABLE64_DESTINATION}/obs" _obs64) - - #Workaround a cmake bug, remove when fixed - string(REPLACE "\\" "\\\\" _obs32 "${_obs32}") - string(REPLACE "\\" "\\\\" _obs64 "${_obs64}") - - set(CPACK_PACKAGE_EXECUTABLES - "${_obs32}" "OBS Studio (32bit)" - "${_obs64}" "OBS Studio (64bit)") - set(CPACK_CREATE_DESKTOP_LINKS - "${_obs32}" - "${_obs64}") -else() - file(TO_NATIVE_PATH "${OBS_EXECUTABLE_DESTINATION}/obs" _obs) - - #Workaround a cmake bug, remove when fixed - string(REPLACE "\\" "\\\\" _obs "${_obs}") - - set(CPACK_PACKAGE_EXECUTABLES "${_obs}" "OBS Studio") - set(CPACK_CREATE_DESKTOP_LINKS "${_obs}") -endif() - -set(CPACK_BUNDLE_NAME "OBS Studio") -set(CPACK_BUNDLE_PLIST "${CMAKE_SOURCE_DIR}/cmake/osxbundle/Info.plist") -set(CPACK_BUNDLE_ICON "${CMAKE_SOURCE_DIR}/cmake/osxbundle/obs.icns") -set(CPACK_BUNDLE_STARTUP_COMMAND "${CMAKE_SOURCE_DIR}/cmake/osxbundle/obslaunch.sh") - -set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON) -set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".") -set(CPACK_NSIS_MODIFY_PATH ON) - -if(INSTALLER_RUN) - set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OBSStudio") - set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") - set(CPACK_PACKAGE_FILE_NAME "obs-studio") -elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) - if(WIN32) - set(CPACK_PACKAGE_NAME "OBS Studio (64bit)") - endif() - set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OBSStudio64") - set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") - set(CPACK_PACKAGE_FILE_NAME "obs-studio-x64") -else() - if(WIN32) - set(CPACK_PACKAGE_NAME "OBS Studio (32bit)") - endif() - set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OBSStudio32") - set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES32") - set(CPACK_PACKAGE_FILE_NAME "obs-studio-x86") -endif() - -include(CPack) diff --git a/cmake/Modules/ObsCpack.cmake b/cmake/Modules/ObsCpack.cmake new file mode 100644 index 000000000..27375b682 --- /dev/null +++ b/cmake/Modules/ObsCpack.cmake @@ -0,0 +1,85 @@ + +if(APPLE AND NOT CPACK_GENERATOR) + set(CPACK_GENERATOR "Bundle") +elseif(WIN32 AND NOT CPACK_GENERATOR) + set(CPACK_GENERATOR "NSIS" "ZIP") +endif() + +set(CPACK_PACKAGE_NAME "OBS Studio") +set(CPACK_PACKAGE_VENDOR "obsproject.com") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OBS Studio - Multi-platform broadcasting software") + +set(CPACK_PACKAGE_VERSION_MAJOR "0") +set(CPACK_PACKAGE_VERSION_MINOR "0") +set(CPACK_PACKAGE_VERSION_PATCH "1") +set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") + +if(EXISTS "${CMAKE_SOURCE_DIR}/.git") + execute_process(COMMAND git describe --always + OUTPUT_VARIABLE OBS_VERSION + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(NOT "${OBS_VERSION}" STREQUAL "") + set(CPACK_PACKAGE_VERSION "${OBS_VERSION}") + endif() +endif() + +set(OBS_VERSION "${CPACK_PACKAGE_VERSION}") + +if(INSTALLER_RUN) + file(TO_NATIVE_PATH "${OBS_EXECUTABLE32_DESTINATION}/obs" _obs32) + file(TO_NATIVE_PATH "${OBS_EXECUTABLE64_DESTINATION}/obs" _obs64) + + #Workaround a cmake bug, remove when fixed + string(REPLACE "\\" "\\\\" _obs32 "${_obs32}") + string(REPLACE "\\" "\\\\" _obs64 "${_obs64}") + + set(CPACK_PACKAGE_EXECUTABLES + "${_obs32}" "OBS Studio (32bit)" + "${_obs64}" "OBS Studio (64bit)") + set(CPACK_CREATE_DESKTOP_LINKS + "${_obs32}" + "${_obs64}") +else() + file(TO_NATIVE_PATH "${OBS_EXECUTABLE_DESTINATION}/obs" _obs) + + #Workaround a cmake bug, remove when fixed + string(REPLACE "\\" "\\\\" _obs "${_obs}") + + set(CPACK_PACKAGE_EXECUTABLES "${_obs}" "OBS Studio") + set(CPACK_CREATE_DESKTOP_LINKS "${_obs}") +endif() + +set(CPACK_BUNDLE_NAME "OBS Studio") +set(CPACK_BUNDLE_PLIST "${CMAKE_SOURCE_DIR}/cmake/osxbundle/Info.plist") +set(CPACK_BUNDLE_ICON "${CMAKE_SOURCE_DIR}/cmake/osxbundle/obs.icns") +set(CPACK_BUNDLE_STARTUP_COMMAND "${CMAKE_SOURCE_DIR}/cmake/osxbundle/obslaunch.sh") + +set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON) +set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".") +set(CPACK_NSIS_MODIFY_PATH ON) + +if(INSTALLER_RUN) + set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OBSStudio") + set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") + set(CPACK_PACKAGE_FILE_NAME "obs-studio-${OBS_VERSION}") +elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) + if(WIN32) + set(CPACK_PACKAGE_NAME "OBS Studio (64bit)") + endif() + set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OBSStudio64") + set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") + set(CPACK_PACKAGE_FILE_NAME "obs-studio-x64-${OBS_VERSION}") +else() + if(WIN32) + set(CPACK_PACKAGE_NAME "OBS Studio (32bit)") + endif() + set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OBSStudio32") + set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES32") + set(CPACK_PACKAGE_FILE_NAME "obs-studio-x86-${OBS_VERSION}") +endif() + +set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}") + +include(CPack) From a79124e4133271797509a647c2eb29eb2e5097bd Mon Sep 17 00:00:00 2001 From: BtbN Date: Wed, 29 Jan 2014 14:56:40 +0100 Subject: [PATCH 2/2] Add guessed paths for Win8 and Win81 SDK to DirectX search paths --- cmake/Modules/FindDirectX.cmake | 62 ++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/cmake/Modules/FindDirectX.cmake b/cmake/Modules/FindDirectX.cmake index f28a92ae4..4fd75f2ea 100644 --- a/cmake/Modules/FindDirectX.cmake +++ b/cmake/Modules/FindDirectX.cmake @@ -16,16 +16,16 @@ # DirectX_ROOT_DIR if (DirectX_D3D10_INCLUDE_DIR AND DirectX_D3D10_LIBRARY) - set(DirectX_D3D10_FOUND TRUE) + set(DirectX_D3D10_FOUND TRUE) endif() if (DirectX_D3D11_INCLUDE_DIR AND DirectX_D3D11_LIBRARY) - set(DirectX_D3D11_FOUND TRUE) + set(DirectX_D3D11_FOUND TRUE) endif() if(DirectX_INCLUDE_DIR AND DirectX_LIBRARY) - set(DirectX_FOUND TRUE) - return() + set(DirectX_FOUND TRUE) + return() endif() macro(findpkg_begin PREFIX) @@ -47,7 +47,7 @@ macro(create_search_paths PREFIX) set(${PREFIX}_INC_SEARCH_PATH ${${PREFIX}_INC_SEARCH_PATH} ${dir}/include ${dir}/include/${PREFIX} ${dir}/Headers ${dir}/Include/um) set(${PREFIX}_LIB_SEARCH_PATH ${${PREFIX}_LIB_SEARCH_PATH} - ${dir}/lib ${dir}/lib/${PREFIX} ${dir}/Libs ${dir}/Lib/winv6.3/um ${dir}/Lib/win8/um ${dir}/Lib/winv6.3/um) + ${dir}/lib ${dir}/lib/${PREFIX} ${dir}/Libs ${dir}/Lib/winv6.3/um ${dir}/Lib/win8/um) endforeach(dir) set(${PREFIX}_FRAMEWORK_SEARCH_PATH ${${PREFIX}_PREFIX_PATH}) endmacro(create_search_paths) @@ -101,6 +101,10 @@ if(WIN32) # The only platform it makes sense to check for DirectX SDK set(DirectX_PREFIX_PATH "${WindowsSDK81Path}" "${ENV_WindowsSDK81Path}" "${WindowsSDK80Path}" "${ENV_WindowsSDK80Path}" + "C:/Program Files/Windows Kits/8.1" + "C:/Program Files (x86)/Windows Kits/8.1" + "C:/Program Files/Windows Kits/8.0" + "C:/Program Files (x86)/Windows Kits/8.0" "${DXSDK_DIR}" "${ENV_DXSDK_DIR}" "${DIRECTX_HOME}" "${ENV_DIRECTX_HOME}" "${DIRECTX_ROOT}" "${ENV_DIRECTX_ROOT}" @@ -109,14 +113,14 @@ if(WIN32) # The only platform it makes sense to check for DirectX SDK "C:/Program Files (x86)/Microsoft DirectX SDK*" "C:/apps/Microsoft DirectX SDK*" "C:/Program Files/Microsoft DirectX SDK*" - "$ENV{ProgramFiles}/Microsoft DirectX SDK*" + "$ENV{ProgramFiles}/Microsoft DirectX SDK*" ) create_search_paths(DirectX) # redo search if prefix path changed clear_if_changed(DirectX_PREFIX_PATH DirectX_LIBRARY - DirectX_INCLUDE_DIR - DirectX_ROOT_DIR + DirectX_INCLUDE_DIR + DirectX_ROOT_DIR ) find_path(DirectX_INCLUDE_DIR NAMES d3d9.h HINTS ${DirectX_INC_SEARCH_PATH}) @@ -144,7 +148,7 @@ if(WIN32) # The only platform it makes sense to check for DirectX SDK findpkg_finish(DirectX) set(DirectX_LIBRARIES - ${DirectX_LIBRARIES} + ${DirectX_LIBRARIES} ${DirectX_D3DX9_LIBRARY} ${DirectX_DXERR9_LIBRARY} ${DirectX_DXGUID_LIBRARY} @@ -157,33 +161,33 @@ if(WIN32) # The only platform it makes sense to check for DirectX SDK if (DirectX_FOUND) find_path(DirectX_D3D10_INCLUDE_DIR NAMES d3d10_1shader.h HINTS ${DirectX_INC_SEARCH_PATH} NO_DEFAULT_PATH) - get_filename_component(DirectX_LIBRARY_DIR "${DirectX_LIBRARY}" PATH) - message(STATUS "DX lib dir: ${DirectX_LIBRARY_DIR}") + get_filename_component(DirectX_LIBRARY_DIR "${DirectX_LIBRARY}" PATH) + message(STATUS "DX lib dir: ${DirectX_LIBRARY_DIR}") - find_library(DirectX_D3D10_LIBRARY NAMES d3d10 HINTS ${DirectX_LIBRARY_DIR} NO_DEFAULT_PATH) - find_library(DirectX_D3DX10_LIBRARY NAMES d3dx10 HINTS ${DirectX_LIBRARY_DIR} NO_DEFAULT_PATH) - - - if (DirectX_D3D10_INCLUDE_DIR AND DirectX_D3D10_LIBRARY) - set(DirectX_D3D10_FOUND TRUE) - set(DirectX_D3D10_INCLUDE_DIRS ${DirectX_D3D10_INCLUDE_DIR} CACHE PATH "D3D10 Include Dirs") - set(DirectX_D3D10_LIBRARIES ${DirectX_D3D10_LIBRARY} CACHE STRING "D3D10 Libraries") - endif () + find_library(DirectX_D3D10_LIBRARY NAMES d3d10 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) + find_library(DirectX_D3DX10_LIBRARY NAMES d3dx10 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) + + + if (DirectX_D3D10_INCLUDE_DIR AND DirectX_D3D10_LIBRARY) + set(DirectX_D3D10_FOUND TRUE) + set(DirectX_D3D10_INCLUDE_DIRS ${DirectX_D3D10_INCLUDE_DIR} CACHE PATH "D3D10 Include Dirs") + set(DirectX_D3D10_LIBRARIES ${DirectX_D3D10_LIBRARY} CACHE STRING "D3D10 Libraries") + endif () endif () # look for D3D11 components if (DirectX_FOUND) find_path(DirectX_D3D11_INCLUDE_DIR NAMES D3D11Shader.h HINTS ${DirectX_INC_SEARCH_PATH} NO_DEFAULT_PATH) - get_filename_component(DirectX_LIBRARY_DIR "${DirectX_LIBRARY}" PATH) - message(STATUS "DX lib dir: ${DirectX_LIBRARY_DIR}") - find_library(DirectX_D3D11_LIBRARY NAMES d3d11 d3d11_beta HINTS ${DirectX_LIBRARY_DIR} NO_DEFAULT_PATH) - find_library(DirectX_D3DX11_LIBRARY NAMES d3dx11 HINTS ${DirectX_LIBRARY_DIR} NO_DEFAULT_PATH) + get_filename_component(DirectX_LIBRARY_DIR "${DirectX_LIBRARY}" PATH) + message(STATUS "DX lib dir: ${DirectX_LIBRARY_DIR}") + find_library(DirectX_D3D11_LIBRARY NAMES d3d11 d3d11_beta HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) + find_library(DirectX_D3DX11_LIBRARY NAMES d3dx11 HINTS ${DirectX_LIB_SEARCH_PATH} PATH_SUFFIXES ${DirectX_LIBPATH_SUFFIX}) - if (DirectX_D3D11_INCLUDE_DIR AND DirectX_D3D11_LIBRARY) - set(DirectX_D3D11_FOUND TRUE) - set(DirectX_D3D11_INCLUDE_DIRS ${DirectX_D3D11_INCLUDE_DIR} CACHE PATH "D3D11 Include Dirs") - set(DirectX_D3D11_LIBRARIES ${DirectX_D3D11_LIBRARY} CACHE STRING "D3D11 Libraries") - endif () + if (DirectX_D3D11_INCLUDE_DIR AND DirectX_D3D11_LIBRARY) + set(DirectX_D3D11_FOUND TRUE) + set(DirectX_D3D11_INCLUDE_DIRS ${DirectX_D3D11_INCLUDE_DIR} CACHE PATH "D3D11 Include Dirs") + set(DirectX_D3D11_LIBRARIES ${DirectX_D3D11_LIBRARY} CACHE STRING "D3D11 Libraries") + endif () endif () endif(WIN32)