xref: /OK3568_Linux_fs/external/security/librkcrypto/CMakeLists.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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