https://github.com/Kitware/CMake
Revision 089fe1c13d8fa73be5182162a855c17351d1f918 authored by Stephen Kelly on 01 February 2013, 08:38:40 UTC, committed by Stephen Kelly on 02 February 2013, 14:06:53 UTC
While porting boost to use these features, the generation step took
too long (several minutes before I stopped it). The reason was that
the boost libraries form a large interdependent mesh. The libraries
list their dependencies in their INTERFACE such as:

 $<LINKED:boost::core>;$<LINKED:boost::config>;$<LINKED:boost::mpl>

As boost::core already depends on the boost::config libraries, that
expression has no impact on the end-content, as it is removed after
the generation step. There is no DAG issue though, so the generator
expression evaluation would fully evaluate them. In the case of the
config library, it also depends on the core library, so all depends
are followed through that again, despite the fact that they've just
been evaluated. After this patch, the evaluation skips libraries if
they have already been seen via depends or directly in the content.

This patch keeps track of targets whose INTERFACE has been consumed
already. The INCLUDE_DIRECTORIES and COMPILE_DEFINITIONS properties
are whitelisted because repeated content will be stripped out later
during generation. For other properties now and in the future, that
may not be the case.
1 parent 179f495
History
Tip revision: 089fe1c13d8fa73be5182162a855c17351d1f918 authored by Stephen Kelly on 01 February 2013, 08:38:40 UTC
Optimize genex evaluation for includes and defines.
Tip revision: 089fe1c
File Mode Size
Architecture
ArgumentExpansion
Assembler
BuildDepends
BundleGeneratorTest
BundleTest
BundleUtilities
CFBundleTest
CMakeCommands
CMakeLib
CMakeOnly
CMakeTestAllGenerators
CMakeTestBadCommandLines
CMakeTestMultipleConfigures
CMakeTests
COnly
CPackComponents
CPackComponentsForAll
CPackTestAllGenerators
CPackWiXGenerator
CTestConfig
CTestLimitDashJ
CTestScriptMode
CTestTest
CTestTest2
CTestTestBadExe
CTestTestChecksum
CTestTestConfigFileInBuildDir
CTestTestCostSerial
CTestTestCrash
CTestTestCycle
CTestTestDepends
CTestTestFailedSubmits
CTestTestFailure
CTestTestMemcheck
CTestTestParallel
CTestTestResourceLock
CTestTestRunScript
CTestTestScheduler
CTestTestStopTime
CTestTestSubdir
CTestTestTimeout
CTestTestUpload
CTestTestZeroTimeout
CheckCompilerRelatedVariables
CommandLineTest
CompatibleInterface
CompileCommandOutput
CompileDefinitions
Complex
ComplexOneConfig
Contracts
CrossCompile
CustComDepend
CustomCommand
CustomCommandWorkingDirectory
CxxOnly
Dependency
DocTest
DoubleProject
EmptyDepends
EmptyLibrary
Environment
ExportImport
ExternalOBJ
ExternalProject
ExternalProjectUpdate
FindModulesExecuteAll
FindPackageModeMakefileTest
FindPackageTest
ForceInclude
Fortran
FortranC
FortranOnly
Framework
FunctionTest
GeneratorExpression
IPO
IncludeDirectories
JCTest
Java
Jump
LibName
LinkDirectory
LinkFlags
LinkLanguage
LinkLine
LinkLineOrder
LinkStatic
LoadCommand
LoadCommandOneConfig
MFC
MacroTest
MakeClean
MathTest
MissingSourceFile
Module
ModuleDefinition
MumpsCoverage
NewlineArgs
ObjC++
ObjectLibrary
OutDir
OutOfBinary
OutOfSource
PDBDirectoryAndName
PerConfig
Plugin
Policy0002
PolicyScope
PositionIndependentTargets
PreOrder
PrecompiledHeader
Preprocess
Properties
Qt4Deploy
Qt4Targets
QtAutomoc
ReturnTest
RunCMake
RuntimePath
SBCS
SameName
SetLang
Simple
SimpleCOnly
SimpleExclude
SimpleInstall
SimpleInstallS2
SourceGroups
StringFileTest
SubDir
SubDirSpaces
SubProject
SwigTest
SystemInformation
TarTest
TargetName
TestDriver
Testing
TestsWorkingDirectory
TryCompile
Tutorial
Unset
VSExcludeFromDefaultBuild
VSExternalInclude
VSGNUFortran
VSMidl
VSResource
VariableUnusedViaSet
VariableUnusedViaUnset
VariableUsage
Wrapping
X11
iOSNavApp
.NoDartCoverage -rw-r--r-- 39 bytes
CMakeBuildTest.cmake.in -rw-r--r-- 2.0 KB
CMakeInstall.cmake -rw-r--r-- 1.7 KB
CMakeLists.txt -rw-r--r-- 98.0 KB
CMakeWizardTest.cmake -rw-r--r-- 1.2 KB
CTestUpdateBZR.cmake.in -rw-r--r-- 4.6 KB
CTestUpdateCVS.cmake.in -rw-r--r-- 5.2 KB
CTestUpdateCommon.cmake -rw-r--r-- 7.6 KB
CTestUpdateGIT.cmake.in -rw-r--r-- 9.1 KB
CTestUpdateGIT.sh.in -rwxr-xr-x 135 bytes
CTestUpdateHG.cmake.in -rw-r--r-- 4.8 KB
CTestUpdateSVN.cmake.in -rw-r--r-- 4.8 KB
CheckFortran.cmake -rw-r--r-- 2.1 KB
EnforceConfig.cmake.in -rw-r--r-- 883 bytes
README -rw-r--r-- 1.9 KB
TestInstall.sh.in -rwxr-xr-x 1.2 KB
bootstrap.bat.in -rw-r--r-- 47 bytes
test_clean.cmake.in -rw-r--r-- 81 bytes

README

back to top