[pstl] Add a __pstl_config_site header to record the CMake configuration

This commit adds a __pstl_config_site header that contains the value of
macros specified at CMake configuration time. It works similarly to
libc++'s __config_site header, except we always include it as a separate
file instead of concatenating it to the main configuration header.

It is necessary to thread the includes for that header into libc++'s
lit configuration, otherwise we'd be requiring an installation step
prior to running the test suite.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@368284 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/lit.site.cfg.in b/test/lit.site.cfg.in
index b5b390d..fd3d7d8 100644
--- a/test/lit.site.cfg.in
+++ b/test/lit.site.cfg.in
@@ -33,7 +33,8 @@
 config.debug_build              = @LIBCXX_DEBUG_BUILD@
 config.libcxxabi_shared         = @LIBCXXABI_ENABLE_SHARED@
 config.cxx_ext_threads          = @LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY@
-config.pstl_root                = "@ParallelSTL_SOURCE_DIR@" if @LIBCXX_ENABLE_PARALLEL_ALGORITHMS@ else None
+config.pstl_src_root            = "@ParallelSTL_SOURCE_DIR@" if @LIBCXX_ENABLE_PARALLEL_ALGORITHMS@ else None
+config.pstl_obj_root            = "@ParallelSTL_BINARY_DIR@" if @LIBCXX_ENABLE_PARALLEL_ALGORITHMS@ else None
 
 # Let the main config do the real work.
 config.loaded_site_config = True
diff --git a/utils/libcxx/test/config.py b/utils/libcxx/test/config.py
index 09ba9cf..e074df3 100644
--- a/utils/libcxx/test/config.py
+++ b/utils/libcxx/test/config.py
@@ -582,10 +582,12 @@
         self.cxx.compile_flags += ['-I' + support_path]
 
         # Add includes for the PSTL headers
-        pstl_root = self.get_lit_conf('pstl_root')
-        if pstl_root is not None:
-            self.cxx.compile_flags += ['-I' + os.path.join(pstl_root, 'include')]
-            self.cxx.compile_flags += ['-I' + os.path.join(pstl_root, 'test')]
+        pstl_src_root = self.get_lit_conf('pstl_src_root')
+        pstl_obj_root = self.get_lit_conf('pstl_obj_root')
+        if pstl_src_root is not None and pstl_obj_root is not None:
+            self.cxx.compile_flags += ['-I' + os.path.join(pstl_src_root, 'include')]
+            self.cxx.compile_flags += ['-I' + os.path.join(pstl_obj_root, 'generated_headers')]
+            self.cxx.compile_flags += ['-I' + os.path.join(pstl_src_root, 'test')]
             self.config.available_features.add('parallel-algorithms')
 
         # FIXME(EricWF): variant_size.pass.cpp requires a slightly larger