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