[PATCH] D31363: [libc++] Remove cmake glob for source files

2020-10-28 Thread Louis Dionne via Phabricator via cfe-commits
ldionne added a comment.

In D31363#2360132 , @ldionne wrote:

> This patch isn't necessary anymore, as we don't use globing anymore. Let's 
> abandon it to clean up the review queue.

Actually, I misspoke. We still use it, but only in a few places. If you still 
feel that we should fix this, please rebase onto `master` and I will review. 
Otherwise, let's close this review.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D31363/new/

https://reviews.llvm.org/D31363

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31363: [libc++] Remove cmake glob for source files

2020-10-28 Thread Louis Dionne via Phabricator via cfe-commits
ldionne added a comment.

This patch isn't necessary anymore, as we don't use globing anymore. Let's 
abandon it to clean up the review queue.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D31363/new/

https://reviews.llvm.org/D31363

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31363: [libc++] Remove cmake glob for source files

2020-10-19 Thread Duncan P. N. Exon Smith via Phabricator via cfe-commits
dexonsmith resigned from this revision.
dexonsmith added a reviewer: ldionne.
dexonsmith added a comment.

In D31363#889044 , @smeenai wrote:

> @rjmccall, this adds a libc++ build dependency on LLVM's cmake modules. There 
> were some issues when @zturner had added a similar dependency for his work on 
> lit. To confirm, Apple still cares about the use case of building libc++ 
> without having any LLVM cmake modules available (either from source or from 
> an LLVM installation), right?

We resolved our need for building libcxx without llvm during the monorepo 
transition (2019).


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D31363/new/

https://reviews.llvm.org/D31363

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D31363: [libc++] Remove cmake glob for source files

2017-10-05 Thread Eric Fiselier via cfe-commits
On Thu, Oct 5, 2017 at 10:20 AM, Chris Bieneman via Phabricator <
revi...@reviews.llvm.org> wrote:

> beanz added a comment.
>
> Building libcxx without LLVM's CMake modules is very important, not just
> to Apple.


*Why* is it important? The reason isn't obvious to me. The only additional
cost is downloading the LLVM sources,
and I don't see why that's show stopping. Sure it takes *slightly longer*
than before, but that can't be the issue here, is it?



> This is how several open source distributions work, and it would be a huge
> disservice to break this. Same is true for compiler-rt, libcxxabi,
> libunwind, etc.
>
> Historically we've been drawing the line that building and running tests
> for runtime projects can require LLVM, but building the runtime libraries
> themselves must work without LLVM. I believe that is still the correct line
> to draw.
>
>
> https://reviews.llvm.org/D31363
>
>
>
>
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31363: [libc++] Remove cmake glob for source files

2017-10-05 Thread Chris Bieneman via Phabricator via cfe-commits
beanz added a comment.

Building libcxx without LLVM's CMake modules is very important, not just to 
Apple. This is how several open source distributions work, and it would be a 
huge disservice to break this. Same is true for compiler-rt, libcxxabi, 
libunwind, etc.

Historically we've been drawing the line that building and running tests for 
runtime projects can require LLVM, but building the runtime libraries 
themselves must work without LLVM. I believe that is still the correct line to 
draw.


https://reviews.llvm.org/D31363



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D31363: [libc++] Remove cmake glob for source files

2017-10-04 Thread Zachary Turner via cfe-commits
It’s not, but the point is we’re already skirting the line
On Wed, Oct 4, 2017 at 9:37 PM Duncan P. N. Exon Smith 
wrote:

