Skip to content

Commit 7d56cac

Browse files
committed
incomplete matrix program
1 parent dcc570c commit 7d56cac

33 files changed

Lines changed: 3736 additions & 8 deletions

CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,3 +172,8 @@ if(ENABLE_PORTCE_DEMO AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/portce)
172172
endif()
173173
endif()
174174

175+
if(ENABLE_PORTCE_DEMO AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/portce)
176+
if(NOT CMAKE_CROSSCOMPILING AND SDL2_FOUND)
177+
add_subdirectory(apps/matrix/portce)
178+
endif()
179+
endif()

CMakePresets.json

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,39 @@
1515
"ENABLE_PORTCE_DEMO": "ON"
1616
}
1717
},
18+
{
19+
"name": "native-clang20",
20+
"displayName": "Native (PortCE + SDL2, clang-20)",
21+
"description": "Build for host system with PortCE demo and tests using clang-20",
22+
"generator": "Ninja",
23+
"binaryDir": "${sourceDir}/build/native-clang20",
24+
"cacheVariables": {
25+
"CMAKE_C_COMPILER": "/usr/bin/clang-20",
26+
"CMAKE_CXX_COMPILER": "/usr/bin/clang++-20",
27+
"CMAKE_BUILD_TYPE": "Debug",
28+
"ENABLE_HOST_TESTS": "ON",
29+
"ENABLE_PORTCE_DEMO": "ON"
30+
}
31+
},
32+
{
33+
"name": "native-asan-clang20",
34+
"displayName": "Native (PortCE + SDL2, ASAN/LSAN, clang-20)",
35+
"description": "Build for host system with sanitizers enabled (useful for leak/UB detection)",
36+
"generator": "Ninja",
37+
"binaryDir": "${sourceDir}/build/native-asan-clang20",
38+
"cacheVariables": {
39+
"CMAKE_C_COMPILER": "/usr/bin/clang-20",
40+
"CMAKE_CXX_COMPILER": "/usr/bin/clang++-20",
41+
"CMAKE_BUILD_TYPE": "Debug",
42+
"ENABLE_HOST_TESTS": "ON",
43+
"ENABLE_PORTCE_DEMO": "ON",
44+
"ENABLE_STRICT_WARNINGS": "OFF",
45+
"ENABLE_CLANG_TIDY": "OFF",
46+
"CMAKE_C_FLAGS": "-fsanitize=address -fno-omit-frame-pointer",
47+
"CMAKE_CXX_FLAGS": "-fsanitize=address -fno-omit-frame-pointer",
48+
"CMAKE_EXE_LINKER_FLAGS": "-fsanitize=address"
49+
}
50+
},
1851
{
1952
"name": "wasm",
2053
"displayName": "WebAssembly (Emscripten)",
@@ -37,10 +70,20 @@
3770
"displayName": "Build Native",
3871
"configurePreset": "native"
3972
},
73+
{
74+
"name": "native-clang20",
75+
"displayName": "Build Native (clang-20)",
76+
"configurePreset": "native-clang20"
77+
},
78+
{
79+
"name": "native-asan-clang20",
80+
"displayName": "Build Native (ASAN/LSAN, clang-20)",
81+
"configurePreset": "native-asan-clang20"
82+
},
4083
{
4184
"name": "wasm",
4285
"displayName": "Build WebAssembly",
4386
"configurePreset": "wasm"
4487
}
4588
]
46-
}
89+
}

