xref: /aosp_15_r20/external/intel-media-driver/media_driver/cmake/media_utils.cmake (revision ba62d9d3abf0e404f2022b4cd7a85e107f48596f)
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 Worker# Only can include subdirectory which has a media_srcs.cmake
22*ba62d9d3SAndroid Build Coastguard Worker# the effect is like include(${CMAKE_CURRENT_LIST_DIR}/<subd>/media_srcs.cmake)
23*ba62d9d3SAndroid Build Coastguard Worker
24*ba62d9d3SAndroid Build Coastguard Workermacro(media_include_subdirectory subd)
25*ba62d9d3SAndroid Build Coastguard Worker    if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/${subd}/media_srcs.cmake)
26*ba62d9d3SAndroid Build Coastguard Worker        if(CMAKE_WDDM_LINUX)
27*ba62d9d3SAndroid Build Coastguard Worker            media_wsl_include_subdirectory(${subd})
28*ba62d9d3SAndroid Build Coastguard Worker        else()
29*ba62d9d3SAndroid Build Coastguard Worker            include(${CMAKE_CURRENT_LIST_DIR}/${subd}/media_srcs.cmake)
30*ba62d9d3SAndroid Build Coastguard Worker        endif()
31*ba62d9d3SAndroid Build Coastguard Worker    else()
32*ba62d9d3SAndroid Build Coastguard Worker        message("-- ${CMAKE_CURRENT_LIST_DIR}/${subd}/media_srcs.cmake doesn't exist, macro(media_include_subdirectory) just does nothing")
33*ba62d9d3SAndroid Build Coastguard Worker    endif()
34*ba62d9d3SAndroid Build Coastguard Workerendmacro()
35*ba62d9d3SAndroid Build Coastguard Worker
36*ba62d9d3SAndroid Build Coastguard Worker# add current path to include path
37*ba62d9d3SAndroid Build Coastguard Workermacro(media_add_curr_to_include_path)
38*ba62d9d3SAndroid Build Coastguard Worker    if(${PLATFORM} STREQUAL "linux")
39*ba62d9d3SAndroid Build Coastguard Worker        include_directories(${CMAKE_CURRENT_LIST_DIR})
40*ba62d9d3SAndroid Build Coastguard Worker    else()
41*ba62d9d3SAndroid Build Coastguard Worker        media_add_curr_to_include_path_ext(${CMAKE_CURRENT_LIST_DIR})
42*ba62d9d3SAndroid Build Coastguard Worker    endif()
43*ba62d9d3SAndroid Build Coastguard Workerendmacro()
44*ba62d9d3SAndroid Build Coastguard Worker
45*ba62d9d3SAndroid Build Coastguard Worker# MediaSetLinkerFlags: apply linker flags for given configuration
46*ba62d9d3SAndroid Build Coastguard Worker# linkerFlags: linker specific options
47*ba62d9d3SAndroid Build Coastguard Worker# linkerTarget: optional parameter - apply linker flags for specfied target
48*ba62d9d3SAndroid Build Coastguard Workermacro (MediaSetLinkerFlags linkerFlags linkerTarget)
49*ba62d9d3SAndroid Build Coastguard Worker    foreach (opt ${linkerFlags})
50*ba62d9d3SAndroid Build Coastguard Worker        if ("${linkerTarget}" STREQUAL "")
51*ba62d9d3SAndroid Build Coastguard Worker            set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${opt}")
52*ba62d9d3SAndroid Build Coastguard Worker            set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${opt}")
53*ba62d9d3SAndroid Build Coastguard Worker        else()
54*ba62d9d3SAndroid Build Coastguard Worker            set (CMAKE_SHARED_LINKER_FLAGS_${linkerTarget} "${CMAKE_SHARED_LINKER_FLAGS_${linkerTarget}} ${opt}")
55*ba62d9d3SAndroid Build Coastguard Worker            set (CMAKE_EXE_LINKER_FLAGS_${linkerTarget} "${CMAKE_EXE_LINKER_FLAGS_${linkerTarget}} ${opt}")
56*ba62d9d3SAndroid Build Coastguard Worker        endif()
57*ba62d9d3SAndroid Build Coastguard Worker    endforeach()
58*ba62d9d3SAndroid Build Coastguard Workerendmacro()
59*ba62d9d3SAndroid Build Coastguard Worker
60*ba62d9d3SAndroid Build Coastguard Worker# common defines
61*ba62d9d3SAndroid Build Coastguard Workermacro (MediaAddCommonTargetDefines target)
62*ba62d9d3SAndroid Build Coastguard Worker    if (TARGET ${target})
63*ba62d9d3SAndroid Build Coastguard Worker        set_property(TARGET ${target} APPEND PROPERTY COMPILE_DEFINITIONS
64*ba62d9d3SAndroid Build Coastguard Worker            $<$<CONFIG:Release>:_RELEASE>
65*ba62d9d3SAndroid Build Coastguard Worker            $<$<CONFIG:ReleaseInternal>: _RELEASE_INTERNAL>
66*ba62d9d3SAndroid Build Coastguard Worker            $<$<CONFIG:Debug>: _DEBUG DEBUG>
67*ba62d9d3SAndroid Build Coastguard Worker        )
68*ba62d9d3SAndroid Build Coastguard Worker    endif()
69*ba62d9d3SAndroid Build Coastguard Workerendmacro()
70*ba62d9d3SAndroid Build Coastguard Worker
71*ba62d9d3SAndroid Build Coastguard Workerinclude( ${MEDIA_EXT_CMAKE}/ext/media_utils_ext.cmake OPTIONAL)
72