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 "*.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}")
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to