Fix test build failures on Arch with Catch2 v3 and GCC 16
- Add missing <unistd.h> include in AlsaDriverTest.cpp for sleep(). - Link Catch2::Catch2WithMain alongside Catch2::Catch2 for pipedaltest and jsonTest test targets. Catch2 v3 requires this for CATCH_CONFIG_MAIN to provide the main() entry point.
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "AlsaDriver.hpp"
|
#include "AlsaDriver.hpp"
|
||||||
#include "ChannelRouterSettings.hpp"
|
#include "ChannelRouterSettings.hpp"
|
||||||
|
|||||||
@@ -22,6 +22,32 @@ set(CXX_STANDARD 20)
|
|||||||
|
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
|
|
||||||
|
find_package(Catch2 QUIET)
|
||||||
|
|
||||||
|
# Catch2 v3 (Arch, newer distros) uses multi-headers under <catch2/>.
|
||||||
|
# Catch2 v2 (Debian/Ubuntu) provides a single catch.hpp at system level.
|
||||||
|
# When Catch2 v3 is found via CMake, generate compatibility wrappers so
|
||||||
|
# old-style #include "catch.hpp" and #include <catch/catch.hpp> still work.
|
||||||
|
if(Catch2_FOUND)
|
||||||
|
# Generate catch.hpp wrapper in the build directory.
|
||||||
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/catch.hpp"
|
||||||
|
"#pragma once\n"
|
||||||
|
"#include <catch2/catch_all.hpp>\n"
|
||||||
|
)
|
||||||
|
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/catch")
|
||||||
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/catch/catch.hpp"
|
||||||
|
"#pragma once\n"
|
||||||
|
"#include <catch2/catch_all.hpp>\n"
|
||||||
|
)
|
||||||
|
# Add the build directory to the global include paths so that
|
||||||
|
# both #include "catch.hpp" (quote) and #include <catch/catch.hpp> (angle)
|
||||||
|
# can find the compatibility wrappers.
|
||||||
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
message(STATUS "Catch2 v3 found. Generated compatibility wrappers in ${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
|
else()
|
||||||
|
message(STATUS "Catch2 CMake package not found. Expecting system catch.hpp (Catch2 v2 style).")
|
||||||
|
endif()
|
||||||
|
|
||||||
pkg_check_modules(PipeWire REQUIRED libpipewire-0.3)
|
pkg_check_modules(PipeWire REQUIRED libpipewire-0.3)
|
||||||
|
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
@@ -472,6 +498,10 @@ add_executable(pipedaltest
|
|||||||
target_link_libraries(pipedaltest PRIVATE ${PIPEDAL_LIBS} ${ICU_LIBRARIES})
|
target_link_libraries(pipedaltest PRIVATE ${PIPEDAL_LIBS} ${ICU_LIBRARIES})
|
||||||
target_include_directories(pipedaltest PRIVATE ${PIPEDAL_INCLUDES})
|
target_include_directories(pipedaltest PRIVATE ${PIPEDAL_INCLUDES})
|
||||||
|
|
||||||
|
if(Catch2_FOUND)
|
||||||
|
target_link_libraries(pipedaltest PRIVATE Catch2::Catch2 Catch2::Catch2WithMain)
|
||||||
|
endif()
|
||||||
|
|
||||||
set_target_properties(pipedaltest PROPERTIES EXCLUDE_FROM_ALL ${PIPEDAL_EXCLUDE_TESTS})
|
set_target_properties(pipedaltest PROPERTIES EXCLUDE_FROM_ALL ${PIPEDAL_EXCLUDE_TESTS})
|
||||||
|
|
||||||
if (NOT GITHUB_ACTIONS) # Google perftools are not available on Github action servers.
|
if (NOT GITHUB_ACTIONS) # Google perftools are not available on Github action servers.
|
||||||
@@ -502,6 +532,10 @@ add_executable(jsonTest
|
|||||||
target_link_libraries(jsonTest PRIVATE PiPedalCommon)
|
target_link_libraries(jsonTest PRIVATE PiPedalCommon)
|
||||||
target_include_directories(jsonTest PRIVATE ${PIPEDAL_INCLUDES})
|
target_include_directories(jsonTest PRIVATE ${PIPEDAL_INCLUDES})
|
||||||
|
|
||||||
|
if(Catch2_FOUND)
|
||||||
|
target_link_libraries(jsonTest PRIVATE Catch2::Catch2 Catch2::Catch2WithMain)
|
||||||
|
endif()
|
||||||
|
|
||||||
set_target_properties(jsonTest PROPERTIES EXCLUDE_FROM_ALL ${PIPEDAL_EXCLUDE_TESTS})
|
set_target_properties(jsonTest PROPERTIES EXCLUDE_FROM_ALL ${PIPEDAL_EXCLUDE_TESTS})
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user