1*4a64e381SAndroid Build Coastguard Worker# 2*4a64e381SAndroid Build Coastguard Worker# Copyright (c) 2020, The OpenThread Authors. 3*4a64e381SAndroid Build Coastguard Worker# All rights reserved. 4*4a64e381SAndroid Build Coastguard Worker# 5*4a64e381SAndroid Build Coastguard Worker# Redistribution and use in source and binary forms, with or without 6*4a64e381SAndroid Build Coastguard Worker# modification, are permitted provided that the following conditions are met: 7*4a64e381SAndroid Build Coastguard Worker# 1. Redistributions of source code must retain the above copyright 8*4a64e381SAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer. 9*4a64e381SAndroid Build Coastguard Worker# 2. Redistributions in binary form must reproduce the above copyright 10*4a64e381SAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer in the 11*4a64e381SAndroid Build Coastguard Worker# documentation and/or other materials provided with the distribution. 12*4a64e381SAndroid Build Coastguard Worker# 3. Neither the name of the copyright holder nor the 13*4a64e381SAndroid Build Coastguard Worker# names of its contributors may be used to endorse or promote products 14*4a64e381SAndroid Build Coastguard Worker# derived from this software without specific prior written permission. 15*4a64e381SAndroid Build Coastguard Worker# 16*4a64e381SAndroid Build Coastguard Worker# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17*4a64e381SAndroid Build Coastguard Worker# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18*4a64e381SAndroid Build Coastguard Worker# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19*4a64e381SAndroid Build Coastguard Worker# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 20*4a64e381SAndroid Build Coastguard Worker# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21*4a64e381SAndroid Build Coastguard Worker# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22*4a64e381SAndroid Build Coastguard Worker# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23*4a64e381SAndroid Build Coastguard Worker# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24*4a64e381SAndroid Build Coastguard Worker# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25*4a64e381SAndroid Build Coastguard Worker# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26*4a64e381SAndroid Build Coastguard Worker# POSSIBILITY OF SUCH DAMAGE. 27*4a64e381SAndroid Build Coastguard Worker# 28*4a64e381SAndroid Build Coastguard Worker 29*4a64e381SAndroid Build Coastguard Workercmake_minimum_required(VERSION 3.10.2) 30*4a64e381SAndroid Build Coastguard Workerproject(openthread-br VERSION 0.3.0) 31*4a64e381SAndroid Build Coastguard Worker 32*4a64e381SAndroid Build Coastguard Workeradd_compile_options(-Wall -Wextra -Werror -Wfatal-errors -Wuninitialized -Wno-missing-braces) 33*4a64e381SAndroid Build Coastguard Worker 34*4a64e381SAndroid Build Coastguard Workeradd_library(otbr-config INTERFACE) 35*4a64e381SAndroid Build Coastguard Worker 36*4a64e381SAndroid Build Coastguard Workerset(OTBR_INFRA_IF_NAME "wlan0" CACHE STRING "The infrastructure interface name") 37*4a64e381SAndroid Build Coastguard Workerset(OTBR_VENDOR_NAME "OpenThread" CACHE STRING "The vendor name") 38*4a64e381SAndroid Build Coastguard Workerset(OTBR_PRODUCT_NAME "BorderRouter" CACHE STRING "The product name") 39*4a64e381SAndroid Build Coastguard Workerset(OTBR_NAME "${OTBR_VENDOR_NAME}_${OTBR_PRODUCT_NAME}" CACHE STRING "The package name") 40*4a64e381SAndroid Build Coastguard Workerset(OTBR_MESHCOP_SERVICE_INSTANCE_NAME "${OTBR_VENDOR_NAME} ${OTBR_PRODUCT_NAME}" CACHE STRING "The OTBR MeshCoP service instance name") 41*4a64e381SAndroid Build Coastguard Workerset(OTBR_MDNS "avahi" CACHE STRING "mDNS publisher provider") 42*4a64e381SAndroid Build Coastguard Workerset(OTBR_SYSLOG_FACILITY_ID LOG_USER CACHE STRING "Syslog logging facility") 43*4a64e381SAndroid Build Coastguard Workerset(OTBR_RADIO_URL "spinel+hdlc+uart:///dev/ttyACM0" CACHE STRING "The radio URL") 44*4a64e381SAndroid Build Coastguard Worker 45*4a64e381SAndroid Build Coastguard Workerset_property(CACHE OTBR_MDNS PROPERTY STRINGS "avahi" "mDNSResponder") 46*4a64e381SAndroid Build Coastguard Worker 47*4a64e381SAndroid Build Coastguard Workerinclude("${PROJECT_SOURCE_DIR}/etc/cmake/options.cmake") 48*4a64e381SAndroid Build Coastguard Worker 49*4a64e381SAndroid Build Coastguard Workerif(NOT CMAKE_C_STANDARD) 50*4a64e381SAndroid Build Coastguard Worker set(CMAKE_C_STANDARD 99) 51*4a64e381SAndroid Build Coastguard Worker set(CMAKE_C_STANDARD_REQUIRED ON) 52*4a64e381SAndroid Build Coastguard Workerendif() 53*4a64e381SAndroid Build Coastguard Worker 54*4a64e381SAndroid Build Coastguard Workerif(NOT CMAKE_CXX_STANDARD) 55*4a64e381SAndroid Build Coastguard Worker set(CMAKE_CXX_STANDARD 11) 56*4a64e381SAndroid Build Coastguard Worker set(CMAKE_CXX_STANDARD_REQUIRED ON) 57*4a64e381SAndroid Build Coastguard Workerendif() 58*4a64e381SAndroid Build Coastguard Worker 59*4a64e381SAndroid Build Coastguard Workerset(CMAKE_CXX_EXTENSIONS OFF) 60*4a64e381SAndroid Build Coastguard Workerset(CMAKE_EXE_LINKER_FLAGS "-rdynamic ${CMAKE_EXE_LINKER_FLAGS}") 61*4a64e381SAndroid Build Coastguard Worker 62*4a64e381SAndroid Build Coastguard Workerif (OTBR_COVERAGE AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") 63*4a64e381SAndroid Build Coastguard Worker message(STATUS "Coverage: ON") 64*4a64e381SAndroid Build Coastguard Worker target_compile_options(otbr-config INTERFACE -g -O0 --coverage) 65*4a64e381SAndroid Build Coastguard Worker target_link_libraries(otbr-config INTERFACE --coverage) 66*4a64e381SAndroid Build Coastguard Workerendif() 67*4a64e381SAndroid Build Coastguard Worker 68*4a64e381SAndroid Build Coastguard Workermessage(STATUS "OTBR package name: ${OTBR_NAME}") 69*4a64e381SAndroid Build Coastguard Worker 70*4a64e381SAndroid Build Coastguard Workerif(NOT OTBR_VERSION) 71*4a64e381SAndroid Build Coastguard Worker execute_process( 72*4a64e381SAndroid Build Coastguard Worker COMMAND git describe --dirty --always 73*4a64e381SAndroid Build Coastguard Worker WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 74*4a64e381SAndroid Build Coastguard Worker OUTPUT_VARIABLE OTBR_GIT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE 75*4a64e381SAndroid Build Coastguard Worker ) 76*4a64e381SAndroid Build Coastguard Worker 77*4a64e381SAndroid Build Coastguard Worker if(OTBR_GIT_VERSION) 78*4a64e381SAndroid Build Coastguard Worker set(OTBR_VERSION "${PROJECT_VERSION}-${OTBR_GIT_VERSION}") 79*4a64e381SAndroid Build Coastguard Worker else() 80*4a64e381SAndroid Build Coastguard Worker set(OTBR_VERSION "${PROJECT_VERSION}") 81*4a64e381SAndroid Build Coastguard Worker endif() 82*4a64e381SAndroid Build Coastguard Workerendif() 83*4a64e381SAndroid Build Coastguard Worker 84*4a64e381SAndroid Build Coastguard Workermessage(STATUS "Version: ${OTBR_VERSION}") 85*4a64e381SAndroid Build Coastguard Worker 86*4a64e381SAndroid Build Coastguard Workertarget_include_directories(otbr-config INTERFACE 87*4a64e381SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/include 88*4a64e381SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src 89*4a64e381SAndroid Build Coastguard Worker) 90*4a64e381SAndroid Build Coastguard Workertarget_compile_definitions(otbr-config INTERFACE 91*4a64e381SAndroid Build Coastguard Worker "OTBR_VENDOR_NAME=\"${OTBR_VENDOR_NAME}\"" 92*4a64e381SAndroid Build Coastguard Worker "OTBR_PRODUCT_NAME=\"${OTBR_PRODUCT_NAME}\"" 93*4a64e381SAndroid Build Coastguard Worker "OTBR_PACKAGE_NAME=\"${OTBR_NAME}\"" 94*4a64e381SAndroid Build Coastguard Worker "OTBR_PACKAGE_VERSION=\"${OTBR_VERSION}\"" 95*4a64e381SAndroid Build Coastguard Worker "OTBR_MESHCOP_SERVICE_INSTANCE_NAME=\"${OTBR_MESHCOP_SERVICE_INSTANCE_NAME}\"" 96*4a64e381SAndroid Build Coastguard Worker "OTBR_SYSLOG_FACILITY_ID=${OTBR_SYSLOG_FACILITY_ID}" 97*4a64e381SAndroid Build Coastguard Worker) 98*4a64e381SAndroid Build Coastguard Worker 99*4a64e381SAndroid Build Coastguard Workerif(BUILD_SHARED_LIBS) 100*4a64e381SAndroid Build Coastguard Worker target_link_libraries(otbr-config INTERFACE -Wl,--unresolved-symbols=ignore-in-shared-libs) 101*4a64e381SAndroid Build Coastguard Workerendif() 102*4a64e381SAndroid Build Coastguard Worker 103*4a64e381SAndroid Build Coastguard Workerinclude(GNUInstallDirs) 104*4a64e381SAndroid Build Coastguard Worker 105*4a64e381SAndroid Build Coastguard Workerpkg_check_modules(SYSTEMD systemd) 106*4a64e381SAndroid Build Coastguard Worker 107*4a64e381SAndroid Build Coastguard Workerif(SYSTEMD_FOUND) 108*4a64e381SAndroid Build Coastguard Worker pkg_get_variable(OTBR_SYSTEMD_UNIT_DIR systemd systemdsystemunitdir) 109*4a64e381SAndroid Build Coastguard Workerendif() 110*4a64e381SAndroid Build Coastguard Worker 111*4a64e381SAndroid Build Coastguard Workerset(OPENTHREAD_PROJECT_DIRECTORY ${PROJECT_SOURCE_DIR}/third_party/openthread/repo) 112*4a64e381SAndroid Build Coastguard Workerset(OTBR_PROJECT_DIRECTORY ${PROJECT_SOURCE_DIR}) 113*4a64e381SAndroid Build Coastguard Worker 114*4a64e381SAndroid Build Coastguard Workeradd_subdirectory(third_party EXCLUDE_FROM_ALL) 115*4a64e381SAndroid Build Coastguard Workeradd_subdirectory(src) 116*4a64e381SAndroid Build Coastguard Workeradd_subdirectory(tools) 117*4a64e381SAndroid Build Coastguard Worker 118*4a64e381SAndroid Build Coastguard Worker 119*4a64e381SAndroid Build Coastguard Workerif(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) 120*4a64e381SAndroid Build Coastguard Worker include(CTest) 121*4a64e381SAndroid Build Coastguard Worker 122*4a64e381SAndroid Build Coastguard Worker if(BUILD_TESTING) 123*4a64e381SAndroid Build Coastguard Worker add_subdirectory(tests) 124*4a64e381SAndroid Build Coastguard Worker endif() 125*4a64e381SAndroid Build Coastguard Worker 126*4a64e381SAndroid Build Coastguard Worker set(CPACK_GENERATOR "DEB") 127*4a64e381SAndroid Build Coastguard Worker set(CPACK_DEBIAN_PACKAGE_MAINTAINER "OpenThread Authors (https://github.com/openthread/openthread)") 128*4a64e381SAndroid Build Coastguard Worker set(CPACK_PACKAGE_CONTACT "OpenThread Authors (https://github.com/openthread/openthread)") 129*4a64e381SAndroid Build Coastguard Worker include(CPack) 130*4a64e381SAndroid Build Coastguard Workerendif() 131*4a64e381SAndroid Build Coastguard Worker 132*4a64e381SAndroid Build Coastguard Workerif (OTBR_DOC) 133*4a64e381SAndroid Build Coastguard Worker add_subdirectory(doc) 134*4a64e381SAndroid Build Coastguard Workerendif() 135