[llvm] r341590 - Fix a configure issue with Visual Studio generators.

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 6 15:00:38 PDT 2018


Author: zturner
Date: Thu Sep  6 15:00:38 2018
New Revision: 341590

URL: http://llvm.org/viewvc/llvm-project?rev=341590&view=rev
Log:
Fix a configure issue with Visual Studio generators.

We can't put the unittest source dir map in the configuration
specific directory because VS doesn't have a configure-specific
directory, instead it only knows this at runtime.  So we have
to remove this from the path.  This in turn means that the path
will be slightly different in VS configurations vs non vs
configurations.  In the former, the source map will be in the
parent directory of the executable, and in the latter it will
be in the same directory as the executable.  So check both.

Modified:
    llvm/trunk/cmake/modules/AddLLVM.cmake
    llvm/trunk/lib/Testing/Support/SupportHelpers.cpp

Modified: llvm/trunk/cmake/modules/AddLLVM.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/AddLLVM.cmake?rev=341590&r1=341589&r2=341590&view=diff
==============================================================================
--- llvm/trunk/cmake/modules/AddLLVM.cmake (original)
+++ llvm/trunk/cmake/modules/AddLLVM.cmake Thu Sep  6 15:00:38 2018
@@ -1116,7 +1116,7 @@ function(add_unittest test_suite test_na
   set(LLVM_UNITTEST_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
   configure_file(
     ${LLVM_MAIN_SRC_DIR}/unittests/unittest.cfg.in
-    ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llvm.srcdir.txt)
+    ${CMAKE_CURRENT_BINARY_DIR}/llvm.srcdir.txt)
 
   add_dependencies(${test_suite} ${test_name})
   get_target_property(test_suite_folder ${test_suite} FOLDER)

Modified: llvm/trunk/lib/Testing/Support/SupportHelpers.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Testing/Support/SupportHelpers.cpp?rev=341590&r1=341589&r2=341590&view=diff
==============================================================================
--- llvm/trunk/lib/Testing/Support/SupportHelpers.cpp (original)
+++ llvm/trunk/lib/Testing/Support/SupportHelpers.cpp Thu Sep  6 15:00:38 2018
@@ -13,22 +13,43 @@
 using namespace llvm;
 using namespace llvm::unittest;
 
+static std::pair<bool, SmallString<128>> findSrcDirMap(StringRef Argv0) {
+  SmallString<128> BaseDir = llvm::sys::path::parent_path(Argv0);
+
+  llvm::sys::fs::make_absolute(BaseDir);
+
+  SmallString<128> PathInSameDir = BaseDir;
+  llvm::sys::path::append(PathInSameDir, "llvm.srcdir.txt");
+
+  if (llvm::sys::fs::is_regular_file(PathInSameDir))
+    return std::make_pair(true, std::move(PathInSameDir));
+
+  SmallString<128> PathInParentDir = llvm::sys::path::parent_path(BaseDir);
+
+  llvm::sys::path::append(PathInParentDir, "llvm.srcdir.txt");
+  if (llvm::sys::fs::is_regular_file(PathInParentDir))
+    return std::make_pair(true, std::move(PathInParentDir));
+
+  return std::pair<bool, SmallString<128>>(false, "");
+}
+
+static bool isInParentDir(StringRef Argv0) {}
+
 SmallString<128> llvm::unittest::getInputFileDirectory(const char *Argv0) {
-  llvm::SmallString<128> Result = llvm::sys::path::parent_path(Argv0);
-  llvm::sys::fs::make_absolute(Result);
-  llvm::sys::path::append(Result, "llvm.srcdir.txt");
+  bool Found = false;
+  SmallString<128> InputFilePath;
+  std::tie(Found, InputFilePath) = findSrcDirMap(Argv0);
 
-  EXPECT_TRUE(llvm::sys::fs::is_regular_file(Result))
-      << "Unit test source directory file does not exist.";
+  EXPECT_TRUE(Found) << "Unit test source directory file does not exist.";
 
-  auto File = MemoryBuffer::getFile(Result);
+  auto File = MemoryBuffer::getFile(InputFilePath);
 
   EXPECT_TRUE(static_cast<bool>(File))
       << "Could not open unit test source directory file.";
 
-  Result.clear();
-  Result.append((*File)->getBuffer().trim());
-  llvm::sys::path::append(Result, "Inputs");
-  llvm::sys::path::native(Result);
-  return Result;
+  InputFilePath.clear();
+  InputFilePath.append((*File)->getBuffer().trim());
+  llvm::sys::path::append(InputFilePath, "Inputs");
+  llvm::sys::path::native(InputFilePath);
+  return InputFilePath;
 }




More information about the llvm-commits mailing list