1# Copyright (c) 2017-2023, Intel Corporation 2# 3# Permission is hereby granted, free of charge, to any person obtaining a 4# copy of this software and associated documentation files (the "Software"), 5# to deal in the Software without restriction, including without limitation 6# the rights to use, copy, modify, merge, publish, distribute, sublicense, 7# and/or sell copies of the Software, and to permit persons to whom the 8# Software is furnished to do so, subject to the following conditions: 9# 10# The above copyright notice and this permission notice shall be included 11# in all copies or substantial portions of the Software. 12# 13# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 14# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 16# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 17# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 18# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 19# OTHER DEALINGS IN THE SOFTWARE. 20 21project( media ) 22 23find_package(PkgConfig) 24find_package(X11) 25find_package(Backtrace) 26 27# to get access to generated header files 28include_directories(${CMAKE_BINARY_DIR}) 29 30bs_set_if_undefined(LIB_NAME iHD_drv_video) 31 32option (MEDIA_RUN_TEST_SUITE "run google test module after install" ON) 33include(${MEDIA_DRIVER_CMAKE}/media_gen_flags.cmake) 34include(${MEDIA_DRIVER_CMAKE}/media_feature_flags.cmake) 35 36 37if(NOT DEFINED SKIP_GMM_CHECK) 38 # checking dependencies 39 pkg_check_modules(LIBGMM REQUIRED igdgmm>=12.0.0) 40 41 if(LIBGMM_FOUND) 42 include_directories(BEFORE ${LIBGMM_INCLUDE_DIRS}) 43 # link_directories() should appear before add_library and the like 44 # otherwise it will not take effect 45 link_directories(${LIBGMM_LIBRARY_DIRS}) 46 endif() 47endif(NOT DEFINED SKIP_GMM_CHECK) 48 49message("-- media -- PLATFORM = ${PLATFORM}") 50message("-- media -- ARCH = ${ARCH}") 51message("-- media -- CMAKE_CURRENT_LIST_DIR = ${CMAKE_CURRENT_LIST_DIR}") 52message("-- media -- INCLUDED_LIBS = ${INCLUDED_LIBS}") 53message("-- media -- LIB_NAME = ${LIB_NAME}") 54message("-- media -- OUTPUT_NAME = ${OUTPUT_NAME}") 55message("-- media -- BUILD_TYPE/UFO_BUILD_TYPE/CMAKE_BUILD_TYPE = ${BUILD_TYPE}/${UFO_BUILD_TYPE}/${CMAKE_BUILD_TYPE}") 56message("-- media -- LIBVA_INSTALL_PATH = ${LIBVA_INSTALL_PATH}") 57message("-- media -- MEDIA_VERSION = ${MEDIA_VERSION}") 58if(X11_FOUND) 59 message("-- media -- X11 Found") 60 pkg_check_modules(LIBVAX11 libva-x11) 61 if(LIBVAX11_FOUND) 62 message("-- media -- LIBVAX11 Found") 63 else() 64 set(X11_FOUND FALSE) 65 endif() 66endif() 67 68set(LIB_NAME_STATIC "${LIB_NAME}_STATIC") 69set(SOURCES_ "") 70set(COMMON_SOURCES_ "") 71set(SOFTLET_COMMON_SOURCES_ "") 72set(COMMON_PRIVATE_INCLUDE_DIRS_ "") 73set(SOFTLET_COMMON_PRIVATE_INCLUDE_DIRS_ "") 74set(VP_SOURCES_ "") 75set(SOFTLET_VP_SOURCES_ "") # softlet source group 76 77set(VP_PRIVATE_INCLUDE_DIRS_ "") 78set(SOFTLET_VP_PRIVATE_INCLUDE_DIRS_ "") 79set(SHARED_SOURCES_ "") 80set(UPDATED_SOURCES_ "") 81set(SOFTLET_DDI_SOURCES_ "") 82set(SOFTLET_DDI_PRIVATE_INCLUDE_DIRS_ "") 83set(SOFTLET_DDI_PUBLIC_INCLUDE_DIRS_ "") 84 85################################################################################ 86# codec 87################################################################################ 88set(CODEC_SOURCES_ "") # legacy source group 89set(CODEC_HEADERS_ "") 90set(CODEC_PRIVATE_INCLUDE_DIRS_ "") 91set(SOFTLET_CODEC_SOURCES_ "") # softlet source group 92set(SOFTLET_CODEC_HEADERS_ "") 93set(SOFTLET_CODEC_PRIVATE_INCLUDE_DIRS_ "") 94set(SOFTLET_CODEC_COMMON_SOURCES_ "") # softlet codec common source group 95set(SOFTLET_CODEC_COMMON_HEADERS_ "") 96set(SOFTLET_CODEC_COMMON_PRIVATE_INCLUDE_DIRS_ "") 97set(SOFTLET_ENCODE_SOURCES_ "") # softlet encode source group 98set(SOFTLET_ENCODE_HEADERS_ "") 99set(SOFTLET_ENCODE_PRIVATE_INCLUDE_DIRS_ "") 100set(SOFTLET_ENCODE_COMMON_SOURCES_ "") 101set(SOFTLET_ENCODE_COMMON_HEADERS_ "") 102set(SOFTLET_ENCODE_COMMON_PRIVATE_INCLUDE_DIRS_ "") 103set(SOFTLET_ENCODE_AV1_SOURCES_ "") 104set(SOFTLET_ENCODE_AV1_HEADERS_ "") 105set(SOFTLET_ENCODE_AV1_PRIVATE_INCLUDE_DIRS_ "") 106set(SOFTLET_ENCODE_HEVC_SOURCES_ "") 107set(SOFTLET_ENCODE_HEVC_HEADERS_ "") 108set(SOFTLET_ENCODE_HEVC_PRIVATE_INCLUDE_DIRS_ "") 109set(SOFTLET_ENCODE_AVC_SOURCES_ "") 110set(SOFTLET_ENCODE_AVC_HEADERS_ "") 111set(SOFTLET_ENCODE_AVC_PRIVATE_INCLUDE_DIRS_ "") 112set(SOFTLET_ENCODE_VP9_SOURCES_ "") 113set(SOFTLET_ENCODE_VP9_HEADERS_ "") 114set(SOFTLET_ENCODE_VP9_PRIVATE_INCLUDE_DIRS_ "") 115set(SOFTLET_ENCODE_JPEG_SOURCES_ "") 116set(SOFTLET_ENCODE_JPEG_HEADERS_ "") 117set(SOFTLET_ENCODE_JPEG_PRIVATE_INCLUDE_DIRS_ "") 118set(SOFTLET_DECODE_SOURCES_ "") # softlet decode source group 119set(SOFTLET_DECODE_HEADERS_ "") 120set(SOFTLET_DECODE_PRIVATE_INCLUDE_DIRS_ "") 121set(SOFTLET_DECODE_COMMON_SOURCES_ "") 122set(SOFTLET_DECODE_COMMON_HEADERS_ "") 123set(SOFTLET_DECODE_COMMON_PRIVATE_INCLUDE_DIRS_ "") 124set(SOFTLET_DECODE_AVC_SOURCES_ "") 125set(SOFTLET_DECODE_AVC_HEADERS_ "") 126set(SOFTLET_DECODE_AVC_PRIVATE_INCLUDE_DIRS_ "") 127set(SOFTLET_DECODE_HEVC_SOURCES_ "") 128set(SOFTLET_DECODE_HEVC_HEADERS_ "") 129set(SOFTLET_DECODE_HEVC_PRIVATE_INCLUDE_DIRS_ "") 130set(SOFTLET_DECODE_JPEG_SOURCES_ "") 131set(SOFTLET_DECODE_JPEG_HEADERS_ "") 132set(SOFTLET_DECODE_JPEG_PRIVATE_INCLUDE_DIRS_ "") 133set(SOFTLET_DECODE_MPEG2_SOURCES_ "") 134set(SOFTLET_DECODE_MPEG2_HEADERS_ "") 135set(SOFTLET_DECODE_MPEG2_PRIVATE_INCLUDE_DIRS_ "") 136set(SOFTLET_DECODE_VP9_SOURCES_ "") 137set(SOFTLET_DECODE_VP9_HEADERS_ "") 138set(SOFTLET_DECODE_VP9_PRIVATE_INCLUDE_DIRS_ "") 139set(SOFTLET_DECODE_AV1_SOURCES_ "") 140set(SOFTLET_DECODE_AV1_HEADERS_ "") 141set(SOFTLET_DECODE_AV1_PRIVATE_INCLUDE_DIRS_ "") 142set(SOFTLET_DECODE_VP8_SOURCES_ "") 143set(SOFTLET_DECODE_VP8_HEADERS_ "") 144set(SOFTLET_DECODE_VP8_PRIVATE_INCLUDE_DIRS_ "") 145set(SOFTLET_DECODE_VVC_SOURCES_ "") 146set(SOFTLET_DECODE_VVC_HEADERS_ "") 147set(SOFTLET_DECODE_VVC_PRIVATE_INCLUDE_DIRS_ "") 148 149set(SOFTLET_CODEC_EXT_SOURCES_ "") 150set(SOFTLET_CODEC_EXT_HEADERS_ "") 151set(SOFTLET_CODEC_EXT_PRIVATE_INCLUDE_DIRS_ "") 152 153###################################################### 154#MOS LIB 155set (MOS_COMMON_SOURCES_ "") 156set (MOS_COMMON_HEADERS_ "") 157set (MOS_PRIVATE_SOURCES_ "") 158set (MOS_PUBLIC_INCLUDE_DIRS_ "") 159set (MOS_PRIVATE_INCLUDE_DIRS_ "") 160set (MOS_PREPEND_INCLUDE_DIRS_ "") 161set (MOS_EXT_INCLUDE_DIRS_ "") 162 163set (SOFTLET_MOS_COMMON_SOURCES_ "") 164set (SOFTLET_MOS_COMMON_HEADERS_ "") 165set (SOFTLET_MOS_PRIVATE_SOURCES_ "") 166set (SOFTLET_MOS_PUBLIC_INCLUDE_DIRS_ "") 167set (SOFTLET_MOS_PRIVATE_INCLUDE_DIRS_ "") 168set (SOFTLET_MOS_PREPEND_INCLUDE_DIRS_ "") 169set (SOFTLET_MOS_EXT_INCLUDE_DIRS_ "") 170###################################################### 171 172###################################################### 173#CP LIB 174set(CP_COMMON_HEADERS_ "") # legacy source group 175set(CP_COMMON_SOURCES_ "") 176set(CP_COMMON_SHARED_HEADERS_ "") # legacy and softlet shared source group 177set(CP_COMMON_SHARED_SOURCES_ "") 178set(CP_COMMON_NEXT_HEADERS_ "") # softlet source group 179set(CP_COMMON_NEXT_SOURCES_ "") 180set(CP_SOURCES_ "") # common + os part 181###################################################### 182# MHW 183################################################################################ 184set(SOFTLET_MHW_SOURCES_ "") 185set(SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_ "") 186set(SOFTLET_MHW_VDBOX_SOURCES_ "") 187set(SOFTLET_MHW_VDBOX_PRIVATE_INCLUDE_DIRS_ "") 188set(SOFTLET_MHW_VDBOX_COMMON_SOURCES_ "") 189set(SOFTLET_MHW_VDBOX_HCP_SOURCES_ "") 190set(SOFTLET_MHW_VDBOX_HUC_SOURCES_ "") 191set(SOFTLET_MHW_VDBOX_VDENC_SOURCES_ "") 192set(SOFTLET_MHW_VDBOX_AVP_SOURCES_ "") 193set(SOFTLET_MHW_VDBOX_MFX_SOURCES_ "") 194set(SOFTLET_MHW_VDBOX_VVCP_SOURCES_ "") 195set(SOFTLET_MHW_VDBOX_AQM_SOURCES_ "") 196set(SOFTLET_MHW_EXT_SOURCES_ "") 197set(SOFTLET_MHW_COMMON_SOURCES_ "") 198set(SOFTLET_MHW_COMMON_PRIVATE_INCLUDE_DIRS_ "") 199set(SOFTLET_MHW_BLT_SOURCES_ "") 200set(SOFTLET_MHW_BLT_PRIVATE_INCLUDE_DIRS_ "") 201set(SOFTLET_MHW_RENDER_SOURCES_ "") 202set(SOFTLET_MHW_RENDER_PRIVATE_INCLUDE_DIRS_ "") 203set(SOFTLET_MHW_SFC_SOURCES_ "") 204set(SOFTLET_MHW_SFC_PRIVATE_INCLUDE_DIRS_ "") 205set(SOFTLET_MHW_VEBOX_SOURCES_ "") 206set(SOFTLET_MHW_VEBOX_PRIVATE_INCLUDE_DIRS_ "") 207set(SOFTLET_MHW_MI_SOURCES_ "") 208set(SOFTLET_MHW_MI_PRIVATE_INCLUDE_DIRS_ "") 209 210# add source 211# first 212media_include_subdirectory(../media_common/agnostic) 213media_include_subdirectory(../media_common/linux) 214 215# second 216media_include_subdirectory(agnostic) 217media_include_subdirectory(linux) 218media_include_subdirectory(media_softlet) 219media_include_subdirectory(media_interface) 220media_include_subdirectory(../media_softlet/agnostic) 221media_include_subdirectory(../media_softlet/linux) 222media_include_subdirectory(../media_softlet/media_interface) 223 224include(${MEDIA_EXT}/media_srcs_ext.cmake OPTIONAL) 225include(${MEDIA_COMMON_EXT}/media_srcs_ext.cmake OPTIONAL) 226include(${MEDIA_SOFTLET_EXT}/media_srcs_ext.cmake OPTIONAL) 227 228include(${MEDIA_DRIVER_CMAKE}/media_include_paths.cmake) 229 230include(${MEDIA_DRIVER_CMAKE}/media_compile_flags.cmake) 231 232# 233# set platform specific defines 234# 235bs_set_defines() 236 237set_source_files_properties(${SOURCES_} PROPERTIES LANGUAGE "CXX") 238set_source_files_properties(${COMMON_SOURCES_} PROPERTIES LANGUAGE "CXX") 239set_source_files_properties(${SOFTLET_COMMON_SOURCES_} PROPERTIES LANGUAGE "CXX") 240set_source_files_properties(${CODEC_SOURCES_} PROPERTIES LANGUAGE "CXX") 241set_source_files_properties(${SOFTLET_CODEC_SOURCES_} PROPERTIES LANGUAGE "CXX") 242set_source_files_properties(${SOFTLET_ENCODE_SOURCES_} PROPERTIES LANGUAGE "CXX") 243set_source_files_properties(${SOFTLET_DECODE_SOURCES_} PROPERTIES LANGUAGE "CXX") 244set_source_files_properties(${VP_SOURCES_} PROPERTIES LANGUAGE "CXX") 245set_source_files_properties(${SOFTLET_VP_SOURCES_} PROPERTIES LANGUAGE "CXX") 246set_source_files_properties(${CP_COMMON_SOURCES_} PROPERTIES LANGUAGE "CXX") 247set_source_files_properties(${CP_COMMON_SHARED_SOURCES_} PROPERTIES LANGUAGE "CXX") 248set_source_files_properties(${CP_COMMON_NEXT_SOURCES_} PROPERTIES LANGUAGE "CXX") 249set_source_files_properties(${CP_SOURCES_} PROPERTIES LANGUAGE "CXX") 250set_source_files_properties(${SOFTLET_DDI_SOURCES_} PROPERTIES LANGUAGE "CXX") 251set_source_files_properties(${SOURCES_SSE2} PROPERTIES LANGUAGE "CXX") 252set_source_files_properties(${SOURCES_SSE4} PROPERTIES LANGUAGE "CXX") 253 254# MHW settings 255set(SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_ 256${SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_} 257${SOFTLET_MHW_VDBOX_PRIVATE_INCLUDE_DIRS_} 258${SOFTLET_MHW_COMMON_PRIVATE_INCLUDE_DIRS_} 259${SOFTLET_MHW_BLT_PRIVATE_INCLUDE_DIRS_} 260${SOFTLET_MHW_RENDER_PRIVATE_INCLUDE_DIRS_} 261${SOFTLET_MHW_SFC_PRIVATE_INCLUDE_DIRS_} 262${SOFTLET_MHW_VEBOX_PRIVATE_INCLUDE_DIRS_} 263${SOFTLET_MHW_MI_PRIVATE_INCLUDE_DIRS_} 264) 265 266set(SOFTLET_MHW_VDBOX_SOURCES_ 267${SOFTLET_MHW_VDBOX_SOURCES_} 268${SOFTLET_MHW_VDBOX_COMMON_SOURCES_} 269${SOFTLET_MHW_VDBOX_HCP_SOURCES_} 270${SOFTLET_MHW_VDBOX_HUC_SOURCES_} 271${SOFTLET_MHW_VDBOX_VDENC_SOURCES_} 272${SOFTLET_MHW_VDBOX_AVP_SOURCES_} 273${SOFTLET_MHW_VDBOX_MFX_SOURCES_} 274${SOFTLET_MHW_VDBOX_VVCP_SOURCES_} 275${SOFTLET_MHW_VDBOX_AQM_SOURCES_} 276${SOFTLET_MHW_EXT_SOURCES_} 277) 278 279set(SOFTLET_MHW_SOURCES_ 280${SOFTLET_MHW_SOURCES_} 281${SOFTLET_MHW_VDBOX_SOURCES_} 282${SOFTLET_MHW_COMMON_SOURCES_} 283${SOFTLET_MHW_BLT_SOURCES_} 284${SOFTLET_MHW_RENDER_SOURCES_} 285${SOFTLET_MHW_SFC_SOURCES_} 286${SOFTLET_MHW_VEBOX_SOURCES_} 287${SOFTLET_MHW_MI_SOURCES_} 288) 289 290#CODEC SETTINGS 291set(SOFTLET_ENCODE_SOURCES_ 292${SOFTLET_ENCODE_SOURCES_} 293${SOFTLET_ENCODE_COMMON_SOURCES_} 294${SOFTLET_ENCODE_AV1_SOURCES_} 295${SOFTLET_ENCODE_HEVC_SOURCES_} 296${SOFTLET_ENCODE_AVC_SOURCES_} 297${SOFTLET_ENCODE_VP9_SOURCES_} 298${SOFTLET_ENCODE_JPEG_SOURCES_} 299) 300 301set(SOFTLET_DECODE_SOURCES_ 302${SOFTLET_DECODE_SOURCES_} 303${SOFTLET_DECODE_COMMON_SOURCES_} 304${SOFTLET_DECODE_AVC_SOURCES_} 305${SOFTLET_DECODE_HEVC_SOURCES_} 306${SOFTLET_DECODE_JPEG_SOURCES_} 307${SOFTLET_DECODE_MPEG2_SOURCES_} 308${SOFTLET_DECODE_VP9_SOURCES_} 309${SOFTLET_DECODE_AV1_SOURCES_} 310${SOFTLET_DECODE_VP8_SOURCES_} 311${SOFTLET_DECODE_VVC_SOURCES_} 312) 313 314set(SOFTLET_CODEC_SOURCES_ 315${SOFTLET_CODEC_SOURCES_} 316${SOFTLET_CODEC_COMMON_SOURCES_} 317${SOFTLET_ENCODE_SOURCES_} 318${SOFTLET_DECODE_SOURCES_} 319${SOFTLET_CODEC_EXT_SOURCES_} 320) 321 322set(SOFTLET_ENCODE_HEADERS_ 323${SOFTLET_ENCODE_HEADERS_} 324${SOFTLET_ENCODE_COMMON_HEADERS_} 325${SOFTLET_ENCODE_AV1_HEADERS_} 326${SOFTLET_ENCODE_HEVC_HEADERS_} 327${SOFTLET_ENCODE_AVC_HEADERS_} 328${SOFTLET_ENCODE_VP9_HEADERS_} 329${SOFTLET_ENCODE_JPEG_HEADERS_} 330) 331 332set(SOFTLET_DECODE_HEADERS_ 333${SOFTLET_DECODE_HEADERS_} 334${SOFTLET_DECODE_COMMON_HEADERS_} 335${SOFTLET_DECODE_AVC_HEADERS_} 336${SOFTLET_DECODE_HEVC_HEADERS_} 337${SOFTLET_DECODE_JPEG_HEADERS_} 338${SOFTLET_DECODE_MPEG2_HEADERS_} 339${SOFTLET_DECODE_VP9_HEADERS_} 340${SOFTLET_DECODE_AV1_HEADERS_} 341${SOFTLET_DECODE_VP8_HEADERS_} 342${SOFTLET_DECODE_VVC_HEADERS_} 343) 344 345set(SOFTLET_CODEC_HEADERS_ 346${SOFTLET_CODEC_HEADERS_} 347${SOFTLET_CODEC_COMMON_HEADERS_} 348${SOFTLET_ENCODE_HEADERS_} 349${SOFTLET_DECODE_HEADERS_} 350${SOFTLET_CODEC_EXT_HEADERS_} 351) 352 353set(SOFTLET_ENCODE_PRIVATE_INCLUDE_DIRS_ 354${SOFTLET_ENCODE_PRIVATE_INCLUDE_DIRS_} 355${SOFTLET_ENCODE_COMMON_PRIVATE_INCLUDE_DIRS_} 356${SOFTLET_ENCODE_AV1_PRIVATE_INCLUDE_DIRS_} 357${SOFTLET_ENCODE_HEVC_PRIVATE_INCLUDE_DIRS_} 358${SOFTLET_ENCODE_AVC_PRIVATE_INCLUDE_DIRS_} 359${SOFTLET_ENCODE_VP9_PRIVATE_INCLUDE_DIRS_} 360${SOFTLET_ENCODE_JPEG_PRIVATE_INCLUDE_DIRS_} 361) 362 363set(SOFTLET_DECODE_PRIVATE_INCLUDE_DIRS_ 364${SOFTLET_DECODE_PRIVATE_INCLUDE_DIRS_} 365${SOFTLET_DECODE_COMMON_PRIVATE_INCLUDE_DIRS_} 366${SOFTLET_DECODE_AVC_PRIVATE_INCLUDE_DIRS_} 367${SOFTLET_DECODE_HEVC_PRIVATE_INCLUDE_DIRS_} 368${SOFTLET_DECODE_JPEG_PRIVATE_INCLUDE_DIRS_} 369${SOFTLET_DECODE_MPEG2_PRIVATE_INCLUDE_DIRS_} 370${SOFTLET_DECODE_VP9_PRIVATE_INCLUDE_DIRS_} 371${SOFTLET_DECODE_AV1_PRIVATE_INCLUDE_DIRS_} 372${SOFTLET_DECODE_VP8_PRIVATE_INCLUDE_DIRS_} 373${SOFTLET_DECODE_VVC_PRIVATE_INCLUDE_DIRS_} 374) 375 376set(SOFTLET_CODEC_PRIVATE_INCLUDE_DIRS_ 377${SOFTLET_CODEC_PRIVATE_INCLUDE_DIRS_} 378${SOFTLET_CODEC_COMMON_PRIVATE_INCLUDE_DIRS_} 379${SOFTLET_ENCODE_PRIVATE_INCLUDE_DIRS_} 380${SOFTLET_DECODE_PRIVATE_INCLUDE_DIRS_} 381${SOFTLET_CODEC_EXT_PRIVATE_INCLUDE_DIRS_} 382) 383 384set (CP_SOURCES_ 385 ${CP_SOURCES_} 386 ${CP_COMMON_SOURCES_} 387 ${CP_COMMON_SHARED_SOURCES_} 388 ${CP_COMMON_NEXT_SOURCES_}) 389 390set (SHARED_SOURCES_ 391 ${SHARED_SOURCES_} 392 ${COMMON_SOURCES_} 393 ${CODEC_SOURCES_} 394 ${VP_SOURCES_} 395 ${CP_SOURCES_}) 396 397FOREACH(SRC1 ${SOURCES_}) 398 set (FOUND 0) 399 FOREACH(SRC2 ${SHARED_SOURCES_}) 400 if (${SRC1} STREQUAL ${SRC2}) 401 set (FOUND 1) 402 break() 403 endif() 404 ENDFOREACH() 405 if (NOT ${FOUND} EQUAL 1) 406 set (UPDATED_SOURCES_ 407 ${UPDATED_SOURCES_} 408 ${SRC1}) 409 endif() 410ENDFOREACH() 411 412set (COMMON_SOURCES_ 413 ${COMMON_SOURCES_} 414 ${UPDATED_SOURCES_}) 415 416set(COMMON_PRIVATE_INCLUDE_DIRS_ 417 ${COMMON_PRIVATE_INCLUDE_DIRS_} 418 ${SOFTLET_COMMON_PRIVATE_INCLUDE_DIRS_}) 419 420set (VP_PRIVATE_INCLUDE_DIRS_ 421 ${VP_PRIVATE_INCLUDE_DIRS_} 422 ${SOFTLET_VP_PRIVATE_INCLUDE_DIRS_}) 423 424add_library(${LIB_NAME}_SSE2 OBJECT ${SOURCES_SSE2}) 425target_compile_options(${LIB_NAME}_SSE2 PRIVATE -msse2) 426target_include_directories(${LIB_NAME}_SSE2 BEFORE PRIVATE ${SOFTLET_MOS_PREPEND_INCLUDE_DIRS_} ${MOS_PUBLIC_INCLUDE_DIRS_} ${SOFTLET_MOS_PUBLIC_INCLUDE_DIRS_} ${COMMON_PRIVATE_INCLUDE_DIRS_} ${SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_} ${SOFTLET_DDI_PUBLIC_INCLUDE_DIRS_}) 427 428add_library(${LIB_NAME}_SSE4 OBJECT ${SOURCES_SSE4}) 429target_compile_options(${LIB_NAME}_SSE4 PRIVATE -msse4.1) 430target_include_directories(${LIB_NAME}_SSE4 BEFORE PRIVATE ${SOFTLET_MOS_PREPEND_INCLUDE_DIRS_} ${MOS_PUBLIC_INCLUDE_DIRS_} ${SOFTLET_MOS_PUBLIC_INCLUDE_DIRS_} ${COMMON_PRIVATE_INCLUDE_DIRS_} ${SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_} ${SOFTLET_DDI_PUBLIC_INCLUDE_DIRS_}) 431 432add_library(${LIB_NAME}_COMMON OBJECT ${COMMON_SOURCES_} ${SOFTLET_DDI_SOURCES_}) 433set_property(TARGET ${LIB_NAME}_COMMON PROPERTY POSITION_INDEPENDENT_CODE 1) 434MediaAddCommonTargetDefines(${LIB_NAME}_COMMON) 435target_include_directories(${LIB_NAME}_COMMON BEFORE PRIVATE ${SOFTLET_MOS_PREPEND_INCLUDE_DIRS_} ${MOS_PUBLIC_INCLUDE_DIRS_} ${SOFTLET_MOS_PUBLIC_INCLUDE_DIRS_} ${COMMON_PRIVATE_INCLUDE_DIRS_} ${SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_} ${SOFTLET_CODEC_PRIVATE_INCLUDE_DIRS_} ${VP_PRIVATE_INCLUDE_DIRS_} ${COMMON_CP_DIRECTORIES_} ${SOFTLET_DDI_PUBLIC_INCLUDE_DIRS_}) 436FOREACH(SRC ${COMMON_SOURCES_}) 437 if ("${SRC}" MATCHES "media/media_softlet" OR (NOT "${SOFTLET_EXT_PATH}" STREQUAL "" AND "${SRC}" MATCHES "${SOFTLET_EXT_PATH}")) 438 message(FATAL_ERROR "common legacy lib include softlet files ${SRC} - exiting!") 439 exit(1) 440 endif() 441ENDFOREACH() 442 443set_source_files_properties(${SOFTLET_MHW_SOURCES_} PROPERTIES LANGUAGE "CXX") 444add_library(${LIB_NAME}_SOFTLET_COMMON OBJECT ${SOFTLET_COMMON_SOURCES_} ${SOFTLET_MHW_SOURCES_}) 445set_property(TARGET ${LIB_NAME}_SOFTLET_COMMON PROPERTY POSITION_INDEPENDENT_CODE 1) 446MediaAddCommonTargetDefines(${LIB_NAME}_SOFTLET_COMMON) 447target_include_directories(${LIB_NAME}_SOFTLET_COMMON BEFORE PRIVATE 448 ${SOFTLET_MOS_PREPEND_INCLUDE_DIRS_} 449 ${SOFTLET_MOS_PUBLIC_INCLUDE_DIRS_} 450 ${SOFTLET_COMMON_PRIVATE_INCLUDE_DIRS_} 451 ${SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_} 452 ${SOFTLET_CODEC_PRIVATE_INCLUDE_DIRS_} 453 ${SOFTLET_VP_PRIVATE_INCLUDE_DIRS_} 454 ${SOFTLET_DDI_PUBLIC_INCLUDE_DIRS_} 455 ${CP_INTERFACE_DIRECTORIES_} 456) 457FOREACH(SRC ${SOFTLET_COMMON_SOURCES_}) 458 if ("${SRC}" MATCHES "media/media_driver" OR (NOT "${LEGACY_EXT_PATH}" STREQUAL "" AND "${SRC}" MATCHES "${LEGACY_EXT_PATH}")) 459 message(FATAL_ERROR "softlet lib include legacy files ${SRC} - exiting!") 460 exit(1) 461 endif() 462ENDFOREACH() 463 464add_library(${LIB_NAME}_CODEC OBJECT ${CODEC_SOURCES_}) 465set_property(TARGET ${LIB_NAME}_CODEC PROPERTY POSITION_INDEPENDENT_CODE 1) 466MediaAddCommonTargetDefines(${LIB_NAME}_CODEC) 467target_include_directories(${LIB_NAME}_CODEC BEFORE PRIVATE ${SOFTLET_MOS_PREPEND_INCLUDE_DIRS_} ${MOS_PUBLIC_INCLUDE_DIRS_} ${SOFTLET_MOS_PUBLIC_INCLUDE_DIRS_} ${COMMON_PRIVATE_INCLUDE_DIRS_} ${SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_} ${SOFTLET_CODEC_PRIVATE_INCLUDE_DIRS_} ${VP_PRIVATE_INCLUDE_DIRS_} ${COMMON_CP_DIRECTORIES_} ${SOFTLET_DDI_PUBLIC_INCLUDE_DIRS_}) 468FOREACH(SRC ${CODEC_SOURCES_}) 469 if ("${SRC}" MATCHES "media/media_softlet" OR (NOT "${SOFTLET_EXT_PATH}" STREQUAL "" AND "${SRC}" MATCHES "${SOFTLET_EXT_PATH}")) 470 message(FATAL_ERROR "codec legacy lib include softlet files ${SRC} - exiting!") 471 exit(1) 472 endif() 473ENDFOREACH() 474 475add_library(${LIB_NAME}_SOFTLET_CODEC OBJECT ${SOFTLET_CODEC_SOURCES_}) 476set_property(TARGET ${LIB_NAME}_SOFTLET_CODEC PROPERTY POSITION_INDEPENDENT_CODE 1) 477MediaAddCommonTargetDefines(${LIB_NAME}_SOFTLET_CODEC) 478target_include_directories(${LIB_NAME}_SOFTLET_CODEC BEFORE PRIVATE 479 ${SOFTLET_MOS_PREPEND_INCLUDE_DIRS_} 480 ${SOFTLET_MOS_PUBLIC_INCLUDE_DIRS_} 481 ${SOFTLET_COMMON_PRIVATE_INCLUDE_DIRS_} 482 ${SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_} 483 ${SOFTLET_DDI_PUBLIC_INCLUDE_DIRS_} 484 ${SOFTLET_CODEC_PRIVATE_INCLUDE_DIRS_} 485 ${CP_INTERFACE_DIRECTORIES_} 486) 487FOREACH(SRC ${SOFTLET_CODEC_SOURCES_}) 488 if ("${SRC}" MATCHES "media/media_driver" OR (NOT "${LEGACY_EXT_PATH}" STREQUAL "" AND "${SRC}" MATCHES "${LEGACY_EXT_PATH}")) 489 message(FATAL_ERROR "softlet lib include legacy files ${SRC} - exiting!") 490 exit(1) 491 endif() 492ENDFOREACH() 493 494add_library(${LIB_NAME}_VP OBJECT ${VP_SOURCES_}) 495set_property(TARGET ${LIB_NAME}_VP PROPERTY POSITION_INDEPENDENT_CODE 1) 496MediaAddCommonTargetDefines(${LIB_NAME}_VP) 497target_include_directories(${LIB_NAME}_VP BEFORE PRIVATE ${SOFTLET_MOS_PREPEND_INCLUDE_DIRS_} ${MOS_PUBLIC_INCLUDE_DIRS_} ${SOFTLET_MOS_PUBLIC_INCLUDE_DIRS_} ${COMMON_PRIVATE_INCLUDE_DIRS_} ${SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_} ${VP_PRIVATE_INCLUDE_DIRS_} ${COMMON_CP_DIRECTORIES_} ${SOFTLET_DDI_PUBLIC_INCLUDE_DIRS_} ${SOFTLET_CODEC_PRIVATE_INCLUDE_DIRS_}) 498FOREACH(SRC ${VP_SOURCES_}) 499 if ("${SRC}" MATCHES "media/media_softlet" OR (NOT "${SOFTLET_EXT_PATH}" STREQUAL "" AND "${SRC}" MATCHES "${SOFTLET_EXT_PATH}")) 500 message(FATAL_ERROR "vp legacy lib include softlet files ${SRC} - exiting!") 501 exit(1) 502 endif() 503ENDFOREACH() 504 505add_library(${LIB_NAME}_SOFTLET_VP OBJECT ${SOFTLET_VP_SOURCES_}) 506set_property(TARGET ${LIB_NAME}_SOFTLET_VP PROPERTY POSITION_INDEPENDENT_CODE 1) 507MediaAddCommonTargetDefines(${LIB_NAME}_SOFTLET_VP) 508target_include_directories(${LIB_NAME}_SOFTLET_VP BEFORE PRIVATE 509 ${SOFTLET_MOS_PREPEND_INCLUDE_DIRS_} 510 ${SOFTLET_MOS_PUBLIC_INCLUDE_DIRS_} 511 ${SOFTLET_COMMON_PRIVATE_INCLUDE_DIRS_} 512 ${SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_} 513 ${SOFTLET_VP_PRIVATE_INCLUDE_DIRS_} 514 ${SOFTLET_DDI_PUBLIC_INCLUDE_DIRS_} 515 ${SOFTLET_CODEC_PRIVATE_INCLUDE_DIRS_} 516 ${CP_INTERFACE_DIRECTORIES_} 517) 518FOREACH(SRC ${SOFTLET_VP_SOURCES_}) 519 if ("${SRC}" MATCHES "media/media_driver" OR (NOT "${LEGACY_EXT_PATH}" STREQUAL "" AND "${SRC}" MATCHES "${LEGACY_EXT_PATH}")) 520 message(FATAL_ERROR "softlet lib include legacy files ${SRC} - exiting!") 521 exit(1) 522 endif() 523ENDFOREACH() 524 525add_library(${LIB_NAME}_CP OBJECT ${CP_SOURCES_}) 526set_property(TARGET ${LIB_NAME}_CP PROPERTY POSITION_INDEPENDENT_CODE 1) 527MediaAddCommonTargetDefines(${LIB_NAME}_CP) 528target_include_directories(${LIB_NAME}_CP BEFORE PRIVATE ${SOFTLET_MOS_PREPEND_INCLUDE_DIRS_} ${MOS_PUBLIC_INCLUDE_DIRS_} ${SOFTLET_MOS_PUBLIC_INCLUDE_DIRS_} ${COMMON_PRIVATE_INCLUDE_DIRS_} ${SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_} ${SOFTLET_CODEC_PRIVATE_INCLUDE_DIRS_} ${VP_PRIVATE_INCLUDE_DIRS_} ${COMMON_CP_DIRECTORIES_} ${SOFTLET_DDI_PUBLIC_INCLUDE_DIRS_}) 529 530#DDI LIB 531if(NOT "${SOFTLET_DDI_SOURCES_}" STREQUAL "") 532 add_library(${LIB_NAME}_SOFTLET_DDI OBJECT ${SOFTLET_DDI_SOURCES_}) 533 set_property(TARGET ${LIB_NAME}_SOFTLET_DDI PROPERTY POSITION_INDEPENDENT_CODE 1) 534 set_property(TARGET ${LIB_NAME}_SOFTLET_DDI APPEND PROPERTY COMPILE_DEFINITIONS MEDIA_SOFTLET) 535 MediaAddCommonTargetDefines(${LIB_NAME}_SOFTLET_DDI) 536 target_include_directories(${LIB_NAME}_SOFTLET_DDI BEFORE PRIVATE 537 ${SOFTLET_DDI_PUBLIC_INCLUDE_DIRS_} 538 ${SOFTLET_DDI_PRIVATE_INCLUDE_DIRS_} 539 ${SOFTLET_MOS_PREPEND_INCLUDE_DIRS_} 540 ${MOS_PUBLIC_INCLUDE_DIRS_} 541 ${SOFTLET_MOS_PUBLIC_INCLUDE_DIRS_} 542 ${COMMON_PRIVATE_INCLUDE_DIRS_} 543 ${SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_} 544 ${VP_PRIVATE_INCLUDE_DIRS_} 545 ${COMMON_CP_DIRECTORIES_} 546 ${SOFTLET_CODEC_PRIVATE_INCLUDE_DIRS_}) 547endif() 548FOREACH(SRC ${SOFTLET_DDI_SOURCES_}) 549 if ("${SRC}" MATCHES "media/media_driver" OR (NOT "${LEGACY_EXT_PATH}" STREQUAL "" AND "${SRC}" MATCHES "${LEGACY_EXT_PATH}")) 550 message(FATAL_ERROR "softlet lib include legacy files ${SRC} - exiting!") 551 exit(1) 552 endif() 553ENDFOREACH() 554 555###################################################### 556#MOS LIB 557############## MOS ######################################## 558set_source_files_properties(${MOS_COMMON_SOURCES_} PROPERTIES LANGUAGE "CXX") 559set_source_files_properties(${SOFTLET_MOS_COMMON_SOURCES_} PROPERTIES LANGUAGE "CXX") 560 561#1 non softlet mos lib 562 563set (MOS_EXT_INCLUDE_DIRS_ 564${BS_DIR_MEDIA}/cmrtlib/linux/hardware # This is to include drm_device.h in cmrtlib, no cpp file needed. 565) 566 567add_library(${LIB_NAME}_mos OBJECT ${MOS_COMMON_SOURCES_} ${SOFTLET_MOS_COMMON_SOURCES_}) 568set_property(TARGET ${LIB_NAME}_mos PROPERTY POSITION_INDEPENDENT_CODE 1) 569MediaAddCommonTargetDefines(${LIB_NAME}_mos) 570target_include_directories(${LIB_NAME}_mos BEFORE PRIVATE 571 ${SOFTLET_MOS_PREPEND_INCLUDE_DIRS_} 572 ${SOFTLET_MOS_PUBLIC_INCLUDE_DIRS_} 573 ${MOS_PUBLIC_INCLUDE_DIRS_} 574 ${MOS_EXT_INCLUDE_DIRS_} 575 ${COMMON_PRIVATE_INCLUDE_DIRS_} 576 ${SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_} 577 ${VP_PRIVATE_INCLUDE_DIRS_} 578 ${SOFTLET_DDI_PUBLIC_INCLUDE_DIRS_} 579) 580 581#2 softlet mos lib 582 583set (SOFTLET_MOS_EXT_INCLUDE_DIRS_ 584${SOFTLET_MOS_EXT_INCLUDE_DIRS_} 585${BS_DIR_MEDIA}/cmrtlib/linux/hardware # This is to include drm_device.h in cmrtlib, no cpp file needed. 586${MEDIA_COMMON}/agnostic/common/media_interfaces 587${MEDIA_COMMON}/agnostic/common/shared 588${MEDIA_COMMON}/linux/common/cp/os 589${MEDIA_SOFTLET}/agnostic/common/media_interfaces 590${MEDIA_SOFTLET}/agnostic/common/shared 591${MEDIA_SOFTLET}/agnostic/common/shared/mediacopy 592${MEDIA_SOFTLET}/linux/common/ddi 593) 594 595add_library(${LIB_NAME}_mos_softlet OBJECT ${SOFTLET_MOS_COMMON_SOURCES_} ${SOFTLET_MOS_PRIVATE_SOURCES_}) 596set_property(TARGET ${LIB_NAME}_mos_softlet PROPERTY POSITION_INDEPENDENT_CODE 1) 597MediaAddCommonTargetDefines(${LIB_NAME}_mos_softlet) 598target_include_directories(${LIB_NAME}_mos_softlet BEFORE PRIVATE 599 ${SOFTLET_MOS_PREPEND_INCLUDE_DIRS_} 600 ${SOFTLET_MOS_PUBLIC_INCLUDE_DIRS_} 601 ${SOFTLET_MOS_EXT_INCLUDE_DIRS_} 602) 603############## MOS LIB END ######################################## 604 605############## Media Driver Static and Shared Lib ################# 606add_library(${LIB_NAME} SHARED 607 $<TARGET_OBJECTS:${LIB_NAME}_mos> 608 $<TARGET_OBJECTS:${LIB_NAME}_COMMON> 609 $<TARGET_OBJECTS:${LIB_NAME}_CODEC> 610 $<TARGET_OBJECTS:${LIB_NAME}_VP> 611 $<TARGET_OBJECTS:${LIB_NAME}_CP> 612 $<TARGET_OBJECTS:${LIB_NAME}_SSE2> 613 $<TARGET_OBJECTS:${LIB_NAME}_SSE4> 614 $<TARGET_OBJECTS:${LIB_NAME}_SOFTLET_VP> 615 $<TARGET_OBJECTS:${LIB_NAME}_SOFTLET_CODEC> 616 $<TARGET_OBJECTS:${LIB_NAME}_SOFTLET_COMMON>) 617 618 619add_library(${LIB_NAME_STATIC} STATIC 620 $<TARGET_OBJECTS:${LIB_NAME}_mos> 621 $<TARGET_OBJECTS:${LIB_NAME}_COMMON> 622 $<TARGET_OBJECTS:${LIB_NAME}_CODEC> 623 $<TARGET_OBJECTS:${LIB_NAME}_VP> 624 $<TARGET_OBJECTS:${LIB_NAME}_CP> 625 $<TARGET_OBJECTS:${LIB_NAME}_SSE2> 626 $<TARGET_OBJECTS:${LIB_NAME}_SSE4> 627 $<TARGET_OBJECTS:${LIB_NAME}_SOFTLET_VP> 628 $<TARGET_OBJECTS:${LIB_NAME}_SOFTLET_CODEC> 629 $<TARGET_OBJECTS:${LIB_NAME}_SOFTLET_COMMON>) 630 631set_target_properties(${LIB_NAME_STATIC} PROPERTIES OUTPUT_NAME ${LIB_NAME}) 632 633option(MEDIA_BUILD_FATAL_WARNINGS "Turn compiler warnings into fatal errors" ON) 634if(MEDIA_BUILD_FATAL_WARNINGS) 635 set_target_properties(${LIB_NAME}_COMMON PROPERTIES COMPILE_FLAGS "-Werror") 636 set_target_properties(${LIB_NAME}_CODEC PROPERTIES COMPILE_FLAGS "-Werror") 637 set_target_properties(${LIB_NAME}_VP PROPERTIES COMPILE_FLAGS "-Werror") 638 set_target_properties(${LIB_NAME}_CP PROPERTIES COMPILE_FLAGS "-Werror") 639 set_target_properties(${LIB_NAME}_mos PROPERTIES COMPILE_FLAGS "-Werror") 640 set_target_properties(${LIB_NAME}_SOFTLET_VP PROPERTIES COMPILE_FLAGS "-Werror") 641 set_target_properties(${LIB_NAME}_SOFTLET_CODEC PROPERTIES COMPILE_FLAGS "-Werror") 642 set_target_properties(${LIB_NAME}_SOFTLET_COMMON PROPERTIES COMPILE_FLAGS "-Werror") 643endif() 644 645set(MEDIA_LINK_FLAGS "-Wl,--no-as-needed -Wl,--gc-sections -z relro -z now -fPIC") 646option(MEDIA_BUILD_HARDENING "Enable hardening (stack-protector, fortify source)" ON) 647if(MEDIA_BUILD_HARDENING) 648 set(MEDIA_LINK_FLAGS "${MEDIA_LINK_FLAGS} -fstack-protector") 649endif() 650set_target_properties(${LIB_NAME} PROPERTIES LINK_FLAGS ${MEDIA_LINK_FLAGS}) 651 652set_target_properties(${LIB_NAME} PROPERTIES PREFIX "") 653set_target_properties(${LIB_NAME_STATIC} PROPERTIES PREFIX "") 654 655set(MEDIA_LINK_EXTERNAL_LIBS "${PKG_PCIACCESS_LIBRARIES} m pthread dl") 656if(Backtrace_FOUND) 657 set(MEDIA_LINK_EXTERNAL_LIBS "${MEDIA_LINK_EXTERNAL_LIBS} ${Backtrace_LIBRARY}") 658endif() 659 660bs_ufo_link_libraries_noBsymbolic( 661 ${LIB_NAME} 662 "${INCLUDED_LIBS}" 663 "${MEDIA_LINK_EXTERNAL_LIBS}" 664) 665 666if (NOT DEFINED INCLUDED_LIBS OR "${INCLUDED_LIBS}" STREQUAL "") 667 # dep libs (gmmlib for now) can be passed through INCLUDED_LIBS, but if not, we need try to setup dep through including dep projects 668 if(NOT LIBGMM_FOUND) 669 # If we failed to setup dependency from gmmlib via pkg-config we will try to 670 # add gmmlib as a target from sources. We need to do this here, after 671 # add_library() for iHD driver since gmmlib needs this information. 672 if (NOT TARGET igfx_gmmumd_dll) 673 add_subdirectory("${BS_DIR_GMMLIB}" "${CMAKE_BINARY_DIR}/gmmlib") 674 endif() 675 if (NOT TARGET igfx_gmmumd_dll) 676 message(FATAL_ERROR "gmm library not found on the system") 677 endif() 678 set(LIBGMM_CFLAGS_OTHER -DGMM_LIB_DLL) 679 set(LIBGMM_LIBRARIES igfx_gmmumd_dll) 680 endif() 681 682 target_compile_options( ${LIB_NAME} PUBLIC ${LIBGMM_CFLAGS_OTHER}) 683 target_link_libraries ( ${LIB_NAME} ${LIBGMM_LIBRARIES}) 684 685 include(${MEDIA_EXT_CMAKE}/ext/media_feature_include_ext.cmake OPTIONAL) 686 687endif(NOT DEFINED INCLUDED_LIBS OR "${INCLUDED_LIBS}" STREQUAL "") 688 689############## Media Driver Static and Shared Lib ################## 690 691# post target attributes 692bs_set_post_target() 693 694if(MEDIA_RUN_TEST_SUITE AND ENABLE_KERNELS AND ENABLE_NONFREE_KERNELS AND "${CMAKE_BUILD_TYPE}" STREQUAL "ReleaseInternal") 695 add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/linux/ult) 696 include(${MEDIA_EXT}/media_softlet/ult/ult_top_cmake.cmake OPTIONAL) 697endif() 698