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