mirror of
https://github.com/kenzok8/small-package.git
synced 2026-02-06 23:08:07 +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)
|
cmake_policy(SET CMP0135 NEW)
|
||||||
|
|
||||||
OPTION(UA2F_BUILD_TESTS "Build tests" OFF)
|
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_ENABLE_UCI "Enable UCI support" ON)
|
||||||
OPTION(UA2F_NO_CACHE "Disable cache" OFF)
|
OPTION(UA2F_NO_CACHE "Disable cache" OFF)
|
||||||
OPTION(UA2F_ENABLE_BACKTRACE "Enable libbacktrace support" ON)
|
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)
|
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})
|
if (DEFINED ENV{UA2F_ENABLE_ASAN})
|
||||||
set(UA2F_ENABLE_ASAN $ENV{UA2F_ENABLE_ASAN})
|
set(UA2F_ENABLE_ASAN $ENV{UA2F_ENABLE_ASAN})
|
||||||
message(STATUS "UA2F_ENABLE_ASAN set from environment: ${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)
|
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)
|
include(GoogleTest)
|
||||||
gtest_discover_tests(ua2f_test)
|
gtest_discover_tests(ua2f_test)
|
||||||
else ()
|
else ()
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=xray-core
|
PKG_NAME:=xray-core
|
||||||
PKG_VERSION:=25.9.10
|
PKG_VERSION:=25.9.11
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://codeload.github.com/XTLS/Xray-core/tar.gz/v$(PKG_VERSION)?
|
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_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||||
PKG_LICENSE:=MPL-2.0
|
PKG_LICENSE:=MPL-2.0
|
||||||
|
|||||||
Reference in New Issue
Block a user