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