diff --git a/examples/platforms/cc2650/CMakeLists.txt b/examples/platforms/cc2650/CMakeLists.txt new file mode 100644 index 000000000..2db69e5fc --- /dev/null +++ b/examples/platforms/cc2650/CMakeLists.txt @@ -0,0 +1,98 @@ +# +# Copyright (c) 2020, 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-cc2650" PARENT_SCOPE) + +if(NOT OT_CONFIG) + set(OT_CONFIG "openthread-core-cc2650-config.h") + set(OT_CONFIG ${OT_CONFIG} PARENT_SCOPE) +endif() + +list(APPEND OT_PLATFORM_DEFINES + "OPENTHREAD_CORE_CONFIG_PLATFORM_CHECK_FILE=\"openthread-core-cc2650-config-check.h\"" +) +set(OT_PLATFORM_DEFINES ${OT_PLATFORM_DEFINES} PARENT_SCOPE) + +list(APPEND OT_PRIVATE_DEFINES "MBEDTLS_USER_CONFIG_FILE=\"cc2650-mbedtls-config.h\"") +set(OT_PRIVATE_DEFINES ${OT_PRIVATE_DEFINES} PARENT_SCOPE) +list(APPEND OT_PUBLIC_INCLUDES + "${CMAKE_CURRENT_SOURCE_DIR}/crypto" + "${PROJECT_SOURCE_DIR}/third_party/ti/devices/cc26x0" +) +set(OT_PUBLIC_INCLUDES ${OT_PUBLIC_INCLUDES} PARENT_SCOPE) + +list(APPEND OT_PLATFORM_DEFINES "OPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"${OT_CONFIG}\"") + +add_library(openthread-cc2650 + alarm.c + cc2650_ccfg.c + cc2650_startup.c + crypto/aes_alt.c + crypto/sha256_alt.c + cxx_helpers.c + diag.c + entropy.c + logging.c + misc.c + radio.c + system.c + uart.c + $ +) + +set_property(TARGET openthread-cc2650 PROPERTY C_STANDARD 99) + +target_link_libraries(openthread-cc2650 + PUBLIC + cc26x0-driver + PRIVATE + mbedtls + openthread-platform-utils +) + +target_link_options(openthread-cc2650 + PUBLIC + -Wl,-Map=$.map +) + +target_compile_definitions(openthread-cc2650 + PUBLIC + ${OT_PLATFORM_DEFINES} + PRIVATE + ${OT_PRIVATE_DEFINES} +) + +target_compile_options(openthread-cc2650 PRIVATE ${OT_CFLAGS}) + +target_include_directories(openthread-cc2650 + PRIVATE + ${OT_PUBLIC_INCLUDES} + ${OT_PRIVATE_INCLUDES} + ${PROJECT_SOURCE_DIR}/src/core + ${PROJECT_SOURCE_DIR}/examples/platforms +) diff --git a/examples/platforms/cc2650/arm-none-eabi.cmake b/examples/platforms/cc2650/arm-none-eabi.cmake new file mode 100644 index 000000000..9612baace --- /dev/null +++ b/examples/platforms/cc2650/arm-none-eabi.cmake @@ -0,0 +1,52 @@ +# +# Copyright (c) 2020, 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(CMAKE_SYSTEM_NAME Generic) +set(CMAKE_SYSTEM_PROCESSOR ARM) + +set(CMAKE_C_COMPILER arm-none-eabi-gcc) +set(CMAKE_CXX_COMPILER arm-none-eabi-g++) +set(CMAKE_ASM_COMPILER arm-none-eabi-as) +set(CMAKE_RANLIB arm-none-eabi-ranlib) + +set(COMMON_C_FLAGS "-mthumb -fdata-sections -ffunction-sections -mcpu=cortex-m3 -mfloat-abi=soft") + +set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -std=gnu99") +set(CMAKE_CXX_FLAGS "${COMMON_C_FLAGS} -fno-exceptions -fno-rtti") +set(CMAKE_ASM_FLAGS "${COMMON_C_FLAGS}") +set(CMAKE_EXE_LINKER_FLAGS "${COMMON_C_FLAGS} -Wl,--gc-sections -specs=nano.specs -specs=nosys.specs -nostartfiles") + +set(CMAKE_C_FLAGS_DEBUG "-Og -g") +set(CMAKE_CXX_FLAGS_DEBUG "-Og -g") +set(CMAKE_ASM_FLAGS_DEBUG "-g") +set(CMAKE_EXE_LINKER_FLAGS_DEBUG "") + +set(CMAKE_C_FLAGS_RELEASE "-Os") +set(CMAKE_CXX_FLAGS_RELEASE "-Os") +set(CMAKE_ASM_FLAGS_RELEASE "") +set(CMAKE_EXE_LINKER_FLAGS_RELEASE "") diff --git a/examples/platforms/qpg6095/CMakeLists.txt b/examples/platforms/qpg6095/CMakeLists.txt new file mode 100644 index 000000000..f197f3d5e --- /dev/null +++ b/examples/platforms/qpg6095/CMakeLists.txt @@ -0,0 +1,102 @@ +# +# Copyright (c) 2020, 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-qpg6095" PARENT_SCOPE) + +if(NOT OT_CONFIG) + set(OT_CONFIG "openthread-core-qpg6095-config.h") + set(OT_CONFIG ${OT_CONFIG} PARENT_SCOPE) +endif() + +list(APPEND OT_PLATFORM_DEFINES + "OPENTHREAD_CORE_CONFIG_PLATFORM_CHECK_FILE=\"openthread-core-qpg6095-config-check.h\"" +) +set(OT_PLATFORM_DEFINES ${OT_PLATFORM_DEFINES} PARENT_SCOPE) + +list(APPEND OT_PRIVATE_DEFINES "MBEDTLS_USER_CONFIG_FILE=\"qpg6095-mbedtls-config.h\"") + +list(APPEND OT_PUBLIC_INCLUDES + "${CMAKE_CURRENT_SOURCE_DIR}/crypto" +) +set(OT_PUBLIC_INCLUDES ${OT_PUBLIC_INCLUDES} PARENT_SCOPE) + +if(OT_CFLAGS MATCHES "-pedantic-errors") + string(REPLACE "-pedantic-errors" "" OT_CFLAGS "${OT_CFLAGS}") +endif() + +if(OT_CFLAGS MATCHES "-Wno-c\\+\\+14-compat") + string(REPLACE "-Wno-c++14-compat" "" OT_CFLAGS "${OT_CFLAGS}") +endif() + +list(APPEND OT_PLATFORM_DEFINES "OPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"${OT_CONFIG}\"") + +add_library(openthread-qpg6095 + alarm.c + diag.c + entropy.c + logging.c + misc.c + platform.c + radio.c + settings.cpp + uart.c +) + +set_property(TARGET openthread-qpg6095 PROPERTY C_STANDARD 99) + +target_link_libraries(openthread-qpg6095 + PRIVATE + qpg6095-driver + mbedtls +) + +target_link_options(openthread-qpg6095 + PUBLIC + -T${CMAKE_CURRENT_SOURCE_DIR}/qpg6095.ld + -Wl,-Map=$.map +) + +target_compile_definitions(openthread-qpg6095 + PUBLIC + ${OT_PLATFORM_DEFINES} + PRIVATE + ${OT_PRIVATE_DEFINES} +) + +target_compile_options(openthread-qpg6095 + PRIVATE + ${OT_CFLAGS} +) + +target_include_directories(openthread-qpg6095 + PRIVATE + ${OT_PUBLIC_INCLUDES} + ${OT_PRIVATE_INCLUDES} + ${PROJECT_SOURCE_DIR}/src/core + ${PROJECT_SOURCE_DIR}/examples/platforms +) diff --git a/examples/platforms/qpg6095/arm-none-eabi.cmake b/examples/platforms/qpg6095/arm-none-eabi.cmake new file mode 100644 index 000000000..ee8787e51 --- /dev/null +++ b/examples/platforms/qpg6095/arm-none-eabi.cmake @@ -0,0 +1,52 @@ +# +# Copyright (c) 2020, 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(CMAKE_SYSTEM_NAME Generic) +set(CMAKE_SYSTEM_PROCESSOR ARM) + +set(CMAKE_C_COMPILER arm-none-eabi-gcc) +set(CMAKE_CXX_COMPILER arm-none-eabi-g++) +set(CMAKE_ASM_COMPILER arm-none-eabi-as) +set(CMAKE_RANLIB arm-none-eabi-ranlib) + +set(COMMON_C_FLAGS "-mcpu=cortex-m4 -mthumb -fdata-sections -ffunction-sections") + +set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -std=gnu99") +set(CMAKE_CXX_FLAGS "${COMMON_C_FLAGS} -fno-exceptions -fno-rtti") +set(CMAKE_ASM_FLAGS "${COMMON_C_FLAGS}") +set(CMAKE_EXE_LINKER_FLAGS "${COMMON_C_FLAGS} -specs=nano.specs -specs=nosys.specs -Wl,--gc-sections") + +set(CMAKE_C_FLAGS_DEBUG "-Og -g") +set(CMAKE_CXX_FLAGS_DEBUG "-Og -g") +set(CMAKE_ASM_FLAGS_DEBUG "-g") +set(CMAKE_EXE_LINKER_FLAGS_DEBUG "") + +set(CMAKE_C_FLAGS_RELEASE "-Os") +set(CMAKE_CXX_FLAGS_RELEASE "-Os") +set(CMAKE_ASM_FLAGS_RELEASE "") +set(CMAKE_EXE_LINKER_FLAGS_RELEASE "") diff --git a/examples/platforms/samr21/CMakeLists.txt b/examples/platforms/samr21/CMakeLists.txt new file mode 100644 index 000000000..c3ba4531d --- /dev/null +++ b/examples/platforms/samr21/CMakeLists.txt @@ -0,0 +1,99 @@ +# +# Copyright (c) 2020, 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-samr21" PARENT_SCOPE) + +if(NOT OT_CONFIG) + set(OT_CONFIG "openthread-core-samr21-config.h") + set(OT_CONFIG ${OT_CONFIG} PARENT_SCOPE) +endif() + +list(APPEND OT_PLATFORM_DEFINES + "OPENTHREAD_CORE_CONFIG_PLATFORM_CHECK_FILE=\"openthread-core-samr21-config-check.h\"" +) +set(OT_PLATFORM_DEFINES ${OT_PLATFORM_DEFINES} PARENT_SCOPE) + +list(APPEND OT_PRIVATE_DEFINES "MBEDTLS_USER_CONFIG_FILE=\"samr21-mbedtls-config.h\"") +list(APPEND OT_PUBLIC_INCLUDES + "${PROJECT_SOURCE_DIR}/examples/platforms/samr21/crypto" +) +set(OT_PUBLIC_INCLUDES ${OT_PUBLIC_INCLUDES} PARENT_SCOPE) + +list(APPEND OT_PLATFORM_DEFINES "OPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"${OT_CONFIG}\"") + +add_library(openthread-samr21 + alarm.c + crypto/aes_alt.c + cxx_helpers.c + diag.c + entropy.c + flash.c + logging.c + misc.c + radio.c + system.c + uart.c +) + +set_property(TARGET openthread-samr21 PROPERTY C_STANDARD 99) + +if(OT_CFLAGS MATCHES "-pedantic-errors") + string(REPLACE "-pedantic-errors" "" OT_CFLAGS "${OT_CFLAGS}") +endif() + +target_link_libraries(openthread-samr21 + PUBLIC + samr21-driver + PRIVATE + mbedtls +) + +target_link_options(openthread-samr21 + PUBLIC + -Wl,-Map=$.map +) + +target_compile_definitions(openthread-samr21 + PUBLIC + ${OT_PLATFORM_DEFINES} + PRIVATE + ${OT_PRIVATE_DEFINES} +) + +target_compile_options(openthread-samr21 + PRIVATE + ${OT_CFLAGS} +) + +target_include_directories(openthread-samr21 + PRIVATE + ${OT_PUBLIC_INCLUDES} + ${OT_PRIVATE_INCLUDES} + ${PROJECT_SOURCE_DIR}/src/core + ${PROJECT_SOURCE_DIR}/examples/platforms +) diff --git a/examples/platforms/samr21/arm-none-eabi.cmake b/examples/platforms/samr21/arm-none-eabi.cmake new file mode 100644 index 000000000..bf25f83f4 --- /dev/null +++ b/examples/platforms/samr21/arm-none-eabi.cmake @@ -0,0 +1,52 @@ +# +# Copyright (c) 2020, 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(CMAKE_SYSTEM_NAME Generic) +set(CMAKE_SYSTEM_PROCESSOR ARM) + +set(CMAKE_C_COMPILER arm-none-eabi-gcc) +set(CMAKE_CXX_COMPILER arm-none-eabi-g++) +set(CMAKE_ASM_COMPILER arm-none-eabi-as) +set(CMAKE_RANLIB arm-none-eabi-ranlib) + +set(COMMON_C_FLAGS "-mcpu=cortex-m0plus -mfloat-abi=soft -mthumb -fdata-sections -ffunction-sections") + +set(CMAKE_C_FLAGS "${COMMON_C_FLAGS} -std=gnu99") +set(CMAKE_CXX_FLAGS "${COMMON_C_FLAGS} -fno-exceptions -fno-rtti") +set(CMAKE_ASM_FLAGS "${COMMON_C_FLAGS}") +set(CMAKE_EXE_LINKER_FLAGS "${COMMON_C_FLAGS} -specs=nano.specs -specs=nosys.specs -Wl,--gc-sections -Wl,--entry=Reset_Handler") + +set(CMAKE_C_FLAGS_DEBUG "-Og -g") +set(CMAKE_CXX_FLAGS_DEBUG "-Og -g") +set(CMAKE_ASM_FLAGS_DEBUG "-g") +set(CMAKE_EXE_LINKER_FLAGS_DEBUG "") + +set(CMAKE_C_FLAGS_RELEASE "-Os") +set(CMAKE_CXX_FLAGS_RELEASE "-Os") +set(CMAKE_ASM_FLAGS_RELEASE "") +set(CMAKE_EXE_LINKER_FLAGS_RELEASE "") diff --git a/script/check-arm-build-cmake b/script/check-arm-build-cmake index 252fe6dcf..6cc919f99 100755 --- a/script/check-arm-build-cmake +++ b/script/check-arm-build-cmake @@ -80,6 +80,24 @@ build_cc2538() cd .. } +build_cc2650() +{ + local options=("${OT_COMMON_OPTIONS[@]}") + + options+=( + "-DOT_PLATFORM=cc2650" + "-DCMAKE_TOOLCHAIN_FILE=examples/platforms/cc2650/arm-none-eabi.cmake" + "-DCMAKE_BUILD_TYPE=Release" + ) + + reset_source + mkdir build + cd build + cmake -GNinja "${options[@]}" .. + ninja ot-cli-mtd ot-ncp-mtd + cd .. +} + build_cc2652() { local options=("${OT_COMMON_OPTIONS[@]}") @@ -128,12 +146,66 @@ build_kw41z() cd .. } +build_qpg6095() +{ + local options=("${OT_COMMON_OPTIONS[@]}") + + options+=( + "-DOT_PLATFORM=qpg6095" + "-DCMAKE_TOOLCHAIN_FILE=examples/platforms/qpg6095/arm-none-eabi.cmake" + "-DOT_COMMISSIONER=on" + "-DOT_DHCP6_CLIENT=on" + "-DOT_DHCP6_SERVER=on" + "-DOT_DNS_CLIENT=on" + "-DOT_JOINER=on" + "-DOT_SLAAC=on" + "-DCMAKE_BUILD_TYPE=Release" + ) + + reset_source + mkdir build + cd build + cmake -GNinja "${options[@]}" .. + ninja + cd .. +} + +build_samr21() +{ + local options=("${OT_COMMON_OPTIONS[@]}") + + options+=( + "-DOT_PLATFORM=samr21" + "-DCMAKE_TOOLCHAIN_FILE=examples/platforms/samr21/arm-none-eabi.cmake" + "-DOT_COMMISSIONER=on" + "-DOT_DHCP6_CLIENT=on" + "-DOT_DHCP6_SERVER=on" + "-DOT_DNS_CLIENT=on" + "-DOT_JOINER=on" + "-DOT_SLAAC=on" + "-DCMAKE_BUILD_TYPE=Release" + ) + + reset_source + wget http://ww1.microchip.com/downloads/en/DeviceDoc/asf-standalone-archive-3.45.0.85.zip || die + unzip -qq asf-standalone-archive-3.45.0.85.zip || die + mv xdk-asf-3.45.0 third_party/microchip/asf || die + mkdir build + cd build + cmake -GNinja "${options[@]}" .. + ninja + cd .. +} + main() { build_cc1352 build_cc2538 + build_cc2650 build_cc2652 build_kw41z + build_qpg6095 + build_samr21 } main "$@" diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt index b37f88b4f..aea072458 100644 --- a/third_party/CMakeLists.txt +++ b/third_party/CMakeLists.txt @@ -31,4 +31,10 @@ if(OT_BUILTIN_MBEDTLS) endif() if(OT_PLATFORM STREQUAL "kw41z") add_subdirectory(nxp) +elseif(OT_PLATFORM STREQUAL "cc2650") + add_subdirectory(ti) +elseif(OT_PLATFORM STREQUAL "qpg6095") + add_subdirectory(Qorvo) +elseif(OT_PLATFORM STREQUAL "samr21") + add_subdirectory(microchip) endif() diff --git a/third_party/Qorvo/CMakeLists.txt b/third_party/Qorvo/CMakeLists.txt new file mode 100644 index 000000000..32d7cf6be --- /dev/null +++ b/third_party/Qorvo/CMakeLists.txt @@ -0,0 +1,34 @@ +# +# Copyright (c) 2020, 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. +# + +add_library(qpg6095-driver INTERFACE) + +target_link_libraries(qpg6095-driver + INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/qpg6095/libQorvoQPG6095.a +) diff --git a/third_party/microchip/CMakeLists.txt b/third_party/microchip/CMakeLists.txt new file mode 100644 index 000000000..9b3819c09 --- /dev/null +++ b/third_party/microchip/CMakeLists.txt @@ -0,0 +1,127 @@ +# +# Copyright (c) 2020, 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. +# + +add_library(samr21-driver + asf/common/utils/interrupt/interrupt_sam_nvic.c + asf/common2/services/delay/sam0/cycle_counter.c + asf/sam0/drivers/extint/extint_callback.c + asf/sam0/drivers/extint/extint_sam_d_r_h/extint.c + asf/sam0/drivers/nvm/nvm.c + asf/sam0/drivers/port/port.c + asf/sam0/drivers/system/clock/clock_samd21_r21_da_ha1/clock.c + asf/sam0/drivers/system/clock/clock_samd21_r21_da_ha1/gclk.c + asf/sam0/drivers/system/interrupt/system_interrupt.c + asf/sam0/drivers/system/pinmux/pinmux.c + asf/sam0/drivers/sercom/sercom.c + asf/sam0/drivers/sercom/sercom_interrupt.c + asf/sam0/drivers/sercom/i2c/i2c_sam0/i2c_master.c + asf/sam0/drivers/sercom/spi/spi.c + asf/sam0/drivers/sercom/usart/usart.c + asf/sam0/drivers/sercom/usart/usart_interrupt.c + asf/sam0/utils/cmsis/samr21/source/gcc/startup_samr21.c + asf/sam0/utils/cmsis/samr21/source/system_samr21.c + asf/sam0/utils/syscalls/gcc/syscalls.c + asf/thirdparty/wireless/avr2130_lwmesh/source/phy/at86rf233/src/phy.c + asf/thirdparty/wireless/services/sal/at86rf2xx/src/sal.c + asf/thirdparty/wireless/services/trx_access/trx_access.c +) + +if(OT_CFLAGS MATCHES "-pedantic-errors") + string(REPLACE "-pedantic-errors" "" OT_CFLAGS "${OT_CFLAGS}") +endif() + +target_link_options(samr21-driver + PUBLIC + -T${PROJECT_SOURCE_DIR}/third_party/microchip/include/samr21x18a.ld +) + +target_compile_definitions(samr21-driver + PUBLIC + ${OT_PLATFORM_DEFINES} + -DBOARD=SAMR21_XPLAINED_PRO + -D__SAMR21G18A__ + -DARM_MATH_CM0PLUS=true + -DPHY_AT86RF233 + -DSAL_TYPE=AT86RF2xx + -DUSART_CALLBACK_MODE=true + -DEXTINT_CALLBACK_MODE=true + -DSPI_CALLBACK_MODE=false + -DCYCLE_MODE + PRIVATE + ${OT_PRIVATE_DEFINES} +) + +target_compile_options(samr21-driver + PUBLIC + -Werror + -Wno-unused-parameter + -Wno-implicit-function-declaration + -Wno-expansion-to-defined + -fno-strict-aliasing + PRIVATE + ${OT_CFLAGS} +) + +target_include_directories(samr21-driver + PUBLIC + include + asf/common/boards + asf/common/utils + asf/common2/services/delay + asf/common2/services/delay/sam0 + asf/sam0/boards + asf/sam0/boards/samr21_xplained_pro + asf/sam0/drivers/extint + asf/sam0/drivers/extint/extint_sam_d_r_h + asf/sam0/drivers/nvm + asf/sam0/drivers/port + asf/sam0/drivers/system + asf/sam0/drivers/system/clock + asf/sam0/drivers/system/clock/clock_samd21_r21_da_ha1 + asf/sam0/drivers/system/interrupt + asf/sam0/drivers/system/interrupt/system_interrupt_samr21 + asf/sam0/drivers/system/pinmux + asf/sam0/drivers/system/power + asf/sam0/drivers/system/power/power_sam_d_r_h + asf/sam0/drivers/system/reset + asf/sam0/drivers/system/reset/reset_sam_d_r_h + asf/sam0/drivers/sercom + asf/sam0/drivers/sercom/i2c + asf/sam0/drivers/sercom/i2c/i2c_sam0 + asf/sam0/drivers/sercom/spi + asf/sam0/drivers/sercom/usart + asf/sam0/utils/cmsis/samr21/include + asf/sam0/utils/cmsis/samr21/source + asf/sam0/utils/header_files + asf/sam0/utils/preprocessor + asf/thirdparty/CMSIS/Include + asf/thirdparty/wireless/avr2130_lwmesh/source/phy/at86rf233/inc + asf/thirdparty/wireless/services/sal/inc + asf/thirdparty/wireless/services/trx_access + asf/thirdparty/wireless/services/trx_access/module_config +) diff --git a/third_party/ti/CMakeLists.txt b/third_party/ti/CMakeLists.txt new file mode 100644 index 000000000..6826b578b --- /dev/null +++ b/third_party/ti/CMakeLists.txt @@ -0,0 +1,41 @@ +# +# Copyright (c) 2020, 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. +# + +if(OT_PLATFORM STREQUAL "cc2650") + add_library(cc26x0-driver INTERFACE) + + target_link_libraries(cc26x0-driver + INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/devices/cc26x0/driverlib/bin/gcc/driverlib.a + ) + + target_link_options(cc26x0-driver + INTERFACE + -T${CMAKE_CURRENT_SOURCE_DIR}/devices/cc26x0/linker_files/cc26x0f128.lds + ) +endif()