WCDH: Ensure that the prefix argument to the macro is valid.

The prefix must be a C-identifier because it is written as the
prefix of preprocessor macros and possibly structs.
This commit is contained in:
Stephen Kelly 2014-06-13 11:39:47 +02:00
parent 477b07213a
commit b47c125ff7
8 changed files with 42 additions and 0 deletions

View File

@ -235,6 +235,14 @@ function(write_compiler_detection_header
message(FATAL_ERROR "Unparsed arguments: ${_WCD_UNPARSED_ARGUMENTS}")
endif()
if (prefix_arg STREQUAL "")
message(FATAL_ERROR "A prefix must be specified")
endif()
string(MAKE_C_IDENTIFIER ${prefix_arg} cleaned_prefix)
if (NOT prefix_arg STREQUAL cleaned_prefix)
message(FATAL_ERROR "The prefix must be a valid C identifier.")
endif()
if(NOT _WCD_VERSION)
set(_WCD_VERSION ${CMAKE_MINIMUM_REQUIRED_VERSION})
endif()

View File

@ -0,0 +1,5 @@
CMake Error at .*/Modules/WriteCompilerDetectionHeader.cmake:[0-9]+ \(message\):
A prefix must be specified
Call Stack \(most recent call first\):
EmptyPrefix.cmake:[0-9]+ \(write_compiler_detection_header\)
CMakeLists.txt:[0-9]+ \(include\)

View File

@ -0,0 +1,10 @@
include(WriteCompilerDetectionHeader)
write_compiler_detection_header(
FILE "${CMAKE_CURRENT_BINARY_DIR}/somefile"
PREFIX ""
VERSION 3.1
COMPILERS GNU
FEATURES cxx_final
)

View File

@ -0,0 +1,5 @@
CMake Error at .*/Modules/WriteCompilerDetectionHeader.cmake:[0-9]+ \(message\):
The prefix must be a valid C identifier.
Call Stack \(most recent call first\):
InvalidPrefix.cmake:[0-9]+ \(write_compiler_detection_header\)
CMakeLists.txt:[0-9]+ \(include\)

View File

@ -0,0 +1,10 @@
include(WriteCompilerDetectionHeader)
write_compiler_detection_header(
FILE "${CMAKE_CURRENT_BINARY_DIR}/somefile"
PREFIX "0compile"
VERSION 3.1
COMPILERS GNU
FEATURES cxx_final
)

View File

@ -10,3 +10,5 @@ run_cmake(OldVersion)
run_cmake(InvalidCompiler)
run_cmake(InvalidFeature)
run_cmake(InvalidCXXFeature)
run_cmake(EmptyPrefix)
run_cmake(InvalidPrefix)