if(CONFIG_FASTDDS)
include(ExternalProject)
set(LIB_FASTDDS_DIR ${CMAKE_CURRENT_LIST_DIR}/Fast-DDS)
set(BUILD_MEMORY_SRC_DIR ${CMAKE_CURRENT_LIST_DIR}/memory)
set(BUILD_FASTDDS_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/external/fastdds)
set(EXTERNAL_DIR ${CMAKE_CURRENT_LIST_DIR}/..)
set(NUTTX 1)
set(HAVE_CXX20 1)
set(HAVE_CXX17 0)
set(FASTDDS_IS_BIG_ENDIAN_TARGET 0)
set(IS_THIRDPARTY_BOOST_OK 1)
set(SQLITE3_SUPPORT 0)
set(COMPILE_TOOLS OFF)
if(CONFIG_FASTDDS_ENABLE_OLD_LOG_MACROS)
set(ENABLE_OLD_LOG_MACROS_ 1)
endif()
if(CONFIG_FASTDDS_LOG_NO_INFO)
set(LOG_NO_INFO 1)
endif()
if(CONFIG_FASTDDS_LOG_NO_WARNING)
set(LOG_NO_WARNING 1)
endif()
if(CONFIG_FASTDDS_LOG_NO_ERROR)
set(LOG_NO_ERROR 1)
endif()
set(BUILD_SHARED_LIBS OFF)
set(SECURITY 0)
set(TINYXML2_SOURCE_DIR "${EXTERNAL_DIR}/tinyxml2/tinyxml2")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${LIB_FASTDDS_DIR}/cmake/modules)
set(FASTDDS_FLAGS
-pedantic
-Wextra
-Wno-unknown-pragmas
-Wno-error=deprecated-declarations
-fexceptions
-U__VXWORKS__
-Wno-shadow
-Wno-undef
-Wno-unused-parameter
-DBOOST_INTERPROCESS_SHARED_DIR_PATH="${CONFIG_FS_SHMFS_VFS_PATH}")
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
list(APPEND FASTDDS_FLAGS -Wno-psabi)
endif()
include_directories(${CMAKE_CURRENT_LIST_DIR}/Fast-CDR/include
${CMAKE_CURRENT_BINARY_DIR}/Fast-CDR/include)
include_directories(${CMAKE_CURRENT_LIST_DIR}/Fast-DDS/include
${CMAKE_CURRENT_BINARY_DIR}/Fast-DDS/include)
include_directories(${CMAKE_CURRENT_LIST_DIR}/memory/include)
include_directories(${LIB_FASTDDS_DIR}/thirdparty/nlohmann-json)
include_directories(${LIB_FASTDDS_DIR}/thirdparty/filewatch)
include_directories(${LIB_FASTDDS_DIR}/thirdparty/boost/include)
include_directories(${LIB_FASTDDS_DIR}/thirdparty/optionparser)
include_directories(${BUILD_FASTDDS_INSTALL_PREFIX}/include)
include_directories(${BUILD_FASTDDS_INSTALL_PREFIX}/include/foonathan_memory)
include_directories(${TINYXML2_SOURCE_DIR}/)
link_directories(${BUILD_FASTDDS_INSTALL_PREFIX}/lib)
set(PROJECT_SOURCE_DIR ${LIB_FASTDDS_DIR})
set(USE_THIRDPARTY_SHARED_MUTEX ON)
set(BUILD_SHARED_LIBS OFF)
set(BIN_INSTALL_DIR
bin/
CACHE PATH "Installation directory for binaries")
set(INCLUDE_INSTALL_DIR
"include/"
CACHE PATH "Installation directory for C++ headers")
set(LIB_INSTALL_DIR
lib/
CACHE PATH "Installation directory for libraries")
set(DATA_INSTALL_DIR
share/
CACHE PATH "Installation directory for data")
set(DOC_DIR "${DATA_INSTALL_DIR}/doc")
set(DOC_INSTALL_DIR
${DOC_DIR}
CACHE PATH "Installation directory for documentation")
set(LICENSE_INSTALL_DIR
${DATA_INSTALL_DIR}/${PROJECT_NAME}
CACHE PATH "Installation directory for licenses")
set(Asio_INCLUDE_DIR ${EXTERNAL_DIR}/asio/asio/asio/include)
set(CMAKE_DL_LIBS
""
CACHE STRING "Disable dl.so")
set(FOONATHAN_MEMORY_BUILD_TOOLS OFF)
set(CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} -I${NUTTX_DIR}/libs/libxx/libcxx/libcxx/include -I${NUTTX_DIR}/include -I${CMAKE_BINARY_DIR}/include"
)
add_subdirectory(${BUILD_MEMORY_SRC_DIR})
nuttx_add_external_library(foonathan_memory)
target_compile_options(foonathan_memory PRIVATE ${FASTDDS_FLAGS})
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/Fast-CDR)
nuttx_add_external_library(fastcdr)
target_compile_options(fastcdr PRIVATE ${FASTDDS_FLAGS})
include(CMakeDependentOption)
set(INTERNAL_DEBUG ON)
set(SHM_TRANSPORT_DEFAULT OFF)
add_subdirectory(${LIB_FASTDDS_DIR})
nuttx_add_external_library(fastdds)
target_compile_options(fastdds PRIVATE ${FASTDDS_FLAGS})
set(DDS_EXAMPLE_SOURCES "")
function(add_example_src_file arg)
set(DDS_EXAMPLE_SOURCES
${arg}/HelloWorld_main.cpp ${arg}/HelloWorldPublisher.cpp
${arg}/HelloWorldSubscriber.cpp ${arg}/HelloWorldPubSubTypes.cxx
${arg}/HelloWorldTypeObjectSupport.cxx
PARENT_SCOPE)
endfunction()
if(CONFIG_FASTDDS_HelloWorldExample)
set(DDS_EXAMPLE_DIR ${LIB_FASTDDS_DIR}/examples/cpp/dds/HelloWorldExample)
add_example_src_file(${DDS_EXAMPLE_DIR})
elseif(CONFIG_FASTDDS_HelloWorldExampleTCP)
set(DDS_EXAMPLE_DIR
${LIB_FASTDDS_DIR}/examples/cpp/dds/HelloWorldExampleTCP)
add_example_src_file(${DDS_EXAMPLE_DIR})
elseif(CONFIG_FASTDDS_HelloWorldExampleSharedMem)
set(DDS_EXAMPLE_DIR
${LIB_FASTDDS_DIR}/examples/cpp/dds/HelloWorldExampleSharedMem)
add_example_src_file(${DDS_EXAMPLE_DIR})
elseif(CONFIG_FASTDDS_ZeroCopyExample)
set(DDS_EXAMPLE_DIR ${LIB_FASTDDS_DIR}/examples/cpp/dds/ZeroCopyExample)
add_example_src_file(${DDS_EXAMPLE_DIR})
elseif(CONFIG_FASTDDS_BasicConfigurationExample)
set(DDS_EXAMPLE_DIR
${LIB_FASTDDS_DIR}/examples/cpp/dds/BasicConfigurationExample)
set(DDS_EXAMPLE_SOURCES
${DDS_EXAMPLE_DIR}/BasicConfiguration_main.cpp
${DDS_EXAMPLE_DIR}/BasicConfigurationPublisher.cpp
${DDS_EXAMPLE_DIR}/BasicConfigurationSubscriber.cpp
${DDS_EXAMPLE_DIR}/HelloWorldPubSubTypes.cxx
${DDS_EXAMPLE_DIR}/HelloWorldTypeObjectSupport.cxx)
elseif(CONFIG_FASTDDS_DiscoveryServerExample)
set(DDS_EXAMPLE_DIR
${LIB_FASTDDS_DIR}/examples/cpp/dds/DiscoveryServerExample)
set(DDS_EXAMPLE_SOURCES
${DDS_EXAMPLE_DIR}/DiscoveryServer_main.cpp
${DDS_EXAMPLE_DIR}/DiscoveryServerPublisher.cpp
${DDS_EXAMPLE_DIR}/DiscoveryServerServer.cpp
${DDS_EXAMPLE_DIR}/DiscoveryServerSubscriber.cpp
${DDS_EXAMPLE_DIR}/types/HelloWorldPubSubTypes.cxx
${DDS_EXAMPLE_DIR}/types/HelloWorldTypeObjectSupport.cxx)
endif()
if(NOT CONFIG_FASTDDS_NoExample)
nuttx_add_application(
NAME
DDSHelloWorldExample
SRCS
${DDS_EXAMPLE_SOURCES}
INCLUDE_DIRECTORIES
${DDS_EXAMPLE_DIR}
COMPILE_FLAGS
${FASTDDS_FLAGS}
DEPENDS
fastcdr
foonathan_memory
fastdds
fastdds::optionparser
STACKSIZE
2097152
PRIORITY
100)
endif()
endif()