1
/*=========================================================================
3
Program: CMake - Cross-Platform Makefile Generator
4
Module: $RCSfile: cmOrderDirectories.cxx,v $
6
Date: $Date: 2008-12-31 15:14:30 $
7
Version: $Revision: 1.4.2.2 $
9
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
10
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
12
This software is distributed WITHOUT ANY WARRANTY; without even
13
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14
PURPOSE. See the above copyright notices for more information.
16
=========================================================================*/
1
/*============================================================================
2
CMake - Cross Platform Makefile Generator
3
Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
5
Distributed under the OSI-approved BSD License (the "License");
6
see accompanying file Copyright.txt for details.
8
This software is distributed WITHOUT ANY WARRANTY; without even the
9
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
See the License for more information.
11
============================================================================*/
17
12
#include "cmOrderDirectories.h"
19
14
#include "cmGlobalGenerator.h"
372
367
//----------------------------------------------------------------------------
374
369
cmOrderDirectories
370
::AddLanguageDirectories(std::vector<std::string> const& dirs)
372
this->LanguageDirectories.insert(this->LanguageDirectories.end(),
373
dirs.begin(), dirs.end());
376
//----------------------------------------------------------------------------
375
379
::SetImplicitDirectories(std::set<cmStdString> const& implicitDirs)
377
381
this->ImplicitDirectories = implicitDirs;
393
397
// Add user directories specified for inclusion. These should be
394
398
// indexed first so their original order is preserved as much as
395
399
// possible subject to the constraints.
396
for(std::vector<std::string>::const_iterator
397
di = this->UserDirectories.begin();
398
di != this->UserDirectories.end(); ++di)
400
// We never explicitly specify implicit link directories.
401
if(this->ImplicitDirectories.find(*di) !=
402
this->ImplicitDirectories.end())
407
// Skip the empty string.
413
// Add this directory.
414
this->AddOriginalDirectory(*di);
400
this->AddOriginalDirectories(this->UserDirectories);
417
402
// Add directories containing constraints.
418
403
for(unsigned int i=0; i < this->ConstraintEntries.size(); ++i)
420
405
this->ConstraintEntries[i]->AddDirectory();
408
// Add language runtime directories last.
409
this->AddOriginalDirectories(this->LanguageDirectories);
424
412
//----------------------------------------------------------------------------
441
429
//----------------------------------------------------------------------------
432
::AddOriginalDirectories(std::vector<std::string> const& dirs)
434
for(std::vector<std::string>::const_iterator di = dirs.begin();
435
di != dirs.end(); ++di)
437
// We never explicitly specify implicit link directories.
438
if(this->ImplicitDirectories.find(*di) !=
439
this->ImplicitDirectories.end())
444
// Skip the empty string.
450
// Add this directory.
451
this->AddOriginalDirectory(*di);
455
//----------------------------------------------------------------------------
442
456
struct cmOrderDirectoriesCompare
444
458
typedef std::pair<int, int> ConflictPair;