> I haven't looked at the patch.  If this is guarded behind NOT
> LIBCXX_STANDALONE_BUILD checks, then it's probably fine.
>
>
> On Oct 4, 2017, at 21:36, Zachary Turner  wrote:
>
> This doesn’t match up with what beanz said. While I assume Duncan is the
> final word, can we get some confirmation from beanz that everyone is on the
> same page?
>
> (Note that libcxx already uses some of LLVM’s cmake, but it’s behind some
> NOT LIBCXX_STANDALONE_BUILD checks)
>
> Assuming the answer remains no, what can we do to make code sharing and
> reuse easier? There’s clearly a need to reuse certain low level things and
> not keep reinventing the wheel
> On Wed, Oct 4, 2017 at 9:22 PM Duncan P. N. Exon Smith <
> dexonsm...@apple.com> wrote:
>
>> Thanks correct.
>>
>> > On Oct 4, 2017, at 18:49, Shoaib Meenai via Phabricator via cfe-commits
>>  wrote:
>> >
>> > smeenai added subscribers: zturner, rjmccall.
>> > smeenai added a comment.
>> >
>> > @rjmccall, this adds a libc++ build dependency on LLVM's cmake modules.
>> There were some issues when @zturner had added a similar dependency for his
>> work on lit. To confirm, Apple still cares about the use case of building
>> libc++ without having any LLVM cmake modules available (either from source
>> or from an LLVM installation), right?
>> >
>> >
>> > https://reviews.llvm.org/D31363
>> >
>> >
>> >
>> > ___
>> > cfe-commits mailing list
>> > cfe-commits@lists.llvm.org
>> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>>
>
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D31363: [libc++] Remove cmake glob for source files

2017-10-04 Thread Duncan P. N. Exon Smith via cfe-commits
I haven't looked at the patch.  If this is guarded behind NOT 
LIBCXX_STANDALONE_BUILD checks, then it's probably fine.

> On Oct 4, 2017, at 21:36, Zachary Turner  wrote:
> 
> This doesn’t match up with what beanz said. While I assume Duncan is the 
> final word, can we get some confirmation from beanz that everyone is on the 
> same page?
> 
> (Note that libcxx already uses some of LLVM’s cmake, but it’s behind some NOT 
> LIBCXX_STANDALONE_BUILD checks)
> 
> Assuming the answer remains no, what can we do to make code sharing and reuse 
> easier? There’s clearly a need to reuse certain low level things and not keep 
> reinventing the wheel 
> On Wed, Oct 4, 2017 at 9:22 PM Duncan P. N. Exon Smith  > wrote:
> Thanks correct.
> 
> > On Oct 4, 2017, at 18:49, Shoaib Meenai via Phabricator via cfe-commits 
> > mailto:cfe-commits@lists.llvm.org>> wrote:
> >
> > smeenai added subscribers: zturner, rjmccall.
> > smeenai added a comment.
> >
> > @rjmccall, this adds a libc++ build dependency on LLVM's cmake modules. 
> > There were some issues when @zturner had added a similar dependency for his 
> > work on lit. To confirm, Apple still cares about the use case of building 
> > libc++ without having any LLVM cmake modules available (either from source 
> > or from an LLVM installation), right?
> >
> >
> > https://reviews.llvm.org/D31363 
> >
> >
> >
> > ___
> > cfe-commits mailing list
> > cfe-commits@lists.llvm.org 
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits 
> > 
> 

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D31363: [libc++] Remove cmake glob for source files

2017-10-04 Thread Zachary Turner via cfe-commits
This doesn’t match up with what beanz said. While I assume Duncan is the
final word, can we get some confirmation from beanz that everyone is on the
same page?

(Note that libcxx already uses some of LLVM’s cmake, but it’s behind some
NOT LIBCXX_STANDALONE_BUILD checks)

Assuming the answer remains no, what can we do to make code sharing and
reuse easier? There’s clearly a need to reuse certain low level things and
not keep reinventing the wheel
On Wed, Oct 4, 2017 at 9:22 PM Duncan P. N. Exon Smith 
wrote:

> Thanks correct.
>
> > On Oct 4, 2017, at 18:49, Shoaib Meenai via Phabricator via cfe-commits <
> cfe-commits@lists.llvm.org> wrote:
> >
> > smeenai added subscribers: zturner, rjmccall.
> > smeenai added a comment.
> >
> > @rjmccall, this adds a libc++ build dependency on LLVM's cmake modules.
> There were some issues when @zturner had added a similar dependency for his
> work on lit. To confirm, Apple still cares about the use case of building
> libc++ without having any LLVM cmake modules available (either from source
> or from an LLVM installation), right?
> >
> >
> > https://reviews.llvm.org/D31363
> >
> >
> >
> > ___
> > cfe-commits mailing list
> > cfe-commits@lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
>
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D31363: [libc++] Remove cmake glob for source files

