/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmConditionEvaluator.h" #include #include #include #include #include #include #include #include #include #include #include "cmsys/RegularExpression.hxx" #include "cmCMakePath.h" #include "cmExpandedCommandArgument.h" #include "cmList.h" #include "cmMakefile.h" #include "cmMessageType.h" #include "cmState.h" #include "cmStringAlgorithms.h" #include "cmSystemTools.h" #include "cmValue.h" #include "cmake.h" namespace { auto const keyAND = "AND"_s; auto const keyCOMMAND = "COMMAND"_s; auto const keyDEFINED = "DEFINED"_s; auto const keyEQUAL = "EQUAL"_s; auto const keyEXISTS = "EXISTS"_s; auto const keyIS_READABLE = "IS_READABLE"_s; auto const keyIS_WRITABLE = "IS_WRITABLE"_s; auto const keyIS_EXECUTABLE = "IS_EXECUTABLE"_s; auto const keyGREATER = "GREATER"_s; auto const keyGREATER_EQUAL = "GREATER_EQUAL"_s; auto const keyIN_LIST = "IN_LIST"_s; auto const keyIS_ABSOLUTE = "IS_ABSOLUTE"_s; auto const keyIS_DIRECTORY = "IS_DIRECTORY"_s; auto const keyIS_NEWER_THAN = "IS_NEWER_THAN"_s; auto const keyIS_SYMLINK = "IS_SYMLINK"_s; auto const keyLESS = "LESS"_s; auto const keyLESS_EQUAL = "LESS_EQUAL"_s; auto const keyMATCHES = "MATCHES"_s; auto const keyNOT = "NOT"_s; auto const keyOR = "OR"_s; auto const keyParenL = "("_s; auto const keyParenR = ")"_s; auto const keyPOLICY = "POLICY"_s; auto const keySTREQUAL = "STREQUAL"_s; auto const keySTRGREATER = "STRGREATER"_s; auto const keySTRGREATER_EQUAL = "STRGREATER_EQUAL"_s; auto const keySTRLESS = "STRLESS"_s; auto const keySTRLESS_EQUAL = "STRLESS_EQUAL"_s; auto const keyTARGET = "TARGET"_s; auto const keyTEST = "TEST"_s; auto const keyVERSION_EQUAL = "VERSION_EQUAL"_s; auto const keyVERSION_GREATER = "VERSION_GREATER"_s; auto const keyVERSION_GREATER_EQUAL = "VERSION_GREATER_EQUAL"_s; auto const keyVERSION_LESS = "VERSION_LESS"_s; auto const keyVERSION_LESS_EQUAL = "VERSION_LESS_EQUAL"_s; auto const keyPATH_EQUAL = "PATH_EQUAL"_s; cmSystemTools::CompareOp const MATCH2CMPOP[5] = { cmSystemTools::OP_LESS, cmSystemTools::OP_LESS_EQUAL, cmSystemTools::OP_GREATER, cmSystemTools::OP_GREATER_EQUAL, cmSystemTools::OP_EQUAL }; // Run-Time to Compile-Time template selector template