Move the feature test macros script to the utils directory.

It doesn't make a lot of sense to keep it with the tests,
deep into the test suite directonies.

llvm-svn: 352970
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: 508da4156aa6b0fd9c4a0146922268d6320fb679
diff --git a/docs/DesignDocs/FeatureTestMacros.rst b/docs/DesignDocs/FeatureTestMacros.rst
index d55af96..2fbba65 100644
--- a/docs/DesignDocs/FeatureTestMacros.rst
+++ b/docs/DesignDocs/FeatureTestMacros.rst
@@ -9,7 +9,9 @@
 ========
 
 Libc++ implements the C++ feature test macros as specified in the C++2a standard,
-and before that in non-normative guiding documents (`See cppreference <https://en.cppreference.com/w/User:D41D8CD98F/feature_testing_macros>`)
+and before that in non-normative guiding documents
+(`See cppreference <https://en.cppreference.com/w/User:D41D8CD98F/feature_testing_macros>`_)
+
 
 Design
 ======
@@ -23,8 +25,7 @@
 have enough information to automatically generate the `<version>` header,
 the tests, and the documentation.
 
-Therefore we maintain a SSoA in
-`libcxx/test/std/language.support/support.limits/support.limits.general/generate_feature_test_macro_components.py`
+Therefore we maintain a SSoA in `libcxx/utils/generate_feature_test_macro_components.py`
 which doubles as a script to generate the following components:
 
 * The `<version>` header.
@@ -41,4 +42,4 @@
 and the script should be re-ran. The script will clobber the existing test files
 and the documentation and it will generate a new `<version>` header as a
 temporary file. The generated `<version>` header should be merged with the
-existing one.
\ No newline at end of file
+existing one.
diff --git a/test/std/language.support/support.limits/support.limits.general/generate_feature_test_macro_components.py b/utils/generate_feature_test_macro_components.py
similarity index 96%
rename from test/std/language.support/support.limits/support.limits.general/generate_feature_test_macro_components.py
rename to utils/generate_feature_test_macro_components.py
index 00b63d5..2bd80a8 100755
--- a/test/std/language.support/support.limits/support.limits.general/generate_feature_test_macro_components.py
+++ b/utils/generate_feature_test_macro_components.py
@@ -4,21 +4,22 @@
 import tempfile
 
 def get_libcxx_paths():
-  script_path = os.path.dirname(os.path.abspath(__file__))
+  utils_path = os.path.dirname(os.path.abspath(__file__))
   script_name = os.path.basename(__file__)
-  assert os.path.exists(script_path)
-  depth = 5
-  src_root = script_path
-  for _ in xrange(0, 5):
-    src_root = os.path.dirname(src_root)
+  assert os.path.exists(utils_path)
+  src_root = os.path.dirname(utils_path)
   include_path = os.path.join(src_root, 'include')
   assert os.path.exists(include_path)
   docs_path = os.path.join(src_root, 'docs')
   assert os.path.exists(docs_path)
-  return script_path, script_name, src_root, include_path, docs_path
+  macro_test_path = os.path.join(src_root, 'test', 'std', 'language.support',
+                            'support.limits', 'support.limits.general')
+  assert os.path.exists(macro_test_path)
+  assert os.path.exists(os.path.join(macro_test_path, 'version.version.pass.cpp'))
+  return script_name, src_root, include_path, docs_path, macro_test_path
 
 
-script_path, script_name, source_root, include_path, docs_path = get_libcxx_paths()
+script_name, source_root, include_path, docs_path, macro_test_path = get_libcxx_paths()
 
 def has_header(h):
   h_path = os.path.join(include_path, h)
@@ -874,7 +875,7 @@
            cxx17_tests=generate_std_test(test_list, 'c++17').strip(),
            cxx2a_tests=generate_std_test(test_list, 'c++2a').strip())
     test_name = "{header}.version.pass.cpp".format(header=h)
-    out_path = os.path.join(script_path, test_name)
+    out_path = os.path.join(macro_test_path, test_name)
     with open(out_path, 'w') as f:
       f.write(test_body)