68577f76f0
Signed-off-by: meijian <meijian@xiaomi.com>
174 lines
6.3 KiB
CMake
174 lines
6.3 KiB
CMake
#
|
|
# Copyright (C) 2024 Xiaomi Corporation
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
# use this file except in compliance with the License. You may obtain a copy of
|
|
# the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations under
|
|
# the License.
|
|
#
|
|
|
|
if(CONFIG_NETUTILS_NNG)
|
|
|
|
# ############################################################################
|
|
# Config and Fetch NNG lib
|
|
# ############################################################################
|
|
|
|
set(NNG_DIR ${CMAKE_CURRENT_LIST_DIR}/nng)
|
|
|
|
if(NOT EXISTS ${NNG_DIR})
|
|
set(NNG_URL "https://github.com/nanomsg/nng/archive")
|
|
FetchContent_Declare(
|
|
nng_fetch
|
|
URL ${NNG_URL}/v${CONFIG_NETUTILS_NNG_VERSION}.tar.gz SOURCE_DIR
|
|
${NNG_DIR} BINARY_DIR ${CMAKE_BINARY_DIR}/apps/netutils/nng/nng
|
|
DOWNLOAD_NO_PROGRESS true
|
|
TIMEOUT 30)
|
|
|
|
FetchContent_GetProperties(nng_fetch)
|
|
|
|
if(NOT nng_fetch)
|
|
FetchContent_Populate(nng_fetch)
|
|
endif()
|
|
|
|
execute_process(COMMAND sh -c "patch -p0 < nng_porting_for_nuttx.patch"
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
|
|
endif()
|
|
|
|
set(CFLAGS
|
|
-DNNG_PLATFORM_POSIX
|
|
-DNNG_HAVE_GETRANDOM
|
|
-DNNG_TRANSPORT_INPROC
|
|
-DNNG_TRANSPORT_IPC
|
|
-DNNG_TRANSPORT_TCP
|
|
-DNNG_TRANSPORT_TLS
|
|
-DNNG_TRANSPORT_WS
|
|
-DNNG_TRANSPORT_WSS
|
|
-DNNG_SETSTACKSIZE
|
|
-DNNG_HAVE_PTHREAD_SETNAME_NP
|
|
-DNNG_USE_EVENTFD
|
|
-Wno-unused-value
|
|
-Wno-shadow)
|
|
|
|
if(CONFIG_SMP_NCPUS)
|
|
list(APPEND CFLAGS -DNNG_MAX_TASKQ_THREADS=$(CONFIG_SMP_NCPUS))
|
|
else()
|
|
list(APPEND CFLAGS -DNNG_MAX_TASKQ_THREADS=2)
|
|
endif()
|
|
if(CONFIG_NETUTILS_NNG_HAVE_EPOLL)
|
|
list(APPEND CFLAGS -DNNG_HAVE_EPOLL -DNNG_HAVE_EPOLL_CREATE1)
|
|
endif()
|
|
if(CONFIG_NETUTILS_NNG_USE_MBEDTLS)
|
|
list(APPEND CFLAGS -DNNG_TLS_ENGINE_INIT=nng_tls_engine_init_mbed
|
|
-DNNG_TLS_ENGINE_FINI=nng_tls_engine_fini_mbed -DNNG_SUPP_TLS)
|
|
endif()
|
|
|
|
set(CSRCS
|
|
${NNG_DIR}/src/nng.c
|
|
${NNG_DIR}/src/nng_legacy.c
|
|
${NNG_DIR}/src/core/aio.c
|
|
${NNG_DIR}/src/core/device.c
|
|
${NNG_DIR}/src/core/dialer.c
|
|
${NNG_DIR}/src/core/file.c
|
|
${NNG_DIR}/src/core/idhash.c
|
|
${NNG_DIR}/src/core/init.c
|
|
${NNG_DIR}/src/core/list.c
|
|
${NNG_DIR}/src/core/listener.c
|
|
${NNG_DIR}/src/core/lmq.c
|
|
${NNG_DIR}/src/core/message.c
|
|
${NNG_DIR}/src/core/msgqueue.c
|
|
${NNG_DIR}/src/core/options.c
|
|
${NNG_DIR}/src/core/pollable.c
|
|
${NNG_DIR}/src/core/panic.c
|
|
${NNG_DIR}/src/core/pipe.c
|
|
${NNG_DIR}/src/core/protocol.c
|
|
${NNG_DIR}/src/core/reap.c
|
|
${NNG_DIR}/src/core/socket.c
|
|
${NNG_DIR}/src/core/stats.c
|
|
${NNG_DIR}/src/core/stream.c
|
|
${NNG_DIR}/src/core/strs.c
|
|
${NNG_DIR}/src/core/taskq.c
|
|
${NNG_DIR}/src/core/tcp.c
|
|
${NNG_DIR}/src/core/thread.c
|
|
${NNG_DIR}/src/core/timer.c
|
|
${NNG_DIR}/src/core/url.c
|
|
${NNG_DIR}/src/platform/posix/posix_alloc.c
|
|
${NNG_DIR}/src/platform/posix/posix_atomic.c
|
|
${NNG_DIR}/src/platform/posix/posix_clock.c
|
|
${NNG_DIR}/src/platform/posix/posix_debug.c
|
|
${NNG_DIR}/src/platform/posix/posix_file.c
|
|
${NNG_DIR}/src/platform/posix/posix_ipcconn.c
|
|
${NNG_DIR}/src/platform/posix/posix_ipcdial.c
|
|
${NNG_DIR}/src/platform/posix/posix_ipclisten.c
|
|
${NNG_DIR}/src/platform/posix/posix_pipe.c
|
|
${NNG_DIR}/src/platform/posix/posix_resolv_gai.c
|
|
${NNG_DIR}/src/platform/posix/posix_sockaddr.c
|
|
${NNG_DIR}/src/platform/posix/posix_tcpconn.c
|
|
${NNG_DIR}/src/platform/posix/posix_tcpdial.c
|
|
${NNG_DIR}/src/platform/posix/posix_tcplisten.c
|
|
${NNG_DIR}/src/platform/posix/posix_thread.c
|
|
${NNG_DIR}/src/platform/posix/posix_udp.c
|
|
${NNG_DIR}/src/platform/posix/posix_rand_getrandom.c
|
|
${NNG_DIR}/src/sp/transport.c
|
|
${NNG_DIR}/src/sp/protocol/bus0/bus.c
|
|
${NNG_DIR}/src/sp/protocol/pair0/pair.c
|
|
${NNG_DIR}/src/sp/protocol/pair1/pair.c
|
|
${NNG_DIR}/src/sp/protocol/pair1/pair1_poly.c
|
|
${NNG_DIR}/src/sp/protocol/pipeline0/pull.c
|
|
${NNG_DIR}/src/sp/protocol/pipeline0/push.c
|
|
${NNG_DIR}/src/sp/protocol/pubsub0/pub.c
|
|
${NNG_DIR}/src/sp/protocol/pubsub0/sub.c
|
|
${NNG_DIR}/src/sp/protocol/pubsub0/xsub.c
|
|
${NNG_DIR}/src/sp/protocol/reqrep0/rep.c
|
|
${NNG_DIR}/src/sp/protocol/reqrep0/req.c
|
|
${NNG_DIR}/src/sp/protocol/reqrep0/xrep.c
|
|
${NNG_DIR}/src/sp/protocol/reqrep0/xreq.c
|
|
${NNG_DIR}/src/sp/protocol/survey0/respond.c
|
|
${NNG_DIR}/src/sp/protocol/survey0/survey.c
|
|
${NNG_DIR}/src/sp/protocol/survey0/xrespond.c
|
|
${NNG_DIR}/src/sp/protocol/survey0/xsurvey.c
|
|
${NNG_DIR}/src/sp/transport/inproc/inproc.c
|
|
${NNG_DIR}/src/sp/transport/ipc/ipc.c
|
|
${NNG_DIR}/src/sp/transport/tcp/tcp.c
|
|
${NNG_DIR}/src/sp/transport/tls/tls.c
|
|
${NNG_DIR}/src/sp/transport/ws/websocket.c
|
|
${NNG_DIR}/src/supplemental/base64/base64.c
|
|
${NNG_DIR}/src/supplemental/http/http_chunk.c
|
|
${NNG_DIR}/src/supplemental/http/http_client.c
|
|
${NNG_DIR}/src/supplemental/http/http_conn.c
|
|
${NNG_DIR}/src/supplemental/http/http_msg.c
|
|
${NNG_DIR}/src/supplemental/http/http_public.c
|
|
${NNG_DIR}/src/supplemental/http/http_schemes.c
|
|
${NNG_DIR}/src/supplemental/http/http_server.c
|
|
${NNG_DIR}/src/supplemental/sha1/sha1.c
|
|
${NNG_DIR}/src/supplemental/tls/tls_common.c
|
|
${NNG_DIR}/src/supplemental/util/platform.c
|
|
${NNG_DIR}/src/supplemental/websocket/websocket.c)
|
|
|
|
if(CONFIG_NETUTILS_NNG_HAVE_EPOLL)
|
|
list(APPEND CSRCS ${NNG_DIR}/src/platform/posix/posix_pollq_epoll.c)
|
|
else()
|
|
list(APPEND CSRCS ${NNG_DIR}/src/platform/posix/posix_pollq_poll.c)
|
|
endif()
|
|
if(CONFIG_NETUTILS_NNG_USE_MBEDTLS)
|
|
list(APPEND CSRCS ${NNG_DIR}/src/supplemental/tls/mbedtls/tls.c)
|
|
endif()
|
|
|
|
set_property(
|
|
TARGET nuttx
|
|
APPEND
|
|
PROPERTY NUTTX_INCLUDE_DIRECTORIES ${NNG_DIR}/include)
|
|
set(INCDIR ${NNG_DIR}/src)
|
|
|
|
nuttx_add_library(nng STATIC)
|
|
target_sources(nng PRIVATE ${CSRCS})
|
|
target_compile_options(nng PRIVATE ${CFLAGS})
|
|
target_include_directories(nng PRIVATE ${INCDIR})
|
|
endif()
|