commit
1bac40f3e7
@ -1,6 +1,8 @@
|
||||
INCLUDE(Platform/Linux-Intel)
|
||||
IF(XIAR)
|
||||
SET(CMAKE_C_CREATE_STATIC_LIBRARY
|
||||
# INTERPROCEDURAL_OPTIMIZATION
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_IPO -ipo)
|
||||
SET(CMAKE_C_CREATE_STATIC_LIBRARY_IPO
|
||||
"${XIAR} cr <TARGET> <LINK_FLAGS> <OBJECTS> "
|
||||
"${XIAR} -s <TARGET> ")
|
||||
ENDIF(XIAR)
|
||||
|
@ -1,6 +1,8 @@
|
||||
INCLUDE(Platform/Linux-Intel)
|
||||
IF(XIAR)
|
||||
SET(CMAKE_CXX_CREATE_STATIC_LIBRARY
|
||||
# INTERPROCEDURAL_OPTIMIZATION
|
||||
SET(CMAKE_CXX_COMPILE_OPTIONS_IPO -ipo)
|
||||
SET(CMAKE_CXX_CREATE_STATIC_LIBRARY_IPO
|
||||
"${XIAR} cr <TARGET> <LINK_FLAGS> <OBJECTS> "
|
||||
"${XIAR} -s <TARGET> ")
|
||||
ENDIF(XIAR)
|
||||
|
@ -1,11 +1,11 @@
|
||||
if(NOT XIAR)
|
||||
set(_intel_xair_hints)
|
||||
set(_intel_xiar_hints)
|
||||
foreach(lang C CXX Fortran)
|
||||
if(IS_ABSOLUTE "${CMAKE_${lang}_COMPILER}")
|
||||
get_filename_component(_hint "${CMAKE_${lang}_COMPILER}" PATH)
|
||||
list(APPEND _intel_xair_hints ${_hint})
|
||||
list(APPEND _intel_xiar_hints ${_hint})
|
||||
endif()
|
||||
endforeach()
|
||||
find_program(XIAR NAMES xiar HINTS ${_intel_xair_hints})
|
||||
find_program(XIAR NAMES xiar HINTS ${_intel_xiar_hints})
|
||||
mark_as_advanced(XIAR)
|
||||
endif(NOT XIAR)
|
||||
|
@ -0,0 +1,2 @@
|
||||
include(Platform/Windows-Borland)
|
||||
__borland_language(C)
|
@ -0,0 +1,2 @@
|
||||
include(Platform/Windows-Borland)
|
||||
__borland_language(CXX)
|
@ -0,0 +1,121 @@
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2002-2009 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.
|
||||
#=============================================================================
|
||||
# (To distributed this file outside of CMake, substitute the full
|
||||
# License text for the above reference.)
|
||||
|
||||
# This module is shared by multiple languages; use include blocker.
|
||||
if(__WINDOWS_BORLAND)
|
||||
return()
|
||||
endif()
|
||||
set(__WINDOWS_BORLAND 1)
|
||||
|
||||
SET(BORLAND 1)
|
||||
|
||||
# Borland target type flags (bcc32 -h -t):
|
||||
# -tW GUI App (implies -U__CONSOLE__)
|
||||
# -tWC Console App (implies -D__CONSOLE__=1)
|
||||
# -tWD Build a DLL (implies -D__DLL__=1 -D_DLL=1)
|
||||
# -tWM Enable threads (implies -D__MT__=1 -D_MT=1)
|
||||
# -tWR Use DLL runtime (implies -D_RTLDLL, and '-tW' too!!)
|
||||
#
|
||||
# Notes:
|
||||
# - The flags affect linking so we pass them to the linker.
|
||||
# - The flags affect preprocessing so we pass them to the compiler.
|
||||
# - Since '-tWR' implies '-tW' we use '-tWR -tW-' instead.
|
||||
# - Since '-tW-' disables '-tWD' we use '-tWR -tW- -tWD' for DLLs.
|
||||
set(_RTLDLL "-tWR -tW-")
|
||||
set(_COMPILE_C "-c")
|
||||
set(_COMPILE_CXX "-P -c")
|
||||
|
||||
SET(CMAKE_LIBRARY_PATH_FLAG "-L")
|
||||
SET(CMAKE_LINK_LIBRARY_FLAG "")
|
||||
|
||||
SET(CMAKE_FIND_LIBRARY_SUFFIXES "-bcc.lib" ".lib")
|
||||
|
||||
# uncomment these out to debug makefiles
|
||||
#SET(CMAKE_START_TEMP_FILE "")
|
||||
#SET(CMAKE_END_TEMP_FILE "")
|
||||
#SET(CMAKE_VERBOSE_MAKEFILE 1)
|
||||
|
||||
# Borland cannot handle + in the file name, so mangle object file name
|
||||
SET (CMAKE_MANGLE_OBJECT_FILE_NAMES "ON")
|
||||
|
||||
# extra flags for a win32 exe
|
||||
SET(CMAKE_CREATE_WIN32_EXE "-tW" )
|
||||
# extra flags for a console app
|
||||
SET(CMAKE_CREATE_CONSOLE_EXE "-tWC" )
|
||||
|
||||
SET (CMAKE_BUILD_TYPE Debug CACHE STRING
|
||||
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel.")
|
||||
|
||||
SET (CMAKE_EXE_LINKER_FLAGS_INIT "-tWM -lS:10000000 -lSc:10000000 ")
|
||||
SET (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "-v")
|
||||
SET (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "-v")
|
||||
SET (CMAKE_SHARED_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT})
|
||||
SET (CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT})
|
||||
SET (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT})
|
||||
SET (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT})
|
||||
SET (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT})
|
||||
SET (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT})
|
||||
|
||||
macro(__borland_language lang)
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-tWD")
|
||||
|
||||
# compile a source file into an object file
|
||||
# place <DEFINES> outside the response file because Borland refuses
|
||||
# to parse quotes from the response file.
|
||||
set(CMAKE_${lang}_COMPILE_OBJECT
|
||||
"<CMAKE_${lang}_COMPILER> ${_RTLDLL} <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 -o<OBJECT> <FLAGS> ${_COMPILE_${lang}} <SOURCE>${CMAKE_END_TEMP_FILE}"
|
||||
)
|
||||
|
||||
set(CMAKE_${lang}_LINK_EXECUTABLE
|
||||
"<CMAKE_${lang}_COMPILER> ${_RTLDLL} -e<TARGET> ${CMAKE_START_TEMP_FILE}<LINK_FLAGS> <FLAGS> <LINK_LIBRARIES> <OBJECTS>${CMAKE_END_TEMP_FILE}"
|
||||
# "implib -c -w <TARGET_IMPLIB> <TARGET>"
|
||||
)
|
||||
|
||||
# place <DEFINES> outside the response file because Borland refuses
|
||||
# to parse quotes from the response file.
|
||||
set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE
|
||||
"cpp32 <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 <FLAGS> -o<PREPROCESSED_SOURCE> ${_COMPILE_${lang}} <SOURCE>${CMAKE_END_TEMP_FILE}"
|
||||
)
|
||||
# Borland >= 5.6 allows -P option for cpp32, <= 5.5 does not
|
||||
|
||||
# Create a module library.
|
||||
set(CMAKE_${lang}_CREATE_SHARED_MODULE
|
||||
"<CMAKE_${lang}_COMPILER> ${_RTLDLL} -tWD ${CMAKE_START_TEMP_FILE}-e<TARGET> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS>${CMAKE_END_TEMP_FILE}"
|
||||
)
|
||||
|
||||
# Create an import library for another target.
|
||||
set(CMAKE_${lang}_CREATE_IMPORT_LIBRARY
|
||||
"implib -c -w <TARGET_IMPLIB> <TARGET>"
|
||||
)
|
||||
|
||||
# Create a shared library.
|
||||
# First create a module and then its import library.
|
||||
set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
|
||||
${CMAKE_${lang}_CREATE_SHARED_MODULE}
|
||||
${CMAKE_${lang}_CREATE_IMPORT_LIBRARY}
|
||||
)
|
||||
|
||||
# create a static library
|
||||
set(CMAKE_${lang}_CREATE_STATIC_LIBRARY
|
||||
"tlib ${CMAKE_START_TEMP_FILE}/p512 <LINK_FLAGS> /a <TARGET_QUOTED> <OBJECTS>${CMAKE_END_TEMP_FILE}"
|
||||
)
|
||||
|
||||
# Initial configuration flags.
|
||||
set(CMAKE_${lang}_FLAGS_INIT "-tWM")
|
||||
set(CMAKE_${lang}_FLAGS_DEBUG_INIT "-Od -v")
|
||||
set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "-O1 -DNDEBUG")
|
||||
set(CMAKE_${lang}_FLAGS_RELEASE_INIT "-O2 -DNDEBUG")
|
||||
set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "-Od")
|
||||
set(CMAKE_${lang}_STANDARD_LIBRARIES_INIT "import32.lib")
|
||||
endmacro()
|
@ -1,128 +0,0 @@
|
||||
# Borland shared library issues:
|
||||
# When building dll's with borland, the run time dll c/c++ library from
|
||||
# borland must be used. This is specified with the -tWR compiler option.
|
||||
# This flag must be present during compilation of c and c++ files and
|
||||
# for the linking of exe and dll files. But wait, there is more,
|
||||
# the -tWR flag must come after the -tWD and -tWM flags, but before the -tWC flag.
|
||||
# Order counts, so be careful!
|
||||
# if building static, you don't want the -tWR flag as it will make your program
|
||||
# depend on the borland run time dll.
|
||||
# So, if a project has CMAKE_BUILD_SHARED on, then the -tWR flag is added all over, and
|
||||
# it is left out if not.
|
||||
|
||||
SET(CMAKE_LIBRARY_PATH_FLAG "-L")
|
||||
SET(CMAKE_LINK_LIBRARY_FLAG "")
|
||||
SET(CMAKE_SHARED_BUILD_CXX_FLAGS "-tWR")
|
||||
SET(CMAKE_SHARED_BUILD_C_FLAGS "-tWR")
|
||||
SET(BORLAND 1)
|
||||
|
||||
SET(CMAKE_FIND_LIBRARY_SUFFIXES "-bcc.lib" ".lib")
|
||||
|
||||
# uncomment these out to debug makefiles
|
||||
#SET(CMAKE_START_TEMP_FILE "")
|
||||
#SET(CMAKE_END_TEMP_FILE "")
|
||||
#SET(CMAKE_VERBOSE_MAKEFILE 1)
|
||||
|
||||
# Borland cannot handle + in the file name, so mangle object file name
|
||||
SET (CMAKE_MANGLE_OBJECT_FILE_NAMES "ON")
|
||||
|
||||
# Create an import library for another target.
|
||||
SET(CMAKE_CXX_CREATE_IMPORT_LIBRARY
|
||||
"implib -c -w <TARGET_IMPLIB> <TARGET>"
|
||||
)
|
||||
|
||||
# Create a C++ module library.
|
||||
SET(CMAKE_CXX_CREATE_SHARED_MODULE
|
||||
"<CMAKE_CXX_COMPILER> ${CMAKE_START_TEMP_FILE}-e<TARGET> -tWD <LINK_FLAGS> -tWR <LINK_LIBRARIES> <OBJECTS>${CMAKE_END_TEMP_FILE}"
|
||||
)
|
||||
|
||||
# Create a C++ shared library.
|
||||
# First create a module and then its import library.
|
||||
SET(CMAKE_CXX_CREATE_SHARED_LIBRARY
|
||||
${CMAKE_CXX_CREATE_SHARED_MODULE}
|
||||
${CMAKE_CXX_CREATE_IMPORT_LIBRARY})
|
||||
|
||||
# Create an import library for another target.
|
||||
SET(CMAKE_C_CREATE_IMPORT_LIBRARY ${CMAKE_CXX_CREATE_IMPORT_LIBRARY})
|
||||
|
||||
# Create a C module library.
|
||||
SET(CMAKE_C_CREATE_SHARED_MODULE
|
||||
"<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE}-e<TARGET> -tWD <LINK_FLAGS> -tWR <LINK_LIBRARIES> <OBJECTS>${CMAKE_END_TEMP_FILE}"
|
||||
)
|
||||
|
||||
# Create a C shared library.
|
||||
# First create a module and then its import library.
|
||||
SET(CMAKE_C_CREATE_SHARED_LIBRARY
|
||||
${CMAKE_C_CREATE_SHARED_MODULE}
|
||||
${CMAKE_C_CREATE_IMPORT_LIBRARY})
|
||||
|
||||
# create a C++ static library
|
||||
SET(CMAKE_CXX_CREATE_STATIC_LIBRARY "tlib ${CMAKE_START_TEMP_FILE}/p512 <LINK_FLAGS> /a <TARGET_QUOTED> <OBJECTS>${CMAKE_END_TEMP_FILE}")
|
||||
|
||||
# create a C static library
|
||||
SET(CMAKE_C_CREATE_STATIC_LIBRARY ${CMAKE_CXX_CREATE_STATIC_LIBRARY})
|
||||
|
||||
# compile a C++ file into an object file
|
||||
# place <DEFINES> outside the response file because Borland refuses
|
||||
# to parse quotes from the response file.
|
||||
SET(CMAKE_CXX_COMPILE_OBJECT
|
||||
"<CMAKE_CXX_COMPILER> <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 -P <FLAGS> -o<OBJECT> -c <SOURCE>${CMAKE_END_TEMP_FILE}")
|
||||
|
||||
# compile a C file into an object file
|
||||
# place <DEFINES> outside the response file because Borland refuses
|
||||
# to parse quotes from the response file.
|
||||
SET(CMAKE_C_COMPILE_OBJECT
|
||||
"<CMAKE_C_COMPILER> <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 -o<OBJECT> <FLAGS> -c <SOURCE>${CMAKE_END_TEMP_FILE}")
|
||||
|
||||
|
||||
SET(CMAKE_C_LINK_EXECUTABLE
|
||||
"<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE}-e<TARGET> <LINK_FLAGS> <FLAGS> <LINK_LIBRARIES> <OBJECTS> ${CMAKE_END_TEMP_FILE}"
|
||||
# "implib -c -w <TARGET_IMPLIB> <TARGET>"
|
||||
)
|
||||
|
||||
|
||||
SET(CMAKE_CXX_LINK_EXECUTABLE
|
||||
"<CMAKE_CXX_COMPILER> ${CMAKE_START_TEMP_FILE} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> -e<TARGET> <FLAGS> <LINK_LIBRARIES> <OBJECTS> ${CMAKE_END_TEMP_FILE}"
|
||||
# "implib -c -w <TARGET_IMPLIB> <TARGET>"
|
||||
)
|
||||
|
||||
SET (CMAKE_BUILD_TYPE Debug CACHE STRING
|
||||
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel.")
|
||||
|
||||
# extra flags for a win32 exe
|
||||
SET(CMAKE_CREATE_WIN32_EXE "-tW -tWM" )
|
||||
# extra flags for a console app
|
||||
SET(CMAKE_CREATE_CONSOLE_EXE "-tWC" )
|
||||
|
||||
SET (CMAKE_CXX_FLAGS_INIT "-tWM")
|
||||
SET (CMAKE_CXX_FLAGS_DEBUG_INIT "-Od -v")
|
||||
SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-O1 -DNDEBUG")
|
||||
SET (CMAKE_CXX_FLAGS_RELEASE_INIT "-O2 -DNDEBUG")
|
||||
SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-Od")
|
||||
SET (CMAKE_C_FLAGS_INIT "-tWM")
|
||||
SET (CMAKE_C_FLAGS_DEBUG_INIT "-Od -v")
|
||||
SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "-O1 -DNDEBUG")
|
||||
SET (CMAKE_C_FLAGS_RELEASE_INIT "-O2 -DNDEBUG")
|
||||
SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-Od")
|
||||
|
||||
SET (CMAKE_EXE_LINKER_FLAGS_INIT "-tWM -lS:10000000 -lSc:10000000 ")
|
||||
SET (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "-v")
|
||||
SET (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "-v")
|
||||
SET (CMAKE_SHARED_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT})
|
||||
SET (CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT})
|
||||
SET (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT})
|
||||
SET (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT})
|
||||
SET (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT})
|
||||
SET (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT})
|
||||
|
||||
SET (CMAKE_C_STANDARD_LIBRARIES_INIT "import32.lib")
|
||||
SET (CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
|
||||
|
||||
# preprocess C and CXX files
|
||||
# place <DEFINES> outside the response file because Borland refuses
|
||||
# to parse quotes from the response file.
|
||||
SET (CMAKE_C_CREATE_PREPROCESSED_SOURCE
|
||||
"cpp32 <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 <FLAGS> -o<PREPROCESSED_SOURCE> -c <SOURCE>${CMAKE_END_TEMP_FILE}")
|
||||
SET (CMAKE_CXX_CREATE_PREPROCESSED_SOURCE
|
||||
"cpp32 <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 <FLAGS> -o<PREPROCESSED_SOURCE> -P -c <SOURCE>${CMAKE_END_TEMP_FILE}")
|
||||
# Borland >= 5.6 allows -P option for cpp32, <= 5.5 does not
|
@ -1,12 +1,2 @@
|
||||
# kFreeBSD looks just like Linux.
|
||||
SET(CMAKE_DL_LIBS "dl")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC")
|
||||
SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared")
|
||||
SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "-rdynamic")
|
||||
SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
|
||||
SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":")
|
||||
SET(CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG "-Wl,-rpath-link,")
|
||||
SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,")
|
||||
SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-Wl,-soname,")
|
||||
|
||||
INCLUDE(Platform/UnixPaths)
|
||||
INCLUDE(Platform/Linux)
|
||||
|
@ -0,0 +1,18 @@
|
||||
# Execute each test listed in:
|
||||
#
|
||||
set(scriptname "@CMAKE_CURRENT_SOURCE_DIR@/CMakeMinimumRequiredTestScript.cmake")
|
||||
set(number_of_tests_expected 8)
|
||||
|
||||
include("@CMAKE_CURRENT_SOURCE_DIR@/ExecuteScriptTests.cmake")
|
||||
execute_all_script_tests(${scriptname} number_of_tests_executed)
|
||||
|
||||
# And verify that number_of_tests_executed is at least as many as we know
|
||||
# about as of this writing...
|
||||
#
|
||||
message(STATUS "scriptname='${scriptname}'")
|
||||
message(STATUS "number_of_tests_executed='${number_of_tests_executed}'")
|
||||
message(STATUS "number_of_tests_expected='${number_of_tests_expected}'")
|
||||
|
||||
if(number_of_tests_executed LESS number_of_tests_expected)
|
||||
message(FATAL_ERROR "error: some test cases were skipped")
|
||||
endif()
|
@ -0,0 +1,31 @@
|
||||
message(STATUS "testname='${testname}'")
|
||||
|
||||
if(testname STREQUAL empty) # pass
|
||||
cmake_minimum_required()
|
||||
|
||||
elseif(testname STREQUAL bogus) # fail
|
||||
cmake_minimum_required(BOGUS)
|
||||
|
||||
elseif(testname STREQUAL no_version) # fail
|
||||
cmake_minimum_required(VERSION)
|
||||
|
||||
elseif(testname STREQUAL no_version_before_fatal_error) # fail
|
||||
cmake_minimum_required(VERSION FATAL_ERROR)
|
||||
|
||||
elseif(testname STREQUAL bad_version) # fail
|
||||
cmake_minimum_required(VERSION 2.blah.blah)
|
||||
|
||||
elseif(testname STREQUAL worse_version) # fail
|
||||
cmake_minimum_required(VERSION blah.blah.blah)
|
||||
|
||||
elseif(testname STREQUAL future_version) # fail
|
||||
math(EXPR major "${CMAKE_MAJOR_VERSION} + 1")
|
||||
cmake_minimum_required(VERSION ${major}.2.1)
|
||||
|
||||
elseif(testname STREQUAL unknown_arg) # fail
|
||||
cmake_minimum_required(VERSION ${CMAKE_MAJOR_VERSION}.0.0 SILLY)
|
||||
|
||||
else() # fail
|
||||
message(FATAL_ERROR "testname='${testname}' - error: no such test in '${CMAKE_CURRENT_LIST_FILE}'")
|
||||
|
||||
endif()
|
@ -0,0 +1,18 @@
|
||||
# Execute each test listed in:
|
||||
#
|
||||
set(scriptname "@CMAKE_CURRENT_SOURCE_DIR@/EndStuffTestScript.cmake")
|
||||
set(number_of_tests_expected 9)
|
||||
|
||||
include("@CMAKE_CURRENT_SOURCE_DIR@/ExecuteScriptTests.cmake")
|
||||
execute_all_script_tests(${scriptname} number_of_tests_executed)
|
||||
|
||||
# And verify that number_of_tests_executed is at least as many as we know
|
||||
# about as of this writing...
|
||||
#
|
||||
message(STATUS "scriptname='${scriptname}'")
|
||||
message(STATUS "number_of_tests_executed='${number_of_tests_executed}'")
|
||||
message(STATUS "number_of_tests_expected='${number_of_tests_expected}'")
|
||||
|
||||
if(number_of_tests_executed LESS number_of_tests_expected)
|
||||
message(FATAL_ERROR "error: some test cases were skipped")
|
||||
endif()
|
@ -0,0 +1,70 @@
|
||||
message(STATUS "testname='${testname}'")
|
||||
|
||||
if(testname STREQUAL bad_else) # fail
|
||||
file(WRITE "${dir}/${testname}.cmake"
|
||||
"else()
|
||||
")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -P "${dir}/${testname}.cmake"
|
||||
RESULT_VARIABLE rv)
|
||||
if(NOT rv EQUAL 0)
|
||||
message(FATAL_ERROR "${testname} failed")
|
||||
endif()
|
||||
|
||||
elseif(testname STREQUAL bad_elseif) # fail
|
||||
file(WRITE "${dir}/${testname}.cmake"
|
||||
"elseif()
|
||||
")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -P "${dir}/${testname}.cmake"
|
||||
RESULT_VARIABLE rv)
|
||||
if(NOT rv EQUAL 0)
|
||||
message(FATAL_ERROR "${testname} failed")
|
||||
endif()
|
||||
|
||||
elseif(testname STREQUAL bad_endforeach) # fail
|
||||
endforeach()
|
||||
|
||||
elseif(testname STREQUAL bad_endfunction) # fail
|
||||
endfunction()
|
||||
|
||||
elseif(testname STREQUAL bad_endif) # fail
|
||||
file(WRITE "${dir}/${testname}.cmake"
|
||||
"cmake_minimum_required(VERSION 2.8)
|
||||
endif()
|
||||
")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -P "${dir}/${testname}.cmake"
|
||||
RESULT_VARIABLE rv)
|
||||
if(NOT rv EQUAL 0)
|
||||
message(FATAL_ERROR "${testname} failed")
|
||||
endif()
|
||||
|
||||
elseif(testname STREQUAL endif_low_min_version) # pass
|
||||
file(WRITE "${dir}/${testname}.cmake"
|
||||
"cmake_minimum_required(VERSION 1.2)
|
||||
endif()
|
||||
")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -P "${dir}/${testname}.cmake"
|
||||
RESULT_VARIABLE rv)
|
||||
if(NOT rv EQUAL 0)
|
||||
message(FATAL_ERROR "${testname} failed")
|
||||
endif()
|
||||
|
||||
elseif(testname STREQUAL endif_no_min_version) # pass
|
||||
file(WRITE "${dir}/${testname}.cmake"
|
||||
"endif()
|
||||
")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -P "${dir}/${testname}.cmake"
|
||||
RESULT_VARIABLE rv)
|
||||
if(NOT rv EQUAL 0)
|
||||
message(FATAL_ERROR "${testname} failed")
|
||||
endif()
|
||||
|
||||
elseif(testname STREQUAL bad_endmacro) # fail
|
||||
endmacro()
|
||||
|
||||
elseif(testname STREQUAL bad_endwhile) # fail
|
||||
endwhile()
|
||||
|
||||
else() # fail
|
||||
message(FATAL_ERROR "testname='${testname}' - error: no such test in '${CMAKE_CURRENT_LIST_FILE}'")
|
||||
|
||||
endif()
|
@ -0,0 +1,63 @@
|
||||
# This function calls the ${scriptname} file to execute one test case:
|
||||
#
|
||||
function(execute_one_script_test scriptname testname expected_result)
|
||||
message("execute_one_script_test")
|
||||
message("testname=[${testname}]")
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-D "dir:STRING=${dir}"
|
||||
-D "testname:STRING=${testname}"
|
||||
-P "${scriptname}"
|
||||
OUTPUT_VARIABLE out
|
||||
ERROR_VARIABLE err
|
||||
RESULT_VARIABLE result
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
message("out=[${out}]")
|
||||
message("err=[${err}]")
|
||||
|
||||
if(expected_result STREQUAL "fail")
|
||||
# case expected to fail, result should be non-0...
|
||||
# error if it's 0
|
||||
if("${result}" STREQUAL "0")
|
||||
message(SEND_ERROR "script failed: testname='${testname}' [${result}] actually passed, but expected to fail...")
|
||||
endif()
|
||||
else()
|
||||
# case expected to pass, result should be 0...
|
||||
# error if it's non-0
|
||||
if(NOT "${result}" STREQUAL "0")
|
||||
message(SEND_ERROR "script failed: testname='${testname}' [${result}] actually failed, but expected to pass...")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
message("")
|
||||
endfunction()
|
||||
|
||||
|
||||
# This function reads the script file and calls execute_one_script_test for
|
||||
# each testname case listed in the script. To add new cases, simply edit the
|
||||
# script file and add an elseif() clause that matches 'regex' below.
|
||||
#
|
||||
function(execute_all_script_tests scriptname result)
|
||||
file(READ "${scriptname}" script)
|
||||
|
||||
string(REPLACE ";" "\\\\;" script "${script}")
|
||||
string(REPLACE "\n" "E;" script "${script}")
|
||||
|
||||
set(count 0)
|
||||
set(regex "^ *(if|elseif) *\\( *testname +STREQUAL +\\\"*([^\\\"\\)]+)\\\"* *\\) *# *(fail|pass) *E$")
|
||||
|
||||
foreach(line ${script})
|
||||
if(line MATCHES "${regex}")
|
||||
math(EXPR count "${count} + 1")
|
||||
string(REGEX REPLACE "${regex}" "\\2" testname "${line}")
|
||||
string(REGEX REPLACE "${regex}" "\\3" expected_result "${line}")
|
||||
execute_one_script_test(${scriptname} ${testname} ${expected_result})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(${result} ${count} PARENT_SCOPE)
|
||||
endfunction()
|
@ -0,0 +1,18 @@
|
||||
# Execute each test listed in:
|
||||
#
|
||||
set(scriptname "@CMAKE_CURRENT_SOURCE_DIR@/MathTestScript.cmake")
|
||||
set(number_of_tests_expected 4)
|
||||
|
||||
include("@CMAKE_CURRENT_SOURCE_DIR@/ExecuteScriptTests.cmake")
|
||||
execute_all_script_tests(${scriptname} number_of_tests_executed)
|
||||
|
||||
# And verify that number_of_tests_executed is at least as many as we know
|
||||
# about as of this writing...
|
||||
#
|
||||
message(STATUS "scriptname='${scriptname}'")
|
||||
message(STATUS "number_of_tests_executed='${number_of_tests_executed}'")
|
||||
message(STATUS "number_of_tests_expected='${number_of_tests_expected}'")
|
||||
|
||||
if(number_of_tests_executed LESS number_of_tests_expected)
|
||||
message(FATAL_ERROR "error: some test cases were skipped")
|
||||
endif()
|
@ -0,0 +1,18 @@
|
||||
message(STATUS "testname='${testname}'")
|
||||
|
||||
if(testname STREQUAL empty) # fail
|
||||
math()
|
||||
|
||||
elseif(testname STREQUAL bogus) # fail
|
||||
math(BOGUS)
|
||||
|
||||
elseif(testname STREQUAL not_enough_args) # fail
|
||||
math(EXPR x)
|
||||
|
||||
elseif(testname STREQUAL cannot_parse) # fail
|
||||
math(EXPR x "1 + 2 +")
|
||||
|
||||
else() # fail
|
||||
message(FATAL_ERROR "testname='${testname}' - error: no such test in '${CMAKE_CURRENT_LIST_FILE}'")
|
||||
|
||||
endif()
|
@ -0,0 +1,18 @@
|
||||
# Execute each test listed in StringTestScript.cmake:
|
||||
#
|
||||
set(scriptname "@CMAKE_CURRENT_SOURCE_DIR@/StringTestScript.cmake")
|
||||
set(number_of_tests_expected 52)
|
||||
|
||||
include("@CMAKE_CURRENT_SOURCE_DIR@/ExecuteScriptTests.cmake")
|
||||
execute_all_script_tests(${scriptname} number_of_tests_executed)
|
||||
|
||||
# And verify that number_of_tests_executed is at least as many as we know
|
||||
# about as of this writing...
|
||||
#
|
||||
message(STATUS "scriptname='${scriptname}'")
|
||||
message(STATUS "number_of_tests_executed='${number_of_tests_executed}'")
|
||||
message(STATUS "number_of_tests_expected='${number_of_tests_expected}'")
|
||||
|
||||
if(number_of_tests_executed LESS number_of_tests_expected)
|
||||
message(FATAL_ERROR "error: some test cases were skipped")
|
||||
endif()
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue