1*ba62d9d3SAndroid Build Coastguard Worker# Copyright (c) 2017, 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 2.8) 22*ba62d9d3SAndroid Build Coastguard Workerinclude (${CMAKE_CURRENT_LIST_DIR}/cmrt_utils.cmake) 23*ba62d9d3SAndroid Build Coastguard Worker 24*ba62d9d3SAndroid Build Coastguard Worker 25*ba62d9d3SAndroid Build Coastguard Workerset(EXECUTABLE_OUTPUT_PATH ${MDF_OPTION__OUTPUT_DIR}) 26*ba62d9d3SAndroid Build Coastguard Workerset(LIBRARY_OUTPUT_PATH ${MDF_OPTION__OUTPUT_DIR}) 27*ba62d9d3SAndroid Build Coastguard Worker 28*ba62d9d3SAndroid Build Coastguard Workerif (LATEST_CPP_NEEDED) 29*ba62d9d3SAndroid Build Coastguard Worker set(CPP_STANDARD_OPTION -std=c++17) 30*ba62d9d3SAndroid Build Coastguard Workerelse() 31*ba62d9d3SAndroid Build Coastguard Worker set(CPP_STANDARD_OPTION -std=c++11) 32*ba62d9d3SAndroid Build Coastguard Workerendif() 33*ba62d9d3SAndroid Build Coastguard Worker 34*ba62d9d3SAndroid Build Coastguard Worker# Set up compile options that will be used for the Linux build 35*ba62d9d3SAndroid Build Coastguard Workerset(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPP_STANDARD_OPTION} -fPIC -fpermissive") 36*ba62d9d3SAndroid Build Coastguard Workerset(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-strict-aliasing") 37*ba62d9d3SAndroid Build Coastguard Workerset(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -D__DEBUG -O0") 38*ba62d9d3SAndroid Build Coastguard Workerset(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CPP_STANDARD_OPTION} -fPIC -fpermissive") 39*ba62d9d3SAndroid Build Coastguard Workerset(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fno-strict-aliasing") 40*ba62d9d3SAndroid Build Coastguard Workerset(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -D__DEBUG -O0") 41*ba62d9d3SAndroid Build Coastguard Workerif(MEDIA_BUILD_HARDENING) 42*ba62d9d3SAndroid Build Coastguard Worker set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS} -fstack-protector-all") 43*ba62d9d3SAndroid Build Coastguard Worker set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2") 44*ba62d9d3SAndroid Build Coastguard Worker set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS} -fstack-protector-all") 45*ba62d9d3SAndroid Build Coastguard Worker set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2") 46*ba62d9d3SAndroid Build Coastguard Workerendif() 47*ba62d9d3SAndroid Build Coastguard Workerif(MEDIA_BUILD_FATAL_WARNINGS) 48*ba62d9d3SAndroid Build Coastguard Worker set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS} -Werror") 49*ba62d9d3SAndroid Build Coastguard Worker set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS} -Werror") 50*ba62d9d3SAndroid Build Coastguard Workerendif() 51*ba62d9d3SAndroid Build Coastguard Worker 52*ba62d9d3SAndroid Build Coastguard Workerset(GCC_SECURE_LINK_FLAGS "-z relro -z now") 53*ba62d9d3SAndroid Build Coastguard Workerset(CMAKE_SKIP_RPATH ON) 54*ba62d9d3SAndroid Build Coastguard Worker 55*ba62d9d3SAndroid Build Coastguard Worker#include paths 56*ba62d9d3SAndroid Build Coastguard Workerinclude_directories(${CMAKE_CURRENT_LIST_DIR}/../proprietary/share/) 57*ba62d9d3SAndroid Build Coastguard Workerinclude_directories(${CMAKE_CURRENT_LIST_DIR}/../agnostic/share) 58*ba62d9d3SAndroid Build Coastguard Workerinclude_directories(${CMAKE_CURRENT_LIST_DIR}/../agnostic/hardware) 59*ba62d9d3SAndroid Build Coastguard Workerinclude_directories(${CMAKE_CURRENT_LIST_DIR}/../linux/share) 60*ba62d9d3SAndroid Build Coastguard Workerinclude_directories(${CMAKE_CURRENT_LIST_DIR}/../linux/hardware) 61*ba62d9d3SAndroid Build Coastguard Worker 62*ba62d9d3SAndroid Build Coastguard Workerif(NOT "${LIBVA_INSTALL_PATH}" STREQUAL "") 63*ba62d9d3SAndroid Build Coastguard Worker include_directories(BEFORE ${LIBVA_INSTALL_PATH}) 64*ba62d9d3SAndroid Build Coastguard Worker link_directories(BEFORE ${LIBVA_LIBRARY_PATH}) 65*ba62d9d3SAndroid Build Coastguard Workerelseif(DEFINED ENV{LIBVA_INSTALL_PATH} AND NOT "$ENV{LIBVA_INSTALL_PATH}" STREQUAL "") 66*ba62d9d3SAndroid Build Coastguard Worker include_directories(BEFORE $ENV{LIBVA_INSTALL_PATH}) 67*ba62d9d3SAndroid Build Coastguard Worker link_directories(BEFORE ${LIBVA_LIBRARY_PATH}) 68*ba62d9d3SAndroid Build Coastguard Workerelse() 69*ba62d9d3SAndroid Build Coastguard Worker include(FindPkgConfig) 70*ba62d9d3SAndroid Build Coastguard Worker if(NOT LIBVA_FOUND) 71*ba62d9d3SAndroid Build Coastguard Worker pkg_check_modules(LIBVA REQUIRED libva>=1.8.0) 72*ba62d9d3SAndroid Build Coastguard Worker endif() 73*ba62d9d3SAndroid Build Coastguard Worker if(LIBVA_FOUND) 74*ba62d9d3SAndroid Build Coastguard Worker include_directories(BEFORE ${LIBVA_INCLUDE_DIRS}) 75*ba62d9d3SAndroid Build Coastguard Worker link_directories(${LIBVA_LIBRARY_DIRS}) 76*ba62d9d3SAndroid Build Coastguard Worker endif() 77*ba62d9d3SAndroid Build Coastguard Workerendif() 78*ba62d9d3SAndroid Build Coastguard Worker 79*ba62d9d3SAndroid Build Coastguard Worker# Set up the source files 80*ba62d9d3SAndroid Build Coastguard Workerset(CMRT_SOURCES "") 81*ba62d9d3SAndroid Build Coastguard Workerset(CMRT_DEFINES "") 82*ba62d9d3SAndroid Build Coastguard Workercmrt_include_directory(${CMAKE_CURRENT_LIST_DIR}/../agnostic) 83*ba62d9d3SAndroid Build Coastguard Workercmrt_include_directory(${CMAKE_CURRENT_LIST_DIR}/../linux) 84*ba62d9d3SAndroid Build Coastguard Worker 85*ba62d9d3SAndroid Build Coastguard Workeradd_library(igfxcmrt SHARED "${CMRT_SOURCES}") 86*ba62d9d3SAndroid Build Coastguard Worker 87*ba62d9d3SAndroid Build Coastguard Workerset(CMRT_DEFINES ${CMRT_DEFINES} VPHAL ISTDLIB_UMD CM_RT_EXPORTS) 88*ba62d9d3SAndroid Build Coastguard Worker 89*ba62d9d3SAndroid Build Coastguard Worker# Extra defines for 64 bit builds 90*ba62d9d3SAndroid Build Coastguard Workerif(CMAKE_SIZEOF_VOID_P EQUAL 8) 91*ba62d9d3SAndroid Build Coastguard Worker set(CMRT_DEFINES ${CMRT_DEFINES} __CT__) 92*ba62d9d3SAndroid Build Coastguard Workerendif() 93*ba62d9d3SAndroid Build Coastguard Workerset_target_properties( igfxcmrt PROPERTIES 94*ba62d9d3SAndroid Build Coastguard Worker FOLDER CM_RT 95*ba62d9d3SAndroid Build Coastguard Worker COMPILE_DEFINITIONS "${CMRT_DEFINES}" 96*ba62d9d3SAndroid Build Coastguard Worker ) 97*ba62d9d3SAndroid Build Coastguard Worker 98*ba62d9d3SAndroid Build Coastguard Worker# set the version 99*ba62d9d3SAndroid Build Coastguard Workerget_cmrt_versions(CMRT_VERSION_MAJOR CMRT_VERSION_MINOR CMRT_VERSION_PATCH) 100*ba62d9d3SAndroid Build Coastguard Workerset(CMRT_VERSION ${CMRT_VERSION_MAJOR}.${CMRT_VERSION_MINOR}.${CMRT_VERSION_PATCH}) 101*ba62d9d3SAndroid Build Coastguard Worker 102*ba62d9d3SAndroid Build Coastguard Workerset_target_properties(igfxcmrt PROPERTIES VERSION ${CMRT_VERSION}) 103*ba62d9d3SAndroid Build Coastguard Workerset_target_properties(igfxcmrt PROPERTIES SOVERSION ${CMRT_VERSION_MAJOR}) 104*ba62d9d3SAndroid Build Coastguard Workertarget_link_libraries( igfxcmrt dl va rt ${GCC_SECURE_LINK_FLAGS}) 105*ba62d9d3SAndroid Build Coastguard Worker 106*ba62d9d3SAndroid Build Coastguard Workerinclude(GNUInstallDirs) 107*ba62d9d3SAndroid Build Coastguard Worker 108*ba62d9d3SAndroid Build Coastguard Workerconfigure_file(${CMAKE_CURRENT_LIST_DIR}/igfxcmrt.pc.in ${CMAKE_CURRENT_BINARY_DIR}/igfxcmrt.pc @ONLY) 109*ba62d9d3SAndroid Build Coastguard Worker 110*ba62d9d3SAndroid Build Coastguard Workerinstall(TARGETS igfxcmrt LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT media NAMELINK_SKIP) 111*ba62d9d3SAndroid Build Coastguard Workerinstall(TARGETS igfxcmrt LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT media NAMELINK_ONLY) 112*ba62d9d3SAndroid Build Coastguard Worker 113*ba62d9d3SAndroid Build Coastguard Workerset(CMRT_HEADERS 114*ba62d9d3SAndroid Build Coastguard Worker ${CMRT_HEADERS} 115*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/../agnostic/share/cm_rt.h 116*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/../agnostic/share/cm_rt_g8.h 117*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/../agnostic/share/cm_rt_g9.h 118*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/../agnostic/share/cm_rt_g10.h 119*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/../agnostic/share/cm_rt_g11.h 120*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/../agnostic/share/cm_rt_g12_tgl.h 121*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/../agnostic/share/cm_rt_g12_dg1.h 122*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/../agnostic/share/cm_hw_vebox_cmd_g10.h 123*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/share/cm_rt_def_os.h 124*ba62d9d3SAndroid Build Coastguard Worker ${CMAKE_CURRENT_LIST_DIR}/share/cm_rt_api_os.h 125*ba62d9d3SAndroid Build Coastguard Worker ) 126*ba62d9d3SAndroid Build Coastguard Worker 127*ba62d9d3SAndroid Build Coastguard Workerfile(WRITE ${CMAKE_CURRENT_BINARY_DIR}/cm_rt_extension.h "//empty file for future implementation") 128*ba62d9d3SAndroid Build Coastguard Worker 129*ba62d9d3SAndroid Build Coastguard Workerinstall(FILES ${CMRT_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/igfxcmrt COMPONENT media) 130*ba62d9d3SAndroid Build Coastguard Workerinstall(FILES ${CMAKE_CURRENT_BINARY_DIR}/cm_rt_extension.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/igfxcmrt COMPONENT media) 131*ba62d9d3SAndroid Build Coastguard Workerinstall(FILES ${CMAKE_CURRENT_BINARY_DIR}/igfxcmrt.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT media) 132