1project(libteec
2	VERSION 1.0.0
3	LANGUAGES C)
4
5################################################################################
6# Packages
7################################################################################
8find_package(Threads REQUIRED)
9if(NOT THREADS_FOUND)
10	message(FATAL_ERROR "Threads not found")
11endif()
12
13################################################################################
14# Configuration flags always included
15################################################################################
16option (CFG_TEE_BENCHMARK "Build with benchmark support" OFF)
17
18set (CFG_TEE_CLIENT_LOG_LEVEL "1" CACHE STRING "libteec log level")
19set (CFG_TEE_CLIENT_LOG_FILE "/data/tee/teec.log" CACHE STRING "Location of libteec log")
20
21################################################################################
22# Source files
23################################################################################
24set (SRC
25	src/tee_client_api.c
26	src/teec_trace.c
27)
28
29if (CFG_TEE_BENCHMARK)
30	set (SRC ${SRC} src/teec_benchmark.c)
31endif()
32
33################################################################################
34# Built library
35################################################################################
36add_library (teec ${SRC})
37
38set(libteectgt teec)
39configure_file(libteec.pc.in libteec.pc @ONLY)
40
41set_target_properties (teec PROPERTIES
42	VERSION ${PROJECT_VERSION}
43	SOVERSION ${PROJECT_VERSION_MAJOR}
44)
45
46################################################################################
47# Flags always set
48################################################################################
49target_compile_definitions (teec
50	PRIVATE -D_GNU_SOURCE
51	PRIVATE -DDEBUGLEVEL_${CFG_TEE_CLIENT_LOG_LEVEL}
52	PRIVATE -DTEEC_LOG_FILE="${CFG_TEE_CLIENT_LOG_FILE}"
53	PRIVATE -DBINARY_PREFIX="LT"
54)
55
56################################################################################
57# Optional flags
58################################################################################
59if (CFG_TEE_BENCHMARK)
60	target_compile_definitions (teec PRIVATE -DCFG_TEE_BENCHMARK)
61endif()
62
63################################################################################
64# Public and private header and library dependencies
65################################################################################
66target_include_directories(teec PUBLIC include)
67
68target_link_libraries (teec
69	PUBLIC ${CMAKE_THREAD_LIBS_INIT} # this is pthreads
70	PRIVATE optee-client-headers)
71
72################################################################################
73# Install targets
74################################################################################
75# FIXME: This should in someway harmonize with CFG_TEE_CLIENT_LOAD_PATH
76# FIXME: Should we change this to /usr/local/lib?
77install (TARGETS teec LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
78                      ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
79