Place guard for tint_executable outside of definition

This causes using the rule when the guard condition is false to fail
immediately with an error about this rule not being defined, instead
of being a no-op and leading to hard to diagnose failures later.

Fixes: 341973416
Change-Id: I4967e2d8f092a55c9470365984a6c47d57c9d432
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/189380
Commit-Queue: Ryan Harrison <rharrison@google.com>
Reviewed-by: James Price <jrprice@google.com>
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/tint.gni b/src/tint/tint.gni
index 8f3d528..177fa29 100644
--- a/src/tint/tint.gni
+++ b/src/tint/tint.gni
@@ -88,8 +88,8 @@
 ###############################################################################
 # Executables - only built when tint_build_cmds is enabled
 ###############################################################################
-template("tint_executable") {
-  if (tint_build_cmds) {
+if (tint_build_cmds) {
+  template("tint_executable") {
     executable(target_name) {
       forward_variables_from(invoker, "*")
     }