Merge topic 'PLATFORM_ID-genex'
dcc00ec
Genex: Add the PLATFORM_ID expression.
This commit is contained in:
commit
058af7a6ce
|
@ -40,6 +40,9 @@
|
||||||
"is exported using export(), or when the target is used by another " \
|
"is exported using export(), or when the target is used by another " \
|
||||||
"target in the same buildsystem. Expands to the empty string " \
|
"target in the same buildsystem. Expands to the empty string " \
|
||||||
"otherwise.\n" \
|
"otherwise.\n" \
|
||||||
|
" $<PLATFORM_ID> = The CMake-id of the platform " \
|
||||||
|
" $<PLATFORM_ID:comp> = '1' if the The CMake-id of the " \
|
||||||
|
"platform matches comp, otherwise '0'.\n" \
|
||||||
" $<C_COMPILER_ID> = The CMake-id of the C compiler " \
|
" $<C_COMPILER_ID> = The CMake-id of the C compiler " \
|
||||||
"used.\n" \
|
"used.\n" \
|
||||||
" $<C_COMPILER_ID:comp> = '1' if the CMake-id of the C " \
|
" $<C_COMPILER_ID:comp> = '1' if the CMake-id of the C " \
|
||||||
|
|
|
@ -437,6 +437,39 @@ static const struct CxxCompilerVersionNode : public CompilerVersionNode
|
||||||
} cxxCompilerVersionNode;
|
} cxxCompilerVersionNode;
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
struct PlatformIdNode : public cmGeneratorExpressionNode
|
||||||
|
{
|
||||||
|
PlatformIdNode() {}
|
||||||
|
|
||||||
|
virtual int NumExpectedParameters() const { return ZeroOrMoreParameters; }
|
||||||
|
|
||||||
|
std::string Evaluate(const std::vector<std::string> ¶meters,
|
||||||
|
cmGeneratorExpressionContext *context,
|
||||||
|
const GeneratorExpressionContent *,
|
||||||
|
cmGeneratorExpressionDAGChecker *) const
|
||||||
|
{
|
||||||
|
const char *platformId = context->Makefile ?
|
||||||
|
context->Makefile->GetSafeDefinition(
|
||||||
|
"CMAKE_SYSTEM_NAME") : "";
|
||||||
|
if (parameters.size() == 0)
|
||||||
|
{
|
||||||
|
return platformId ? platformId : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!platformId)
|
||||||
|
{
|
||||||
|
return parameters.front().empty() ? "1" : "0";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cmsysString_strcasecmp(parameters.begin()->c_str(), platformId) == 0)
|
||||||
|
{
|
||||||
|
return "1";
|
||||||
|
}
|
||||||
|
return "0";
|
||||||
|
}
|
||||||
|
} platformIdNode;
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
static const struct VersionGreaterNode : public cmGeneratorExpressionNode
|
static const struct VersionGreaterNode : public cmGeneratorExpressionNode
|
||||||
{
|
{
|
||||||
|
@ -1356,6 +1389,8 @@ cmGeneratorExpressionNode* GetNode(const std::string &identifier)
|
||||||
return &cCompilerVersionNode;
|
return &cCompilerVersionNode;
|
||||||
else if (identifier == "CXX_COMPILER_VERSION")
|
else if (identifier == "CXX_COMPILER_VERSION")
|
||||||
return &cxxCompilerVersionNode;
|
return &cxxCompilerVersionNode;
|
||||||
|
else if (identifier == "PLATFORM_ID")
|
||||||
|
return &platformIdNode;
|
||||||
else if (identifier == "CONFIGURATION")
|
else if (identifier == "CONFIGURATION")
|
||||||
return &configurationNode;
|
return &configurationNode;
|
||||||
else if (identifier == "CONFIG")
|
else if (identifier == "CONFIG")
|
||||||
|
|
|
@ -186,6 +186,11 @@ add_custom_target(check-part3 ALL
|
||||||
-Dtest_alias_target_name=$<STREQUAL:$<TARGET_PROPERTY:Alias::SomeLib,NAME>,$<TARGET_PROPERTY:empty1,NAME>>
|
-Dtest_alias_target_name=$<STREQUAL:$<TARGET_PROPERTY:Alias::SomeLib,NAME>,$<TARGET_PROPERTY:empty1,NAME>>
|
||||||
-Dtest_early_termination_1=$<$<1:>:
|
-Dtest_early_termination_1=$<$<1:>:
|
||||||
-Dtest_early_termination_2=$<$<1:>:,
|
-Dtest_early_termination_2=$<$<1:>:,
|
||||||
|
-Dsystem_name=${CMAKE_HOST_SYSTEM_NAME}
|
||||||
|
-Dtest_platform_id=$<PLATFORM_ID>
|
||||||
|
-Dtest_platform_id_Linux=$<PLATFORM_ID:Linux>
|
||||||
|
-Dtest_platform_id_Windows=$<PLATFORM_ID:Windows>
|
||||||
|
-Dtest_platform_id_Darwin=$<PLATFORM_ID:Darwin>
|
||||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/check-part3.cmake
|
-P ${CMAKE_CURRENT_SOURCE_DIR}/check-part3.cmake
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo "check done (part 3 of 3)"
|
COMMAND ${CMAKE_COMMAND} -E echo "check done (part 3 of 3)"
|
||||||
VERBATIM
|
VERBATIM
|
||||||
|
|
|
@ -26,3 +26,11 @@ check(test_alias_file_lib "1")
|
||||||
check(test_alias_target_name "1")
|
check(test_alias_target_name "1")
|
||||||
check(test_early_termination_1 "$<:")
|
check(test_early_termination_1 "$<:")
|
||||||
check(test_early_termination_2 "$<:,")
|
check(test_early_termination_2 "$<:,")
|
||||||
|
check(test_platform_id "${system_name}")
|
||||||
|
foreach(system Linux Windows Darwin)
|
||||||
|
if(system_name STREQUAL system)
|
||||||
|
check(test_platform_id_${system} 1)
|
||||||
|
else()
|
||||||
|
check(test_platform_id_${system} 0)
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
Loading…
Reference in New Issue