scripts: Move path helper into common_codegen.py

Change-Id: I0b66a8d42aa8a6ab5205d496de3df8fc253e2a54
diff --git a/scripts/common_codegen.py b/scripts/common_codegen.py
index 4adb329..a3d95e7 100644
--- a/scripts/common_codegen.py
+++ b/scripts/common_codegen.py
@@ -20,7 +20,6 @@
 
 import os,re,sys,string
 import xml.etree.ElementTree as etree
-from generator import *
 from collections import namedtuple, OrderedDict
 
 # Copyright text prefixing all headers (list of strings).
@@ -106,3 +105,8 @@
     outdent = re.sub(fake_indent, indent, string_out)
     return outdent[1:]
 
+
+# helper to define paths relative to the repo root
+def repo_relative(path):
+    return os.path.abspath(os.path.join(os.path.dirname(__file__), '..', path))
+
diff --git a/scripts/generate_source.py b/scripts/generate_source.py
index 4b3b606..3c448ad 100755
--- a/scripts/generate_source.py
+++ b/scripts/generate_source.py
@@ -19,6 +19,7 @@
 # Author: Mike Schuchardt <mikes@lunarg.com>
 
 import argparse
+import common_codegen
 import filecmp
 import os
 import shutil
@@ -29,10 +30,6 @@
 # files to exclude from --verify check
 verify_exclude = ['.clang-format']
 
-# helper to define paths relative to this file
-def script_relative(path):
-    return os.path.abspath(os.path.join(os.path.dirname(__file__), path))
-
 def main(argv):
     parser = argparse.ArgumentParser(description='Generate source code for this repository')
     parser.add_argument('registry', metavar='REGISTRY_PATH', help='path to the Vulkan-Headers registry directory')
@@ -41,7 +38,7 @@
     group.add_argument('-v', '--verify', action='store_true', help='verify repo files match generator output')
     args = parser.parse_args(argv)
 
-    gen_cmds = [*[[script_relative('lvl_genvk.py'),
+    gen_cmds = [*[[common_codegen.repo_relative('scripts/lvl_genvk.py'),
                    '-registry', os.path.abspath(os.path.join(args.registry,  'vk.xml')),
                    '-quiet',
                    filename] for filename in ["chassis.cpp",
@@ -62,15 +59,15 @@
                                               "vk_safe_struct.cpp",
                                               "vk_safe_struct.h",
                                               "vk_typemap_helper.h"]],
-                [script_relative('vk_validation_stats.py'),
+                [common_codegen.repo_relative('scripts/vk_validation_stats.py'),
                  os.path.abspath(os.path.join(args.registry, 'validusage.json')),
                  '-export_header'],
-                [script_relative('external_revision_generator.py'),
-                 '--rev_file', script_relative('known_good.json'),
+                [common_codegen.repo_relative('scripts/external_revision_generator.py'),
+                 '--rev_file', common_codegen.repo_relative('scripts/known_good.json'),
                  '-s', 'SPIRV_TOOLS_COMMIT_ID',
                  '-o', 'spirv_tools_commit_id.h']]
 
-    repo_dir = script_relative('../layers/generated')
+    repo_dir = common_codegen.repo_relative('layers/generated')
 
     # get directory where generators will run
     if args.verify or args.incremental:
diff --git a/scripts/vk_validation_stats.py b/scripts/vk_validation_stats.py
index f4ab2ce..e6c97da 100755
--- a/scripts/vk_validation_stats.py
+++ b/scripts/vk_validation_stats.py
@@ -21,14 +21,15 @@
 # Author: Shannon McPherson <shannon@lunarg.com>
 
 import argparse
-import os
-import sys
-import operator
-import platform
-import json
-import re
+import common_codegen
 import csv
 import html
+import json
+import operator
+import os
+import platform
+import re
+import sys
 import time
 from collections import defaultdict
 
@@ -47,31 +48,27 @@
 dealias_khr = True
 ignore_unassigned = True # These are not found in layer code unless they appear explicitly (most don't), so produce false positives
 
-# helper to define paths relative to this file
-def script_relative(path):
-    return os.path.abspath(os.path.join(os.path.dirname(__file__), path))
-
-layer_source_files = [script_relative(path) for path in [
-    '../layers/buffer_validation.cpp',
-    '../layers/core_validation.cpp',
-    '../layers/descriptor_sets.cpp',
-    '../layers/drawdispatch.cpp',
-    '../layers/parameter_validation_utils.cpp',
-    '../layers/object_tracker_utils.cpp',
-    '../layers/shader_validation.cpp',
-    '../layers/stateless_validation.h',
-    '../layers/generated/parameter_validation.cpp',
-    '../layers/generated/object_tracker.cpp',
+layer_source_files = [common_codegen.repo_relative(path) for path in [
+    'layers/buffer_validation.cpp',
+    'layers/core_validation.cpp',
+    'layers/descriptor_sets.cpp',
+    'layers/drawdispatch.cpp',
+    'layers/parameter_validation_utils.cpp',
+    'layers/object_tracker_utils.cpp',
+    'layers/shader_validation.cpp',
+    'layers/stateless_validation.h',
+    'layers/generated/parameter_validation.cpp',
+    'layers/generated/object_tracker.cpp',
 ]]
 
-test_source_files = [script_relative(path) for path in [
-    '../tests/layer_validation_tests.cpp',
-    '../tests/vklayertests_buffer_image_memory_sampler.cpp',
-    '../tests/vklayertests_command.cpp',
-    '../tests/vklayertests_descriptor_renderpass_framebuffer.cpp',
-    '../tests/vklayertests_others.cpp',
-    '../tests/vklayertests_pipeline_shader.cpp',
-    '../tests/vkpositivelayertests.cpp',
+test_source_files = [common_codegen.repo_relative(path) for path in [
+    'tests/layer_validation_tests.cpp',
+    'tests/vklayertests_buffer_image_memory_sampler.cpp',
+    'tests/vklayertests_command.cpp',
+    'tests/vklayertests_descriptor_renderpass_framebuffer.cpp',
+    'tests/vklayertests_others.cpp',
+    'tests/vklayertests_pipeline_shader.cpp',
+    'tests/vkpositivelayertests.cpp',
 ]]
 
 # This needs to be updated as new extensions roll in