1# 2# Copyright (c) 2020, The OpenThread Authors. 3# All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions are met: 7# 1. Redistributions of source code must retain the above copyright 8# notice, this list of conditions and the following disclaimer. 9# 2. Redistributions in binary form must reproduce the above copyright 10# notice, this list of conditions and the following disclaimer in the 11# documentation and/or other materials provided with the distribution. 12# 3. Neither the name of the copyright holder nor the 13# names of its contributors may be used to endorse or promote products 14# derived from this software without specific prior written permission. 15# 16# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 20# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26# POSSIBILITY OF SUCH DAMAGE. 27# 28 29set(OT_MBEDTLS_DEFAULT_CONFIG_FILE \"openthread-mbedtls-config.h\") 30 31set(OT_MBEDTLS_CONFIG_FILE "" CACHE STRING "The mbedTLS config file") 32 33set(ENABLE_TESTING OFF CACHE BOOL "Disable mbedtls test" FORCE) 34set(ENABLE_PROGRAMS OFF CACHE BOOL "Disable mbetls program" FORCE) 35 36find_program(UNIFDEFALL_EXE unifdefall) 37find_program(UNIFDEF_EXE unifdef) 38if(UNIFDEF_EXE) 39 execute_process(COMMAND ${UNIFDEF_EXE} -V ERROR_VARIABLE VERSION_OUTPUT) 40 string(REGEX MATCH "Version: unifdef-([0-9]+\\.[0-9]+)" VERSION_MATCH "${VERSION_OUTPUT}") 41 set(UNIFDEF_VERSION ${CMAKE_MATCH_1}) 42endif() 43find_program(SED_EXE sed) 44 45string(REPLACE "-Wconversion" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") 46string(REPLACE "-Wconversion" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") 47 48set(MBEDTLS_FATAL_WARNINGS OFF CACHE BOOL "Compiler warnings treated as errors" FORCE) 49 50add_subdirectory(repo) 51 52if(UNIFDEFALL_EXE AND SED_EXE AND UNIFDEF_VERSION VERSION_GREATER_EQUAL 2.10) 53 add_custom_command(OUTPUT openthread-mbedtls-config.h 54 COMMAND ${UNIFDEFALL_EXE} 55 "'-D$<JOIN:$<TARGET_PROPERTY:ot-config,INTERFACE_COMPILE_DEFINITIONS>,';'-D>'" 56 "-I$<JOIN:$<TARGET_PROPERTY:ot-config,INTERFACE_INCLUDE_DIRECTORIES>,;-I>" 57 "-I$<JOIN:${OT_PUBLIC_INCLUDES},;-I>" 58 "-I${CMAKE_CURRENT_SOURCE_DIR}/repo/include" 59 "${CMAKE_CURRENT_SOURCE_DIR}/mbedtls-config.h" | 60 ${SED_EXE} '/openthread-core-config\.h/d' > 61 openthread-mbedtls-config.h 62 MAIN_DEPENDENCY mbedtls-config.h 63 COMMAND_EXPAND_LISTS 64 ) 65 66 add_custom_target(openthread-mbedtls-config 67 DEPENDS openthread-mbedtls-config.h) 68 69 add_dependencies(ot-config openthread-mbedtls-config) 70 add_dependencies(mbedtls openthread-mbedtls-config) 71 add_dependencies(mbedx509 openthread-mbedtls-config) 72 add_dependencies(mbedcrypto openthread-mbedtls-config) 73else() 74 configure_file(mbedtls-config.h openthread-mbedtls-config.h COPYONLY) 75endif() 76 77target_include_directories(ot-config SYSTEM 78 INTERFACE 79 ${CMAKE_CURRENT_BINARY_DIR} 80 ${CMAKE_CURRENT_SOURCE_DIR}/repo/include) 81 82target_compile_definitions(mbedtls 83 PUBLIC 84 "MBEDTLS_CONFIG_FILE=$<IF:$<BOOL:${OT_MBEDTLS_CONFIG_FILE}>,${OT_MBEDTLS_CONFIG_FILE},${OT_MBEDTLS_DEFAULT_CONFIG_FILE}>" 85 PRIVATE 86 $<TARGET_PROPERTY:ot-config,INTERFACE_COMPILE_DEFINITIONS> 87) 88target_include_directories(mbedtls 89 PUBLIC 90 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/repo/include> 91 PRIVATE 92 ${OT_PUBLIC_INCLUDES} 93 $<TARGET_PROPERTY:ot-config,INTERFACE_INCLUDE_DIRECTORIES> 94) 95 96target_compile_definitions(mbedx509 97 PUBLIC 98 "MBEDTLS_CONFIG_FILE=$<IF:$<BOOL:${OT_MBEDTLS_CONFIG_FILE}>,${OT_MBEDTLS_CONFIG_FILE},${OT_MBEDTLS_DEFAULT_CONFIG_FILE}>" 99 PRIVATE 100 $<TARGET_PROPERTY:ot-config,INTERFACE_COMPILE_DEFINITIONS> 101) 102target_include_directories(mbedx509 103 PUBLIC 104 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/repo/include> 105 PRIVATE 106 ${OT_PUBLIC_INCLUDES} 107 $<TARGET_PROPERTY:ot-config,INTERFACE_INCLUDE_DIRECTORIES> 108) 109 110target_compile_definitions(mbedcrypto 111 PUBLIC 112 "MBEDTLS_CONFIG_FILE=$<IF:$<BOOL:${OT_MBEDTLS_CONFIG_FILE}>,${OT_MBEDTLS_CONFIG_FILE},${OT_MBEDTLS_DEFAULT_CONFIG_FILE}>" 113 PRIVATE 114 $<TARGET_PROPERTY:ot-config,INTERFACE_COMPILE_DEFINITIONS> 115) 116target_include_directories(mbedcrypto 117 PUBLIC 118 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/repo/include> 119 PRIVATE 120 ${OT_PUBLIC_INCLUDES} 121 $<TARGET_PROPERTY:ot-config,INTERFACE_INCLUDE_DIRECTORIES> 122) 123