]> granicus.if.org Git - clang/commitdiff
Prevent accidental in-source builds with CMake, and detect when there are
authorChandler Carruth <chandlerc@gmail.com>
Sat, 17 Apr 2010 20:12:02 +0000 (20:12 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sat, 17 Apr 2010 20:12:02 +0000 (20:12 +0000)
generated files from a previous in-source builds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101665 91177308-0d34-0410-b5e6-96231b3b80d8

CMakeLists.txt

index 2001c7125d9a20122c0db3a41b3c3f898f525d77..e91fb43f34822c36cbce62acf2bcf7fdf6c2f1b6 100644 (file)
@@ -8,6 +8,26 @@ configure_file(
 set(CLANG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 set(CLANG_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
 
+if( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT MSVC_IDE )
+  message(FATAL_ERROR "In-source builds are not allowed. CMake would overwrite "
+"the makefiles distributed with LLVM. Please create a directory and run cmake "
+"from there, passing the path to this source directory as the last argument. "
+"This process created the file `CMakeCache.txt' and the directory "
+"`CMakeFiles'. Please delete them.")
+endif()
+
+if( NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR )
+  file(GLOB_RECURSE
+    tablegenned_files_on_include_dir
+    "${CLANG_SOURCE_DIR}/include/clang/*.inc")
+  if( tablegenned_files_on_include_dir )
+    message(FATAL_ERROR "Apparently there is a previous in-source build, "
+"probably as the result of running `configure' and `make' on "
+"${CLANG_SOURCE_DIR}. This may cause problems. The suspicious files are:\n"
+"${tablegenned_files_on_include_dir}\nPlease clean the source directory.")
+  endif()
+endif()
+
 # Compute the Clang version from the contents of VER
 file(READ ${CMAKE_CURRENT_SOURCE_DIR}/VER CLANG_VERSION_DATA)
 string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION