1# Set the required version.
2cmake_minimum_required( VERSION 3.13.0 )
3
4# Set the unit-test project.
5project( "FreeRTOS-Plus-TCP test"
6         VERSION 1.0.0
7         LANGUAGES C )
8
9# Allow the project to be organized into folders.
10set_property( GLOBAL PROPERTY USE_FOLDERS ON )
11
12# Use C90.
13set( CMAKE_C_STANDARD 99 )
14set( CMAKE_C_STANDARD_REQUIRED ON )
15
16# Do not allow in-source build.
17if( ${PROJECT_SOURCE_DIR} STREQUAL ${PROJECT_BINARY_DIR} )
18    message( FATAL_ERROR "In-source build is not allowed. Please build in a separate directory, such as ${PROJECT_SOURCE_DIR}/build." )
19endif()
20
21# Set global path variables.
22get_filename_component( __MODULE_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/../.." ABSOLUTE )
23set( MODULE_ROOT_DIR ${__MODULE_ROOT_DIR} CACHE INTERNAL "FreeRTOS-Plus-TCP repository root." )
24
25# Set the unit-test directory.
26set( UNIT_TEST_DIR ${MODULE_ROOT_DIR}/test/unit-test CACHE INTERNAL "Unit-test directory." )
27
28set( KERNEL_DIRECTORY ${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel )
29
30# See if FreRTOS-Kernel is submoduled
31if( NOT EXISTS ${KERNEL_DIRECTORY}/include )
32    # Inform the user of the actions
33    message( STATUS "FreeRTOS-Kernel is required for this build. Submoduling it..." )
34    execute_process( COMMAND git submodule update --init --checkout ${KERNEL_DIRECTORY}
35                     WORKING_DIRECTORY ${MODULE_ROOT_DIR} )
36endif()
37
38# Set the include directories
39string( APPEND GLOBAL_INCLUDES "-I ${MODULE_ROOT_DIR}/source/include ")
40string( APPEND GLOBAL_INCLUDES "-I ${UNIT_TEST_DIR}/ConfigFiles " )
41string( APPEND GLOBAL_INCLUDES "-I ${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel/include " )
42
43# Configure options to always show in CMake GUI.
44option( BUILD_CLONE_SUBMODULES
45        "Set this to ON to automatically clone any required Git submodules. When OFF, submodules must be manually cloned."
46        ON )
47
48# Set output directories.
49set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
50set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
51set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
52
53
54# Set TCP includes.
55set( TCP_INCLUDES "${MODULE_ROOT_DIR}/source/include/FreeRTOS_IP.h"
56                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_BitConfig.h"
57                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_IPv4.h"
58                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_IPv6.h"
59                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_IP_Common.h"
60                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_IP_Common.h"
61                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_ND.h"
62                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_ARP.h"
63                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_ARP.h"
64                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_BitConfig.h"
65                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_ICMP.h"
66                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_IP_Timers.h"
67                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_IP_Utils.h"
68                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_IPv4_Utils.h"
69                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_IPv6_Utils.h"
70                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_Sockets.h"
71                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_IP_Private.h"
72                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_IPv4_Private.h"
73                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_IPv6_Private.h"
74                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_IPv4_Sockets.h"
75                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_IPv6_Sockets.h"
76                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_UDP_IP.h"
77                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_DHCP.h"
78                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_DHCPv6.h"
79                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_DNS.h"
80                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_DNS_Cache.h"
81                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_DNS_Globals.h"
82                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_DNS_Callback.h"
83                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_DNS_Networking.h"
84                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_DNS_Parser.h"
85                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_Routing.h"
86                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_ND.h"
87                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_TCP_IP.h"
88                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_TCP_Transmission.h"
89                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_TCP_Reception.h"
90                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_TCP_Utils.h"
91                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_TCP_State_Handling.h"
92                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_Stream_Buffer.h"
93                  "${MODULE_ROOT_DIR}/source/include/FreeRTOS_TCP_WIN.h"
94                  "${MODULE_ROOT_DIR}/source/include/FreeRTOSIPConfigDefaults.h"
95                  "${MODULE_ROOT_DIR}/source/include/IPTraceMacroDefaults.h"
96                  "${MODULE_ROOT_DIR}/source/include/NetworkBufferManagement.h"
97                  "${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel/include/portable.h"
98                  "${MODULE_ROOT_DIR}/source/include/NetworkInterface.h" )
99
100# Create a directory for the modified files
101file( MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/Annexed_TCP )
102# ===========================================================================
103
104# ===========================================================================
105# Preprocess the TCP include files as they will be mocked later.
106foreach( file ${TCP_INCLUDES} )
107    get_filename_component( MODIFIED_FILE ${file} NAME_WLE )
108
109    string(TOUPPER ${MODIFIED_FILE} Guard)
110
111    if(${MODIFIED_FILE} STREQUAL "NetworkBufferManagement" )
112        set( Guard "NETWORK_BUFFER_MANAGEMENT_H" )
113    elseif(  ${MODIFIED_FILE} STREQUAL "NetworkInterface" )
114        set( Guard "NETWORK_INTERFACE_H" )
115    else()
116        set( Guard ${Guard}_H )
117    endif()
118
119    # Remove IPConfigDefaults from the file
120    execute_process( COMMAND sed "s,#include \"FreeRTOSIPConfigDefaults.h\",,g" ${file}
121                     OUTPUT_FILE ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}_tmp1.h )
122
123    # Add the FreeRTOSIPConfig file to each directory
124    execute_process( COMMAND sed "1 i\#include \"FreeRTOSIPConfig.h\"" ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}_tmp1.h
125                     OUTPUT_FILE ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}_tmp.h )
126
127    if(${MODIFIED_FILE} STREQUAL "FreeRTOS_IP_Private" )
128        execute_process( COMMAND sed "s/extern const BaseType_t xBufferAllocFixedSize/extern BaseType_t xBufferAllocFixedSize/g" ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}_tmp.h
129                         OUTPUT_FILE ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}_tmp2.h )
130        execute_process( COMMAND mv ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}_tmp2.h ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}_tmp.h )
131    endif()
132
133
134
135    # Use this tool to process all conditional declarations.
136    if(${MODIFIED_FILE} STREQUAL "FreeRTOS_Routing" OR ${MODIFIED_FILE} STREQUAL "FreeRTOS_IP_Private" )
137        execute_process( COMMAND unifdefall -U${Guard} -USEND_REPEATED_COUNT
138                            -UpdTRUE_SIGNED
139                            -UpdFALSE_SIGNED
140                            -UpdTRUE_UNSIGNED
141                            -UpdFALSE_UNSIGNED
142                            -UipTRUE_BOOL
143                            -UipFALSE_BOOL
144                            -UFreeRTOS_htonl
145                            -D__COVERITY__
146                            -DTEST
147                            -DipconfigUSE_IPv6
148                            -DipconfigUSE_RA
149                            -I ${MODULE_ROOT_DIR}/tools/CMock/vendor/unity/src
150                            -I ${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel/include
151                            -I ${UNIT_TEST_DIR}/ConfigFiles
152                            -I ${MODULE_ROOT_DIR}/source/include
153                            -I ${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel/portable/ThirdParty/GCC/Posix
154                            ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}_tmp.h
155                        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
156                        OUTPUT_FILE ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}.h
157                        OUTPUT_QUIET
158                        ERROR_QUIET  )
159    else()
160        execute_process( COMMAND unifdefall -U${Guard} -USEND_REPEATED_COUNT
161                            -UpdTRUE_SIGNED
162                            -UpdFALSE_SIGNED
163                            -UpdTRUE_UNSIGNED
164                            -UpdFALSE_UNSIGNED
165                            -UipTRUE_BOOL
166                            -UipFALSE_BOOL
167                            -UFreeRTOS_htonl
168                            -D__COVERITY__
169                            -DTEST
170                            -I ${MODULE_ROOT_DIR}/tools/CMock/vendor/unity/src
171                            -I ${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel/include
172                            -I ${UNIT_TEST_DIR}/ConfigFiles
173                            -I ${MODULE_ROOT_DIR}/source/include
174                            -I ${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel/portable/ThirdParty/GCC/Posix
175                            ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}_tmp.h
176                        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
177                        OUTPUT_FILE ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}.h
178                        OUTPUT_QUIET
179                        ERROR_QUIET  )
180    endif()
181
182    # Remove the temporary files
183    file( REMOVE ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}_tmp.h )
184    file( REMOVE ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}_tmp1.h )
185
186    # Add the guards back to the files
187    execute_process( COMMAND sed -i "1 i\#ifndef ${Guard}" ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}.h )
188    execute_process( COMMAND sed -i -e "$ a\#endif" ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}.h )
189
190    execute_process( COMMAND sed -i -E "s,[ ]*extern ipDECL_CAST_.*,,g" ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}.h )
191
192endforeach()
193# ===========================================================================
194
195# ===================================== Include the cmake configurations =================================================
196message( STATUS ${CMAKE_BINARY_DIR} )
197# Include filepaths for source and include.
198include( ${UNIT_TEST_DIR}/TCPFilePaths.cmake )
199# ===========================================================================
200
201
202# ===========================================================================
203# Remove static qualifier from the souce files so that internal functions
204# can be called directly.
205file( MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/Annexed_TCP_Sources )
206
207foreach( file ${TCP_SOURCES} )
208
209    get_filename_component( MODIFIED_FILE ${file} NAME_WLE )
210
211    if(${MODIFIED_FILE} STREQUAL "FreeRTOS_Sockets" )
212        execute_process( COMMAND sed "/#include \"task.h\"/ a \#include \"Sockets_list_macros.h\" " ${file}
213                         OUTPUT_FILE ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}_tmp2.c  )
214        set( file ${CMAKE_BINARY_DIR}/Annexed_TCP/${MODIFIED_FILE}_tmp2.c )
215    endif()
216
217    # Strip static constraints so unit tests may call internal functions
218    execute_process( COMMAND sed "s/^[ ]*static //"
219                     WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
220                     INPUT_FILE ${file}
221                     OUTPUT_FILE ${CMAKE_BINARY_DIR}/Annexed_TCP_Sources/${MODIFIED_FILE}.c )
222
223    # Generate a header file for internal functions
224    execute_process( COMMAND sed -n "/^[ ]*static.*(/,/^{\$/{s/^static //; s/)\$/&;/; /{/d; p;}"
225                     WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
226                     INPUT_FILE ${file}
227                     OUTPUT_FILE ${CMAKE_BINARY_DIR}/Annexed_TCP_Sources/${MODIFIED_FILE}_internal.h )
228endforeach()
229# ===========================================================================
230
231
232# ========================= Test Configuration ==============================
233# Define a CMock resource path.
234set( CMOCK_DIR ${MODULE_ROOT_DIR}/tools/CMock CACHE INTERNAL "CMock library source directory." )
235
236# Include CMock build configuration.
237include( cmock_build.cmake )
238
239# Check if the CMock source directory exists, and if not present, clone the submodule
240# if BUILD_CLONE_SUBMODULES configuration is enabled.
241if( NOT EXISTS ${CMOCK_DIR}/src )
242    # Attempt to clone CMock.
243    if( ${BUILD_CLONE_SUBMODULES} )
244        clone_cmock()
245    else()
246        message( FATAL_ERROR "The required submodule CMock does not exist. Either clone it manually, or set BUILD_CLONE_SUBMODULES to 'ON' to automatically clone it during build." )
247    endif()
248endif()
249
250# Use CTest utility for managing test runs. This has to be added BEFORE
251# defining test targets with add_test()
252enable_testing()
253
254# Add build targets for CMock and Unit, required for unit testing.
255add_cmock_targets()
256
257# Add function to enable CMock based tests and coverage.
258include( ${MODULE_ROOT_DIR}/test/unit-test/cmock/create_test.cmake )
259
260# Include unit-test build configuration
261
262include( ${UNIT_TEST_DIR}/FreeRTOS_ARP/ut.cmake )
263include( ${UNIT_TEST_DIR}/FreeRTOS_ARP_DataLenLessThanMinPacket/ut.cmake )
264include( ${UNIT_TEST_DIR}/FreeRTOS_BitConfig/ut.cmake )
265include( ${UNIT_TEST_DIR}/FreeRTOS_DHCP/ut.cmake )
266include( ${UNIT_TEST_DIR}/FreeRTOS_DHCPv6/ut.cmake )
267include( ${UNIT_TEST_DIR}/FreeRTOS_TCP_WIN/ut.cmake )
268include( ${UNIT_TEST_DIR}/FreeRTOS_Tiny_TCP/ut.cmake )
269include( ${UNIT_TEST_DIR}/FreeRTOS_DNS/ut.cmake )
270include( ${UNIT_TEST_DIR}/FreeRTOS_DNS_ConfigNoCallback/ut.cmake )
271include( ${UNIT_TEST_DIR}/FreeRTOS_DNS_Cache/ut.cmake )
272include( ${UNIT_TEST_DIR}/FreeRTOS_DNS_Networking/ut.cmake )
273include( ${UNIT_TEST_DIR}/FreeRTOS_DNS_Callback/ut.cmake )
274include( ${UNIT_TEST_DIR}/FreeRTOS_DNS_Parser/ut.cmake )
275include( ${UNIT_TEST_DIR}/FreeRTOS_IP/ut.cmake )
276include( ${UNIT_TEST_DIR}/FreeRTOS_IP_DiffConfig/ut.cmake )
277include( ${UNIT_TEST_DIR}/FreeRTOS_IP_DiffConfig1/ut.cmake )
278include( ${UNIT_TEST_DIR}/FreeRTOS_IP_DiffConfig2/ut.cmake )
279include( ${UNIT_TEST_DIR}/FreeRTOS_IP_DiffConfig3/ut.cmake )
280include( ${UNIT_TEST_DIR}/FreeRTOS_ICMP/ut.cmake )
281include( ${UNIT_TEST_DIR}/FreeRTOS_ICMP_wo_assert/ut.cmake )
282include( ${UNIT_TEST_DIR}/FreeRTOS_IP_Utils/ut.cmake )
283include( ${UNIT_TEST_DIR}/FreeRTOS_IP_Utils_DiffConfig/ut.cmake )
284include( ${UNIT_TEST_DIR}/FreeRTOS_IPv4_Utils/ut.cmake )
285include( ${UNIT_TEST_DIR}/FreeRTOS_IPv6_Utils/ut.cmake )
286include( ${UNIT_TEST_DIR}/FreeRTOS_IPv4/ut.cmake )
287include( ${UNIT_TEST_DIR}/FreeRTOS_IPv4_DiffConfig/ut.cmake )
288include( ${UNIT_TEST_DIR}/FreeRTOS_IPv4_DiffConfig1/ut.cmake )
289include( ${UNIT_TEST_DIR}/FreeRTOS_IPv4_Sockets/ut.cmake )
290include( ${UNIT_TEST_DIR}/FreeRTOS_IP_Timers/ut.cmake )
291include( ${UNIT_TEST_DIR}/FreeRTOS_ND/ut.cmake )
292include( ${UNIT_TEST_DIR}/FreeRTOS_Sockets/ut.cmake )
293include( ${UNIT_TEST_DIR}/FreeRTOS_Sockets_DiffConfig/ut.cmake )
294include( ${UNIT_TEST_DIR}/FreeRTOS_Sockets_DiffConfig1/ut.cmake )
295include( ${UNIT_TEST_DIR}/FreeRTOS_Sockets_DiffConfig2/ut.cmake )
296include( ${UNIT_TEST_DIR}/FreeRTOS_Stream_Buffer/ut.cmake )
297include( ${UNIT_TEST_DIR}/FreeRTOS_RA/ut.cmake )
298include( ${UNIT_TEST_DIR}/FreeRTOS_UDP_IP/ut.cmake )
299include( ${UNIT_TEST_DIR}/FreeRTOS_UDP_IPv4/ut.cmake )
300include( ${UNIT_TEST_DIR}/FreeRTOS_UDP_IPv6/ut.cmake )
301include( ${UNIT_TEST_DIR}/FreeRTOS_TCP_Reception/ut.cmake )
302include( ${UNIT_TEST_DIR}/FreeRTOS_TCP_IP/ut.cmake )
303include( ${UNIT_TEST_DIR}/FreeRTOS_TCP_IP_DiffConfig/ut.cmake )
304include( ${UNIT_TEST_DIR}/FreeRTOS_TCP_State_Handling/ut.cmake )
305include( ${UNIT_TEST_DIR}/FreeRTOS_TCP_State_Handling_IPv4/ut.cmake )
306include( ${UNIT_TEST_DIR}/FreeRTOS_TCP_State_Handling_IPv6/ut.cmake )
307include( ${UNIT_TEST_DIR}/FreeRTOS_TCP_Transmission/ut.cmake )
308include( ${UNIT_TEST_DIR}/FreeRTOS_TCP_Transmission_IPv6/ut.cmake )
309include( ${UNIT_TEST_DIR}/FreeRTOS_TCP_Utils/ut.cmake )
310include( ${UNIT_TEST_DIR}/FreeRTOS_TCP_Utils_IPv6/ut.cmake )
311include( ${UNIT_TEST_DIR}/FreeRTOS_TCP_Utils_IPv6_ConfigLowTCPMSS/ut.cmake )
312include( ${UNIT_TEST_DIR}/FreeRTOS_IPv6/ut.cmake )
313include( ${UNIT_TEST_DIR}/FreeRTOS_IPv6_ConfigDriverCheckChecksum/ut.cmake )
314include( ${UNIT_TEST_DIR}/FreeRTOS_Sockets_IPv6/ut.cmake )
315include( ${UNIT_TEST_DIR}/FreeRTOS_Routing/ut.cmake )
316include( ${UNIT_TEST_DIR}/FreeRTOS_Routing_ConfigV4Only/ut.cmake )
317include( ${UNIT_TEST_DIR}/FreeRTOS_Routing_ConfigCompatibleWithSingle/ut.cmake )
318
319#  ==================================== Coverage Analysis configuration ========================================
320# Add a target for running coverage on tests.
321add_custom_target( coverage
322    COMMAND ${CMAKE_COMMAND} -P ${MODULE_ROOT_DIR}/test/unit-test/cmock/coverage.cmake
323    DEPENDS cmock unity
324    FreeRTOS_ARP_utest
325    FreeRTOS_BitConfig_utest
326    FreeRTOS_DHCP_utest
327    FreeRTOS_DHCPv6_utest
328    FreeRTOS_UDP_IP_utest
329    FreeRTOS_UDP_IPv4_utest
330    FreeRTOS_UDP_IPv6_utest
331    FreeRTOS_IP_utest
332    FreeRTOS_IP_DiffConfig_utest
333    FreeRTOS_IP_DiffConfig1_utest
334    FreeRTOS_IP_DiffConfig2_utest
335    FreeRTOS_IP_DiffConfig3_utest
336    FreeRTOS_ICMP_utest
337    FreeRTOS_IP_Utils_utest
338    FreeRTOS_IP_Utils_DiffConfig_utest
339    FreeRTOS_IPv4_Utils_utest
340    FreeRTOS_IPv6_Utils_utest
341    FreeRTOS_IP_Timers_utest
342    FreeRTOS_Stream_Buffer_utest
343    FreeRTOS_DNS_utest
344    FreeRTOS_DNS_ConfigNoCallback_utest
345    FreeRTOS_ND_utest
346    FreeRTOS_RA_utest
347    FreeRTOS_TCP_WIN_utest
348    FreeRTOS_Tiny_TCP_utest
349    FreeRTOS_TCP_Reception_utest
350    FreeRTOS_TCP_State_Handling_utest
351    FreeRTOS_TCP_State_Handling_IPv4_utest
352    FreeRTOS_TCP_State_Handling_IPv6_utest
353    FreeRTOS_TCP_Transmission
354    FreeRTOS_TCP_Transmission_IPv6
355    FreeRTOS_TCP_IP
356    FreeRTOS_TCP_Utils
357    FreeRTOS_TCP_Utils_IPv6_utest
358    FreeRTOS_TCP_Utils_IPv6_ConfigLowTCPMSS_utest
359    FreeRTOS_Sockets_GenericAPI_utest
360    FreeRTOS_Sockets_privates_utest
361    FreeRTOS_Sockets_TCP_API_utest
362    FreeRTOS_Sockets_UDP_API_utest
363    FreeRTOS_Sockets_DiffConfig_privates_utest
364    FreeRTOS_Sockets_DiffConfig1_GenericAPI_utest
365    FreeRTOS_Sockets_DiffConfig1_privates_utest
366    FreeRTOS_Sockets_DiffConfig2_GenericAPI_utest
367    FreeRTOS_Sockets_DiffConfig2_privates_utest
368    FreeRTOS_Sockets_DiffConfig2_TCP_API_utest
369    FreeRTOS_Sockets_DiffConfig2_UDP_API_utest
370    FreeRTOS_Sockets_IPv6_utest
371    FreeRTOS_IPv6_utest
372    FreeRTOS_IPv6_ConfigDriverCheckChecksum_utest
373    FreeRTOS_IPv4_utest
374    FreeRTOS_IPv4_DiffConfig_utest
375    FreeRTOS_IPv4_DiffConfig1_utest
376    FreeRTOS_IPv4_Sockets_utest
377    FreeRTOS_Routing_utest
378    FreeRTOS_Routing_ConfigV4Only_utest
379    FreeRTOS_Routing_ConfigCompatibleWithSingle_utest
380    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
381)
382
383