1*ba62d9d3SAndroid Build Coastguard Worker# Copyright (c) 2017-2022, Intel Corporation 2*ba62d9d3SAndroid Build Coastguard Worker# 3*ba62d9d3SAndroid Build Coastguard Worker# Permission is hereby granted, free of charge, to any person obtaining a 4*ba62d9d3SAndroid Build Coastguard Worker# copy of this software and associated documentation files (the "Software"), 5*ba62d9d3SAndroid Build Coastguard Worker# to deal in the Software without restriction, including without limitation 6*ba62d9d3SAndroid Build Coastguard Worker# the rights to use, copy, modify, merge, publish, distribute, sublicense, 7*ba62d9d3SAndroid Build Coastguard Worker# and/or sell copies of the Software, and to permit persons to whom the 8*ba62d9d3SAndroid Build Coastguard Worker# Software is furnished to do so, subject to the following conditions: 9*ba62d9d3SAndroid Build Coastguard Worker# 10*ba62d9d3SAndroid Build Coastguard Worker# The above copyright notice and this permission notice shall be included 11*ba62d9d3SAndroid Build Coastguard Worker# in all copies or substantial portions of the Software. 12*ba62d9d3SAndroid Build Coastguard Worker# 13*ba62d9d3SAndroid Build Coastguard Worker# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 14*ba62d9d3SAndroid Build Coastguard Worker# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15*ba62d9d3SAndroid Build Coastguard Worker# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 16*ba62d9d3SAndroid Build Coastguard Worker# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 17*ba62d9d3SAndroid Build Coastguard Worker# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 18*ba62d9d3SAndroid Build Coastguard Worker# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 19*ba62d9d3SAndroid Build Coastguard Worker# OTHER DEALINGS IN THE SOFTWARE. 20*ba62d9d3SAndroid Build Coastguard Worker 21*ba62d9d3SAndroid Build Coastguard Workercmake_minimum_required(VERSION 3.5) 22*ba62d9d3SAndroid Build Coastguard Workerproject(IntelMediaDriver) 23*ba62d9d3SAndroid Build Coastguard Workerset(MEDIA_VERSION "24.3.4${MEDIA_VERSION_EXTRA}" CACHE STRING "" FORCE) 24*ba62d9d3SAndroid Build Coastguard Worker 25*ba62d9d3SAndroid Build Coastguard Worker 26*ba62d9d3SAndroid Build Coastguard Worker 27*ba62d9d3SAndroid Build Coastguard Worker 28*ba62d9d3SAndroid Build Coastguard Worker 29*ba62d9d3SAndroid Build Coastguard Worker 30*ba62d9d3SAndroid Build Coastguard Workerinclude(os_release_info.cmake) 31*ba62d9d3SAndroid Build Coastguard Worker 32*ba62d9d3SAndroid Build Coastguard Workerget_os_release_info(os_name os_version) 33*ba62d9d3SAndroid Build Coastguard Worker 34*ba62d9d3SAndroid Build Coastguard Workerif(NOT DEFINED CMAKE_INSTALL_PREFIX OR CMAKE_INSTALL_PREFIX STREQUAL "") 35*ba62d9d3SAndroid Build Coastguard Worker set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "..." FORCE) 36*ba62d9d3SAndroid Build Coastguard Workerendif() 37*ba62d9d3SAndroid Build Coastguard Workermessage(STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}") 38*ba62d9d3SAndroid Build Coastguard Worker 39*ba62d9d3SAndroid Build Coastguard Workerif("${os_name}" STREQUAL "clear-linux-os") 40*ba62d9d3SAndroid Build Coastguard Worker # clear-linux-os distribution avoids /etc for distribution defaults. 41*ba62d9d3SAndroid Build Coastguard Worker # Set this variable explicitly before including GNUInstallDirs. 42*ba62d9d3SAndroid Build Coastguard Worker set(CMAKE_INSTALL_SYSCONFDIR "usr/share/defaults/etc") 43*ba62d9d3SAndroid Build Coastguard Workerendif() 44*ba62d9d3SAndroid Build Coastguard Worker 45*ba62d9d3SAndroid Build Coastguard Workerinclude(CMakeDependentOption) 46*ba62d9d3SAndroid Build Coastguard Worker 47*ba62d9d3SAndroid Build Coastguard Workeroption (ENABLE_KERNELS "Build driver with shaders (kernels) support" ON) 48*ba62d9d3SAndroid Build Coastguard Worker# ENABLE_NONFREE_KERNELS option permits to enable closed source EU shaders (kernels) 49*ba62d9d3SAndroid Build Coastguard Worker# additionally to open source EU shaders and fixed function hardware. 50*ba62d9d3SAndroid Build Coastguard Workercmake_dependent_option( ENABLE_NONFREE_KERNELS 51*ba62d9d3SAndroid Build Coastguard Worker "Use closed source pre-built binary shaders (kernels)" ON 52*ba62d9d3SAndroid Build Coastguard Worker "ENABLE_KERNELS" OFF) 53*ba62d9d3SAndroid Build Coastguard Workercmake_dependent_option( BUILD_KERNELS 54*ba62d9d3SAndroid Build Coastguard Worker "Rebuild shaders (kernels) from sources" OFF 55*ba62d9d3SAndroid Build Coastguard Worker "ENABLE_KERNELS;NOT ENABLE_NONFREE_KERNELS" OFF) 56*ba62d9d3SAndroid Build Coastguard Workeroption (BUILD_CMRTLIB "Build and Install cmrtlib together with media driver" ON) 57*ba62d9d3SAndroid Build Coastguard Worker 58*ba62d9d3SAndroid Build Coastguard Workeroption (ENABLE_PRODUCTION_KMD "Enable Production KMD header files" OFF) 59*ba62d9d3SAndroid Build Coastguard Worker 60*ba62d9d3SAndroid Build Coastguard Workerinclude(GNUInstallDirs) 61*ba62d9d3SAndroid Build Coastguard Worker 62*ba62d9d3SAndroid Build Coastguard Workerif (BUILD_CMRTLIB AND NOT CMAKE_WDDM_LINUX) 63*ba62d9d3SAndroid Build Coastguard Worker add_subdirectory(cmrtlib) 64*ba62d9d3SAndroid Build Coastguard Workerendif() 65*ba62d9d3SAndroid Build Coastguard Worker 66*ba62d9d3SAndroid Build Coastguard Workerif (BUILD_KERNELS) 67*ba62d9d3SAndroid Build Coastguard Worker find_program(IGA iga64) 68*ba62d9d3SAndroid Build Coastguard Worker if (NOT IGA) 69*ba62d9d3SAndroid Build Coastguard Worker message(FATAL_ERROR "Failed to find IGA") 70*ba62d9d3SAndroid Build Coastguard Worker endif() 71*ba62d9d3SAndroid Build Coastguard Worker 72*ba62d9d3SAndroid Build Coastguard Worker find_program(CMC cmc) 73*ba62d9d3SAndroid Build Coastguard Worker if (NOT CMC) 74*ba62d9d3SAndroid Build Coastguard Worker message(FATAL_ERROR "Failed to find CMC") 75*ba62d9d3SAndroid Build Coastguard Worker endif() 76*ba62d9d3SAndroid Build Coastguard Worker 77*ba62d9d3SAndroid Build Coastguard Worker find_program(PYTHON python) 78*ba62d9d3SAndroid Build Coastguard Worker if (NOT PYTHON) 79*ba62d9d3SAndroid Build Coastguard Worker message(FATAL_ERROR "Failed to find PYTHON") 80*ba62d9d3SAndroid Build Coastguard Worker endif() 81*ba62d9d3SAndroid Build Coastguard Worker 82*ba62d9d3SAndroid Build Coastguard Worker add_subdirectory(Tools/MediaDriverTools) 83*ba62d9d3SAndroid Build Coastguard Workerendif() 84*ba62d9d3SAndroid Build Coastguard Worker 85*ba62d9d3SAndroid Build Coastguard Workeradd_subdirectory(media_driver) 86*ba62d9d3SAndroid Build Coastguard Worker 87*ba62d9d3SAndroid Build Coastguard Workerif("${LIBVA_DRIVERS_PATH}" STREQUAL "") 88*ba62d9d3SAndroid Build Coastguard Worker set(LIBVA_DRIVERS_PATH "${CMAKE_INSTALL_FULL_LIBDIR}/dri/") 89*ba62d9d3SAndroid Build Coastguard Workerendif() 90*ba62d9d3SAndroid Build Coastguard Workermessage(STATUS "LIBVA_DRIVERS_PATH = ${LIBVA_DRIVERS_PATH}") 91*ba62d9d3SAndroid Build Coastguard Worker 92*ba62d9d3SAndroid Build Coastguard Workerinstall (PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/media_driver/iHD_drv_video.so DESTINATION ${LIBVA_DRIVERS_PATH} COMPONENT media) 93*ba62d9d3SAndroid Build Coastguard Worker 94*ba62d9d3SAndroid Build Coastguard Workeroption (INSTALL_DRIVER_SYSCONF "Install driver system configuration file" OFF) 95*ba62d9d3SAndroid Build Coastguard Workerif (INSTALL_DRIVER_SYSCONF) 96*ba62d9d3SAndroid Build Coastguard Worker configure_file ( 97*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_SOURCE_DIR}/media_driver/cmake/linux/intel-media.sh.in 98*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/media_driver/cmake/linux/intel-media.sh) 99*ba62d9d3SAndroid Build Coastguard Worker install (FILES ${CMAKE_CURRENT_BINARY_DIR}/media_driver/cmake/linux/intel-media.sh 100*ba62d9d3SAndroid Build Coastguard Worker DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/profile.d/ COMPONENT media) 101*ba62d9d3SAndroid Build Coastguard Workerendif() 102*ba62d9d3SAndroid Build Coastguard Worker 103*ba62d9d3SAndroid Build Coastguard Workerinclude(${CMAKE_CURRENT_LIST_DIR}/pack_ext.cmake OPTIONAL) 104*ba62d9d3SAndroid Build Coastguard Worker 105*ba62d9d3SAndroid Build Coastguard Workerif (NOT MEDIA_PACKING) 106*ba62d9d3SAndroid Build Coastguard Worker set(CPACK_GENERATOR "DEB" "RPM") 107*ba62d9d3SAndroid Build Coastguard Workerelse() 108*ba62d9d3SAndroid Build Coastguard Worker set(CPACK_GENERATOR ${MEDIA_PACKAGING}) 109*ba62d9d3SAndroid Build Coastguard Workerendif() 110*ba62d9d3SAndroid Build Coastguard Workerset(CPACK_PACKAGE_NAME "intel-media") 111*ba62d9d3SAndroid Build Coastguard Workerset(CPACK_PACKAGE_VENDOR "Intel") 112*ba62d9d3SAndroid Build Coastguard Workerset(CPACK_PACKAGE_DESCRIPTION_SUMMARY "intel-media Open Source Driver") 113*ba62d9d3SAndroid Build Coastguard Workerset(CPACK_RPM_PACKAGE_ARCHITECTURE "x86_64") 114*ba62d9d3SAndroid Build Coastguard Workerset(CPACK_RPM_PACKAGE_GROUP "System Environment/Libraries") 115*ba62d9d3SAndroid Build Coastguard Workerset(CPACK_RPM_PACKAGE_LICENSE "Intel") 116*ba62d9d3SAndroid Build Coastguard Worker 117*ba62d9d3SAndroid Build Coastguard Workerset(CPACK_PACKAGE_VERSION ${MEDIA_VERSION}) 118*ba62d9d3SAndroid Build Coastguard Worker 119*ba62d9d3SAndroid Build Coastguard Workerset(CPACK_DEBIAN_PACKAGE_MAINTAINER "Intel") 120*ba62d9d3SAndroid Build Coastguard Worker 121*ba62d9d3SAndroid Build Coastguard Worker# Create Distro OS initial based on 1st-2nd letter of string 122*ba62d9d3SAndroid Build Coastguard Worker# or label "generic" for unsupported/unknown distros for CPACK_PACKAGE_FILE_NAME 123*ba62d9d3SAndroid Build Coastguard Workerif("${os_name}" STREQUAL "ubuntu") 124*ba62d9d3SAndroid Build Coastguard Worker set(DISTRO_INFO "u${os_version}") 125*ba62d9d3SAndroid Build Coastguard Workerelseif("${os_name}" STREQUAL "fedora") 126*ba62d9d3SAndroid Build Coastguard Worker set(DISTRO_INFO "f${os_version}") 127*ba62d9d3SAndroid Build Coastguard Workerelseif("${os_name}" STREQUAL "clear-linux-os") 128*ba62d9d3SAndroid Build Coastguard Worker set(DISTRO_INFO "cl${os_version}") 129*ba62d9d3SAndroid Build Coastguard Workerelseif("${os_name}" STREQUAL "centos") 130*ba62d9d3SAndroid Build Coastguard Worker set(DISTRO_INFO "ce${os_version}") 131*ba62d9d3SAndroid Build Coastguard Workerelse() 132*ba62d9d3SAndroid Build Coastguard Worker set(DISTRO_INFO "generic") 133*ba62d9d3SAndroid Build Coastguard Workerendif() 134*ba62d9d3SAndroid Build Coastguard Worker 135*ba62d9d3SAndroid Build Coastguard Worker# Format Package Version and Build Type Strings for CPACK_PACKAGE_FILE_NAME 136*ba62d9d3SAndroid Build Coastguard Workerstring(TOLOWER "${BUILD_TYPE}.${CPACK_RPM_PACKAGE_ARCHITECTURE}" PACKAGE_TYPE) 137*ba62d9d3SAndroid Build Coastguard Worker 138*ba62d9d3SAndroid Build Coastguard Workerset(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${DISTRO_INFO}-${PACKAGE_TYPE}") 139*ba62d9d3SAndroid Build Coastguard Worker 140*ba62d9d3SAndroid Build Coastguard Workerinclude(CPack) 141*ba62d9d3SAndroid Build Coastguard Worker 142