1*4882a593Smuzhiyuncmake_minimum_required (VERSION 2.8) 2*4882a593Smuzhiyunproject (rkcrypto C) 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun################################################################################ 5*4882a593Smuzhiyun# toolchain config 6*4882a593Smuzhiyun################################################################################ 7*4882a593Smuzhiyunset (CMAKE_SYSTEM_NAME Linux) 8*4882a593Smuzhiyun 9*4882a593Smuzhiyunif (NOT DEFINED CMAKE_C_COMPILER) 10*4882a593Smuzhiyun message(FATAL_ERROR "librkcrypto: CMAKE_C_COMPILER not define") 11*4882a593Smuzhiyunendif() 12*4882a593Smuzhiyun 13*4882a593Smuzhiyunif (NOT DEFINED CMAKE_CXX_COMPILER) 14*4882a593Smuzhiyun message(FATAL_ERROR "librkcrypto: CMAKE_CXX_COMPILER not define") 15*4882a593Smuzhiyunendif() 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun################################################################################ 18*4882a593Smuzhiyun# compile flags 19*4882a593Smuzhiyun################################################################################ 20*4882a593Smuzhiyunadd_compile_options(-Wall -Werror) 21*4882a593Smuzhiyunadd_compile_options(-Wno-unused-function) 22*4882a593Smuzhiyunadd_compile_options(-Wno-unused-parameter) 23*4882a593Smuzhiyunadd_compile_options(-Wno-format-truncation) 24*4882a593Smuzhiyunadd_compile_options(-Wno-maybe-uninitialized) 25*4882a593Smuzhiyun 26*4882a593Smuzhiyunif(NOT CMAKE_BUILD_TYPE) 27*4882a593Smuzhiyun set(CMAKE_BUILD_TYPE "Release" CACHE STRING 28*4882a593Smuzhiyun "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." 29*4882a593Smuzhiyun FORCE) 30*4882a593Smuzhiyunendif(NOT CMAKE_BUILD_TYPE) 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun################################################################################ 33*4882a593Smuzhiyun# librkcrypto files 34*4882a593Smuzhiyun################################################################################ 35*4882a593Smuzhiyunset(RKCRYPTO_PUBLIC_HEADER 36*4882a593Smuzhiyun include/rkcrypto_otp_key.h 37*4882a593Smuzhiyun include/rkcrypto_common.h 38*4882a593Smuzhiyun include/rkcrypto_core.h 39*4882a593Smuzhiyun include/rkcrypto_mem.h 40*4882a593Smuzhiyun) 41*4882a593Smuzhiyun 42*4882a593Smuzhiyuninclude_directories(include) 43*4882a593Smuzhiyunfile(GLOB SOURCES "src/*.c") 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun################################################################################ 46*4882a593Smuzhiyun# libdrm dependencies 47*4882a593Smuzhiyun################################################################################ 48*4882a593Smuzhiyuninclude_directories(third_party/libdrm/include) 49*4882a593Smuzhiyuninclude_directories(third_party/libdrm/include/drm) 50*4882a593Smuzhiyunfile(GLOB SOURCES_DRM "third_party/libdrm/src/*.c") 51*4882a593Smuzhiyunadd_definitions(-DMAJOR_IN_SYSMACROS=1 -D_GNU_SOURCE) 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun################################################################################ 54*4882a593Smuzhiyun# libteec dependencies 55*4882a593Smuzhiyun################################################################################ 56*4882a593Smuzhiyunadd_definitions(-DBINARY_PREFIX=\"TEEC\") 57*4882a593Smuzhiyunset(TEEC_PATH third_party/optee_client/libteec) 58*4882a593Smuzhiyuninclude_directories(${TEEC_PATH}/../public ${TEEC_PATH}/include) 59*4882a593Smuzhiyunfile(GLOB SOURCES_TEEC 60*4882a593Smuzhiyun ${TEEC_PATH}/src/tee_client_api.c 61*4882a593Smuzhiyun ${TEEC_PATH}/src/teec_trace.c) 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun################################################################################ 64*4882a593Smuzhiyun# build librkcrypto shared library 65*4882a593Smuzhiyun################################################################################ 66*4882a593Smuzhiyunset(SHARED_LIB_NAME rkcrypto) 67*4882a593Smuzhiyun 68*4882a593Smuzhiyunadd_library(${SHARED_LIB_NAME} SHARED ${SOURCES} ${SOURCES_DRM} ${SOURCES_TEEC}) 69*4882a593Smuzhiyunset_target_properties(${SHARED_LIB_NAME} PROPERTIES PUBLIC_HEADER "${RKCRYPTO_PUBLIC_HEADER}") 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun################################################################################ 72*4882a593Smuzhiyun# build librkcrypto static library 73*4882a593Smuzhiyun################################################################################ 74*4882a593Smuzhiyunset(STATIC_LIB_NAME ${SHARED_LIB_NAME}_static) 75*4882a593Smuzhiyunadd_library(${STATIC_LIB_NAME} STATIC ${SOURCES} ${SOURCES_DRM} ${SOURCES_TEEC}) 76*4882a593Smuzhiyunset_target_properties(${STATIC_LIB_NAME} PROPERTIES OUTPUT_NAME ${SHARED_LIB_NAME}) 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun################################################################################ 79*4882a593Smuzhiyun# build other components 80*4882a593Smuzhiyun################################################################################ 81*4882a593Smuzhiyunadd_subdirectory(test) 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun################################################################################ 84*4882a593Smuzhiyun# install public files 85*4882a593Smuzhiyun################################################################################ 86*4882a593Smuzhiyuninstall(TARGETS ${SHARED_LIB_NAME} 87*4882a593Smuzhiyun LIBRARY DESTINATION "lib" 88*4882a593Smuzhiyun PUBLIC_HEADER DESTINATION "include") 89*4882a593Smuzhiyuninstall(TARGETS ${STATIC_LIB_NAME} 90*4882a593Smuzhiyun ARCHIVE DESTINATION "lib") 91