diff --git a/pack/CMakeLists.txt b/pack/CMakeLists.txt
index 202eb52447fa6147c1ec47a24eac44be3190fbb8..91e53b922d6a3c654cdedbd236d7cf421c7435f7 100644
--- a/pack/CMakeLists.txt
+++ b/pack/CMakeLists.txt
@@ -84,19 +84,20 @@ if (${res_count})
 
         get_property(GLSL_VALIDATOR GLOBAL PROPERTY glsl_validator_property)
 
-	get_filename_component(intermediate_dir "${intermediate}" DIRECTORY)
-	if("${intermediate_dir}" STREQUAL "")
-	    set(intermediate_dir "./") # make_directory would fail on empty path
-	endif()
+        get_filename_component(intermediate_dir "${intermediate}" DIRECTORY)
+        if("${intermediate_dir}" STREQUAL "")
+            set(intermediate_dir "./") # make_directory would fail on empty path
+        endif()
 
+        message("Dependencies: ${lava_pack_dependencies_${input}}")
         add_custom_command(
             OUTPUT "${intermediate}"
-            DEPENDS "${input}"
+            DEPENDS "${input}" "${lava_pack_dependencies_${input}}"
             COMMAND ${CMAKE_COMMAND} -E make_directory "${intermediate_dir}"
-	    COMMAND ${GLSL_VALIDATOR} -V "${input}" -o "${intermediate}"
+            COMMAND ${GLSL_VALIDATOR} -V "${input}" -o "${intermediate}"
             COMMENT "Rebuilding ${intermediate}."
         )
-	message("${intermediate}")
+        message("${intermediate}")
 
         add_custom_command(
             OUTPUT "${outfile}"
@@ -122,6 +123,10 @@ if (${res_count})
     endforeach()
 endif()
 
+macro(LAVA_PACK_SHADER_DEPENDENCY shader dependencies)
+    set("lava_pack_dependencies_${shader}" "${dependencies}" CACHE INTERNAL "")
+endmacro(LAVA_PACK_SHADER_DEPENDENCY)
+
 set(cpp_content [=[
 #include <string>
 #include <unordered_map>
@@ -144,3 +149,4 @@ void putPackages(std::unordered_map<std::string, Package>& map) {
 
 file(GENERATE OUTPUT "${pack_outfile}" CONTENT "${cpp_content}")
 set(lava_pack_shaders "" CACHE INTERNAL "lava_pack_shaders")
+set(lava_pack_shader_includes "" CACHE INTERNAL "lava_pack_shader_includes")