mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
Opcode registry: move to generated canonical+alias pipeline
Introduce data-driven opcode registry with canonical and alias sources: - Added Data/opcodes/canonical.json as the single canonical LogicalOpcode set. - Added Data/opcodes/aliases.json for cross-core naming aliases (CMaNGOS/AzerothCore/local legacy). Added generator and generated include fragments: - tools/gen_opcode_registry.py emits include/game/opcode_enum_generated.inc, include/game/opcode_names_generated.inc, and include/game/opcode_aliases_generated.inc. - include/game/opcode_table.hpp now consumes generated enum entries. - src/game/opcode_table.cpp now consumes generated name and alias tables. Loader canonicalization behavior: - OpcodeTable::nameToLogical canonicalizes incoming JSON opcode names via alias table before enum lookup, so implementation code stays stable while expansion maps can use different core spellings. Validation and build integration: - Added tools/validate_opcode_maps.py to validate canonical contract across expansions. - Added CMake targets opcodes-generate and opcodes-validate. - wowee target now depends on opcodes-generate so generated headers stay current. Validation/build run: - cmake -S . -B build - cmake --build build --target opcodes-generate opcodes-validate - cmake --build build -j32
This commit is contained in:
parent
52ac3bcba3
commit
610ed71922
10 changed files with 4572 additions and 2812 deletions
|
|
@ -15,6 +15,23 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
|||
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
|
||||
option(WOWEE_BUILD_TESTS "Build tests" OFF)
|
||||
|
||||
# Opcode registry generation/validation
|
||||
find_package(Python3 COMPONENTS Interpreter QUIET)
|
||||
if(Python3_Interpreter_FOUND)
|
||||
add_custom_target(opcodes-generate
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/gen_opcode_registry.py
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
COMMENT "Generating opcode registry include fragments"
|
||||
)
|
||||
|
||||
add_custom_target(opcodes-validate
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/validate_opcode_maps.py --root ${CMAKE_SOURCE_DIR}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
DEPENDS opcodes-generate
|
||||
COMMENT "Validating canonical opcode registry and expansion maps"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Find required packages
|
||||
find_package(SDL2 REQUIRED)
|
||||
find_package(OpenGL REQUIRED)
|
||||
|
|
@ -322,6 +339,9 @@ endif()
|
|||
|
||||
# Create executable
|
||||
add_executable(wowee ${WOWEE_SOURCES} ${WOWEE_HEADERS} ${WOWEE_PLATFORM_SOURCES})
|
||||
if(TARGET opcodes-generate)
|
||||
add_dependencies(wowee opcodes-generate)
|
||||
endif()
|
||||
|
||||
# Include directories
|
||||
target_include_directories(wowee PRIVATE
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue