8be93fc487
Some system headers may define macros that interfere with preprocessor tests in KWIML headers. Test this case to be sure that the verification checks at the bottom of the headers do not fail.
71 lines
2.3 KiB
CMake
71 lines
2.3 KiB
CMake
#=============================================================================
|
|
# Kitware Information Macro Library
|
|
# Copyright 2010-2011 Kitware, Inc.
|
|
#
|
|
# Distributed under the OSI-approved BSD License (the "License");
|
|
# see accompanying file Copyright.txt for details.
|
|
#
|
|
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
# See the License for more information.
|
|
#=============================================================================
|
|
|
|
set(test_defs KWIML_NAMESPACE=${KWIML})
|
|
|
|
# Tell CMake how to follow dependencies of sources in this directory.
|
|
set_property(DIRECTORY
|
|
PROPERTY IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
|
|
"KWIML_HEADER(%)=<${KWIML}/%>"
|
|
)
|
|
|
|
# Suppress printf/scanf format warnings; we test if the sizes match.
|
|
foreach(lang C CXX)
|
|
if(KWIML_LANGUAGE_${lang} AND "${CMAKE_${lang}_COMPILER_ID}" STREQUAL GNU)
|
|
set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} -Wno-format")
|
|
endif()
|
|
endforeach()
|
|
|
|
if(KWIML_LANGUAGE_C)
|
|
set(test_srcs test.c)
|
|
else()
|
|
set(test_srcs test.cxx)
|
|
endif()
|
|
if(KWIML_LANGUAGE_C)
|
|
list(APPEND test_defs KWIML_LANGUAGE_C)
|
|
list(APPEND test_srcs
|
|
test_ABI_C.c
|
|
test_INT_C.c
|
|
test_include_C.c
|
|
)
|
|
endif()
|
|
if(KWIML_LANGUAGE_CXX)
|
|
list(APPEND test_defs KWIML_LANGUAGE_CXX)
|
|
list(APPEND test_srcs
|
|
test_ABI_CXX.cxx
|
|
test_INT_CXX.cxx
|
|
test_include_CXX.cxx
|
|
)
|
|
endif()
|
|
|
|
foreach(th test_ABI_endian test_INT_format)
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${th}.h.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/${th}.h @ONLY)
|
|
endforeach()
|
|
include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
|
|
add_executable(${KWIML}_test ${test_srcs})
|
|
set_property(TARGET ${KWIML}_test PROPERTY COMPILE_DEFINITIONS ${test_defs})
|
|
set_property(TARGET ${KWIML}_test PROPERTY
|
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
|
add_test(${KWIML}.test ${CMAKE_CURRENT_BINARY_DIR}/${KWIML}_test)
|
|
set_property(TEST ${KWIML}.test PROPERTY LABELS ${KWIML_LABELS_TEST})
|
|
|
|
# Xcode 2.x forgets to create the output directory before linking
|
|
# the individual architectures.
|
|
if(CMAKE_OSX_ARCHITECTURES AND XCODE
|
|
AND NOT "${XCODE_VERSION}" MATCHES "^[^12]")
|
|
add_custom_command(
|
|
TARGET ${KWIML}_test
|
|
PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CFG_INTDIR}"
|
|
)
|
|
endif()
|