memoryAllocate() becomes a macro capturing __FILE__/__LINE__ into a fixed-size tracking table when DUSK_TRACK_MEMORY is enabled (Linux only for now), so a leak surviving to shutdown can be traced back to its call site. Replaces engineDispose's hard assertTrue with memoryCheckUnfreed(), which reports unfreed allocations (with call sites when tracking is on, just a count otherwise) instead of aborting. Co-Authored-By: Claude Sonnet 5 <[email protected]>
60 lines
1.6 KiB
CMake
60 lines
1.6 KiB
CMake
# Find link platform-specific libraries
|
|
find_package(SDL2 REQUIRED)
|
|
find_package(OpenGL REQUIRED)
|
|
# find_package(CURL REQUIRED)
|
|
|
|
# Setup endianess at compile time to optimize.
|
|
include(TestBigEndian)
|
|
test_big_endian(IS_BIG_ENDIAN)
|
|
if(IS_BIG_ENDIAN)
|
|
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PUBLIC
|
|
DUSK_PLATFORM_ENDIAN_BIG
|
|
)
|
|
else()
|
|
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PUBLIC
|
|
DUSK_PLATFORM_ENDIAN_LITTLE
|
|
)
|
|
endif()
|
|
|
|
# Link required libraries.
|
|
target_link_libraries(${DUSK_LIBRARY_TARGET_NAME} PUBLIC
|
|
SDL2
|
|
pthread
|
|
OpenGL::GL
|
|
GL
|
|
m
|
|
# CURL::libcurl
|
|
)
|
|
|
|
set(DUSK_BACKTRACE ON CACHE BOOL "Enable backtrace support for assert failures.")
|
|
|
|
# Records the file/line of every memoryAllocate() call into a fixed-size
|
|
# tracking table (removed again on memoryFree()) so a leak still present at
|
|
# engineDispose()'s memoryGetAllocatedCount() check can be traced back to
|
|
# where it was allocated. Linux only for now.
|
|
set(DUSK_TRACK_MEMORY OFF CACHE BOOL "Track memoryAllocate() call sites to help find memory leaks.")
|
|
if(DUSK_TRACK_MEMORY)
|
|
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PUBLIC
|
|
DUSK_TRACK_MEMORY
|
|
)
|
|
endif()
|
|
|
|
# Define platform-specific macros.
|
|
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PUBLIC
|
|
DUSK_SDL2
|
|
DUSK_OPENGL
|
|
DUSK_CONSOLE_POSIX
|
|
# DUSK_OPENGL_LEGACY
|
|
DUSK_LINUX
|
|
DUSK_DISPLAY_SIZE_DYNAMIC
|
|
DUSK_DISPLAY_WIDTH_DEFAULT=854
|
|
DUSK_DISPLAY_HEIGHT_DEFAULT=480
|
|
DUSK_DISPLAY_SCREEN_HEIGHT=240
|
|
DUSK_INPUT_KEYBOARD
|
|
DUSK_INPUT_POINTER
|
|
DUSK_INPUT_GAMEPAD
|
|
DUSK_TIME_DYNAMIC
|
|
DUSK_NETWORK_IPV6
|
|
DUSK_THREAD_PTHREAD
|
|
DUSK_TRACK_MEMORY
|
|
) |