summaryrefslogtreecommitdiff
path: root/Source/cmTargetCompileOptionsCommand.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmTargetCompileOptionsCommand.cxx')
-rw-r--r--Source/cmTargetCompileOptionsCommand.cxx11
1 files changed, 9 insertions, 2 deletions
diff --git a/Source/cmTargetCompileOptionsCommand.cxx b/Source/cmTargetCompileOptionsCommand.cxx
index e39b726705..dee2c10a39 100644
--- a/Source/cmTargetCompileOptionsCommand.cxx
+++ b/Source/cmTargetCompileOptionsCommand.cxx
@@ -5,6 +5,7 @@
#include "cmListFileCache.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
+#include "cmPolicies.h"
#include "cmStringAlgorithms.h"
#include "cmTarget.h"
#include "cmTargetPropCommandBase.h"
@@ -27,10 +28,16 @@ private:
bool HandleDirectContent(cmTarget* tgt,
const std::vector<std::string>& content,
- bool /*prepend*/, bool /*system*/) override
+ bool prepend, bool /*system*/) override
{
+ cmPolicies::PolicyStatus policyStatus =
+ this->Makefile->GetPolicyStatus(cmPolicies::CMP0101);
+ if (policyStatus == cmPolicies::OLD || policyStatus == cmPolicies::WARN) {
+ prepend = false;
+ }
+
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
- tgt->InsertCompileOption(this->Join(content), lfbt);
+ tgt->InsertCompileOption(this->Join(content), lfbt, prepend);
return true; // Successfully handled.
}