apps/matrix/ce/CMakeLists.txt

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
cmake_minimum_required(VERSION 3.20)
2+
3+
project(libtexce_matrix_ce C CXX)
4+
5+
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
6+
7+
set(CEDEV_HAS_PRINTF OFF CACHE BOOL "Link toolchain printf implementations" FORCE)
8+
include(${CMAKE_CURRENT_LIST_DIR}/../../../cmake/CEdevToolchain.cmake)
9+
10+
get_filename_component(TEX_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE)
11+
12+
set(TEX_CORE_SOURCES
13+
${TEX_ROOT}/src/tex/tex_util.c
14+
${TEX_ROOT}/src/tex/tex_pool.c
15+
${TEX_ROOT}/src/tex/tex_symbols.c
16+
${TEX_ROOT}/src/tex/tex_metrics.c
17+
${TEX_ROOT}/src/tex/tex_fonts.c
18+
${TEX_ROOT}/src/tex/tex_token.c
19+
${TEX_ROOT}/src/tex/tex_parse.c
20+
${TEX_ROOT}/src/tex/tex_measure.c
21+
${TEX_ROOT}/src/tex/tex_layout.c
22+
${TEX_ROOT}/src/tex/tex_renderer.c
23+
${TEX_ROOT}/src/tex/tex_draw.c
24+
)
25+
26+
set(TEX_INCLUDE_DIRS
27+
${TEX_ROOT}/src
28+
${TEX_ROOT}/src/tex
29+
${TEX_ROOT}/include
30+
)
31+
32+
set(TEX_COMPILE_DEFS
33+
-DTEX_USE_FONTLIB
34+
-DTEX_DIRECT_RENDER
35+
)
36+
37+
set(MATRIX_APP_SOURCES
38+
${TEX_ROOT}/apps/matrix/src/main.cpp
39+
${TEX_ROOT}/apps/matrix/src/app.cpp
40+
${TEX_ROOT}/apps/matrix/src/app_draw.cpp
41+
${TEX_ROOT}/apps/matrix/src/input.cpp
42+
${TEX_ROOT}/apps/matrix/src/rational.cpp
43+
${TEX_ROOT}/apps/matrix/src/matrix_ops.cpp
44+
${TEX_ROOT}/apps/matrix/src/steps.cpp
45+
${TEX_ROOT}/apps/matrix/src/ui_menu.cpp
46+
${TEX_ROOT}/apps/matrix/src/screens_main_menu.cpp
47+
${TEX_ROOT}/apps/matrix/src/screens_matrices_menu.cpp
48+
${TEX_ROOT}/apps/matrix/src/screens_operations_menu.cpp
49+
${TEX_ROOT}/apps/matrix/src/screens_slot_picker.cpp
50+
${TEX_ROOT}/apps/matrix/src/screens_result_view.cpp
51+
${TEX_ROOT}/apps/matrix/src/screens_steps_menu.cpp
52+
${TEX_ROOT}/apps/matrix/src/screens_steps_view.cpp
53+
${TEX_ROOT}/apps/matrix/src/screens_matrix_resize.cpp
54+
${TEX_ROOT}/apps/matrix/src/screens_matrix_editor.cpp
55+
${TEX_ROOT}/apps/matrix/src/screens_element_picker.cpp
56+
${TEX_ROOT}/apps/matrix/src/screens_element_output.cpp
57+
${TEX_ROOT}/apps/matrix/src/screens_stub.cpp
58+
${TEX_ROOT}/apps/matrix/src/screens_dispatch.cpp
59+
)
60+
61+
cedev_add_program(
62+
TARGET matrix
63+
NAME "MATRIX"
64+
DESCRIPTION "Matrix tools (libtexce)"
65+
66+
SOURCES
67+
${MATRIX_APP_SOURCES}
68+
${TEX_CORE_SOURCES}
69+
70+
INCLUDE_DIRECTORIES
71+
${TEX_INCLUDE_DIRS}
72+
${TEX_ROOT}/apps/matrix/src
73+
74+
LIBLOAD
75+
graphx fontlibc keypadc
76+
77+
COMPILE_OPTIONS
78+
${TEX_COMPILE_DEFS}
79+
)

