From 126c00944c05a8dce53d406b870a7151d70810cc Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Sat, 9 May 2020 09:18:58 +0200 Subject: [PATCH] test: make the memory leak checker for tests work again It turns out that these static constructors declared with `__declspec(allocate(".CRT$XCU"))` don't work if you try to link them from a static library. With this patch we go back to passing 'leak-check.c' as an extra source file when compiling a test. --- CMakeLists.txt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 86cb6ae..b5e6be8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,7 +27,8 @@ file(GLOB SOURCES_INCLUDE include/*.h) file(GLOB SOURCES_SRC src/*.c src/*.h) file(GLOB SOURCES_SRC_C src/*.c) file(GLOB SOURCES_TEST test/*.c) -file(GLOB SOURCES_TEST_SHARED test/shared/*.c test/shared/*.h) +file(GLOB SOURCES_TEST_LEAK_CHECK test/shared/leak-check.*) +file(GLOB SOURCES_TEST_UTIL test/shared/test-util.*) set_property(GLOBAL PROPERTY USE_FOLDERS ON) source_group(doc FILES ${SOURCES_DOC}) @@ -35,7 +36,7 @@ source_group(config FILES ${SOURCES_CONFIG}) source_group(include FILES ${SOURCES_INCLUDE}) source_group(src FILES ${SOURCES_SRC}) source_group("" FILES ${SOURCES_TEST}) -source_group(test/shared FILES ${SOURCES_TEST_SHARED}) +source_group(test/shared FILES ${SOURCES_TEST_LEAK_CHECK} ${SOURCES_TEST_UTIL}) get_filename_component(LIB_NAME ${SOURCES_INCLUDE} NAME_WE) @@ -132,7 +133,7 @@ set(TESTING_LIB_TARGET "${LIB_NAME}-testing.lib") add_library( ${TESTING_LIB_TARGET} STATIC ${SOURCES_CONFIG_EXTERNAL_STATIC} ${SOURCES_CONFIG_INTERNAL_DEFAULT} - ${SOURCES_INCLUDE} ${SOURCES_SRC} ${SOURCES_TEST_SHARED} + ${SOURCES_INCLUDE} ${SOURCES_SRC} ${SOURCES_TEST_UTIL} ) target_include_directories( ${TESTING_LIB_TARGET} PUBLIC @@ -145,7 +146,7 @@ set_target_properties( foreach(TEST_SOURCE ${SOURCES_TEST}) get_filename_component(TEST_NAME ${TEST_SOURCE} NAME_WE) - add_executable(${TEST_NAME} ${TEST_SOURCE}) + add_executable(${TEST_NAME} ${TEST_SOURCE} ${SOURCES_TEST_LEAK_CHECK}) target_include_directories( ${TEST_NAME} PUBLIC config/external/static config/internal/default include src test/shared