15f9996aaSopenharmony_ci# Copyright (c) 2020 Huawei Device Co., Ltd.
25f9996aaSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
35f9996aaSopenharmony_ci# you may not use this file except in compliance with the License.
45f9996aaSopenharmony_ci# You may obtain a copy of the License at
55f9996aaSopenharmony_ci#
65f9996aaSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
75f9996aaSopenharmony_ci#
85f9996aaSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
95f9996aaSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
105f9996aaSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
115f9996aaSopenharmony_ci# See the License for the specific language governing permissions and
125f9996aaSopenharmony_ci# limitations under the License.
135f9996aaSopenharmony_ci
145f9996aaSopenharmony_ciconfig("cpu_arch") {
155f9996aaSopenharmony_ci  cflags = target_arch_cflags
165f9996aaSopenharmony_ci  cflags_cc = cflags
175f9996aaSopenharmony_ci  ldflags = cflags
185f9996aaSopenharmony_ci  asmflags = cflags
195f9996aaSopenharmony_ci}
205f9996aaSopenharmony_ci
215f9996aaSopenharmony_ciconfig("gtest_feature_cpp") {
225f9996aaSopenharmony_ci  cflags_cc = [ "-std=c++17" ]
235f9996aaSopenharmony_ci}
245f9996aaSopenharmony_ci
255f9996aaSopenharmony_ciconfig("language_c") {
265f9996aaSopenharmony_ci  cflags_c = [ "-std=c99" ]
275f9996aaSopenharmony_ci}
285f9996aaSopenharmony_ci
295f9996aaSopenharmony_ciconfig("language_cpp") {
305f9996aaSopenharmony_ci  cflags_cc = [ "-std=c++11" ]
315f9996aaSopenharmony_ci}
325f9996aaSopenharmony_ci
335f9996aaSopenharmony_ciconfig("kernel_macros") {
345f9996aaSopenharmony_ci  if (ohos_kernel_type == "liteos_a") {
355f9996aaSopenharmony_ci    defines = [
365f9996aaSopenharmony_ci      "__LITEOS__",
375f9996aaSopenharmony_ci      "__LITEOS_A__",
385f9996aaSopenharmony_ci    ]
395f9996aaSopenharmony_ci  } else if (ohos_kernel_type == "liteos_m") {
405f9996aaSopenharmony_ci    defines = [
415f9996aaSopenharmony_ci      "__LITEOS__",
425f9996aaSopenharmony_ci      "__LITEOS_M__",
435f9996aaSopenharmony_ci    ]
445f9996aaSopenharmony_ci  } else if (ohos_kernel_type == "uniproton") {
455f9996aaSopenharmony_ci    defines = [
465f9996aaSopenharmony_ci      "__uniproton__",
475f9996aaSopenharmony_ci      "__UNIPROTON__",
485f9996aaSopenharmony_ci    ]
495f9996aaSopenharmony_ci  } else if (ohos_kernel_type == "linux") {
505f9996aaSopenharmony_ci    defines = [
515f9996aaSopenharmony_ci      "__linux__",
525f9996aaSopenharmony_ci      "__LINUX__",
535f9996aaSopenharmony_ci    ]
545f9996aaSopenharmony_ci  }
555f9996aaSopenharmony_ci}
565f9996aaSopenharmony_ci
575f9996aaSopenharmony_ciconfig("werror") {
585f9996aaSopenharmony_ci  cflags = [ "-Werror" ]
595f9996aaSopenharmony_ci  cflags_cc = cflags
605f9996aaSopenharmony_ci}
615f9996aaSopenharmony_ci
625f9996aaSopenharmony_ciconfig("common") {
635f9996aaSopenharmony_ci  defines = [ "_XOPEN_SOURCE=700" ]
645f9996aaSopenharmony_ci  cflags = [
655f9996aaSopenharmony_ci    "-fno-common",
665f9996aaSopenharmony_ci    "-fno-builtin",
675f9996aaSopenharmony_ci    "-fno-strict-aliasing",
685f9996aaSopenharmony_ci    "-Wall",
695f9996aaSopenharmony_ci  ]
705f9996aaSopenharmony_ci  if (ohos_kernel_type == "linux") {
715f9996aaSopenharmony_ci    cflags += [
725f9996aaSopenharmony_ci      "-funwind-tables",
735f9996aaSopenharmony_ci      "-fasynchronous-unwind-tables",
745f9996aaSopenharmony_ci    ]
755f9996aaSopenharmony_ci  }
765f9996aaSopenharmony_ci  cflags_cc = cflags
775f9996aaSopenharmony_ci  cflags += [ "-fsigned-char" ]
785f9996aaSopenharmony_ci}
795f9996aaSopenharmony_ci
805f9996aaSopenharmony_ciconfig("security") {
815f9996aaSopenharmony_ci  # Need to support fortify ability first in musl libc, so disable the option temporarily
825f9996aaSopenharmony_ci  # defines = [ "_FORTIFY_SOURCE=2" ]
835f9996aaSopenharmony_ci
845f9996aaSopenharmony_ci  cflags = [ "-fstack-protector-all" ]
855f9996aaSopenharmony_ci  cflags_cc = cflags
865f9996aaSopenharmony_ci
875f9996aaSopenharmony_ci  ldflags = [
885f9996aaSopenharmony_ci    "-Wl,-z,now",
895f9996aaSopenharmony_ci    "-Wl,-z,relro",
905f9996aaSopenharmony_ci    "-Wl,-z,noexecstack",
915f9996aaSopenharmony_ci  ]
925f9996aaSopenharmony_ci}
935f9996aaSopenharmony_ci
945f9996aaSopenharmony_ciconfig("exceptions") {
955f9996aaSopenharmony_ci  cflags_cc = [ "-fexceptions" ]
965f9996aaSopenharmony_ci  cflags_objcc = cflags_cc
975f9996aaSopenharmony_ci}
985f9996aaSopenharmony_ci
995f9996aaSopenharmony_ciconfig("no_exceptions") {
1005f9996aaSopenharmony_ci  cflags_cc = [ "-fno-exceptions" ]
1015f9996aaSopenharmony_ci  cflags_objcc = cflags_cc
1025f9996aaSopenharmony_ci  ldflags = cflags_cc
1035f9996aaSopenharmony_ci}
1045f9996aaSopenharmony_ci
1055f9996aaSopenharmony_ciconfig("stack_protector") {
1065f9996aaSopenharmony_ci  cflags = [ "-fstack-protector-all" ]
1075f9996aaSopenharmony_ci  cflags_cc = cflags
1085f9996aaSopenharmony_ci}
1095f9996aaSopenharmony_ci
1105f9996aaSopenharmony_ciconfig("static_pie_config") {
1115f9996aaSopenharmony_ci  cflags = [ "-fPIE" ]
1125f9996aaSopenharmony_ci  cflags_cc = cflags
1135f9996aaSopenharmony_ci}
1145f9996aaSopenharmony_ci
1155f9996aaSopenharmony_ciconfig("shared_library_config") {
1165f9996aaSopenharmony_ci  cflags = [ "-fPIC" ]
1175f9996aaSopenharmony_ci  cflags_cc = cflags
1185f9996aaSopenharmony_ci}
1195f9996aaSopenharmony_ci
1205f9996aaSopenharmony_ciconfig("pie_executable_config") {
1215f9996aaSopenharmony_ci  ldflags = [ "-pie" ]
1225f9996aaSopenharmony_ci}
1235f9996aaSopenharmony_ci
1245f9996aaSopenharmony_ciconfig("ohos_clang") {
1255f9996aaSopenharmony_ci  if (ohos_kernel_type == "linux") {
1265f9996aaSopenharmony_ci    defines = [
1275f9996aaSopenharmony_ci      "_LIBCPP_HAS_MUSL_LIBC",
1285f9996aaSopenharmony_ci      "__BUILD_LINUX_WITH_CLANG",
1295f9996aaSopenharmony_ci    ]
1305f9996aaSopenharmony_ci  }
1315f9996aaSopenharmony_ci  ldflags = [
1325f9996aaSopenharmony_ci    "-fuse-ld=lld",
1335f9996aaSopenharmony_ci    "--rtlib=compiler-rt",
1345f9996aaSopenharmony_ci  ]
1355f9996aaSopenharmony_ci}
1365f9996aaSopenharmony_ci
1375f9996aaSopenharmony_ciconfig("release") {
1385f9996aaSopenharmony_ci  defines = [ "OHOS_RELEASE" ]
1395f9996aaSopenharmony_ci}
1405f9996aaSopenharmony_ci
1415f9996aaSopenharmony_ciconfig("debug") {
1425f9996aaSopenharmony_ci  defines = [ "OHOS_DEBUG" ]
1435f9996aaSopenharmony_ci}
1445f9996aaSopenharmony_ci
1455f9996aaSopenharmony_ciconfig("clang_opt") {
1465f9996aaSopenharmony_ci  cflags = [
1475f9996aaSopenharmony_ci    "-Oz",
1485f9996aaSopenharmony_ci    "-flto",
1495f9996aaSopenharmony_ci  ]
1505f9996aaSopenharmony_ci  cflags_cc = cflags
1515f9996aaSopenharmony_ci}
1525f9996aaSopenharmony_ci
1535f9996aaSopenharmony_ciconfig("gcc_opt") {
1545f9996aaSopenharmony_ci  cflags = [ "-Os" ]
1555f9996aaSopenharmony_ci  cflags_cc = cflags
1565f9996aaSopenharmony_ci}
1575f9996aaSopenharmony_ci
1585f9996aaSopenharmony_ciconfig("default_link_path") {
1595f9996aaSopenharmony_ci  ldflags = [
1605f9996aaSopenharmony_ci    "-L.",
1615f9996aaSopenharmony_ci    "-Wl,-rpath-link=.",
1625f9996aaSopenharmony_ci  ]
1635f9996aaSopenharmony_ci}
1645f9996aaSopenharmony_ci
1655f9996aaSopenharmony_ciconfig("board_config") {
1665f9996aaSopenharmony_ci  cflags = []
1675f9996aaSopenharmony_ci  cflags_cc = []
1685f9996aaSopenharmony_ci  ldflags = []
1695f9996aaSopenharmony_ci  include_dirs = []
1705f9996aaSopenharmony_ci  defines = []
1715f9996aaSopenharmony_ci  asmflags = []
1725f9996aaSopenharmony_ci  cflags += board_cflags
1735f9996aaSopenharmony_ci  cflags_cc += board_cxx_flags
1745f9996aaSopenharmony_ci  ldflags += board_ld_flags
1755f9996aaSopenharmony_ci  include_dirs += board_include_dirs
1765f9996aaSopenharmony_ci  if (defined(board_macro_defines)) {
1775f9996aaSopenharmony_ci    defines += board_macro_defines
1785f9996aaSopenharmony_ci  }
1795f9996aaSopenharmony_ci  if (defined(board_asmflags)) {
1805f9996aaSopenharmony_ci    asmflags += board_asmflags
1815f9996aaSopenharmony_ci  }
1825f9996aaSopenharmony_ci}
1835f9996aaSopenharmony_ci
1845f9996aaSopenharmony_ciconfig("board_exe_ld_flags") {
1855f9996aaSopenharmony_ci  ldflags = []
1865f9996aaSopenharmony_ci  if (defined(board_exe_ld_flags)) {
1875f9996aaSopenharmony_ci    ldflags += board_exe_ld_flags
1885f9996aaSopenharmony_ci  }
1895f9996aaSopenharmony_ci}
190