2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								function(add_library_module libname)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes")
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								         "${PUBLIC_INCLUDE_DIR}/${libname}" SYMBOLIC)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    if("${ARGN}" STREQUAL "") # Header only library
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-05 13:28:41 +03:30
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        message("Adding INTERFACE library ${libname}")
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        add_library(${libname} INTERFACE)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        target_include_directories(${libname} INTERFACE ${PUBLIC_INCLUDE_DIR})
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-05 13:28:41 +03:30
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-05 10:07:48 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        target_link_libraries(${libname} INTERFACE std)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-10 13:29:03 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    else() # Compiled library
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-05 13:28:41 +03:30
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        set(source_files)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        foreach(source_file ${ARGN})
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-05 13:28:41 +03:30
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								            list(APPEND source_files "${source_directory}/${source_file}")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        endforeach()
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-05 13:28:41 +03:30
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        message("Adding library ${libname} with source files: ${source_files}")
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        add_library(${libname} ${source_files})
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes")
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								             "${PRIVATE_INCLUDE_DIR}/${libname}" SYMBOLIC)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        target_include_directories(
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								            ${libname}
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								            PUBLIC ${PUBLIC_INCLUDE_DIR}
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								            PRIVATE ${PRIVATE_INCLUDE_DIR})
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-10 13:29:03 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-05 10:07:48 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        target_link_libraries(${libname} PUBLIC std)
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    endif()
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-05 10:07:48 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								endfunction()
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-05 13:28:41 +03:30
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								function(add_executable_module exename)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-05 13:28:41 +03:30
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    set(source_files)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    foreach(source_file ${ARGN})
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-05 13:28:41 +03:30
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        list(APPEND source_files "${source_directory}/${source_file}")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    endforeach()
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-05 13:28:41 +03:30
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    message("Adding executable ${exename} with source files: ${source_files}")
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes")
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								         "${PUBLIC_INCLUDE_DIR}/${exename}" SYMBOLIC)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes")
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								         "${PRIVATE_INCLUDE_DIR}${exename}" SYMBOLIC)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-05 13:28:41 +03:30
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    add_executable(${exename} ${source_files})
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-05 10:07:48 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    target_link_libraries(${exename} PRIVATE std)
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    target_include_directories(${exename} PRIVATE ${PUBLIC_INCLUDE_DIR}
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								                                                  ${PRIVATE_INCLUDE_DIR})
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								endfunction()
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-16 10:52:49 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								function(add_test_module target_lib_name)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    if(NOT ${ENABLE_UNIT_TESTS})
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-16 10:52:49 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        return()
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    endif()
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-16 10:36:07 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    set(source_files)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    foreach(source_file ${ARGN})
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-16 10:36:07 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        list(APPEND source_files "${source_directory}/${source_file}")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    endforeach()
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-16 10:36:07 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    message(
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        "Adding test executable ${target_lib_name}_tests with source files: ${source_files}"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    )
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes")
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								         "${PUBLIC_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes")
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								         "${PRIVATE_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-20 04:46:15 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    add_executable(${target_lib_name}_tests ${source_files})
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    target_link_libraries(${target_lib_name}_tests PRIVATE ${target_lib_name}
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								                                                           std test)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    target_include_directories(
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        ${target_lib_name}_tests
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-25 15:07:43 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        PRIVATE ${PUBLIC_INCLUDE_DIR}
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        PRIVATE ${PRIVATE_INCLUDE_DIR})
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								endfunction()
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-11 14:25:09 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								function(add_fuzz_module target_lib_name)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    if(NOT ${ENABLE_FUZZ_TESTS})
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-30 23:02:53 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        return()
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    endif()
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-30 23:02:53 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    set(source_files)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    foreach(source_file ${ARGN})
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-30 23:02:53 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        list(APPEND source_files "${source_directory}/${source_file}")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    endforeach()
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-30 23:02:53 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    message(
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        "Adding fuzz executable ${target_lib_name}_fuzz with source files: ${source_files}"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    )
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-30 23:02:53 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes")
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								         "${PUBLIC_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-30 23:02:53 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes")
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								         "${PRIVATE_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-30 23:02:53 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    add_executable(${target_lib_name}_fuzz ${source_files})
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    target_link_libraries(${target_lib_name}_fuzz PRIVATE ${target_lib_name}
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								                                                          std fuzz_test)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-30 23:02:53 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    target_link_options(${target_lib_name}_fuzz PRIVATE -fsanitize=fuzzer)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    target_compile_options(${target_lib_name}_fuzz PRIVATE -fsanitize=fuzzer)
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    target_include_directories(
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        ${target_lib_name}_fuzz
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-30 23:02:53 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        PRIVATE ${PUBLIC_INCLUDE_DIR}
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        PRIVATE ${PRIVATE_INCLUDE_DIR})
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								endfunction()
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-30 23:02:53 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								function(add_option option help)
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-11 14:25:09 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    option(${option} ${help})
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    if(${option})
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-11 14:25:09 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        message(STATUS "${option}: ON")
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        add_compile_definitions(${option}=1)
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    else()
							 | 
						
					
						
							
								
									
										
										
										
											2025-07-11 14:25:09 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        message(STATUS "${option}: OFF")
							 | 
						
					
						
							
								
									
										
										
										
											2025-10-16 14:12:26 +03:30
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    endif()
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								endfunction()
							 |