• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2020-2022 Huawei Device Co., Ltd. All rights reserved.
2#
3# Redistribution and use in source and binary forms, with or without modification,
4# are permitted provided that the following conditions are met:
5#
6# 1. Redistributions of source code must retain the above copyright notice, this list of
7#    conditions and the following disclaimer.
8#
9# 2. Redistributions in binary form must reproduce the above copyright notice, this list
10#    of conditions and the following disclaimer in the documentation and/or other materials
11#    provided with the distribution.
12#
13# 3. Neither the name of the copyright holder nor the names of its contributors may be used
14#    to endorse or promote products derived from this software without specific prior written
15#    permission.
16#
17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
19# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
21# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
29import("//kernel/uniproton/uniproton.gni")
30import("//third_party/optimized-routines/optimized-routines.gni")
31import("musl.gni")
32
33libc = "musl-c"
34libm = "musl-m"
35
36MENUCONFIG_H = rebase_path("$root_out_dir/config.h")
37
38config("include") {
39  include_dirs = [ "include" ]
40}
41
42static_library(libc) {
43  sources = MUSL_LIBC_SRC
44
45  include_dirs = [
46    "src/include",
47    "src/internal",
48  ]
49
50  include_dirs += [
51    "//kernel/uniproton/src/core/kernel/include",
52    "//kernel/uniproton/src/utility/lib/include",
53    "//kernel/uniproton/src/arch/include",
54    "//kernel/uniproton/src/om/include",
55    "//kernel/uniproton/src/mem/include",
56  ]
57
58  cflags = [
59    "-imacros",
60    "$MENUCONFIG_H",
61  ]
62
63  sources += MUSL_LIBC_OPT_SRC_FOR_ARM
64  if (defined(OS_ARCH_ARMV7_M)) {
65    sources -= [
66      "$MUSLPORTINGDIR/src/string/strcpy.c",
67      "$MUSLPORTINGDIR/src/string/strlen.c",
68    ]
69    sources += OPTRT_STRING_ARM_SRC_FILES_FOR_ARMV7_M
70    asmflags = [
71      "-D__strlen_armv6t2=strlen",
72      "-D__strcpy_arm=strcpy",
73    ]
74    cflags += asmflags
75  }
76
77  public_configs = [ ":include" ]
78}
79
80static_library(libm) {
81  sources = MUSL_LIBM_SRC
82
83  include_dirs = [
84    "src/include",
85    "src/internal",
86  ]
87
88  public_configs = [ ":include" ]
89}
90
91group("kernel") {
92  public_deps = [
93    ":$libc",
94    ":$libm",
95  ]
96}
97