diff --git a/CMakeLists.txt b/CMakeLists.txt index f4828453ab..cc7fae87ec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -390,5 +390,5 @@ endif() # Generate exported executables for cross-compiled builds (Android, WebGL, and iOS) if (NOT CMAKE_CROSSCOMPILING) - export(TARGETS matc cmgen filamesh mipgen resgen FILE ${IMPORT_EXECUTABLES}) + export(TARGETS matc cmgen filamesh mipgen resgen glslminifier FILE ${IMPORT_EXECUTABLES}) endif() diff --git a/shaders/CMakeLists.txt b/shaders/CMakeLists.txt index 944a9f9972..01a474499c 100644 --- a/shaders/CMakeLists.txt +++ b/shaders/CMakeLists.txt @@ -45,6 +45,28 @@ set(SHADERS src/variables.fs src/variables.vs) +set(MINIFIED_DIR ${CMAKE_CURRENT_BINARY_DIR}/minified) + +file(MAKE_DIRECTORY ${MINIFIED_DIR}) + +# After the foreach loop, SHADERS_MIN will contain the paths to the minified shaders. +set(SHADERS_MIN) +foreach(SHADER_FILE ${SHADERS}) + get_filename_component(SHADER_NAME ${SHADER_FILE} NAME) + set(SHADER_RAW ${CMAKE_CURRENT_SOURCE_DIR}/${SHADER_FILE}) + set(SHADER_MIN ${MINIFIED_DIR}/${SHADER_NAME}) + # For Debug builds, pass the "-Onone" flag to perform no minification. This is helpful for + # debugging shaders. + add_custom_command( + OUTPUT ${SHADER_MIN} + COMMAND glslminifier "$<$:-Onone>" -o ${SHADER_MIN} ${SHADER_RAW} + DEPENDS glslminifier ${SHADER_RAW} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Minifying shader ${SHADER_NAME}" + ) + list(APPEND SHADERS_MIN ${SHADER_MIN}) +endforeach() + # ================================================================================================== # Code generation # ================================================================================================== @@ -54,9 +76,9 @@ get_resgen_vars(${RESOURCE_DIR} shaders) add_custom_command( OUTPUT ${RESGEN_OUTPUTS} - COMMAND resgen --text --keep ${RESGEN_FLAGS} ${SHADERS} - DEPENDS resgen ${SHADERS} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND resgen --text --keep ${RESGEN_FLAGS} ${SHADERS_MIN} + DEPENDS resgen ${SHADERS_MIN} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Aggregating shaders" )