ENH: add new cmakedefine01 feature from bug report 2603
This commit is contained in:
parent
b08a151722
commit
2c73d2e0f3
@ -74,7 +74,8 @@ cmMakefile::cmMakefile()
|
|||||||
this->AddSourceGroup("Header Files", "\\.(h|h\\+\\+|hm|hpp|hxx|in|txx|inl)$");
|
this->AddSourceGroup("Header Files", "\\.(h|h\\+\\+|hm|hpp|hxx|in|txx|inl)$");
|
||||||
this->AddSourceGroup("CMake Rules", "\\.rule$");
|
this->AddSourceGroup("CMake Rules", "\\.rule$");
|
||||||
this->AddDefaultDefinitions();
|
this->AddDefaultDefinitions();
|
||||||
m_cmDefineRegex.compile("#cmakedefine[ \t]*([A-Za-z_0-9]*)");
|
m_cmDefineRegex.compile("#cmakedefine[ \t]+([A-Za-z_0-9]*)");
|
||||||
|
m_cmDefine01Regex.compile("#cmakedefine01[ \t]+([A-Za-z_0-9]*)");
|
||||||
|
|
||||||
this->PreOrder = false;
|
this->PreOrder = false;
|
||||||
}
|
}
|
||||||
@ -2399,6 +2400,20 @@ void cmMakefile::ConfigureString(const std::string& input,
|
|||||||
output += " */";
|
output += " */";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(m_cmDefine01Regex.find(line))
|
||||||
|
{
|
||||||
|
const char* def = this->GetDefinition(m_cmDefine01Regex.match(1).c_str());
|
||||||
|
cmSystemTools::ReplaceString(line, "#cmakedefine01", "#define");
|
||||||
|
output += line;
|
||||||
|
if(!cmSystemTools::IsOff(def))
|
||||||
|
{
|
||||||
|
output += " 1";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
output += " 0";
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
output += line;
|
output += line;
|
||||||
|
@ -726,6 +726,7 @@ private:
|
|||||||
DefinitionMap::key_type m_TemporaryDefinitionKey;
|
DefinitionMap::key_type m_TemporaryDefinitionKey;
|
||||||
|
|
||||||
cmsys::RegularExpression m_cmDefineRegex;
|
cmsys::RegularExpression m_cmDefineRegex;
|
||||||
|
cmsys::RegularExpression m_cmDefine01Regex;
|
||||||
|
|
||||||
std::map<cmStdString,cmStdString> m_Properties;
|
std::map<cmStdString,cmStdString> m_Properties;
|
||||||
|
|
||||||
|
@ -243,6 +243,8 @@ WHILE (while_var LESS 1000)
|
|||||||
SET(while_var ${while_var}0)
|
SET(while_var ${while_var}0)
|
||||||
ENDWHILE(while_var LESS 1000)
|
ENDWHILE(while_var LESS 1000)
|
||||||
|
|
||||||
|
SET(SHOULD_BE_ZERO )
|
||||||
|
SET(SHOULD_BE_ONE 1)
|
||||||
#
|
#
|
||||||
# Configure file
|
# Configure file
|
||||||
# (plug vars to #define so that they can be tested)
|
# (plug vars to #define so that they can be tested)
|
||||||
|
@ -1114,7 +1114,22 @@ int main()
|
|||||||
#else
|
#else
|
||||||
cmFailed("Generated header included by non-generated source failed.");
|
cmFailed("Generated header included by non-generated source failed.");
|
||||||
#endif
|
#endif
|
||||||
|
if(SHOULD_BE_ZERO == 0)
|
||||||
|
{
|
||||||
|
cmPassed("cmakedefine01 is working for 0");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cmFailed("cmakedefine01 is not working for 0");
|
||||||
|
}
|
||||||
|
if(SHOULD_BE_ONE == 1)
|
||||||
|
{
|
||||||
|
cmPassed("cmakedefine01 is working for 1");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cmFailed("cmakedefine01 is not working for 1");
|
||||||
|
}
|
||||||
#ifdef FORCE_TEST
|
#ifdef FORCE_TEST
|
||||||
cmFailed("CMake SET CACHE FORCE");
|
cmFailed("CMake SET CACHE FORCE");
|
||||||
#else
|
#else
|
||||||
|
@ -39,6 +39,8 @@
|
|||||||
#cmakedefine CMAKE_NO_ANSI_STRING_STREAM
|
#cmakedefine CMAKE_NO_ANSI_STRING_STREAM
|
||||||
#cmakedefine CMAKE_NO_ANSI_FOR_SCOPE
|
#cmakedefine CMAKE_NO_ANSI_FOR_SCOPE
|
||||||
|
|
||||||
|
#cmakedefine01 SHOULD_BE_ZERO
|
||||||
|
#cmakedefine01 SHOULD_BE_ONE
|
||||||
// Needed to check for files
|
// Needed to check for files
|
||||||
|
|
||||||
#define BINARY_DIR "${Complex_BINARY_DIR}"
|
#define BINARY_DIR "${Complex_BINARY_DIR}"
|
||||||
|
@ -243,6 +243,8 @@ WHILE (while_var LESS 1000)
|
|||||||
SET(while_var ${while_var}0)
|
SET(while_var ${while_var}0)
|
||||||
ENDWHILE(while_var LESS 1000)
|
ENDWHILE(while_var LESS 1000)
|
||||||
|
|
||||||
|
SET(SHOULD_BE_ZERO )
|
||||||
|
SET(SHOULD_BE_ONE 1)
|
||||||
#
|
#
|
||||||
# Configure file
|
# Configure file
|
||||||
# (plug vars to #define so that they can be tested)
|
# (plug vars to #define so that they can be tested)
|
||||||
|
@ -1114,7 +1114,22 @@ int main()
|
|||||||
#else
|
#else
|
||||||
cmFailed("Generated header included by non-generated source failed.");
|
cmFailed("Generated header included by non-generated source failed.");
|
||||||
#endif
|
#endif
|
||||||
|
if(SHOULD_BE_ZERO == 0)
|
||||||
|
{
|
||||||
|
cmPassed("cmakedefine01 is working for 0");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cmFailed("cmakedefine01 is not working for 0");
|
||||||
|
}
|
||||||
|
if(SHOULD_BE_ONE == 1)
|
||||||
|
{
|
||||||
|
cmPassed("cmakedefine01 is working for 1");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cmFailed("cmakedefine01 is not working for 1");
|
||||||
|
}
|
||||||
#ifdef FORCE_TEST
|
#ifdef FORCE_TEST
|
||||||
cmFailed("CMake SET CACHE FORCE");
|
cmFailed("CMake SET CACHE FORCE");
|
||||||
#else
|
#else
|
||||||
|
@ -39,6 +39,8 @@
|
|||||||
#cmakedefine CMAKE_NO_ANSI_STRING_STREAM
|
#cmakedefine CMAKE_NO_ANSI_STRING_STREAM
|
||||||
#cmakedefine CMAKE_NO_ANSI_FOR_SCOPE
|
#cmakedefine CMAKE_NO_ANSI_FOR_SCOPE
|
||||||
|
|
||||||
|
#cmakedefine01 SHOULD_BE_ZERO
|
||||||
|
#cmakedefine01 SHOULD_BE_ONE
|
||||||
// Needed to check for files
|
// Needed to check for files
|
||||||
|
|
||||||
#define BINARY_DIR "${Complex_BINARY_DIR}"
|
#define BINARY_DIR "${Complex_BINARY_DIR}"
|
||||||
|
@ -243,6 +243,8 @@ WHILE (while_var LESS 1000)
|
|||||||
SET(while_var ${while_var}0)
|
SET(while_var ${while_var}0)
|
||||||
ENDWHILE(while_var LESS 1000)
|
ENDWHILE(while_var LESS 1000)
|
||||||
|
|
||||||
|
SET(SHOULD_BE_ZERO )
|
||||||
|
SET(SHOULD_BE_ONE 1)
|
||||||
#
|
#
|
||||||
# Configure file
|
# Configure file
|
||||||
# (plug vars to #define so that they can be tested)
|
# (plug vars to #define so that they can be tested)
|
||||||
|
@ -1114,7 +1114,22 @@ int main()
|
|||||||
#else
|
#else
|
||||||
cmFailed("Generated header included by non-generated source failed.");
|
cmFailed("Generated header included by non-generated source failed.");
|
||||||
#endif
|
#endif
|
||||||
|
if(SHOULD_BE_ZERO == 0)
|
||||||
|
{
|
||||||
|
cmPassed("cmakedefine01 is working for 0");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cmFailed("cmakedefine01 is not working for 0");
|
||||||
|
}
|
||||||
|
if(SHOULD_BE_ONE == 1)
|
||||||
|
{
|
||||||
|
cmPassed("cmakedefine01 is working for 1");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cmFailed("cmakedefine01 is not working for 1");
|
||||||
|
}
|
||||||
#ifdef FORCE_TEST
|
#ifdef FORCE_TEST
|
||||||
cmFailed("CMake SET CACHE FORCE");
|
cmFailed("CMake SET CACHE FORCE");
|
||||||
#else
|
#else
|
||||||
|
@ -39,6 +39,8 @@
|
|||||||
#cmakedefine CMAKE_NO_ANSI_STRING_STREAM
|
#cmakedefine CMAKE_NO_ANSI_STRING_STREAM
|
||||||
#cmakedefine CMAKE_NO_ANSI_FOR_SCOPE
|
#cmakedefine CMAKE_NO_ANSI_FOR_SCOPE
|
||||||
|
|
||||||
|
#cmakedefine01 SHOULD_BE_ZERO
|
||||||
|
#cmakedefine01 SHOULD_BE_ONE
|
||||||
// Needed to check for files
|
// Needed to check for files
|
||||||
|
|
||||||
#define BINARY_DIR "${Complex_BINARY_DIR}"
|
#define BINARY_DIR "${Complex_BINARY_DIR}"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user