1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "tools/gn/config_values.h"
10 void VectorAppend(std::vector
<T
>* append_to
,
11 const std::vector
<T
>& append_this
) {
12 if (append_this
.empty())
14 append_to
->insert(append_to
->end(),append_this
.begin(), append_this
.end());
19 ConfigValues::ConfigValues() {
22 ConfigValues::~ConfigValues() {
25 void ConfigValues::AppendValues(const ConfigValues
& append
) {
26 VectorAppend(&cflags_
, append
.cflags_
);
27 VectorAppend(&cflags_c_
, append
.cflags_c_
);
28 VectorAppend(&cflags_cc_
, append
.cflags_cc_
);
29 VectorAppend(&cflags_objc_
, append
.cflags_objc_
);
30 VectorAppend(&cflags_objcc_
, append
.cflags_objcc_
);
31 VectorAppend(&defines_
, append
.defines_
);
32 VectorAppend(&include_dirs_
, append
.include_dirs_
);
33 VectorAppend(&ldflags_
, append
.ldflags_
);
34 VectorAppend(&lib_dirs_
, append
.lib_dirs_
);
35 VectorAppend(&libs_
, append
.libs_
);
37 // Only append precompiled header if there isn't one. It might be nice to
38 // throw an error if there are conflicting precompiled headers, but that
39 // requires piping through some context of the actual configs involved, and
40 // conflicts here should be very unusual. Instead, use the first value.
41 if (!append
.precompiled_header_
.empty() && !precompiled_header_
.empty())
42 precompiled_header_
= append
.precompiled_header_
;
43 if (!append
.precompiled_source_
.is_null() && !precompiled_source_
.is_null())
44 precompiled_source_
= append
.precompiled_source_
;