Zephyr: Support C++ builds

Some of the Zephyr include files need to be C++, not C based. The 'extern "C"'
wrapper in include/coap3/coap.h means that all #include are treated as being C.

Remove 'extern "C"' wrapper from include/coap3/coap.h and add wrapper to
include files after #include and before any function / structure definitions.

Add in a C++ build test for CI.
This commit is contained in:
Jon Shallow authored and Jon Shallow committed 2025-08-21 12:17:41 +01:00
1 parent 7dff177f29
commit ea01661faf
68 files changed
+582 -29

No files matched your search

@@ -0,0 +1,9 @@
# SPDX-License-Identifier: Apache-2.0
cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(coap_client)
target_sources(app PRIVATE src/test.cpp)
include(${ZEPHYR_BASE}/samples/net/common/common.cmake)
+8
View File
@@ -0,0 +1,8 @@
# Private config options for coap-client sample app
# Copyright (c) 2020 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
mainmenu "Test cpp build application"
source "Kconfig.zephyr"
+4
View File
@@ -0,0 +1,4 @@
CONFIG_LOG=y
CONFIG_LIBCOAP=y
+21
View File
@@ -0,0 +1,21 @@
#include <zephyr/logging/log.h>
LOG_MODULE_REGISTER(coap_cpp_test, LOG_LEVEL_DBG);
#include <zephyr/kernel.h>
#include <errno.h>
#include "coap3/coap.h"
#include <stdio.h>
coap_str_const_t *xxx_libcoap_get_version() {
coap_str_const_t *ver;
ver = coap_make_str_const(LIBCOAP_PACKAGE_VERSION);
printf("Version: %s\n", ver->s);
return ver;
}
int main()
{
xxx_libcoap_get_version();
exit(0);
}