9db3116226
Ancient versions of CMake required else(), endif(), and similar block termination commands to have arguments matching the command starting the block. This is no longer the preferred style. Run the following shell code: for c in else endif endforeach endfunction endmacro endwhile; do echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/' done >convert.sed && git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' | egrep -z -v '^(Utilities/cm|Source/kwsys/)' | egrep -z -v 'Tests/CMakeTests/While-Endwhile-' | xargs -0 sed -i -f convert.sed && rm convert.sed
63 lines
2.3 KiB
CMake
63 lines
2.3 KiB
CMake
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
if ("${PROJECT_SOURCE_DIR}" STREQUAL "${ANOTHER_PROJ_SOURCE_DIR}")
|
|
set(BUILD_SHARED_LIBS 1)
|
|
|
|
# Construct a source file outside the tree whose full path is close to
|
|
# the path length limit. This will cause the full path to the object
|
|
# file in the build tree to exceed the maximum path length which will
|
|
# test cmLocalGenerator::CreateSafeUniqueObjectFileName.
|
|
get_filename_component(DEEPDIR
|
|
${OutOfSource_BINARY_DIR}/../OutOfSourceDeep/deeper ABSOLUTE)
|
|
|
|
# Test giving the generator a custom limit.
|
|
set(CMAKE_OBJECT_PATH_MAX 220)
|
|
|
|
# Use a separate variable for computation.
|
|
set(MAXPATH "${CMAKE_OBJECT_PATH_MAX}")
|
|
|
|
# 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|10)")
|
|
math(EXPR MAXPATH "${MAXPATH} - 46")
|
|
endif()
|
|
|
|
# Ninja imposes a maximum path component count of 30. Permit more
|
|
# path components in the source path.
|
|
if(${CMAKE_GENERATOR} MATCHES "Ninja")
|
|
math(EXPR MAXPATH "${MAXPATH} - 44")
|
|
endif()
|
|
|
|
# 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)
|
|
string(LENGTH "${DEEPDIR}" DEEPDIR_LEN)
|
|
endwhile()
|
|
set(DEEPSRC ${DEEPDIR}/simple.cxx)
|
|
string(LENGTH "${DEEPSRC}" DEEPSRC_LEN)
|
|
configure_file(simple.cxx.in ${DEEPSRC} COPYONLY)
|
|
|
|
# Watcom WMake seems to have problems with long command lines. Just
|
|
# disable this part of the test until it is resolved.
|
|
if(${CMAKE_GENERATOR} MATCHES "Watcom WMake")
|
|
set(DEEPSRC "")
|
|
add_definitions(-DNO_DEEPSRC)
|
|
endif()
|
|
|
|
add_library(testlib testlib.cxx)
|
|
add_executable (simple simple.cxx ../simple.cxx ${DEEPSRC})
|
|
target_link_libraries(simple testlib outlib)
|
|
endif ()
|
|
|
|
# test getting a definition from a subdir
|
|
set (WEASELS SIZZLING)
|
|
|
|
get_directory_property(incDirs INCLUDE_DIRECTORIES)
|
|
if(NOT incDirs)
|
|
message(FATAL_ERROR "get_directory_property(INCLUDE_DIRECTORIES) returned empty list")
|
|
endif()
|