@@ -24,6 +24,7 @@ set(CMAKE_C_STANDARD 11)
2424
2525set (CMAKE_EXPORT_COMPILE_COMMANDS ON )
2626
27+
2728option (LIBUV_BUILD_SHARED "Build shared lib" ON )
2829
2930cmake_dependent_option (LIBUV_BUILD_TESTS
@@ -700,6 +701,8 @@ if(LIBUV_BUILD_TESTS)
700701 test/test-udp-send-immediate.c
701702 test/test-udp-sendmmsg-error.c
702703 test/test-udp-send-unreachable.c
704+ test/test-udp-recv-cb-close-pollerr.c
705+ test/test-udp-recvmsg-unreachable-error.c
703706 test/test-udp-try-send.c
704707 test/test-udp-recv-in-a-row.c
705708 test/test-udp-reuseport.c
@@ -747,6 +750,14 @@ if(LIBUV_BUILD_TESTS)
747750 "$<TARGET_FILE :uv_run_tests_a >"
748751 "$<TARGET_FILE_DIR :uv_run_tests_a >/uv_run_tests_a_no_ext" )
749752 endif ()
753+
754+ if (QNX)
755+ install (TARGETS uv_run_tests uv_run_tests_a uv_run_benchmarks_a
756+ DESTINATION ${CMAKE_INSTALL_BINDIR} /libuv_tests)
757+
758+ install (DIRECTORY test/fixtures
759+ DESTINATION ${CMAKE_INSTALL_BINDIR} /libuv_tests)
760+ endif ()
750761endif ()
751762
752763# Now for some gibbering horrors from beyond the stars...
@@ -774,6 +785,11 @@ install(TARGETS uv_a EXPORT libuvConfig
774785install (EXPORT libuvConfig
775786 DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/libuv
776787 NAMESPACE libuv::)
788+ write_basic_package_version_file (libuvConfigVersion.cmake
789+ VERSION ${PACKAGE_VERSION}
790+ COMPATIBILITY SameMajorVersion )
791+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /libuvConfigVersion.cmake
792+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/libuv)
777793
778794if (LIBUV_BUILD_SHARED)
779795 # The version in the filename is mirroring the behaviour of autotools.
@@ -814,3 +830,77 @@ message(STATUS "summary of build options:
814830 C compiler: ${CMAKE_C_COMPILER} (${CMAKE_C_COMPILER_ID} )
815831 CFLAGS: ${CMAKE_C_FLAGS_${_build_type} } ${CMAKE_C_FLAGS}
816832" )
833+
834+ # clang-tidy support
835+ option (ENABLE_CLANG_TIDY "Enable clang-tidy checks" ON )
836+ if (ENABLE_CLANG_TIDY)
837+ find_program (CLANG_TIDY_EXE NAMES "clang-tidy" )
838+ if (CLANG_TIDY_EXE)
839+ set (CMAKE_C_CLANG_TIDY "${CLANG_TIDY_EXE} " )
840+ message (STATUS "clang-tidy found: ${CLANG_TIDY_EXE} " )
841+ else ()
842+ set (CMAKE_C_CLANG_TIDY "clang-tidy" )
843+ message (STATUS "clang-tidy not found: install clang-tidy or set -DCLANG_TIDY_EXE to run tidy analysis on this platform" )
844+ endif ()
845+
846+ # Collect source files from existing targets (deduplicated)
847+ set (ALL_SOURCE_FILES)
848+ set (SRC_TARGETS)
849+ set (TEST_TARGETS)
850+ set (TIDY_TARGETS)
851+
852+ # Add main library sources
853+ list (APPEND ALL_SOURCE_FILES ${uv_sources} )
854+
855+ # Add test sources if tests are enabled
856+ if (LIBUV_BUILD_TESTS)
857+ list (APPEND ALL_SOURCE_FILES ${uv_test_sources} )
858+ endif ()
859+
860+ # Remove duplicates and non-existent files
861+ list (REMOVE_DUPLICATES ALL_SOURCE_FILES)
862+
863+ foreach (SOURCE_FILE ${ALL_SOURCE_FILES} )
864+ # Create a clean target name
865+ string (REPLACE "/" "-" TARGET_NAME ${SOURCE_FILE} )
866+ string (REGEX REPLACE "\\ .[^.]*$" "" TARGET_NAME ${TARGET_NAME} )
867+ set (FULL_TARGET_NAME "tidy-${TARGET_NAME} " )
868+
869+ # Create individual target for this source file
870+ add_custom_target (${FULL_TARGET_NAME}
871+ COMMAND ${CMAKE_C_CLANG_TIDY} -p "${CMAKE_BINARY_DIR} " "${CMAKE_CURRENT_SOURCE_DIR} /${SOURCE_FILE} "
872+ COMMENT "Running clang-tidy on ${SOURCE_FILE} "
873+ VERBATIM )
874+
875+ # Add to appropriate folder list
876+ if (SOURCE_FILE MATCHES "^src/" )
877+ list (APPEND SRC_TARGETS ${FULL_TARGET_NAME} )
878+ elseif (SOURCE_FILE MATCHES "^test/" )
879+ list (APPEND TEST_TARGETS ${FULL_TARGET_NAME} )
880+ endif ()
881+
882+ # Add to list of all tidy targets
883+ list (APPEND TIDY_TARGETS ${FULL_TARGET_NAME} )
884+ endforeach ()
885+
886+ # Create folder-based targets
887+ if (SRC_TARGETS)
888+ add_custom_target (tidy-src
889+ COMMENT "Running clang-tidy on src files"
890+ VERBATIM )
891+ add_dependencies (tidy-src ${SRC_TARGETS} )
892+ endif ()
893+
894+ if (TEST_TARGETS)
895+ add_custom_target (tidy-test
896+ COMMENT "Running clang-tidy on test files"
897+ VERBATIM )
898+ add_dependencies (tidy-test ${TEST_TARGETS} )
899+ endif ()
900+
901+ # Create main tidy target that depends on all individual targets
902+ add_custom_target (tidy
903+ COMMENT "Running clang-tidy on all source files"
904+ VERBATIM )
905+ add_dependencies (tidy ${TIDY_TARGETS} )
906+ endif ()
0 commit comments