summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Tests/OutOfSource/OutOfSourceSubdir/CMakeLists.txt16
1 files changed, 14 insertions, 2 deletions
diff --git a/Tests/OutOfSource/OutOfSourceSubdir/CMakeLists.txt b/Tests/OutOfSource/OutOfSourceSubdir/CMakeLists.txt
index 4daf425..c5eb71e 100644
--- a/Tests/OutOfSource/OutOfSourceSubdir/CMakeLists.txt
+++ b/Tests/OutOfSource/OutOfSourceSubdir/CMakeLists.txt
@@ -9,8 +9,20 @@ IF ("${PROJECT_SOURCE_DIR}" STREQUAL "${ANOTHER_PROJ_SOURCE_DIR}")
# test cmLocalGenerator::CreateSafeUniqueObjectFileName.
GET_FILENAME_COMPONENT(DEEPDIR
${OutOfSource_BINARY_DIR}/../OutOfSourceDeep/deeper ABSOLUTE)
- # MAXPATH = 250 less 25 for /and/deeper/simple.cxx part and small safety
- MATH(EXPR MAXPATH "250 - 25")
+
+ # The maximum allowed path length on Windows is near this value.
+ SET(MAXPATH "250")
+
+ # VS8 adds "OutOfSource/SubDir/OutOfSourceSubdir/../../../" to the
+ # path of the source file for no good reason. Reduce the length
+ # limit by 46 characters to account for it. It should still be long
+ # enough to require special object file name conversion.
+ IF(${CMAKE_GENERATOR} MATCHES "Visual Studio 8")
+ MATH(EXPR MAXPATH "${MAXPATH} - 46")
+ ENDIF(${CMAKE_GENERATOR} MATCHES "Visual Studio 8")
+
+ # MAXPATH less 25 for last /and/deeper/simple.cxx part and small safety
+ MATH(EXPR MAXPATH "${MAXPATH} - 25")
STRING(LENGTH "${DEEPDIR}" DEEPDIR_LEN)
WHILE("${DEEPDIR_LEN}" LESS "${MAXPATH}")
SET(DEEPDIR ${DEEPDIR}/and/deeper)