CMakeLists.txt 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. cmake_minimum_required(VERSION 3.1)
  2. include(${CMAKE_CURRENT_LIST_DIR}/third_party/coreHTTP/httpFilePaths.cmake)
  3. include(${CMAKE_CURRENT_LIST_DIR}/third_party/coreMQTT/mqttFilePaths.cmake)
  4. if (DEFINED ENV{IDF_PATH})
  5. file(GLOB ESP32_CODES "./src/*.c")
  6. idf_component_register(
  7. SRCS ${ESP32_CODES} ${HTTP_SOURCES} ${MQTT_SOURCES} ${MQTT_SERIALIZER_SOURCES}
  8. INCLUDE_DIRS "./include" ${HTTP_INCLUDE_PUBLIC_DIRS} ${MQTT_INCLUDE_PUBLIC_DIRS}
  9. PRIV_INCLUDE_DIRS "./src"
  10. REQUIRES mbedtls srtp json esp_netif
  11. )
  12. add_definitions("-DCONFIG_USE_LWIP=1" "-DCONFIG_USE_USRSCTP=0" "-DCONFIG_AUDIO_BUFFER_SIZE=8096" "-DCONFIG_DATA_BUFFER_SIZE=102400" "-D__BYTE_ORDER=__LITTLE_ENDIAN" "-DHTTP_DO_NOT_USE_CUSTOM_CONFIG" "-DMQTT_DO_NOT_USE_CUSTOM_CONFIG")
  13. return()
  14. endif()
  15. project(peer)
  16. option(ENABLE_TESTS "Enable tests" OFF)
  17. option(BUILD_SHARED_LIBS "Build shared libraries" ON)
  18. option(ADDRESS_SANITIZER "Build with AddressSanitizer." OFF)
  19. option(MEMORY_SANITIZER "Build with MemorySanitizer." OFF)
  20. option(THREAD_SANITIZER "Build with ThreadSanitizer." OFF)
  21. option(UNDEFINED_BEHAVIOR_SANITIZER "Build with UndefinedBehaviorSanitizer." OFF)
  22. include(ExternalProject)
  23. include_directories(${CMAKE_BINARY_DIR}/dist/include ${CMAKE_BINARY_DIR}/dist/include/cjson)
  24. link_directories(${CMAKE_BINARY_DIR}/dist/lib)
  25. set(DEP_LIBS "srtp2" "usrsctp" "mbedtls" "mbedcrypto" "mbedx509" "cjson")
  26. # Extended debug information (symbols, source code, and macro definitions)
  27. set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g3")
  28. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3")
  29. function(enableSanitizer SANITIZER)
  30. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g -fsanitize=${SANITIZER} -fno-omit-frame-pointer -fno-optimize-sibling-calls" PARENT_SCOPE)
  31. set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=${SANITIZER}" PARENT_SCOPE)
  32. endfunction()
  33. if(ADDRESS_SANITIZER)
  34. enableSanitizer("address")
  35. endif()
  36. if(MEMORY_SANITIZER)
  37. enableSanitizer("memory")
  38. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-memory-track-origins")
  39. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize-memory-track-origins")
  40. endif()
  41. if(THREAD_SANITIZER)
  42. enableSanitizer("thread")
  43. endif()
  44. if(UNDEFINED_BEHAVIOR_SANITIZER)
  45. enableSanitizer("undefined")
  46. endif()
  47. add_definitions("-Wunused-variable -Werror=sequence-point -Werror=pointer-sign -Werror=return-type -Werror=sizeof-pointer-memaccess -Wincompatible-pointer-types -DHTTP_DO_NOT_USE_CUSTOM_CONFIG -DMQTT_DO_NOT_USE_CUSTOM_CONFIG")
  48. add_subdirectory(src)
  49. add_subdirectory(examples)
  50. if(ENABLE_TESTS)
  51. add_subdirectory(tests)
  52. endif()
  53. ExternalProject_Add(cjson
  54. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/cJSON
  55. CMAKE_ARGS
  56. -DCMAKE_C_FLAGS="-fPIC"
  57. -DBUILD_SHARED_LIBS=off
  58. -DENABLE_CJSON_TEST=off
  59. -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/dist
  60. -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
  61. )
  62. ExternalProject_Add(mbedtls
  63. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/mbedtls
  64. CMAKE_ARGS
  65. -DCMAKE_C_FLAGS="-fPIC"
  66. -DENABLE_TESTING=off
  67. -DENABLE_PROGRAMS=off
  68. -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/dist
  69. -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
  70. )
  71. file(READ ${CMAKE_CURRENT_SOURCE_DIR}/third_party/mbedtls/include/mbedtls/mbedtls_config.h INPUT_CONTENT)
  72. string(REPLACE "//#define MBEDTLS_SSL_DTLS_SRTP" "#define MBEDTLS_SSL_DTLS_SRTP" MODIFIED_CONTENT ${INPUT_CONTENT})
  73. file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/third_party/mbedtls/include/mbedtls/mbedtls_config.h ${MODIFIED_CONTENT})
  74. ExternalProject_Add(srtp2
  75. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libsrtp
  76. CMAKE_ARGS
  77. -DCMAKE_C_FLAGS="-fPIC"
  78. -DTEST_APPS=off
  79. -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/dist
  80. -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
  81. )
  82. ExternalProject_Add(usrsctp
  83. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/usrsctp
  84. CMAKE_ARGS
  85. -DCMAKE_C_FLAGS="-fPIC"
  86. -Dsctp_build_programs=off
  87. -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/dist
  88. -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
  89. )