[posix-host] add cmake support (#4379)

This commit is contained in:
Yakun Xu
2019-12-06 09:03:17 -08:00
committed by Jonathan Hui
parent b4b0531433
commit f7555a54f3
4 changed files with 195 additions and 3 deletions
+15
View File
@@ -515,6 +515,21 @@ build_samr21() {
}
[ $BUILD_TARGET != posix-app-pty ] || {
# check daemon mode
git checkout -- . || die
git clean -xfd || die
mkdir build && cd build || die
cmake -GNinja -DOT_PLATFORM=posix-host -DOT_DAEMON=ON .. || die
ninja || die
cd .. || die
git checkout -- . || die
git clean -xfd || die
mkdir build && cd build || die
cmake -GNinja -DOT_PLATFORM=posix-host .. || die
ninja || die
cd .. || die
./bootstrap
.travis/check-posix-app-pty || die
}
+11 -3
View File
@@ -54,13 +54,19 @@ set(OT_PLATFORM "none" CACHE STRING "Target platform chosen by the user at confi
ot_get_platforms(OT_EXAMPLE_PLATFORMS)
set_property(CACHE OT_PLATFORM PROPERTY STRINGS ${OT_EXAMPLE_PLATFORMS})
if(NOT OT_PLATFORM IN_LIST OT_EXAMPLE_PLATFORMS)
message(FATAL_ERROR "Platform unknown: ${OT_PLATFORM}")
if(NOT OT_PLATFORM STREQUAL "posix-host")
message(FATAL_ERROR "Platform unknown: ${OT_PLATFORM}")
endif()
endif()
list(APPEND OT_PUBLIC_INCLUDES ${PROJECT_BINARY_DIR}/etc/cmake)
list(APPEND OT_PUBLIC_INCLUDES ${PROJECT_SOURCE_DIR}/etc/cmake)
list(APPEND OT_PUBLIC_INCLUDES ${PROJECT_SOURCE_DIR}/include)
if(NOT OT_PLATFORM MATCHES "none")
if(OT_PLATFORM STREQUAL "posix-host")
list(APPEND OT_PRIVATE_INCLUDES ${PROJECT_SOURCE_DIR}/src/posix/platform)
add_subdirectory("${PROJECT_SOURCE_DIR}/src/posix/platform")
elseif(NOT OT_PLATFORM MATCHES "none")
list(APPEND OT_PRIVATE_INCLUDES ${PROJECT_SOURCE_DIR}/examples/platforms/${OT_PLATFORM})
add_subdirectory("${PROJECT_SOURCE_DIR}/examples/platforms/${OT_PLATFORM}")
endif()
@@ -76,7 +82,9 @@ if(OT_BUILTIN_MBEDTLS)
)
endif()
if(NOT OT_PLATFORM MATCHES "none")
if(OT_PLATFORM STREQUAL "posix-host")
add_subdirectory(src/posix)
elseif(NOT OT_PLATFORM MATCHES "none")
add_subdirectory(examples)
endif()
+98
View File
@@ -0,0 +1,98 @@
#
# Copyright (c) 2019, The OpenThread Authors.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. Neither the name of the copyright holder nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
set(COMMON_INCLUDES
${OT_PUBLIC_INCLUDES}
${OT_PRIVATE_INCLUDES}
${PROJECT_SOURCE_DIR}/src/core
${PROJECT_SOURCE_DIR}/src/posix/platform
)
if(OT_DAEMON)
add_executable(ot-daemon
main.c
)
target_include_directories(ot-daemon PRIVATE ${COMMON_INCLUDES})
target_compile_definitions(ot-daemon PRIVATE
OPENTHREAD_POSIX_APP_TYPE=2
)
target_link_libraries(ot-daemon PRIVATE
openthread-cli-ftd
${OT_PLATFORM_LIB}
openthread-ftd
${OT_PLATFORM_LIB}
openthread-ncp-ftd
mbedcrypto
)
add_executable(ot-ctl
client.c
)
target_include_directories(ot-ctl PRIVATE ${COMMON_INCLUDES})
else()
add_executable(ot-cli
main.c
)
target_include_directories(ot-cli PRIVATE ${COMMON_INCLUDES})
target_compile_definitions(ot-cli PRIVATE
OPENTHREAD_POSIX_APP_TYPE=2
)
target_link_libraries(ot-cli
openthread-cli-ftd
${OT_PLATFORM_LIB}
openthread-ftd
${OT_PLATFORM_LIB}
mbedcrypto
openthread-ncp-ftd
)
add_executable(ot-ncp
main.c
)
target_include_directories(ot-ncp PRIVATE ${COMMON_INCLUDES})
target_compile_definitions(ot-ncp PRIVATE
OPENTHREAD_POSIX_APP_TYPE=1
)
target_link_libraries(ot-ncp
openthread-ncp-ftd
${OT_PLATFORM_LIB}
openthread-ftd
${OT_PLATFORM_LIB}
mbedcrypto
openthread-ncp-ftd
)
endif()
+71
View File
@@ -0,0 +1,71 @@
#
# Copyright (c) 2019, The OpenThread Authors.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. Neither the name of the copyright holder nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
set(OT_PLATFORM_LIB "openthread-posix" PARENT_SCOPE)
option(OT_DAEMON "Enable daemon mode" OFF)
if(OT_DAEMON)
list(APPEND OT_PLATFORM_DEFINES "OPENTHREAD_ENABLE_POSIX_APP_DAEMON=1")
endif()
list(APPEND OT_PLATFORM_DEFINES
"OPENTHREAD_CONFIG_ENABLE_DYNAMIC_LOG_LEVEL=1"
"OPENTHREAD_CONFIG_NCP_UART_ENABLE=1"
"OPENTHREAD_POSIX=1"
"OPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"openthread-core-posix-config.h\""
)
set(OT_PLATFORM_DEFINES ${OT_PLATFORM_DEFINES} PARENT_SCOPE)
add_library(openthread-posix
alarm.c
entropy.c
hdlc_interface.cpp
logging.c
misc.c
netif.cpp
radio_spinel.cpp
settings.cpp
sim.c
system.c
uart.c
udp.cpp
)
target_link_libraries(openthread-posix PUBLIC
util
)
target_compile_definitions(openthread-posix PUBLIC ${OT_PLATFORM_DEFINES})
target_include_directories(openthread-posix PRIVATE
${OT_PUBLIC_INCLUDES}
${OT_PRIVATE_INCLUDES}
${PROJECT_SOURCE_DIR}/src
${PROJECT_SOURCE_DIR}/src/core
${PROJECT_SOURCE_DIR}/src/posix/platform
)