# # Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved # # Contact: Krzysztof Dynowski # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License # # # @file CMakeLists.txt # @author Krzysztof Dynowski # CMAKE_MINIMUM_REQUIRED (VERSION 2.6) PROJECT(tef-libteec) SET(VERSION "0.0.1") INCLUDE(FindPkgConfig) INCLUDE(GNUInstallDirs) # CMAKE_INSTALL_xxx ## Compiler flags, depending on the build type ################################# IF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE "DEBUG") ENDIF(NOT CMAKE_BUILD_TYPE) ## Print build information ##################################################### MESSAGE(STATUS "-------------------------------------------------") MESSAGE(STATUS "Compiler: " ${CMAKE_C_COMPILER_ID}) MESSAGE(STATUS "Compiler version: " ${CMAKE_C_COMPILER_VERSION}) MESSAGE(STATUS "Build type: " ${CMAKE_BUILD_TYPE}) MESSAGE(STATUS "-------------------------------------------------") SET(CMAKE_C_FLAGS_DEBUG "-std=c11 -O0 -ggdb -Wp,-U_FORTIFY_SOURCE") SET(CMAKE_C_FLAGS_RELEASE "-std=c11 -O2 -DNDEBUG") ADD_DEFINITIONS("-fPIC") # Position Independent Code ADD_DEFINITIONS("-Werror") # Make all warnings into errors ADD_DEFINITIONS("-Wall") # Generate all warnings ADD_DEFINITIONS("-Wextra") # Generate even more extra warnings ADD_DEFINITIONS("-pedantic") # Be pedantic ADD_DEFINITIONS("-pedantic-errors") # Make pedantic warnings into errors SET(TEF_API_ROOT_PATH ${PROJECT_SOURCE_DIR}) SET(TEF_API_PATH $(TEF_API_ROOT_PATH)/api) SET(TEF_TARGET "teec") SET(TEF_PC tef-libteec.pc) # force 32-bit mode IF(DEFINED FORCE_32BIT) SET(CMAKE_C_FLAGS -m32) ENDIF() INCLUDE_DIRECTORIES( ${TEF_API_PATH} ) FILE(GLOB TEF_API_HEADERS api/tef/*.h) FILE(GLOB TEF_API_SOURCES src/*.c src/simulator/*.c src/optee/*.c) ADD_LIBRARY(${TEF_TARGET} SHARED ${TEF_API_SOURCES}) SET(_LIB_VERSION_ "${VERSION}") SET(_LIB_SOVERSION_ "0") SET_TARGET_PROPERTIES(${TEF_TARGET} PROPERTIES SOVERSION ${_LIB_SOVERSION_} VERSION ${_LIB_VERSION_}) IF(NOT DEFINED LIB_INSTALL_DIR) SET(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") ENDIF(NOT DEFINED LIB_INSTALL_DIR) IF(NOT DEFINED INCLUDE_INSTALL_DIR) SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}") ENDIF(NOT DEFINED INCLUDE_INSTALL_DIR) ADD_DEFINITIONS(-DLIB_INSTALL_DIR="${LIB_INSTALL_DIR}") CONFIGURE_FILE(src/${TEF_PC}.in ${CMAKE_BINARY_DIR}/${TEF_PC} @ONLY) #install library INSTALL(FILES src/tef.conf DESTINATION /etc/tef/) INSTALL(PROGRAMS src/scripts/tef-update.sh DESTINATION /usr/sbin/) INSTALL(TARGETS ${TEF_TARGET} DESTINATION ${LIB_INSTALL_DIR}) INSTALL(FILES ${CMAKE_BINARY_DIR}/${TEF_PC} DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) #install headers INSTALL(FILES ${TEF_API_HEADERS} DESTINATION "${INCLUDE_INSTALL_DIR}/tef")