Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / third_party / pigweed / repo / pw_polyfill / BUILD.gn
1 # Copyright 2021 The Pigweed Authors
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License"); you may not
4 # use this file except in compliance with the License. You may obtain a copy of
5 # the License at
6 #
7 #     https://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12 # License for the specific language governing permissions and limitations under
13 # the License.
14
15 import("//build_overrides/pigweed.gni")
16
17 import("$dir_pw_build/target_types.gni")
18 import("$dir_pw_docgen/docs.gni")
19 import("$dir_pw_unit_test/test.gni")
20
21 config("public") {
22   include_dirs = [ "public" ]
23   visibility = [ ":*" ]
24 }
25
26 pw_source_set("pw_polyfill") {
27   public_configs = [ ":public" ]
28   remove_public_deps = [ "*" ]
29   public_deps = [ ":standard_library" ]
30   public = [
31     "public/pw_polyfill/language_feature_macros.h",
32     "public/pw_polyfill/standard.h",
33   ]
34 }
35
36 config("overrides_config") {
37   include_dirs = [ "public_overrides" ]
38   cflags_cc = [
39     # Use -include to include the language features header in dependent files,
40     # without requiring a #include. This allows the use of newer C++ language
41     # features in older C++ versions without an explicit include.
42     "-include",
43     rebase_path("language_features.h"),
44   ]
45   visibility = [ ":*" ]
46 }
47
48 pw_source_set("overrides") {
49   public_configs = [ ":overrides_config" ]
50   remove_public_deps = [ "*" ]
51   public_deps = [
52     ":standard_library",
53     "$dir_pw_span:polyfill",
54   ]
55   inputs = [
56     "public_overrides/array",
57     "public_overrides/assert.h",
58     "public_overrides/bit",
59     "public_overrides/cstddef",
60     "public_overrides/iterator",
61     "public_overrides/type_traits",
62     "public_overrides/utility",
63   ]
64   sources = [ "language_features.h" ]
65 }
66
67 config("standard_library_public") {
68   include_dirs = [ "standard_library_public" ]
69 }
70
71 pw_source_set("standard_library") {
72   public_configs = [ ":standard_library_public" ]
73   remove_public_deps = [ "*" ]
74   public = [
75     "standard_library_public/pw_polyfill/standard_library/array.h",
76     "standard_library_public/pw_polyfill/standard_library/assert.h",
77     "standard_library_public/pw_polyfill/standard_library/bit.h",
78     "standard_library_public/pw_polyfill/standard_library/cstddef.h",
79     "standard_library_public/pw_polyfill/standard_library/iterator.h",
80     "standard_library_public/pw_polyfill/standard_library/namespace.h",
81     "standard_library_public/pw_polyfill/standard_library/type_traits.h",
82     "standard_library_public/pw_polyfill/standard_library/utility.h",
83   ]
84   visibility = [
85     ":overrides",
86     ":pw_polyfill",
87   ]
88 }
89
90 pw_test_group("tests") {
91   tests = [
92     ":default_cpp_test",
93     ":cpp11_test",
94     ":cpp14_test",
95   ]
96   group_deps = [ "$dir_pw_span:tests" ]
97 }
98
99 pw_test("default_cpp_test") {
100   deps = [ ":pw_polyfill" ]
101   sources = [ "test.cc" ]
102 }
103
104 pw_test("cpp11_test") {
105   remove_configs = [ "$dir_pw_build:cpp17" ]
106   configs = [ "$dir_pw_build:cpp11" ]
107   sources = [ "test.cc" ]
108   deps = [ ":pw_polyfill" ]
109 }
110
111 pw_test("cpp14_test") {
112   remove_configs = [ "$dir_pw_build:cpp17" ]
113   configs = [ "$dir_pw_build:cpp14" ]
114   sources = [ "test.cc" ]
115   deps = [ ":pw_polyfill" ]
116 }
117
118 pw_doc_group("docs") {
119   sources = [ "docs.rst" ]
120 }