# SPDX-License-Identifier: GPL-2.0-or-later string(TIMESTAMP CURRENT_YEAR "%Y") set(PROJECT_DESCRIPTION "Blender is the free and open source 3D creation suite software.") set(PROJECT_COPYRIGHT "Copyright (C) 2001-${CURRENT_YEAR} Blender Foundation") set(PROJECT_CONTACT "foundation@blender.org") set(PROJECT_VENDOR "Blender Foundation") set(MAJOR_VERSION ${BLENDER_VERSION_MAJOR}) set(MINOR_VERSION ${BLENDER_VERSION_MINOR}) set(PATCH_VERSION ${BLENDER_VERSION_PATCH}) set(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}) set(CPACK_PACKAGE_DESCRIPTION ${PROJECT_DESCRIPTION}) set(CPACK_PACKAGE_VENDOR ${PROJECT_VENDOR}) set(CPACK_PACKAGE_CONTACT ${PROJECT_CONTACT}) set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING") set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") set(CPACK_PACKAGE_VERSION_MAJOR "${MAJOR_VERSION}") set(CPACK_PACKAGE_VERSION_MINOR "${MINOR_VERSION}") set(CPACK_PACKAGE_VERSION_PATCH "${PATCH_VERSION}") # Get the build revision, note that this can get out-of-sync, so for packaging run cmake first. set(MY_WC_HASH "unknown") if(EXISTS ${CMAKE_SOURCE_DIR}/.git/) find_package(Git) if(GIT_FOUND) # message(STATUS "Found Git: ${GIT_EXECUTABLE}") execute_process(COMMAND git rev-parse --short=12 HEAD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE MY_WC_HASH OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) endif() endif() set(BUILD_REV ${MY_WC_HASH}) unset(MY_WC_HASH) # Force Package Name execute_process(COMMAND date "+%Y%m%d" OUTPUT_VARIABLE CPACK_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER) if(MSVC) if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") set(PACKAGE_ARCH windows64) else() set(PACKAGE_ARCH windows32) endif() else() set(PACKAGE_ARCH ${CMAKE_SYSTEM_PROCESSOR}) endif() if(CPACK_OVERRIDE_PACKAGENAME) set(CPACK_PACKAGE_FILE_NAME ${CPACK_OVERRIDE_PACKAGENAME}-${PACKAGE_ARCH}) else() set(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME_LOWER}-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-git${CPACK_DATE}.${BUILD_REV}-${PACKAGE_ARCH}) endif() if(CMAKE_SYSTEM_NAME MATCHES "Linux") # RPM packages include(build_files/cmake/RpmBuild.cmake) if(RPMBUILD_FOUND) set(CPACK_GENERATOR "RPM") set(CPACK_RPM_PACKAGE_RELEASE "git${CPACK_DATE}.${BUILD_REV}") set(CPACK_SET_DESTDIR "true") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_DESCRIPTION}") set(CPACK_PACKAGE_RELOCATABLE "false") set(CPACK_RPM_PACKAGE_LICENSE "GPLv2+ and Apache 2.0") set(CPACK_RPM_PACKAGE_GROUP "Amusements/Multimedia") set(CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_SOURCE_DIR}/build_files/package_spec/rpm/blender.spec.in") endif() endif() # Mac Bundle if(APPLE) set(CPACK_GENERATOR "DragNDrop") # Libraries are bundled directly set(CPACK_COMPONENT_LIBRARIES_HIDDEN TRUE) endif() if(WIN32) set(CPACK_PACKAGE_INSTALL_DIRECTORY "Blender Foundation/Blender ${MAJOR_VERSION}.${MINOR_VERSION}") set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "Blender Foundation/Blender ${MAJOR_VERSION}.${MINOR_VERSION}") set(CPACK_NSIS_MUI_ICON ${CMAKE_SOURCE_DIR}/release/windows/icons/winblender.ico) set(CPACK_NSIS_COMPRESSOR "/SOLID lzma") set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/release/license/GPL-3.0.txt) set(CPACK_WIX_PRODUCT_ICON ${CMAKE_SOURCE_DIR}/release/windows/icons/winblender.ico) set(BLENDER_NAMESPACE_GUID "507F933F-5898-404A-9A05-18282FD491A6") string(UUID CPACK_WIX_UPGRADE_GUID NAMESPACE ${BLENDER_NAMESPACE_GUID} NAME ${CPACK_PACKAGE_INSTALL_DIRECTORY} TYPE SHA1 UPPER ) set(CPACK_WIX_TEMPLATE ${LIBDIR}/package/installer_wix/WIX.template) set(CPACK_WIX_UI_BANNER ${LIBDIR}/package/installer_wix/WIX_UI_BANNER.bmp) set(CPACK_WIX_UI_DIALOG ${LIBDIR}/package/installer_wix/WIX_UI_DIALOG.bmp) set(CPACK_WIX_LIGHT_EXTRA_FLAGS -dcl:medium) endif() set(CPACK_PACKAGE_EXECUTABLES "blender-launcher" "Blender") set(CPACK_CREATE_DESKTOP_LINKS "blender-launcher" "Blender") include(CPack) # Target for build_archive.py script, to automatically pass along # version, revision, platform, build directory macro(add_package_archive packagename extension) set(build_archive python ${CMAKE_SOURCE_DIR}/build_files/package_spec/build_archive.py) set(package_output ${CMAKE_BINARY_DIR}/release/${packagename}.${extension}) add_custom_target(package_archive DEPENDS ${package_output}) add_custom_command( OUTPUT ${package_output} COMMAND ${build_archive} ${packagename} ${extension} bin release WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) unset(build_archive) unset(package_output) endmacro() if(APPLE) add_package_archive( "${PROJECT_NAME}-${BLENDER_VERSION}-${BUILD_REV}-OSX-${CMAKE_OSX_ARCHITECTURES}" "zip") elseif(UNIX) # platform name could be tweaked, to include glibc, and ensure processor is correct (i386 vs i686) string(TOLOWER ${CMAKE_SYSTEM_NAME} PACKAGE_SYSTEM_NAME) add_package_archive( "${PROJECT_NAME}-${BLENDER_VERSION}-${BUILD_REV}-${PACKAGE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}" "tar.xz") endif() unset(MAJOR_VERSION) unset(MINOR_VERSION) unset(PATCH_VERSION) unset(BUILD_REV)