refactor(cmake): de-churn batches A-E (fork-cleanup doc 02)
- KICAD_WASM_LAYER cache var replaces 25 ${CMAKE_SOURCE_DIR}/../wasm reach-outs
- pcbnew Python install: wrap-and-reindent -> early-return guard
- list(REMOVE_ITEM) for PCBNEW_IO_LIBRARIES (cache-FORCE), eeschema importers, GAL_SRCS
- add_shader redefined via wasm/cmake/WasmShaderOverride.cmake (upstream calls reused)
- additive BUILD_KIWAY_DLL property overrides; api kiapi type var
- pcb_calculator whole-file fork -> wasm block + guarded native body
Upstream-byte-identical where possible. WASM build + e2e (9/9, -O1) verified.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
913bc90fa0
commit
a3478fe3a5
2 changed files with 57 additions and 1 deletions
2
kicad
2
kicad
|
|
@ -1 +1 @@
|
|||
Subproject commit a2c634f2f5f061ce13dc09fae3801c618f2a9f81
|
||||
Subproject commit b5ac6dcbe40defcfa21938de80cd6d4ce3a23711
|
||||
56
wasm/cmake/WasmShaderOverride.cmake
Normal file
56
wasm/cmake/WasmShaderOverride.cmake
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
# WASM shader override.
|
||||
#
|
||||
# Redefines add_shader() to convert GLSL 1.20 -> GLSL ES 3.0 before embedding the shader as a
|
||||
# C++ string, so common/gal/CMakeLists.txt's unconditional add_shader() calls produce ES3
|
||||
# shaders on Emscripten while native keeps the upstream GLSL-1.20 path. The later definition
|
||||
# wins, so this file must be include()d AFTER upstream's add_shader() definition and BEFORE the
|
||||
# add_shader() calls. (Same conversion as tests/gal-regression/wasm/generate_shaders.py.)
|
||||
#
|
||||
# include()d (not add_subdirectory'd) from common/gal/CMakeLists.txt, so ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
# / ${CMAKE_CURRENT_BINARY_DIR} below resolve to that directory, exactly as the inline fork did.
|
||||
|
||||
find_program( PYTHON3_EXECUTABLE python3 REQUIRED )
|
||||
|
||||
function( add_shader outTarget inFile shaderName )
|
||||
# Determine shader type from filename
|
||||
string(FIND "${inFile}" "frag" _is_frag)
|
||||
if(_is_frag GREATER -1)
|
||||
set(SHADER_TYPE "fragment")
|
||||
else()
|
||||
set(SHADER_TYPE "vertex")
|
||||
endif()
|
||||
|
||||
set(es3GlslFile "${CMAKE_CURRENT_BINARY_DIR}/${shaderName}_es3.glsl")
|
||||
set(outCppName "${shaderName}.cpp")
|
||||
set(outHeaderName "${shaderName}.h")
|
||||
|
||||
# Step 1: Convert GLSL 120 -> ES 3.0
|
||||
add_custom_command(
|
||||
OUTPUT ${es3GlslFile}
|
||||
COMMAND ${PYTHON3_EXECUTABLE}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/shaders/convert_glsl_es3.py
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/shaders/${inFile}
|
||||
${es3GlslFile}
|
||||
${SHADER_TYPE}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/shaders/${inFile}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/shaders/convert_glsl_es3.py
|
||||
)
|
||||
|
||||
# Step 2: Embed as C++ string (same as native path)
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${outCppName}
|
||||
${CMAKE_BINARY_DIR}/include/gal/shaders/${outHeaderName}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-DSOURCE_FILE="${es3GlslFile}"
|
||||
-DOUT_CPP_DIR="${CMAKE_CURRENT_BINARY_DIR}/"
|
||||
-DOUT_HEADER_DIR="${CMAKE_BINARY_DIR}/include/gal/shaders/"
|
||||
-DOUT_CPP_FILENAME="${outCppName}"
|
||||
-DOUT_HEADER_FILENAME="${outHeaderName}"
|
||||
-DOUT_VAR_NAME="${shaderName}"
|
||||
-P ${KICAD_CMAKE_MODULE_PATH}/BuildSteps/CreateShaderCpp.cmake
|
||||
DEPENDS ${es3GlslFile}
|
||||
)
|
||||
|
||||
target_sources( ${outTarget} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${outCppName} )
|
||||
target_include_directories( ${outTarget} PUBLIC ${CMAKE_BINARY_DIR}/include/gal/shaders/ )
|
||||
endfunction()
|
||||
Loading…
Reference in a new issue