summaryrefslogtreecommitdiffstats
path: root/Source/cmProjectCommand.cxx
diff options
context:
space:
mode:
authorfriendlyanon <friendlyanon_@hotmail.com>2021-03-24 19:59:14 (GMT)
committerBrad King <brad.king@kitware.com>2021-03-26 13:35:34 (GMT)
commit96a704010713833e9ec17fa78495df3e0852bbf5 (patch)
tree81dcf4a132a5461584c773a2ad34532f5977a3b0 /Source/cmProjectCommand.cxx
parent3706e9c97cef2ad8097adfd4ed2f04ff08398787 (diff)
downloadCMake-96a704010713833e9ec17fa78495df3e0852bbf5.zip
CMake-96a704010713833e9ec17fa78495df3e0852bbf5.tar.gz
CMake-96a704010713833e9ec17fa78495df3e0852bbf5.tar.bz2
project: Define variables indicating whether project is top level
Define `PROJECT_IS_TOP_LEVEL` and `<PROJECT-NAME>_IS_TOP_LEVEL`. The latter is a STATIC cache entry just like other `<PROJECT-NAME>_*` variables so that it is globally scoped. Issue: #20310 Fixes: #21961
Diffstat (limited to 'Source/cmProjectCommand.cxx')
-rw-r--r--Source/cmProjectCommand.cxx5
1 files changed, 5 insertions, 0 deletions
diff --git a/Source/cmProjectCommand.cxx b/Source/cmProjectCommand.cxx
index ed32de9..acdb09f 100644
--- a/Source/cmProjectCommand.cxx
+++ b/Source/cmProjectCommand.cxx
@@ -59,6 +59,11 @@ bool cmProjectCommand(std::vector<std::string> const& args,
mf.AddDefinition("PROJECT_NAME", projectName);
+ mf.AddDefinitionBool("PROJECT_IS_TOP_LEVEL", mf.IsRootMakefile());
+ mf.AddCacheDefinition(projectName + "_IS_TOP_LEVEL",
+ mf.IsRootMakefile() ? "ON" : "OFF",
+ "Value Computed by CMake", cmStateEnums::STATIC);
+
// Set the CMAKE_PROJECT_NAME variable to be the highest-level
// project name in the tree. If there are two project commands
// in the same CMakeLists.txt file, and it is the top level