Take libakgl 0.9.0, and shadow set_property(TEST) so it configures
0.9.0 is the akgl_ui subsystem: a vendored clay, an arena, menus, HUDs and dialogs, reached through a new akgl/ui.h this project does not include. Every header the akbasic_akgl target actually compiles against is byte-identical to 0.8.0, so unlike the 0.8.0 bump there is no sizeof to get wrong. The floor in include/akbasic/akgl.h moves to 0.9.0 anyway, on the standing rule that the soname carries MAJOR.MINOR while the major is 0. It does not configure as it stands. 0.9.0 moved eight test property calls off set_tests_properties -- correctly, because that command splits a semicolon-separated value and had been silently reducing its LD_LIBRARY_PATH prepend list to one directory -- onto set_property(TEST ...). This repository suppresses add_test() while it pulls its dependencies in, so those test names do not exist, and set_property errors on an unknown test name where set_tests_properties was silent: eight hard configure failures. Shadow set_property in its TEST form only; every other form has to pass through, since the dependencies set target and directory properties their own builds need. libakgl's status band grew to seven codes with AKGL_ERR_UI and it now owns 256 to 262, so the coordinated range map, docs/15-error-codes.md and both header comments follow. TODO.md section 5's persistent-drawing-layer item still stands: 0.9.0's arena draws inside the frame like everything else, and there is still no render-to-texture layer. Both configurations build and both suites pass -- 110/110 without libakgl, 111/111 with it, akgl_typing included. Co-Authored-By: Tachikoma (Claude Code Opus 5 1M) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EwxGB6TdoVvZ11KQQME9cL
This commit is contained in:
@@ -40,6 +40,17 @@ option(AKBASIC_SANITIZE "Build with ASan + UBSan" OFF
|
||||
# calls. Note libakstdlib carries the same shadow but only arms it when *it* is
|
||||
# top-level, so it does nothing for us -- this one has to wrap all three.
|
||||
#
|
||||
# set_property(TEST ...) has to be shadowed alongside them, and shadowed *only*
|
||||
# in its TEST form. libakgl 0.9.0 moved eight of these calls off
|
||||
# set_tests_properties because that command parses its arguments as name/value
|
||||
# pairs and so splits a semicolon-separated list; set_property does not, and is
|
||||
# the correct fix. But with add_test() suppressed the tests it names do not
|
||||
# exist, and set_property errors out on an unknown test name where
|
||||
# set_tests_properties was silent -- eight hard configure failures. Every other
|
||||
# form (GLOBAL, DIRECTORY, TARGET, SOURCE, INSTALL, CACHE) has to pass straight
|
||||
# through: the dependencies set target and directory properties that their own
|
||||
# builds depend on.
|
||||
#
|
||||
# libakerror additionally namespaces its `mutation` target when embedded but not
|
||||
# its `coverage` target (deps/libakerror/CMakeLists.txt:194 vs :172), so a
|
||||
# coverage build collides on the `coverage` target and fails to configure at all.
|
||||
@@ -69,6 +80,12 @@ function(set_tests_properties)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(set_property _scope)
|
||||
if(NOT AKBASIC_SUPPRESS_ADD_TEST OR NOT _scope STREQUAL "TEST")
|
||||
_set_property(${ARGV})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(add_custom_target _name)
|
||||
if(AKBASIC_SUPPRESS_ADD_TEST AND _name STREQUAL "coverage")
|
||||
_add_custom_target(akerror_coverage ${ARGN})
|
||||
|
||||
Reference in New Issue
Block a user