From 045274bbdb5bf8c4a43dce640c4d9ffa69dd260d Mon Sep 17 00:00:00 2001 From: Ben Doherty Date: Thu, 10 Jan 2019 10:23:23 -0800 Subject: [PATCH] Use glslminifier to minifiy shaders for Release builds (#690) --- CMakeLists.txt | 2 +- shaders/CMakeLists.txt | 28 +++++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) 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" )