apps/matrix/ce/CMakePresets.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"version": 8,
3+
"configurePresets": [
4+
{
5+
"name": "ce",
6+
"displayName": "TI-84+ CE (Matrix)",
7+
"description": "Build MATRIX CE program",
8+
"generator": "Ninja",
9+
"binaryDir": "${sourceDir}/../../../build/matrix_ce"
10+
}
11+
],
12+
"buildPresets": [
13+
{
14+
"name": "ce",
15+
"displayName": "Build MATRIX",
16+
"configurePreset": "ce"
17+
}
18+
]
19+
}
20+

apps/matrix/portce/CMakeLists.txt

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
set(MATRIX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/..)
2+
3+
if(NOT EMSCRIPTEN)
4+
add_executable(matrix_portce
5+
${MATRIX_DIR}/src/main_portce.cpp
6+
${MATRIX_DIR}/src/app.cpp
7+
${MATRIX_DIR}/src/app_draw.cpp
8+
${MATRIX_DIR}/src/input.cpp
9+
${MATRIX_DIR}/src/rational.cpp
10+
${MATRIX_DIR}/src/matrix_ops.cpp
11+
${MATRIX_DIR}/src/steps.cpp
12+
${MATRIX_DIR}/src/ui_menu.cpp
13+
${MATRIX_DIR}/src/screens_main_menu.cpp
14+
${MATRIX_DIR}/src/screens_matrices_menu.cpp
15+
${MATRIX_DIR}/src/screens_operations_menu.cpp
16+
${MATRIX_DIR}/src/screens_slot_picker.cpp
17+
${MATRIX_DIR}/src/screens_result_view.cpp
18+
${MATRIX_DIR}/src/screens_steps_menu.cpp
19+
${MATRIX_DIR}/src/screens_steps_view.cpp
20+
${MATRIX_DIR}/src/screens_matrix_resize.cpp
21+
${MATRIX_DIR}/src/screens_matrix_editor.cpp
22+
${MATRIX_DIR}/src/screens_element_picker.cpp
23+
${MATRIX_DIR}/src/screens_element_output.cpp
24+
${MATRIX_DIR}/src/screens_stub.cpp
25+
${MATRIX_DIR}/src/screens_dispatch.cpp
26+
$<TARGET_OBJECTS:tex_core>
27+
)
28+
29+
target_include_directories(matrix_portce PRIVATE
30+
${CMAKE_SOURCE_DIR}
31+
${CMAKE_SOURCE_DIR}/src
32+
${CMAKE_SOURCE_DIR}/src/tex
33+
${CMAKE_SOURCE_DIR}/include
34+
${MATRIX_DIR}/src
35+
)
36+
37+
target_compile_options(matrix_portce PRIVATE
38+
-Wno-bit-int-extension
39+
-Wno-c99-extensions
40+
-Wno-c23-extensions
41+
-Wno-zero-length-array
42+
-Wno-old-style-cast
43+
-Wno-error
44+
-Wno-switch-enum
45+
-Wno-implicit-int-conversion
46+
)
47+
48+
target_link_libraries(matrix_portce PUBLIC PortCE -lm)
49+
50+
# The repo's native preset enables clang-tidy with warnings-as-errors; disable
51+
# per-target so PortCE typedefs (_BitInt(24)) don't block building.
52+
set_target_properties(matrix_portce PROPERTIES C_CLANG_TIDY "" CXX_CLANG_TIDY "")
53+
54+
# Copy font appvars to build directory for PortCE runtime.
55+
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/appvar)
56+
if(EXISTS ${CMAKE_SOURCE_DIR}/assets)
57+
file(GLOB FONT_FILES "${CMAKE_SOURCE_DIR}/assets/*.8xv")
58+
foreach(font_file ${FONT_FILES})
59+
get_filename_component(font_name ${font_file} NAME)
60+
configure_file(${font_file} ${CMAKE_BINARY_DIR}/appvar/${font_name} COPYONLY)
61+
endforeach()
62+
endif()
63+
64+
message(STATUS "PortCE matrix enabled - run matrix_portce from ${CMAKE_BINARY_DIR}")
65+
endif()

0 commit comments

Comments
 (0)