2017-10-04 Thread Duncan P. N. Exon Smith via cfe-commits
Thanks correct.

> On Oct 4, 2017, at 18:49, Shoaib Meenai via Phabricator via cfe-commits 
>  wrote:
> 
> smeenai added subscribers: zturner, rjmccall.
> smeenai added a comment.
> 
> @rjmccall, this adds a libc++ build dependency on LLVM's cmake modules. There 
> were some issues when @zturner had added a similar dependency for his work on 
> lit. To confirm, Apple still cares about the use case of building libc++ 
> without having any LLVM cmake modules available (either from source or from 
> an LLVM installation), right?
> 
> 
> https://reviews.llvm.org/D31363
> 
> 
> 
> ___
> cfe-commits mailing list
> cfe-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31363: [libc++] Remove cmake glob for source files

2017-10-04 Thread John McCall via Phabricator via cfe-commits
rjmccall added a reviewer: dexonsmith.
rjmccall added a comment.

I'll let Duncan answer that question.


https://reviews.llvm.org/D31363



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31363: [libc++] Remove cmake glob for source files

2017-10-04 Thread Shoaib Meenai via Phabricator via cfe-commits
smeenai added subscribers: zturner, rjmccall.
smeenai added a comment.

@rjmccall, this adds a libc++ build dependency on LLVM's cmake modules. There 
were some issues when @zturner had added a similar dependency for his work on 
lit. To confirm, Apple still cares about the use case of building libc++ 
without having any LLVM cmake modules available (either from source or from an 
LLVM installation), right?


https://reviews.llvm.org/D31363



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31363: [libc++] Remove cmake glob for source files

2017-09-14 Thread Shoaib Meenai via Phabricator via cfe-commits
smeenai added a comment.

This depends on https://reviews.llvm.org/D37859 for the `SOURCE_DIR` parameter 
to `llvm_check_source_file_list`.


https://reviews.llvm.org/D31363



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31363: [libc++] Remove cmake glob for source files

2017-09-14 Thread Shoaib Meenai via Phabricator via cfe-commits
smeenai updated this revision to Diff 115259.
smeenai added a comment.
Herald added a subscriber: fedor.sergeev.

Address comments


https://reviews.llvm.org/D31363

Files:
  benchmarks/CMakeLists.txt
  lib/CMakeLists.txt


Index: lib/CMakeLists.txt
===
--- lib/CMakeLists.txt
+++ lib/CMakeLists.txt
@@ -1,13 +1,48 @@
 set(LIBCXX_LIB_CMAKEFILES_DIR 
"${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}"  PARENT_SCOPE)
 
