xref: /OK3568_Linux_fs/external/mpp/CMakeLists.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# ----------------------------------------------------------------------------
2*4882a593Smuzhiyun#  Root CMake file for Rockchip Media Process Platform (MPP)
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun#   - 10:34 2015/7/27: Initial version <herman.chen@rock-chips.com>
5*4882a593Smuzhiyun#
6*4882a593Smuzhiyun# ----------------------------------------------------------------------------
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun# vim: syntax=cmake
9*4882a593Smuzhiyunif(NOT CMAKE_BUILD_TYPE)
10*4882a593Smuzhiyun    # default to Release build for GCC builds
11*4882a593Smuzhiyun    set(CMAKE_BUILD_TYPE Debug CACHE STRING
12*4882a593Smuzhiyun        "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel."
13*4882a593Smuzhiyun        FORCE)
14*4882a593Smuzhiyunendif()
15*4882a593Smuzhiyunmessage(STATUS "cmake version ${CMAKE_VERSION}")
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun# Search packages for host system instead of packages for target system
18*4882a593Smuzhiyun# in case of cross compilation these macro should be defined by toolchain file
19*4882a593Smuzhiyunif(NOT COMMAND find_host_package)
20*4882a593Smuzhiyun    macro(find_host_package)
21*4882a593Smuzhiyun        find_package(${ARGN})
22*4882a593Smuzhiyun    endmacro()
23*4882a593Smuzhiyunendif()
24*4882a593Smuzhiyunif(NOT COMMAND find_host_program)
25*4882a593Smuzhiyun    macro(find_host_program)
26*4882a593Smuzhiyun        find_program(${ARGN})
27*4882a593Smuzhiyun    endmacro()
28*4882a593Smuzhiyunendif()
29*4882a593Smuzhiyun
30*4882a593Smuzhiyunproject (rk_mpp)
31*4882a593Smuzhiyun
32*4882a593Smuzhiyuncmake_minimum_required (VERSION 2.8.8) # OBJECT libraries require 2.8.8
33*4882a593Smuzhiyuninclude(CheckIncludeFiles)
34*4882a593Smuzhiyuninclude(CheckFunctionExists)
35*4882a593Smuzhiyuninclude(CheckSymbolExists)
36*4882a593Smuzhiyuninclude(CheckCXXCompilerFlag)
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun# setup output library name
39*4882a593Smuzhiyun# Linux   default name - rockchip_mpp and rockchip_vpu
40*4882a593Smuzhiyun# Android default name - mpp and vpu
41*4882a593Smuzhiyun# For historical reason libraries on Android is named as mpp and vpu. But for
42*4882a593Smuzhiyun# better naming rule on Linux it should add vendor prefix.
43*4882a593Smuzhiyun# So we use this ugly method to avoid massive maintain issue.
44*4882a593Smuzhiyunif (NOT MPP_PROJECT_NAME)
45*4882a593Smuzhiyun    set(MPP_PROJECT_NAME rockchip_mpp)
46*4882a593Smuzhiyunendif()
47*4882a593Smuzhiyunset(MPP_STATIC ${MPP_PROJECT_NAME}_static)
48*4882a593Smuzhiyunset(MPP_SHARED ${MPP_PROJECT_NAME})
49*4882a593Smuzhiyun
50*4882a593Smuzhiyunif (NOT VPU_PROJECT_NAME)
51*4882a593Smuzhiyun    set(VPU_PROJECT_NAME rockchip_vpu)
52*4882a593Smuzhiyunendif()
53*4882a593Smuzhiyunset(VPU_STATIC ${VPU_PROJECT_NAME}_static)
54*4882a593Smuzhiyunset(VPU_SHARED ${VPU_PROJECT_NAME})
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun# ----------------------------------------------------------------------------
57*4882a593Smuzhiyun# set property to classify library kinds
58*4882a593Smuzhiyun# ----------------------------------------------------------------------------
59*4882a593Smuzhiyunset_property(GLOBAL PROPERTY USE_FOLDERS ON)
60*4882a593Smuzhiyunset_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
61*4882a593Smuzhiyun# ----------------------------------------------------------------------------
62*4882a593Smuzhiyun# enable test in this project
63*4882a593Smuzhiyun# ----------------------------------------------------------------------------
64*4882a593Smuzhiyunoption(BUILD_TEST "enable test binary building)" ON)
65*4882a593Smuzhiyun# ----------------------------------------------------------------------------
66*4882a593Smuzhiyun# export json compile commands
67*4882a593Smuzhiyun# ----------------------------------------------------------------------------
68*4882a593Smuzhiyunset(CMAKE_EXPORT_COMPILE_COMMANDS true)
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun# ----------------------------------------------------------------------------
71*4882a593Smuzhiyun# System architecture detection
72*4882a593Smuzhiyun# ----------------------------------------------------------------------------
73*4882a593Smuzhiyunstring(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" SYSPROC)
74*4882a593Smuzhiyunset(X86_ALIASES x86 i386 i686 x86_64 amd64)
75*4882a593Smuzhiyunlist(FIND X86_ALIASES "${SYSPROC}" X86MATCH)
76*4882a593Smuzhiyunif("${CMAKE_C_COMPILER}" MATCHES "-buildroot-[^/]+$")
77*4882a593Smuzhiyun    message(STATUS "Detected Buildroot toolchain")
78*4882a593Smuzhiyun    # Use buildroot toolchain's default architecture settings
79*4882a593Smuzhiyunelseif("${SYSPROC}" STREQUAL "" OR X86MATCH GREATER "-1")
80*4882a593Smuzhiyun    message(STATUS "Detected x86 system processor")
81*4882a593Smuzhiyun    set(X86 true)
82*4882a593Smuzhiyun    add_definitions(-DARCH_X86=1)
83*4882a593Smuzhiyun    if("${CMAKE_SIZEOF_VOID_P}" MATCHES 8)
84*4882a593Smuzhiyun        set(X64 true)
85*4882a593Smuzhiyun        add_definitions(-DARCH_X64=1)
86*4882a593Smuzhiyun        message(STATUS "Define X86_64 to 1")
87*4882a593Smuzhiyun    endif()
88*4882a593Smuzhiyunelseif(${SYSPROC} STREQUAL "armv6l")
89*4882a593Smuzhiyun    message(STATUS "Detected ARMv6 system processor")
90*4882a593Smuzhiyun    set(ARM true)
91*4882a593Smuzhiyun    set(ARMEABI_V6 true)
92*4882a593Smuzhiyunelseif(${SYSPROC} STREQUAL "armv7-a")
93*4882a593Smuzhiyun    message(STATUS "Detected ARMv7 system processor")
94*4882a593Smuzhiyun    set(ARM true)
95*4882a593Smuzhiyun    set(ARMEABI_V7A true)
96*4882a593Smuzhiyunelseif(${SYSPROC} STREQUAL "armv7-a_hardfp" OR ${SYSPROC} STREQUAL "armv7l")
97*4882a593Smuzhiyun    message(STATUS "Detected ARMv7 system processor")
98*4882a593Smuzhiyun    set(ARM true)
99*4882a593Smuzhiyun    set(ARMEABI_V7A_HARDFP true)
100*4882a593Smuzhiyunelseif(${SYSPROC} STREQUAL "aarch64" OR ${SYSPROC} STREQUAL "armv8-a")
101*4882a593Smuzhiyun    message(STATUS "Detected ARMv8 system processor")
102*4882a593Smuzhiyun    set(ARM true)
103*4882a593Smuzhiyun    set(ARMEABI_V8 true)
104*4882a593Smuzhiyunelse()
105*4882a593Smuzhiyun    message(STATUS "CMAKE_SYSTEM_PROCESSOR value `${CMAKE_SYSTEM_PROCESSOR}` is unknown")
106*4882a593Smuzhiyun    message(STATUS "Please add this value near ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE}")
107*4882a593Smuzhiyunendif()
108*4882a593Smuzhiyun
109*4882a593Smuzhiyunif(UNIX)
110*4882a593Smuzhiyun    SET(PLATFORM_LIBS pthread)
111*4882a593Smuzhiyun    if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
112*4882a593Smuzhiyun        SET(PLATFORM_LIBS ${PLATFORM_LIBS} rt)
113*4882a593Smuzhiyun    endif()
114*4882a593Smuzhiyunendif(UNIX)
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun# ----------------------------------------------------------------------------
117*4882a593Smuzhiyun# Compiler detection
118*4882a593Smuzhiyun# ----------------------------------------------------------------------------
119*4882a593Smuzhiyunif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
120*4882a593Smuzhiyun    set(CLANG true)
121*4882a593Smuzhiyunendif()
122*4882a593Smuzhiyunif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
123*4882a593Smuzhiyun    set(INTEL_CXX true)
124*4882a593Smuzhiyunendif()
125*4882a593Smuzhiyunif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
126*4882a593Smuzhiyun    set(GCC true)
127*4882a593Smuzhiyunendif()
128*4882a593Smuzhiyun
129*4882a593Smuzhiyunif(INTEL_CXX AND UNIX)
130*4882a593Smuzhiyun    # treat icpc roughly like gcc
131*4882a593Smuzhiyun    set(GCC true)
132*4882a593Smuzhiyun    add_definitions(-Wall -Wextra -Wshadow)
133*4882a593Smuzhiyunelseif(CLANG)
134*4882a593Smuzhiyun    # treat clang roughly like gcc
135*4882a593Smuzhiyun    set(GCC true)
136*4882a593Smuzhiyun    add_definitions(-Wall -Wextra -Wshadow -ffast-math)
137*4882a593Smuzhiyunelseif(CMAKE_COMPILER_IS_GNUCXX)
138*4882a593Smuzhiyun    add_definitions(-Wall -Wextra -Wshadow -ffast-math)
139*4882a593Smuzhiyun    check_cxx_compiler_flag(-Wno-narrowing GCC_HAS_NO_NARROWING)
140*4882a593Smuzhiyun    check_cxx_compiler_flag(-mstackrealign GCC_HAS_STACK_REALIGN)
141*4882a593Smuzhiyun    if (GCC_HAS_STACK_REALIGN)
142*4882a593Smuzhiyun        add_definitions(-mstackrealign)
143*4882a593Smuzhiyun    endif()
144*4882a593Smuzhiyun    execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
145*4882a593Smuzhiyunendif()
146*4882a593Smuzhiyun
147*4882a593Smuzhiyunif(GCC)
148*4882a593Smuzhiyun    if(ARM)
149*4882a593Smuzhiyun        if(ARMEABI_V6)
150*4882a593Smuzhiyun            add_definitions(-march=armv6 -mfloat-abi=hard -mfpu=vfp)
151*4882a593Smuzhiyun        elseif(ARMEABI_V7A)
152*4882a593Smuzhiyun            add_definitions(-march=armv7-a -mfloat-abi=softfp -mfpu=neon)
153*4882a593Smuzhiyun        elseif(ARMEABI_V7A_HARDFP)
154*4882a593Smuzhiyun            add_definitions(-march=armv7-a -mfloat-abi=hard -mfpu=neon)
155*4882a593Smuzhiyun        elseif(ARMEABI_V8)
156*4882a593Smuzhiyun            add_definitions(-march=armv8-a)
157*4882a593Smuzhiyun        endif()
158*4882a593Smuzhiyun    else()
159*4882a593Smuzhiyun        if(X86 AND NOT X64)
160*4882a593Smuzhiyun            add_definitions(-march=i686)
161*4882a593Smuzhiyun        endif()
162*4882a593Smuzhiyun    endif()
163*4882a593Smuzhiyun
164*4882a593Smuzhiyun    if(NOT ${CMAKE_BUILD_TYPE} MATCHES "Release")
165*4882a593Smuzhiyun        add_definitions(-g)
166*4882a593Smuzhiyun    endif()
167*4882a593Smuzhiyun
168*4882a593Smuzhiyun    # disable multichar warning
169*4882a593Smuzhiyun    add_definitions(-Wno-multichar)
170*4882a593Smuzhiyun    # add PIC flag
171*4882a593Smuzhiyun    add_definitions(-fPIC)
172*4882a593Smuzhiyun    # disable exception for C++
173*4882a593Smuzhiyun    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti")
174*4882a593Smuzhiyun
175*4882a593Smuzhiyun    # for libary linking
176*4882a593Smuzhiyun    set(BEGIN_WHOLE_ARCHIVE -Wl,--whole-archive)
177*4882a593Smuzhiyun    set(END_WHOLE_ARCHIVE -Wl,--no-whole-archive)
178*4882a593Smuzhiyun
179*4882a593Smuzhiyun    option(ASAN_CHECK "enable Address Sanitizer (Asan)" OFF)
180*4882a593Smuzhiyun    if(ASAN_CHECK)
181*4882a593Smuzhiyun        add_definitions(-fsanitize=address -static-libasan -g)
182*4882a593Smuzhiyun        set(ASAN_LIB libasan.a dl rt m)
183*4882a593Smuzhiyun        set(ASAN_BIN dl rt m)
184*4882a593Smuzhiyun    endif(ASAN_CHECK)
185*4882a593Smuzhiyunendif(GCC)
186*4882a593Smuzhiyun
187*4882a593Smuzhiyun# ----------------------------------------------------------------------------
188*4882a593Smuzhiyun# Create git version information
189*4882a593Smuzhiyun# ----------------------------------------------------------------------------
190*4882a593Smuzhiyunset(VERSION_CNT         0)
191*4882a593Smuzhiyunset(VERSION_MAX_CNT     9)
192*4882a593Smuzhiyunset(VERSION_INFO        "\"unknown mpp version for missing VCS info\"")
193*4882a593Smuzhiyunforeach (CNT RANGE ${VERSION_MAX_CNT})
194*4882a593Smuzhiyun    set(VERSION_HISTORY_${CNT} "NULL")
195*4882a593Smuzhiyunendforeach(CNT)
196*4882a593Smuzhiyun
197*4882a593Smuzhiyunif(EXISTS "${PROJECT_SOURCE_DIR}/.git")
198*4882a593Smuzhiyun    find_host_package(Git)
199*4882a593Smuzhiyun    if(GIT_FOUND)
200*4882a593Smuzhiyun        # get current version info
201*4882a593Smuzhiyun        set(GIT_LOG_FORMAT "%h author: %<|(30)%an %cd %s")
202*4882a593Smuzhiyun
203*4882a593Smuzhiyun        execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --oneline --date=short --pretty=format:${GIT_LOG_FORMAT}
204*4882a593Smuzhiyun            WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
205*4882a593Smuzhiyun            OUTPUT_VARIABLE EXEC_OUT
206*4882a593Smuzhiyun            ERROR_VARIABLE EXEC_ERROR
207*4882a593Smuzhiyun            RESULT_VARIABLE EXEC_RET
208*4882a593Smuzhiyun            OUTPUT_STRIP_TRAILING_WHITESPACE
209*4882a593Smuzhiyun            ERROR_STRIP_TRAILING_WHITESPACE)
210*4882a593Smuzhiyun
211*4882a593Smuzhiyun        if (NOT EXEC_RET)
212*4882a593Smuzhiyun            set(VERSION_INFO ${EXEC_OUT})
213*4882a593Smuzhiyun            message(STATUS "current version:")
214*4882a593Smuzhiyun            message(STATUS "${VERSION_INFO}")
215*4882a593Smuzhiyun            string(REPLACE "\"" "\\\"" VERSION_INFO ${VERSION_INFO})
216*4882a593Smuzhiyun            set(VERSION_INFO "\"${VERSION_INFO}\"")
217*4882a593Smuzhiyun        else()
218*4882a593Smuzhiyun            message(STATUS "git ret ${EXEC_RET}")
219*4882a593Smuzhiyun            message(STATUS "${EXEC_ERROR}")
220*4882a593Smuzhiyun        endif()
221*4882a593Smuzhiyun
222*4882a593Smuzhiyun        set(GIT_LOG_FORMAT "%h author: %<|(30)%an %cd %s %d")
223*4882a593Smuzhiyun
224*4882a593Smuzhiyun        # get history version information
225*4882a593Smuzhiyun        # setup logs
226*4882a593Smuzhiyun        message(STATUS "git version history:")
227*4882a593Smuzhiyun        foreach (CNT RANGE ${VERSION_MAX_CNT})
228*4882a593Smuzhiyun            execute_process(COMMAND ${GIT_EXECUTABLE} log HEAD~${CNT} -1 --oneline --date=short --pretty=format:${GIT_LOG_FORMAT}
229*4882a593Smuzhiyun                WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
230*4882a593Smuzhiyun                OUTPUT_VARIABLE EXEC_OUT
231*4882a593Smuzhiyun                ERROR_VARIABLE EXEC_ERROR
232*4882a593Smuzhiyun                RESULT_VARIABLE EXEC_RET
233*4882a593Smuzhiyun                OUTPUT_STRIP_TRAILING_WHITESPACE
234*4882a593Smuzhiyun                ERROR_STRIP_TRAILING_WHITESPACE)
235*4882a593Smuzhiyun
236*4882a593Smuzhiyun            if (NOT EXEC_RET)
237*4882a593Smuzhiyun                set(VERSION_LOG ${EXEC_OUT})
238*4882a593Smuzhiyun                string(REPLACE "\"" "\\\"" VERSION_LOG ${VERSION_LOG})
239*4882a593Smuzhiyun                message(STATUS ${VERSION_LOG})
240*4882a593Smuzhiyun                set(VERSION_HISTORY_${CNT} "\"${VERSION_LOG}\"")
241*4882a593Smuzhiyun                math(EXPR VERSION_CNT "${VERSION_CNT}+1")
242*4882a593Smuzhiyun            endif()
243*4882a593Smuzhiyun        endforeach(CNT)
244*4882a593Smuzhiyun        message(STATUS "total ${VERSION_CNT} git version recorded")
245*4882a593Smuzhiyun    endif()
246*4882a593Smuzhiyun
247*4882a593Smuzhiyun    # add git hooks
248*4882a593Smuzhiyun    if (EXISTS "${PROJECT_SOURCE_DIR}/tools/hooks/")
249*4882a593Smuzhiyun        set(GIT_HOOK_SRC "${PROJECT_SOURCE_DIR}/tools/hooks/")
250*4882a593Smuzhiyun        if(EXISTS "${PROJECT_SOURCE_DIR}/.git/hooks")
251*4882a593Smuzhiyun            set(GIT_HOOK_DST "${PROJECT_SOURCE_DIR}/.git/hooks/")
252*4882a593Smuzhiyun            file(COPY ${GIT_HOOK_SRC} DESTINATION ${GIT_HOOK_DST})
253*4882a593Smuzhiyun            message(STATUS "Install git hooks done")
254*4882a593Smuzhiyun        endif(EXISTS "${PROJECT_SOURCE_DIR}/.git/hooks")
255*4882a593Smuzhiyun    endif(EXISTS "${PROJECT_SOURCE_DIR}/tools/hooks/")
256*4882a593Smuzhiyunendif(EXISTS "${PROJECT_SOURCE_DIR}/.git")
257*4882a593Smuzhiyun
258*4882a593Smuzhiyunconfigure_file(
259*4882a593Smuzhiyun    "${PROJECT_SOURCE_DIR}/build/cmake/version.in"
260*4882a593Smuzhiyun    "${PROJECT_SOURCE_DIR}/mpp/version.h"
261*4882a593Smuzhiyun)
262*4882a593Smuzhiyun
263*4882a593Smuzhiyun# ----------------------------------------------------------------------------
264*4882a593Smuzhiyun# Build options
265*4882a593Smuzhiyun# ----------------------------------------------------------------------------
266*4882a593Smuzhiyunfind_package(PkgConfig)
267*4882a593SmuzhiyunINCLUDE(GNUInstallDirs)
268*4882a593Smuzhiyunpkg_search_module(PTHREAD pthread)
269*4882a593Smuzhiyun
270*4882a593Smuzhiyun# ----------------------------------------------------------------------------
271*4882a593Smuzhiyun# Set Warning as Error
272*4882a593Smuzhiyun# ----------------------------------------------------------------------------
273*4882a593Smuzhiyunoption(WARNINGS_AS_ERRORS "Stop compiles on first warning" OFF)
274*4882a593Smuzhiyunif(WARNINGS_AS_ERRORS)
275*4882a593Smuzhiyun    if(GCC)
276*4882a593Smuzhiyun        add_definitions(-Werror)
277*4882a593Smuzhiyun    elseif(MSVC)
278*4882a593Smuzhiyun        add_definitions(/WX)
279*4882a593Smuzhiyun    endif()
280*4882a593Smuzhiyunendif(WARNINGS_AS_ERRORS)
281*4882a593Smuzhiyun
282*4882a593Smuzhiyun# ----------------------------------------------------------------------------
283*4882a593Smuzhiyun# look for stdint.h
284*4882a593Smuzhiyun# ----------------------------------------------------------------------------
285*4882a593Smuzhiyunif(MSVC)
286*4882a593Smuzhiyun    check_include_files(stdint.h HAVE_STDINT_H)
287*4882a593Smuzhiyun    if(NOT HAVE_STDINT_H)
288*4882a593Smuzhiyun        include_directories(osal/windows)
289*4882a593Smuzhiyun    endif(NOT HAVE_STDINT_H)
290*4882a593Smuzhiyunendif(MSVC)
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun# ----------------------------------------------------------------------------
293*4882a593Smuzhiyun# Share library option
294*4882a593Smuzhiyun# ----------------------------------------------------------------------------
295*4882a593Smuzhiyunoption(ENABLE_STATIC "Build shared library" ON)
296*4882a593Smuzhiyunoption(ENABLE_SHARED "Build shared library" OFF)
297*4882a593Smuzhiyun
298*4882a593Smuzhiyun# ----------------------------------------------------------------------------
299*4882a593Smuzhiyun# scan all LOG_TAG for log information and generate module header file
300*4882a593Smuzhiyun# ----------------------------------------------------------------------------
301*4882a593Smuzhiyunset( module_list "" )
302*4882a593Smuzhiyunfile ( GLOB_RECURSE ALL_SRC . *.c;*.cpp )
303*4882a593Smuzhiyunforeach( files ${ALL_SRC} )
304*4882a593Smuzhiyun    file( STRINGS ${files} module_tag_line REGEX "MODULE_TAG( )+\".+\"" )
305*4882a593Smuzhiyun    if(module_tag_line)
306*4882a593Smuzhiyun        string( REGEX REPLACE "^(.)* MODULE_TAG( )+\"(.*)\"" \\3 module_tag ${module_tag_line} )
307*4882a593Smuzhiyun        list( APPEND module_list ${module_tag} )
308*4882a593Smuzhiyun    endif()
309*4882a593Smuzhiyunendforeach()
310*4882a593Smuzhiyunlist( SORT module_list )
311*4882a593Smuzhiyunlist( LENGTH module_list module_size )
312*4882a593Smuzhiyun#message(STATUS "module_list: ${module_list}")
313*4882a593Smuzhiyun#message(STATUS "module_size: ${module_size}")
314*4882a593Smuzhiyun
315*4882a593Smuzhiyun# ----------------------------------------------------------------------------
316*4882a593Smuzhiyun#  Start module definition
317*4882a593Smuzhiyun# ----------------------------------------------------------------------------
318*4882a593Smuzhiyun# project overall include file
319*4882a593Smuzhiyuninclude_directories(inc)
320*4882a593Smuzhiyun# small utile functions for test case
321*4882a593Smuzhiyuninclude_directories(utils)
322*4882a593Smuzhiyun
323*4882a593Smuzhiyun# ----------------------------------------------------------------------------
324*4882a593Smuzhiyun#  osal library
325*4882a593Smuzhiyun# ----------------------------------------------------------------------------
326*4882a593Smuzhiyun# Operation System Abstract Layer (OSAL) include
327*4882a593Smuzhiyuninclude_directories(osal/inc)
328*4882a593Smuzhiyun# OSAL is needed on all platform, do not need option
329*4882a593Smuzhiyunadd_subdirectory(osal)
330*4882a593Smuzhiyun
331*4882a593Smuzhiyun# ----------------------------------------------------------------------------
332*4882a593Smuzhiyun#  utils for test case
333*4882a593Smuzhiyun# ----------------------------------------------------------------------------
334*4882a593Smuzhiyunadd_subdirectory(utils)
335*4882a593Smuzhiyun
336*4882a593Smuzhiyun# ----------------------------------------------------------------------------
337*4882a593Smuzhiyun#  Media Process Platform library
338*4882a593Smuzhiyun# ----------------------------------------------------------------------------
339*4882a593Smuzhiyun# Media Process Platform include
340*4882a593Smuzhiyuninclude_directories(mpp/inc)
341*4882a593Smuzhiyunadd_subdirectory(mpp)
342*4882a593Smuzhiyun
343*4882a593Smuzhiyun# ----------------------------------------------------------------------------
344*4882a593Smuzhiyun#  test / demo
345*4882a593Smuzhiyun# ----------------------------------------------------------------------------
346*4882a593Smuzhiyunadd_subdirectory(test)
347*4882a593Smuzhiyun
348*4882a593Smuzhiyun# ----------------------------------------------------------------------------
349*4882a593Smuzhiyun#  install headers
350*4882a593Smuzhiyun# ----------------------------------------------------------------------------
351*4882a593Smuzhiyuninstall(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/inc/
352*4882a593Smuzhiyun        DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/rockchip"
353*4882a593Smuzhiyun        FILES_MATCHING PATTERN "*.h"
354*4882a593Smuzhiyun        )
355*4882a593Smuzhiyun
356*4882a593Smuzhiyun# ----------------------------------------------------------------------------
357*4882a593Smuzhiyun#  pkgconfig
358*4882a593Smuzhiyun# ----------------------------------------------------------------------------
359*4882a593SmuzhiyunCONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/rockchip_mpp.pc.cmake"
360*4882a593Smuzhiyun                "${CMAKE_BINARY_DIR}/rockchip_mpp.pc" @ONLY)
361*4882a593SmuzhiyunCONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/rockchip_vpu.pc.cmake"
362*4882a593Smuzhiyun                "${CMAKE_BINARY_DIR}/rockchip_vpu.pc" @ONLY)
363*4882a593Smuzhiyuninstall(FILES "${CMAKE_BINARY_DIR}/rockchip_mpp.pc"
364*4882a593Smuzhiyun        DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig/")
365*4882a593Smuzhiyuninstall(FILES "${CMAKE_BINARY_DIR}/rockchip_vpu.pc"
366*4882a593Smuzhiyun        DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig/")
367