mirror of
https://github.com/kenzok8/small-package.git
synced 2026-02-05 22:36:13 +08:00
update 2025-09-10 20:43:49
This commit is contained in:
@@ -6,6 +6,7 @@ set(CMAKE_C_STANDARD 17)
|
||||
cmake_policy(SET CMP0135 NEW)
|
||||
|
||||
OPTION(UA2F_BUILD_TESTS "Build tests" OFF)
|
||||
OPTION(UA2F_ENABLE_COVERAGE "Enable code coverage" OFF)
|
||||
OPTION(UA2F_ENABLE_UCI "Enable UCI support" ON)
|
||||
OPTION(UA2F_NO_CACHE "Disable cache" OFF)
|
||||
OPTION(UA2F_ENABLE_BACKTRACE "Enable libbacktrace support" ON)
|
||||
@@ -81,6 +82,19 @@ add_compile_definitions(UA2F_VERSION="${UA2F_VERSION_STR}")
|
||||
|
||||
add_compile_options(-fno-omit-frame-pointer -fno-strict-aliasing)
|
||||
|
||||
# Coverage configuration
|
||||
if (UA2F_ENABLE_COVERAGE)
|
||||
if (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
||||
add_compile_options(--coverage -O0 -g)
|
||||
add_link_options(--coverage)
|
||||
message(STATUS "Code coverage is enabled.")
|
||||
else()
|
||||
message(WARNING "Code coverage is only supported with GCC or Clang.")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "Code coverage is disabled.")
|
||||
endif()
|
||||
|
||||
if (DEFINED ENV{UA2F_ENABLE_ASAN})
|
||||
set(UA2F_ENABLE_ASAN $ENV{UA2F_ENABLE_ASAN})
|
||||
message(STATUS "UA2F_ENABLE_ASAN set from environment: ${UA2F_ENABLE_ASAN}")
|
||||
@@ -200,6 +214,72 @@ if (UA2F_BUILD_TESTS)
|
||||
)
|
||||
target_include_directories(ua2f_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
|
||||
|
||||
# Add coverage target
|
||||
if (UA2F_ENABLE_COVERAGE)
|
||||
find_program(LCOV_PATH lcov)
|
||||
find_program(GENHTML_PATH genhtml)
|
||||
|
||||
if(LCOV_PATH AND GENHTML_PATH)
|
||||
add_custom_target(coverage
|
||||
COMMAND ${LCOV_PATH} --directory . --zerocounters
|
||||
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/ua2f_test
|
||||
COMMAND ${LCOV_PATH} --directory . --capture --output-file coverage.info --ignore-errors mismatch
|
||||
COMMAND ${LCOV_PATH} --remove coverage.info '/usr/*' '${CMAKE_CURRENT_BINARY_DIR}/_deps/*' '*/test/*' --output-file coverage_filtered.info --ignore-errors mismatch
|
||||
COMMAND ${GENHTML_PATH} coverage_filtered.info --output-directory coverage_html --ignore-errors mismatch
|
||||
COMMAND echo "Coverage report generated in coverage_html/index.html"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Generating code coverage report"
|
||||
DEPENDS ua2f_test
|
||||
)
|
||||
|
||||
add_custom_target(coverage-integration
|
||||
COMMAND ${LCOV_PATH} --directory . --zerocounters
|
||||
COMMAND echo "Run integration tests manually, then use 'make coverage-collect'"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Preparing for integration test coverage"
|
||||
)
|
||||
|
||||
add_custom_target(coverage-collect
|
||||
COMMAND ${LCOV_PATH} --directory . --capture --output-file coverage_integration.info --ignore-errors mismatch
|
||||
COMMAND ${LCOV_PATH} --remove coverage_integration.info '/usr/*' '*/test/*' --output-file coverage_integration_filtered.info --ignore-errors mismatch,unused
|
||||
COMMAND ${GENHTML_PATH} coverage_integration_filtered.info --output-directory coverage_integration_html --ignore-errors mismatch
|
||||
COMMAND echo "Integration test coverage report generated in coverage_integration_html/index.html"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Collecting integration test coverage data"
|
||||
)
|
||||
|
||||
add_custom_target(coverage-combined
|
||||
COMMAND ${LCOV_PATH} --directory . --zerocounters
|
||||
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/ua2f_test
|
||||
COMMAND ${LCOV_PATH} --directory . --capture --output-file coverage_unit.info --ignore-errors mismatch
|
||||
COMMAND echo "Unit tests coverage collected. Run integration tests now..."
|
||||
COMMAND echo "After integration tests, coverage data will be merged automatically"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Generating combined coverage report (unit + integration)"
|
||||
DEPENDS ua2f_test
|
||||
)
|
||||
|
||||
add_custom_target(coverage-merge
|
||||
COMMAND ${LCOV_PATH} --directory . --capture --output-file coverage_after_integration.info --ignore-errors mismatch
|
||||
COMMAND ${LCOV_PATH} --add-tracefile coverage_unit.info --add-tracefile coverage_after_integration.info --output-file coverage_combined.info --ignore-errors mismatch || ${LCOV_PATH} --directory . --capture --output-file coverage_combined.info --ignore-errors mismatch
|
||||
COMMAND ${LCOV_PATH} --remove coverage_combined.info '/usr/*' '*/test/*' --output-file coverage_combined_filtered.info --ignore-errors mismatch,unused
|
||||
COMMAND ${GENHTML_PATH} coverage_combined_filtered.info --output-directory coverage_combined_html --ignore-errors mismatch
|
||||
COMMAND echo "Combined coverage report generated in coverage_combined_html/index.html"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Merging unit and integration test coverage"
|
||||
)
|
||||
|
||||
add_custom_target(coverage-clean
|
||||
COMMAND ${LCOV_PATH} --directory . --zerocounters
|
||||
COMMAND find . -name "*.gcda" -delete
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Cleaning coverage data"
|
||||
)
|
||||
else()
|
||||
message(WARNING "lcov and genhtml are required for coverage reports")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(GoogleTest)
|
||||
gtest_discover_tests(ua2f_test)
|
||||
else ()
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=xray-core
|
||||
PKG_VERSION:=25.9.10
|
||||
PKG_VERSION:=25.9.11
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/XTLS/Xray-core/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=c26b1e3533540f63acb641cea9af660fae60bd50b6ee4a9904858a073161f3dd
|
||||
PKG_HASH:=9bccd2681183698bf860b1af5407f97b4b60090324aa3ef1546e446612d44e1f
|
||||
|
||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
PKG_LICENSE:=MPL-2.0
|
||||
|
||||
Reference in New Issue
Block a user