-# Get sources
-# FIXME: Don't use glob here
-file(GLOB LIBCXX_SOURCES ../src/*.cpp)
+include(LLVMProcessSources)
+set(LIBCXX_SOURCES
+  ../src/algorithm.cpp
+  ../src/any.cpp
+  ../src/bind.cpp
+  ../src/chrono.cpp
+  ../src/condition_variable.cpp
+  ../src/debug.cpp
+  ../src/exception.cpp
+  ../src/functional.cpp
+  ../src/future.cpp
+  ../src/hash.cpp
+  ../src/ios.cpp
+  ../src/iostream.cpp
+  ../src/locale.cpp
+  ../src/memory.cpp
+  ../src/mutex.cpp
+  ../src/new.cpp
+  ../src/optional.cpp
+  ../src/random.cpp
+  ../src/regex.cpp
+  ../src/shared_mutex.cpp
+  ../src/stdexcept.cpp
+  ../src/string.cpp
+  ../src/strstream.cpp
+  ../src/system_error.cpp
+  ../src/thread.cpp
+  ../src/typeinfo.cpp
+  ../src/utility.cpp
+  ../src/valarray.cpp
+  ../src/variant.cpp
+  ../src/vector.cpp)
+llvm_check_source_file_list(${LIBCXX_SOURCES} SOURCE_DIR ../src)
 if(WIN32)
-  file(GLOB LIBCXX_WIN32_SOURCES ../src/support/win32/*.cpp)
+  set(LIBCXX_WIN32_SOURCES
+../src/support/win32/locale_win32.cpp
+../src/support/win32/support.cpp)
+  llvm_check_source_file_list(${LIBCXX_WIN32_SOURCES} SOURCE_DIR 
../src/support/win32)
   list(APPEND LIBCXX_SOURCES ${LIBCXX_WIN32_SOURCES})
 elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
-  file(GLOB LIBCXX_SOLARIS_SOURCES ../src/support/solaris/*.cpp)
+  set(LIBCXX_SOLARIS_SOURCES
+../src/support/solaris/xlocale.cpp)
+  llvm_check_source_file_list(${LIBCXX_SOLARIS_SOURCES} SOURCE_DIR 
../src/support/solaris)
   list(APPEND LIBCXX_SOURCES ${LIBCXX_SOLARIS_SOURCES})
 endif()
 
@@ -283,9 +318,15 @@
 add_custom_target(cxx DEPENDS ${LIBCXX_TARGETS})
 
 if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY)
-  file(GLOB LIBCXX_EXPERIMENTAL_SOURCES ../src/experimental/*.cpp)
+  set(LIBCXX_EXPERIMENTAL_SOURCES
+../src/experimental/memory_resource.cpp)
+  llvm_check_source_file_list(${LIBCXX_EXPERIMENTAL_SOURCES} SOURCE_DIR 
../src/experimental)
   if (LIBCXX_ENABLE_FILESYSTEM)
-file(GLOB LIBCXX_FILESYSTEM_SOURCES ../src/experimental/filesystem/*.cpp)
+set(LIBCXX_FILESYSTEM_SOURCES
+  ../src/experimental/filesystem/directory_iterator.cpp
+  ../src/experimental/filesystem/operations.cpp
+  ../src/experimental/filesystem/path.cpp)
+llvm_check_source_file_list(${LIBCXX_FILESYSTEM_SOURCES} SOURCE_DIR 
../src/experimental/filesystem)
   endif()
   add_library(cxx_experimental STATIC ${LIBCXX_EXPERIMENTAL_SOURCES} 
${LIBCXX_FILESYSTEM_SOURCES})
   if (LIBCXX_ENABLE_SHARED)
Index: benchmarks/CMakeLists.txt
===
--- benchmarks/CMakeLists.txt
+++ benchmarks/CMakeLists.txt
@@ -143,7 +143,16 @@
 #==
 # Register Benchmark tests
 #==
-file(GLOB BENCHMARK_TESTS "*.bench.cpp")
+include(LLVMProcessSources)
+set(BENCHMARK_TESTS
+  algorithms.bench.cpp
+  filesystem.bench.cpp
+  string.bench.cpp
+  stringstream.bench.cpp
+  unordered_set_operations.bench.cpp
+  util_smartptr.bench.cpp
+  vector_operations.bench.cpp)
+llvm_check_source_file_list(${BENCHMARK_TESTS})
 foreach(test_path ${BENCHMARK_TESTS})
   get_filename_component(test_file "${test_path}" NAME)
   string(REPLACE ".bench.cpp" "" test_name "${test_file}")


Index: lib/CMakeLists.txt
===
--- lib/CMakeLists.txt
+++ lib/CMakeLists.txt
@@ -1,13 +1,48 @@
 set(LIBCXX_LIB_CMAKEFILES_DIR "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}"  PARENT_SCOPE)
 
-# Get sources
-# FIXME: Don't use glob here
-file(GLOB LIBCXX_SOURCES ../src/*.cpp)
+include(LLVMProcessSources)
+set(LIBCXX_SOURCES
+  ../src/algorithm.cpp
+  ../src/any.cpp
+  ../src/bind.cpp
+  ../src/chrono.cpp
+  ../src/condition_variable.cpp
+  ../src/debug.cpp
+  ../src/exception.cpp
+  ../src/functional.cpp
+  ../src/future.cpp
+  ../src/hash.cpp
+  ../src/ios.cpp
+  ../src/iostream.cpp
+  ../src/locale.cpp
+  ../src/memory.cpp
+  ../src/mutex.cpp
+  ../src/new.cpp
+  ../src/optional.cpp
+  ../src/random.cpp
+  ../src/regex.cpp
+  ../src/shared_mutex.cpp
+  ../src/stdexcept.cpp
+  ../src/string.cpp
+  ../src/strstream.cpp
+  ../src/system_error.cpp
+

[PATCH] D31363: [libc++] Remove cmake glob for source files

2017-03-28 Thread Shoaib Meenai via Phabricator via cfe-commits
smeenai planned changes to this revision.
smeenai added a comment.

I like the idea of verifying that all source files have been included. Will 
amend this accordingly. Thanks for the cmake pointer @beanz!




Comment at: lib/CMakeLists.txt:304
 if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY)
   file(GLOB LIBCXX_EXPERIMENTAL_SOURCES ../src/experimental/*.cpp)
   if (LIBCXX_ENABLE_FILESYSTEM)

EricWF wrote:
> These globs should be fixed as well.
Right, I missed this one.


https://reviews.llvm.org/D31363



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31363: [libc++] Remove cmake glob for source files

2017-03-28 Thread Chris Bieneman via Phabricator via cfe-commits
beanz added a comment.

LLVM has a CMake module "LLVMProcessSources.cmake" which verifies that all 
source files are referenced in the CMakeLists file. Since it is part of the 
LLVM distributed modules, you can re-use it in libcxx.


https://reviews.llvm.org/D31363



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31363: [libc++] Remove cmake glob for source files

2017-03-27 Thread Eric Fiselier via Phabricator via cfe-commits
EricWF added a comment.

Thanks for fixing this. Sucks that we have to manually enumerate source files 
but this is the correct solution according to CMake.

Would it be easy to still use `glob` to verify that none of the source files 
have accidentally been forgotten?




Comment at: lib/CMakeLists.txt:304
 if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY)
   file(GLOB LIBCXX_EXPERIMENTAL_SOURCES ../src/experimental/*.cpp)
   if (LIBCXX_ENABLE_FILESYSTEM)

These globs should be fixed as well.


https://reviews.llvm.org/D31363



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D31363: [libc++] Remove cmake glob for source files

2017-03-24 Thread Shoaib Meenai via Phabricator via cfe-commits
smeenai created this revision.
Herald added a subscriber: mgorny.

Globbing for source files is problematic because if a source file is
added or removed, the configuration won't be run again, and so the build
won't pick up on the added or removed file until the next configuration.
cmake's help explicitly recommends against the use of `file(GLOB)` to
collect a list of source files for the same reason. Switch to an
explicit list of files.

The glob for headers is left intact, partly because there are a ton of
them (courtesy of using `GLOB_RECURSE`), and partly because it shouldn't
affect building, since the header dependency tracking is handled
separately by cmake.


https://reviews.llvm.org/D31363

Files:
  benchmarks/CMakeLists.txt
  lib/CMakeLists.txt


Index: lib/CMakeLists.txt
===
--- lib/CMakeLists.txt
+++ lib/CMakeLists.txt
@@ -2,12 +2,43 @@
 
 # Get sources
 file(GLOB LIBCXX_SOURCES ../src/*.cpp)
+set(LIBCXX_SOURCES
+  ../src/algorithm.cpp
+  ../src/any.cpp
+  ../src/bind.cpp
+  ../src/chrono.cpp
+  ../src/condition_variable.cpp
+  ../src/debug.cpp
+  ../src/exception.cpp
+  ../src/future.cpp
+  ../src/hash.cpp
+  ../src/ios.cpp
+  ../src/iostream.cpp
+  ../src/locale.cpp
+  ../src/memory.cpp
+  ../src/mutex.cpp
+  ../src/new.cpp
+  ../src/optional.cpp
+  ../src/random.cpp
+  ../src/regex.cpp
+  ../src/shared_mutex.cpp
+  ../src/stdexcept.cpp
+  ../src/string.cpp
+  ../src/strstream.cpp
+  ../src/system_error.cpp
+  ../src/thread.cpp
+  ../src/typeinfo.cpp
+  ../src/utility.cpp
+  ../src/valarray.cpp
+  ../src/variant.cpp)
 if(WIN32)
-  file(GLOB LIBCXX_WIN32_SOURCES ../src/support/win32/*.cpp)
-  list(APPEND LIBCXX_SOURCES ${LIBCXX_WIN32_SOURCES})
+  list(APPEND LIBCXX_SOURCES
+ ../src/support/win32/locale_win32.cpp
+ ../src/support/win32/support.cpp)
 elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
   file(GLOB LIBCXX_SOLARIS_SOURCES ../src/support/solaris/*.cpp)
-  list(APPEND LIBCXX_SOURCES ${LIBCXX_SOLARIS_SOURCES})
+  list(APPEND LIBCXX_SOURCES
+ ../src/support/solaris/xlocale.cpp)
 endif()
 
 # Add all the headers to the project for IDEs.
Index: benchmarks/CMakeLists.txt
===
--- benchmarks/CMakeLists.txt
+++ benchmarks/CMakeLists.txt
@@ -141,7 +141,13 @@
 #==
 # Register Benchmark tests
 #==
-file(GLOB BENCHMARK_TESTS "*.bench.cpp")
+set(BENCHMARK_TESTS
+  algorithms.bench.cpp
+  filesystem.bench.cpp
+  string.bench.cpp
+  unordered_set_operations.bench.cpp
+  util_smartptr.bench.cpp
+  vector_operations.bench.cpp)
 foreach(test_path ${BENCHMARK_TESTS})
   get_filename_component(test_file "${test_path}" NAME)
   string(REPLACE ".bench.cpp" "" test_name "${test_file}")


Index: lib/CMakeLists.txt
===
--- lib/CMakeLists.txt
+++ lib/CMakeLists.txt
@@ -2,12 +2,43 @@
 
 # Get sources
 file(GLOB LIBCXX_SOURCES ../src/*.cpp)
+set(LIBCXX_SOURCES
+  ../src/algorithm.cpp
+  ../src/any.cpp
+  ../src/bind.cpp
+  ../src/chrono.cpp
+  ../src/condition_variable.cpp
+  ../src/debug.cpp
+  ../src/exception.cpp
+  ../src/future.cpp
+  ../src/hash.cpp
+  ../src/ios.cpp
+  ../src/iostream.cpp
+  ../src/locale.cpp
+  ../src/memory.cpp
+  ../src/mutex.cpp
+  ../src/new.cpp
+  ../src/optional.cpp
+  ../src/random.cpp
+  ../src/regex.cpp
+  ../src/shared_mutex.cpp
+  ../src/stdexcept.cpp
+  ../src/string.cpp
+  ../src/strstream.cpp
+  ../src/system_error.cpp
+  ../src/thread.cpp
+  ../src/typeinfo.cpp
+  ../src/utility.cpp
+  ../src/valarray.cpp
+  ../src/variant.cpp)
 if(WIN32)
-  file(GLOB LIBCXX_WIN32_SOURCES ../src/support/win32/*.cpp)
-  list(APPEND LIBCXX_SOURCES ${LIBCXX_WIN32_SOURCES})
+  list(APPEND LIBCXX_SOURCES
+ ../src/support/win32/locale_win32.cpp
+ ../src/support/win32/support.cpp)
 elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
   file(GLOB LIBCXX_SOLARIS_SOURCES ../src/support/solaris/*.cpp)
-  list(APPEND LIBCXX_SOURCES ${LIBCXX_SOLARIS_SOURCES})
+  list(APPEND LIBCXX_SOURCES
+ ../src/support/solaris/xlocale.cpp)
 endif()
 
 # Add all the headers to the project for IDEs.
Index: benchmarks/CMakeLists.txt
===
--- benchmarks/CMakeLists.txt
+++ benchmarks/CMakeLists.txt
@@ -141,7 +141,13 @@
 #==
 # Register Benchmark tests
 #==
-file(GLOB BENCHMARK_TESTS "*.benc