CMake/Tests/Complex/Library/CMakeLists.txt
Kitware Robot 9db3116226 Remove CMake-language block-end command arguments
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
2012-08-13 14:19:16 -04:00

141 lines
4.8 KiB
CMake

remove_definitions(-DCMAKE_IS_REALLY_FUN)
#
# Small utility used to create file
# UTILITY_SOURCE is used for coverage and for getting the exact name
# of the executable.
#
utility_source(CREATE_FILE_EXE create_file "." create_file.cxx)
add_executable(create_file create_file.cxx)
set_target_properties(create_file PROPERTIES RUNTIME_OUTPUT_DIRECTORY ".")
#
# Create static library
# SOURCE_FILES_REMOVE is used for Coverage. empty.h is included for coverage
#
aux_source_directory(ExtraSources LibrarySources)
set(LibrarySources ${LibrarySources}
file2
empty
create_file.cxx
GENERATED
nonexisting_file)
remove(LibrarySources create_file.cxx GENERATED nonexisting_file)
add_library(CMakeTestLibrary ${LibrarySources})
if(WIN32)
if(NOT CYGWIN)
if(NOT BORLAND)
if(NOT MINGW)
target_link_libraries(CMakeTestLibrary
debug
user32.lib)
target_link_libraries(CMakeTestLibrary
optimized
kernel32.lib)
endif()
endif()
endif()
endif()
#
# Create shared library
#
set(SharedLibrarySources sharedFile)
add_library(CMakeTestLibraryShared SHARED ${SharedLibrarySources})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DTEST_C_FLAGS")
add_library(CMakeTestCLibraryShared SHARED testConly.c)
define_property(
TARGET PROPERTY FOO
BRIEF_DOCS "a test property"
FULL_DOCS "A simple etst proerty that means nothign and is used for nothing"
)
set_target_properties(CMakeTestCLibraryShared PROPERTIES FOO BAR)
if(NOT BEOS AND NOT WIN32) # No libm on BeOS.
set_target_properties(CMakeTestCLibraryShared PROPERTIES LINK_FLAGS "-lm")
endif()
get_target_property(FOO_BAR_VAR CMakeTestCLibraryShared FOO)
if(${FOO_BAR_VAR} MATCHES "BAR")
else()
message(SEND_ERROR "SET_TARGET_PROPERTIES or GET_TARGET_PROPERTY failed, FOO_BAR_VAR should be BAR, but is ${FOO_BAR_VAR}")
endif()
# Create static and shared lib of same name.
if(CMAKE_EXE_LINK_STATIC_CXX_FLAGS)
add_library(CMakeTestLinkStatic STATIC TestLink.c)
add_library(CMakeTestLinkShared SHARED TestLink.c)
set_target_properties(CMakeTestLinkStatic CMakeTestLinkShared
PROPERTIES OUTPUT_NAME CMakeTestLink)
endif()
#
# Attach pre-build/pre-link/post-build custom-commands to the lib.
# Each runs ${CREATE_FILE_EXE} which will create a file.
# The 'complex' executable will then test if this file exists and remove it.
#
add_dependencies(CMakeTestLibraryShared create_file)
message("complex bin dir is ${Complex_BINARY_DIR}")
add_custom_command(TARGET CMakeTestLibraryShared PRE_BUILD
COMMAND ${CREATE_FILE_EXE}
ARGS "${Complex_BINARY_DIR}/Library/prebuild.txt")
add_custom_command(TARGET CMakeTestLibraryShared PRE_BUILD
COMMAND ${CREATE_FILE_EXE}
ARGS "${Complex_BINARY_DIR}/Library/prelink.txt")
add_custom_command(TARGET CMakeTestLibraryShared POST_BUILD
COMMAND ${CREATE_FILE_EXE}
ARGS "${Complex_BINARY_DIR}/Library/postbuild.txt")
add_custom_command(TARGET CMakeTestLibraryShared POST_BUILD
COMMAND ${CMAKE_COMMAND}
ARGS -E copy
"${Complex_BINARY_DIR}/Library/postbuild.txt"
"${Complex_BINARY_DIR}/Library/postbuild2.txt")
#
# Add a custom target.
# It runs ${CREATE_FILE_EXE} which will create a file.
# The 'complex' executable will then test if this file exists and remove it.
#
add_custom_target(custom_target1
ALL
${CREATE_FILE_EXE}
"${Complex_BINARY_DIR}/Library/custom_target1.txt")
add_dependencies(custom_target1 create_file)
#
# Extra coverage
#
set_source_files_properties(file2 PROPERTIES ABSTRACT 1)
install_files(/tmp .h ${Complex_BINARY_DIR}/cmTestConfigure.h)
install_files(/tmp .cxx ${Complex_BINARY_DIR}/cmTestConfigure.h)
# Test creating a library that is not built by default.
add_library(notInAllLib EXCLUDE_FROM_ALL notInAllLib.cxx)
# Create an imported target for if(TARGET) test in Executable dir.
# That test should not see this target.
add_library(LibImportedTarget UNKNOWN IMPORTED)
# Test generation of preprocessed sources.
if("${CMAKE_GENERATOR}" MATCHES "Makefile" AND CMAKE_MAKE_PROGRAM)
if(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE)
# Skip running this part of the test on certain platforms
# until they are fixed.
set(MAYBE_ALL ALL)
list(LENGTH CMAKE_OSX_ARCHITECTURES ARCH_COUNT)
if(ARCH_COUNT GREATER 1)
# OSX does not support preprocessing more than one architecture.
set(MAYBE_ALL)
endif()
# Custom target to try preprocessing invocation.
add_custom_target(test_preprocess ${MAYBE_ALL}
COMMAND ${CMAKE_COMMAND} -E remove CMakeFiles/create_file.dir/create_file.i
COMMAND ${CMAKE_MAKE_PROGRAM} create_file.i
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/test_preprocess.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
endif()
endif()