musl_template.gni 21.2 KB
Newer Older
1
import("//build/config/clang/clang.gni")
W
weichaox 已提交
2
import("//build/ohos.gni")
F
fangting 已提交
3
import("//third_party/optimized-routines/optimized-routines.gni")
W
weichaox 已提交
4 5 6 7
import("musl_src.gni")
template("musl_libs") {
  no_default_deps = true

X
xxlight 已提交
8
  forward_variables_from(invoker, [ "*" ])
W
weichaox 已提交
9

X
xxlight 已提交
10 11
  _libs_path_prefix = "."
  _libs_out_dir = "usr/lib/${musl_target_triple}"
W
weichaox 已提交
12

Z
zengchunliang 已提交
13
  dfx_deps = [ "//base/hiviewdfx/faultloggerd/interfaces/innerkits/signal_handler:dfxsignalhandler" ]
W
weichaox 已提交
14 15 16 17 18 19 20 21 22
  porting_deps = [
    "//third_party/musl:create_alltypes_h",
    "//third_party/musl:create_porting_src",
    "//third_party/musl:create_syscall_h",
    "//third_party/musl:create_version_h",
  ]

  group(target_name) {
    deps = [
X
xxlight 已提交
23 24 25 26
      ":soft_create_linker",
      ":soft_libc_musl_shared",
      ":soft_libc_musl_static",
      ":soft_musl_crt_libs",
W
weichaox 已提交
27 28 29
    ]
  }

X
xxlight 已提交
30
  group("soft_shared_libs") {
W
weichaox 已提交
31 32
    deps = [
      ":musl_headers",
X
xxlight 已提交
33 34 35 36 37 38 39 40 41 42
      ":soft_libc_musl_shared",
      ":soft_libcrypt",
      ":soft_libdl",
      ":soft_libm",
      ":soft_libpthread",
      ":soft_libresolv",
      ":soft_librt",
      ":soft_libutil",
      ":soft_libxnet",
      ":soft_musl_crt_libs",
W
weichaox 已提交
43 44 45
    ]
  }

X
xxlight 已提交
46
  group("soft_static_libs") {
W
weichaox 已提交
47 48
    deps = [
      ":musl_headers",
X
xxlight 已提交
49 50 51 52 53 54 55 56 57 58
      ":soft_libc_musl_static",
      ":soft_libcrypt",
      ":soft_libdl",
      ":soft_libm",
      ":soft_libpthread",
      ":soft_libresolv",
      ":soft_librt",
      ":soft_libutil",
      ":soft_libxnet",
      ":soft_musl_crt_libs",
W
weichaox 已提交
59 60 61
    ]
  }

X
xxlight 已提交
62 63
  group("soft_musl_crt_libs") {
    deps = [ ":soft_musl_crt_install_action" ]
W
weichaox 已提交
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
  }

  # part of default_compiler_configs from build/config/BUILDCONFIG.gn
  musl_inherited_configs = [
    "//build/config/compiler:afdo",
    "//build/config/compiler:afdo_optimize_size",
    "//build/config/compiler:compiler",
    "//build/config/compiler:compiler_arm_fpu",
    "//build/config/compiler:compiler_arm_thumb",
    "//build/config/compiler:chromium_code",
    "//build/config/compiler:default_include_dirs",
    "//build/config/compiler:default_optimization",
    "//build/config/compiler:default_stack_frames",
    "//build/config/compiler:default_symbols",
    "//build/config/compiler:export_dynamic",
    "//build/config/compiler:no_exceptions",
    "//build/config/compiler:no_rtti",
    "//build/config/compiler:runtime_library",
    "//build/config/compiler:thin_archive",
D
dhy308 已提交
83
    "//build/config/sanitizers:default_sanitizer_flags",
W
weichaox 已提交
84 85
  ]

X
xxlight 已提交
86 87
  config("soft_musl_config") {
    configs = [ "//build/config/compiler:compiler_cpu_abi" ]
W
weichaox 已提交
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

    include_dirs = [
      "${target_out_dir}/${musl_ported_dir}/arch/${musl_arch}",
      "${target_out_dir}/${musl_ported_dir}/arch/generic",
      "${target_out_dir}/${musl_ported_dir}/src/internal",
      "${target_out_dir}/${musl_ported_dir}/src/include",
      "${target_out_dir}/${musl_ported_dir}/include",
      "${target_out_dir}/${musl_inc_out_dir}",
    ]

    cflags_basic = [
      "--target=${musl_target_triple}",
      "-Wall",
      "-D_FORTIFY_SOURCE=2",
      "-Wl,-z,relro,-z,now,-z,noexecstack",
    ]

Z
zhuoli 已提交
105
    if (musl_arch == "arm") {
D
dhy308 已提交
106
      cflags_basic += [ "-mtp=cp15" ]
Z
zhuoli 已提交
107 108 109
    } else if (musl_arch == "aarch64") {
    }

W
weichaox 已提交
110 111
    cflags_auto = [
      "-D_XOPEN_SOURCE=700",
D
dhy308 已提交
112
      "-g",
W
weichaox 已提交
113
      "-pipe",
D
dhy308 已提交
114 115 116
      "-fno-omit-frame-pointer",
      "-funwind-tables",
      "-fasynchronous-unwind-tables",
W
weichaox 已提交
117 118 119 120 121 122 123 124 125
      "-ffunction-sections",
      "-fdata-sections",
      "-Werror=implicit-function-declaration",
      "-Werror=implicit-int",
      "-Werror=pointer-sign",
      "-Werror=pointer-arith",
      "-Qunused-arguments",
    ]

M
mucor 已提交
126 127 128 129
    if (!is_asan) {
      cflags_auto += [ "-DHOOK_ENABLE" ]
    }

130
    cflags_auto += [ "-DRESERVE_SIGNAL_STACK" ]
Z
zengchunliang 已提交
131
    cflags_auto += [ "-DDFX_SIGNAL_LIBC" ]
132

W
weichaox 已提交
133 134 135 136 137 138 139 140 141 142 143 144
    cflags_c99fse = [
      "-std=c99",
      "-nostdinc",
      "-ffreestanding",
      "-frounding-math",
      "-Wa,--noexecstack",
    ]

    cflags_all = cflags_basic + cflags_c99fse + cflags_auto

    cflags = cflags_all

X
xxlight 已提交
145
    defines = [ "BROKEN_VFP_ASM" ]
F
fangting 已提交
146
    if (is_standard_system) {
147 148 149 150
      defines += [
        "OHOS_DNS_PROXY_BY_NETSYS=1",
        "OHOS_PERMISSION_INTERNET=1",
      ]
W
weichaox 已提交
151 152
    }

153 154 155 156
    if (!is_standard_system && defined(enable_musl_log)) {
      if (enable_musl_log) {
        defines += [ "ENABLE_MUSL_LOG" ]
      }
G
ganlan 已提交
157 158
    }

W
weichaox 已提交
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
    dynamic_list =
        rebase_path("${target_out_dir}/${musl_ported_dir}/dynamic.list")

    ldflags = cflags_all
    ldflags += [
      "--target=${musl_target_triple}",
      "-fuse-ld=lld",
      "-Wl,--sort-section,alignment",
      "-Wl,--sort-common",
      "-Wl,--gc-sections",
      "-Wl,--hash-style=both",
      "-Wl,--no-undefined",
      "-Wl,--exclude-libs=ALL",
      "-Wl,--dynamic-list=${dynamic_list}",
    ]
    asmflags = cflags
  }

X
xxlight 已提交
177
  config("soft_hook") {
chuxuezhe1111's avatar
chuxuezhe1111 已提交
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
    defines = []
    configs = []

    if (is_posix) {
      configs += [ "//build/config/posix:runtime_library" ]
    }

    cflags_cc = []

    defines = [
      "__GNU_SOURCE=1",  # Necessary for clone().
      "CHROMIUM_CXX_TWEAK_INLINES",  # Saves binary size.
    ]

    defines += [
      "__MUSL__",
      "_LIBCPP_HAS_MUSL_LIBC",
      "__BUILD_LINUX_WITH_CLANG",
    ]
M
mucor 已提交
197 198 199 200

    if (!is_asan) {
      defines += [ "HOOK_ENABLE" ]
    }
chuxuezhe1111's avatar
chuxuezhe1111 已提交
201 202 203 204 205 206 207 208 209
    ldflags = [ "-nostdlib" ]

    libs = []

    if (is_component_build) {
      defines += [ "COMPONENT_BUILD" ]
    }
  }

X
xxlight 已提交
210
  source_set("soft_musl_crt") {
W
weichaox 已提交
211 212 213 214 215
    sources = [
      "${target_out_dir}/${musl_ported_dir}/crt/${musl_arch}/crti.s",
      "${target_out_dir}/${musl_ported_dir}/crt/${musl_arch}/crtn.s",
      "${target_out_dir}/${musl_ported_dir}/crt/Scrt1.c",
      "${target_out_dir}/${musl_ported_dir}/crt/crt1.c",
D
dhy308 已提交
216
      "${target_out_dir}/${musl_ported_dir}/crt/crtplus.c",
W
weichaox 已提交
217 218 219 220 221 222
      "${target_out_dir}/${musl_ported_dir}/crt/rcrt1.c",
    ]

    defines = [ "CRT" ]

    configs -= musl_inherited_configs
X
xxlight 已提交
223
    configs += [ ":soft_musl_config" ]
W
weichaox 已提交
224 225 226 227 228 229 230 231 232 233
    cflags = [
      "-fPIC",
      "-fno-stack-protector",
    ]

    deps = porting_deps

    asmflags = cflags
  }

X
xxlight 已提交
234
  source_set("soft_musl_src") {
W
weichaox 已提交
235 236 237 238 239 240 241 242 243 244 245 246 247 248
    sources_orig = []
    sources = []
    set_sources_assignment_filter([])

    sources_orig = musl_src_arch_file + musl_src_file
    sources_orig -= musl_src_filterout
    sources_orig -= [
      "src/string/mempcpy.c",
      "src/string/memset.c",
      "src/env/__init_tls.c",
      "src/env/__libc_start_main.c",
      "src/env/__stack_chk_fail.c",
    ]

Z
zhuoli 已提交
249
    if (musl_arch == "arm") {
F
fangting 已提交
250 251 252
      sources_orig -= [
        "src/thread/${musl_arch}/__set_thread_area.c",
        "src/string/arm/memcpy_le.S",
F
fangting 已提交
253 254 255
        "src/string/memchr.c",
        "src/string/strcmp.c",
        "src/string/strlen.c",
F
fangting 已提交
256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276
        "src/math/sincosf.c",
        "src/math/sinf.c",
        "src/math/cosf.c",
        "src/math/expf.c",
        "src/math/exp2f.c",
        "src/math/exp2l.c",
        "src/math/exp2.c",
        "src/math/log.c",
        "src/math/logl.c",
        "src/math/log2.c",
        "src/math/log2f.c",
        "src/math/log2l.c",
        "src/math/logf.c",
        "src/math/log_data.c",
        "src/math/logf_data.c",
        "src/math/log2_data.c",
        "src/math/log2f_data.c",
        "src/math/exp2f_data.c",
        "src/math/pow.c",
        "src/math/powf.c",
        "src/math/powl.c",
F
fangting 已提交
277
      ]
Z
zhuoli 已提交
278
    } else if (musl_arch == "aarch64") {
F
fangting 已提交
279 280 281
      sources_orig -= [
        "src/thread/${musl_arch}/__set_thread_area.s",
        "src/string/memcpy.c",
F
fangting 已提交
282
        "src/string/memchr.c",
F
fangting 已提交
283
        "src/string/memcmp.c",
F
fangting 已提交
284 285 286
        "src/string/strcpy.c",
        "src/string/strcmp.c",
        "src/string/strlen.c",
F
fangting 已提交
287 288 289 290 291 292 293 294
        "src/string/stpcpy.c",
        "src/string/strchr.c",
        "src/string/strrchr.c",
        "src/string/strnlen.c",
        "src/string/strncmp.c",
        "src/math/sincosf.c",
        "src/math/sinf.c",
        "src/math/cosf.c",
F
fangting 已提交
295
      ]
W
wangjiahui 已提交
296 297
    } else if (musl_arch == "x86_64") {
      sources_orig -= [ "src/thread/${musl_arch}/__set_thread_area.s" ]
Z
zhuoli 已提交
298 299
    }

F
Far 已提交
300 301 302 303
    defines = []
    if (musl_secure_level > 0) {
      defines += [ "MALLOC_FREELIST_HARDENED" ]
    }
304 305 306
    if (musl_secure_level > 1) {
      defines += [ "MALLOC_FREELIST_QUARANTINE" ]
    }
307 308 309
    if (musl_secure_level > 2) {
      defines += [ "MALLOC_RED_ZONE" ]
    }
310
    if (is_debug || musl_secure_level >= 3) {
F
Far 已提交
311
      defines += [ "MALLOC_SECURE_ALL" ]
W
weichaox 已提交
312 313 314 315 316
    }

    foreach(s, sources_orig) {
      sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
    }
F
fangting 已提交
317
    if (musl_arch == "arm") {
F
fangting 已提交
318
      sources += [
F
fangting 已提交
319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336
        "$OPTRTDIR/math/cosf.c",
        "$OPTRTDIR/math/exp2.c",
        "$OPTRTDIR/math/exp2f.c",
        "$OPTRTDIR/math/exp2f_data.c",
        "$OPTRTDIR/math/expf.c",
        "$OPTRTDIR/math/log.c",
        "$OPTRTDIR/math/log2.c",
        "$OPTRTDIR/math/log2_data.c",
        "$OPTRTDIR/math/log2f.c",
        "$OPTRTDIR/math/log2f_data.c",
        "$OPTRTDIR/math/log_data.c",
        "$OPTRTDIR/math/logf.c",
        "$OPTRTDIR/math/logf_data.c",
        "$OPTRTDIR/math/pow.c",
        "$OPTRTDIR/math/powf.c",
        "$OPTRTDIR/math/sincosf.c",
        "$OPTRTDIR/math/sincosf_data.c",
        "$OPTRTDIR/math/sinf.c",
F
fangting 已提交
337 338
        "$OPTRTDIR/string/arm/memchr.S",
        "$OPTRTDIR/string/arm/memcpy.S",
F
fangting 已提交
339
        "$OPTRTDIR/string/arm/memset.S",
F
fangting 已提交
340 341 342 343 344 345
        "$OPTRTDIR/string/arm/strcmp.S",
        "$OPTRTDIR/string/arm/strlen-armv6t2.S",
      ]
      asmflags = [
        "-D__memcpy_arm = memcpy",
        "-D__memchr_arm = memchr",
F
fangting 已提交
346
        "-D__memset_arm = memset",
F
fangting 已提交
347 348 349
        "-D__strcmp_arm = strcmp",
        "-D__strlen_armv6t2 = strlen",
      ]
F
fangting 已提交
350
    } else if (musl_arch == "aarch64") {
F
fangting 已提交
351 352 353 354 355 356
      sources += [
        "$OPTRTDIR/math/cosf.c",
        "$OPTRTDIR/math/sincosf.c",
        "$OPTRTDIR/math/sincosf_data.c",
        "$OPTRTDIR/math/sinf.c",
      ]
F
fangting 已提交
357 358 359
      if (defined(ARM_FEATURE_SVE)) {
        sources += [
          "$OPTRTDIR/string/aarch64/memchr-sve.S",
F
fangting 已提交
360
          "$OPTRTDIR/string/aarch64/memcmp-sve.S",
F
fangting 已提交
361
          "$OPTRTDIR/string/aarch64/memcpy.S",
F
fangting 已提交
362 363 364
          "$OPTRTDIR/string/aarch64/memset.S",
          "$OPTRTDIR/string/aarch64/stpcpy-sve.S",
          "$OPTRTDIR/string/aarch64/strchr-sve.S",
F
fangting 已提交
365 366 367
          "$OPTRTDIR/string/aarch64/strcmp-sve.S",
          "$OPTRTDIR/string/aarch64/strcpy-sve.S",
          "$OPTRTDIR/string/aarch64/strlen-sve.S",
F
fangting 已提交
368 369 370
          "$OPTRTDIR/string/aarch64/strncmp-sve.S",
          "$OPTRTDIR/string/aarch64/strnlen-sve.S",
          "$OPTRTDIR/string/aarch64/strrchr-sve.S",
F
fangting 已提交
371 372 373
        ]
        asmflags = [
          "-D__memcpy_aarch64 = memcpy",
F
fangting 已提交
374 375
          "-D__memset_aarch64 = memset",
          "-D__memcmp_aarch64_sve = memcmp",
F
fangting 已提交
376 377 378 379
          "-D__memchr_aarch64_sve = memchr",
          "-D__strcmp_aarch64_sve = strcmp",
          "-D__strlen_aarch64_sve = strlen",
          "-D__strcpy_aarch64_sve = strcpy",
F
fangting 已提交
380 381 382 383 384
          "-D__stpcpy_aarch64_sve = stpcpy",
          "-D__strchr_aarch64_sve = strchr",
          "-D__strrchr_aarch64_sve = strrchr",
          "-D__strnlen_aarch64_sve = strnlen",
          "-D__strncmp_aarch64_sve = strncmp",
F
fangting 已提交
385 386 387 388
        ]
      } else if (defined(ARM_FEATURE_MTE)) {
        sources += [
          "$OPTRTDIR/string/aarch64/memchr-mte.S",
F
fangting 已提交
389
          "$OPTRTDIR/string/aarch64/memcmp.S",
F
fangting 已提交
390
          "$OPTRTDIR/string/aarch64/memcpy.S",
F
fangting 已提交
391 392 393
          "$OPTRTDIR/string/aarch64/memset.S",
          "$OPTRTDIR/string/aarch64/stpcpy-mte.S",
          "$OPTRTDIR/string/aarch64/strchr-mte.S",
F
fangting 已提交
394 395 396
          "$OPTRTDIR/string/aarch64/strcmp-mte.S",
          "$OPTRTDIR/string/aarch64/strcpy-mte.S",
          "$OPTRTDIR/string/aarch64/strlen-mte.S",
F
fangting 已提交
397 398 399
          "$OPTRTDIR/string/aarch64/strncmp-mte.S",
          "$OPTRTDIR/string/aarch64/strnlen.S",
          "$OPTRTDIR/string/aarch64/strrchr-mte.S",
F
fangting 已提交
400 401 402
        ]
        asmflags = [
          "-D__memcpy_aarch64 = memcpy",
F
fangting 已提交
403 404
          "-D__memset_aarch64 = memset",
          "-D__memcmp_aarch64 = memcmp",
F
fangting 已提交
405 406 407 408
          "-D__memchr_aarch64_mte = memchr",
          "-D__strcmp_aarch64_mte = strcmp",
          "-D__strlen_aarch64_mte = strlen",
          "-D__strcpy_aarch64_mte = strcpy",
F
fangting 已提交
409 410 411 412 413
          "-D__stpcpy_aarch64_mte = stpcpy",
          "-D__strchr_aarch64_mte = strchr",
          "-D__strrchr_aarch64_mte = strrchr",
          "-D__strnlen_aarch64 = strnlen",
          "-D__strncmp_aarch64_mte = strncmp",
F
fangting 已提交
414 415 416 417
        ]
      } else {
        sources += [
          "$OPTRTDIR/string/aarch64/memchr.S",
F
fangting 已提交
418
          "$OPTRTDIR/string/aarch64/memcmp.S",
F
fangting 已提交
419
          "$OPTRTDIR/string/aarch64/memcpy.S",
F
fangting 已提交
420 421 422
          "$OPTRTDIR/string/aarch64/memset.S",
          "$OPTRTDIR/string/aarch64/stpcpy.S",
          "$OPTRTDIR/string/aarch64/strchr.S",
F
fangting 已提交
423 424 425
          "$OPTRTDIR/string/aarch64/strcmp.S",
          "$OPTRTDIR/string/aarch64/strcpy.S",
          "$OPTRTDIR/string/aarch64/strlen.S",
F
fangting 已提交
426 427 428
          "$OPTRTDIR/string/aarch64/strncmp.S",
          "$OPTRTDIR/string/aarch64/strnlen.S",
          "$OPTRTDIR/string/aarch64/strrchr.S",
F
fangting 已提交
429 430 431 432
        ]
        asmflags = [
          "-D__memcpy_aarch64 = memcpy",
          "-D__memchr_aarch64 = memchr",
F
fangting 已提交
433 434
          "-D__memset_aarch64 = memset",
          "-D__memcmp_aarch64 = memcmp",
F
fangting 已提交
435 436 437
          "-D__strcmp_aarch64 = strcmp",
          "-D__strlen_aarch64 = strlen",
          "-D__strcpy_aarch64 = strcpy",
F
fangting 已提交
438 439 440 441 442
          "-D__stpcpy_aarch64 = stpcpy",
          "-D__strchr_aarch64 = strchr",
          "-D__strrchr_aarch64 = strrchr",
          "-D__strnlen_aarch64 = strnlen",
          "-D__strncmp_aarch64 = strncmp",
F
fangting 已提交
443 444
        ]
      }
F
fangting 已提交
445
    }
W
weichaox 已提交
446 447 448 449 450 451 452 453

    cflags = [
      "-O3",
      "-fPIC",
      "-fstack-protector-strong",
    ]

    configs -= musl_inherited_configs
X
xxlight 已提交
454
    configs += [ ":soft_musl_config" ]
W
weichaox 已提交
455

G
ganlan 已提交
456 457 458 459 460 461 462 463 464 465 466 467 468 469
    if (!defined(defines)) {
      defines = []
    }
    if (musl_target_os == "linux" && product_path != "" &&
        product_path != rebase_path("//productdefine/common/products")) {
      _product_config = read_file("${product_path}/config.json", "json")
      if (defined(_product_config.device_stack_size)) {
        defines += [ "TARGET_STACK_SIZE=${_product_config.device_stack_size}" ]
      }
      if (defined(_product_config.device_guard_size)) {
        defines += [ "TARGET_GUARD_SIZE=${_product_config.device_guard_size}" ]
      }
    }

W
weichaox 已提交
470
    deps = porting_deps
471 472 473 474 475

    if (is_standard_system) {
      defines += [ "OHOS_ENABLE_PARAMETER" ]
      deps += [ "//base/startup/init/services/param/base:parameterbase" ]
    }
W
weichaox 已提交
476 477
  }

X
xxlight 已提交
478
  source_set("soft_musl_src_nossp") {
W
weichaox 已提交
479 480 481 482 483 484 485 486
    sources = []
    sources_orig = [
      "src/string/mempcpy.c",
      "src/env/__init_tls.c",
      "src/env/__libc_start_main.c",
      "src/env/__stack_chk_fail.c",
    ]

Z
zhuoli 已提交
487 488 489 490
    if (musl_arch == "arm") {
      sources_orig += [ "src/thread/${musl_arch}/__set_thread_area.c" ]
    } else if (musl_arch == "aarch64") {
      sources_orig += [ "src/thread/${musl_arch}/__set_thread_area.s" ]
W
wangjiahui 已提交
491
    } else if (musl_arch == "x86_64") {
F
fangting 已提交
492 493 494 495
      sources_orig += [
        "src/thread/${musl_arch}/__set_thread_area.s",
        "src/string/memset.c",
      ]
Z
zhuoli 已提交
496 497
    }

W
weichaox 已提交
498 499 500 501 502
    foreach(s, sources_orig) {
      sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
    }

    configs -= musl_inherited_configs
X
xxlight 已提交
503
    configs += [ ":soft_musl_config" ]
W
weichaox 已提交
504 505 506 507 508 509 510 511 512
    cflags = [
      "-O3",
      "-fPIC",
      "-fno-stack-protector",
    ]

    deps = porting_deps
  }

X
xxlight 已提交
513
  source_set("soft_musl_ldso") {
W
weichaox 已提交
514 515 516 517 518 519 520 521
    sources = []
    sources_orig = musl_src_ldso

    foreach(s, sources_orig) {
      sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
    }

    configs -= musl_inherited_configs
X
xxlight 已提交
522
    configs += [ ":soft_musl_config" ]
W
weichaox 已提交
523 524 525 526
    cflags = [
      "-fPIC",
      "-fno-stack-protector",
    ]
527 528 529 530 531 532
    if (is_asan) {
      defines = [
        "NSLIST_DEFAULT_SIZE=1600",
        "DSOLIST_DEFAULT_SIZE=1600",
        "INHERIT_DEFAULT_SIZE=1600",
      ]
G
ganlan 已提交
533 534 535 536 537
    } else {
      defines = [
        "HANDLE_RANDOMIZATION",
        "LOAD_ORDER_RANDOMIZATION",
      ]
538
    }
W
weichaox 已提交
539 540

    deps = porting_deps
J
jwz 已提交
541
    if (is_standard_system) {
J
jwz 已提交
542
      defines += [ "OHOS_ENABLE_PARAMETER" ]
J
jwz 已提交
543 544
      deps += [ "//base/startup/init/services/param/base:parameterbase" ]
    }
W
weichaox 已提交
545 546
  }

X
xxlight 已提交
547
  source_set("soft_musl_hook") {
chuxuezhe1111's avatar
chuxuezhe1111 已提交
548 549
    sources = [
      "./porting/linux/user/src/hook/malloc_common.c",
F
fangting 已提交
550
      "./porting/linux/user/src/hook/memory_tag.c",
chuxuezhe1111's avatar
chuxuezhe1111 已提交
551 552 553 554 555 556 557 558 559 560
      "./porting/linux/user/src/hook/musl_preinit.c",
      "./porting/linux/user/src/hook/musl_preinit_common.c",
    ]

    deps = [
      "//third_party/musl:create_alltypes_h",
      "//third_party/musl:create_porting_src",
      "//third_party/musl:create_syscall_h",
      "//third_party/musl:create_version_h",
      "//third_party/musl:musl_copy_inc_bits",
G
ganlan 已提交
561
      "//third_party/musl:musl_copy_inc_fortify",
chuxuezhe1111's avatar
chuxuezhe1111 已提交
562
      "//third_party/musl:musl_copy_inc_root",
C
chenjianwen 已提交
563
      "//third_party/musl:musl_copy_inc_sys",
chuxuezhe1111's avatar
chuxuezhe1111 已提交
564
    ]
J
jwz 已提交
565
    if (is_standard_system) {
J
jwz 已提交
566
      defines = [ "OHOS_ENABLE_PARAMETER" ]
J
jwz 已提交
567 568
      deps += [ "//base/startup/init/services/param/base:parameterbase" ]
    }
chuxuezhe1111's avatar
chuxuezhe1111 已提交
569 570 571 572 573

    configs -= musl_inherited_configs

    configs += [
      "//build/config/compiler:compiler",
X
xxlight 已提交
574
      ":soft_hook",
chuxuezhe1111's avatar
chuxuezhe1111 已提交
575 576 577
    ]
  }

X
xxlight 已提交
578
  static_library("soft_libc_musl_static") {
W
weichaox 已提交
579 580 581 582 583 584 585
    output_name = "libc"
    complete_static_lib = true

    configs -= musl_inherited_configs

    output_dir = "${target_out_dir}/${_libs_out_dir}"
    deps = [
X
xxlight 已提交
586
      ":soft_musl_hook",
M
maweiye 已提交
587
      ":soft_musl_ldso",
X
xxlight 已提交
588 589
      ":soft_musl_src",
      ":soft_musl_src_nossp",
W
weichaox 已提交
590
    ]
591
    deps += dfx_deps
M
Mupceet 已提交
592 593 594
    if (is_standard_system) {
      deps += [ "//base/startup/init/services/param/base:parameterbase" ]
    }
W
weichaox 已提交
595 596
  }

X
xxlight 已提交
597
  static_library("soft_libm") {
W
weichaox 已提交
598 599 600 601 602 603
    complete_static_lib = true
    configs -= musl_inherited_configs
    output_name = "libm"
    output_dir = "${target_out_dir}/${_libs_out_dir}"
  }

X
xxlight 已提交
604
  static_library("soft_librt") {
W
weichaox 已提交
605 606 607 608 609 610
    complete_static_lib = true
    configs -= musl_inherited_configs
    output_name = "librt"
    output_dir = "${target_out_dir}/${_libs_out_dir}"
  }

X
xxlight 已提交
611
  static_library("soft_libpthread") {
W
weichaox 已提交
612 613 614 615 616 617
    complete_static_lib = true
    configs -= musl_inherited_configs
    output_name = "libpthread"
    output_dir = "${target_out_dir}/${_libs_out_dir}"
  }

X
xxlight 已提交
618
  static_library("soft_libcrypt") {
W
weichaox 已提交
619 620 621 622 623 624
    complete_static_lib = true
    configs -= musl_inherited_configs
    output_name = "libcrypt"
    output_dir = "${target_out_dir}/${_libs_out_dir}"
  }

X
xxlight 已提交
625
  static_library("soft_libutil") {
W
weichaox 已提交
626 627 628 629 630 631
    complete_static_lib = true
    configs -= musl_inherited_configs
    output_name = "libutil"
    output_dir = "${target_out_dir}/${_libs_out_dir}"
  }

X
xxlight 已提交
632
  static_library("soft_libresolv") {
W
weichaox 已提交
633 634 635 636 637 638
    complete_static_lib = true
    configs -= musl_inherited_configs
    output_name = "libresolv"
    output_dir = "${target_out_dir}/${_libs_out_dir}"
  }

X
xxlight 已提交
639
  static_library("soft_libxnet") {
W
weichaox 已提交
640 641 642 643 644 645
    complete_static_lib = true
    configs -= musl_inherited_configs
    output_name = "libxnet"
    output_dir = "${target_out_dir}/${_libs_out_dir}"
  }

X
xxlight 已提交
646
  static_library("soft_libdl") {
W
weichaox 已提交
647 648 649 650 651 652
    complete_static_lib = true
    configs -= musl_inherited_configs
    output_name = "libdl"
    output_dir = "${target_out_dir}/${_libs_out_dir}"
  }

X
xxlight 已提交
653
  shared_library("soft_libc_musl_shared") {
W
weichaox 已提交
654 655 656 657 658 659 660
    output_dir = "${target_out_dir}/${_libs_out_dir}"
    output_name = "libc"
    output_extension = "so"

    libclang_rt_path = rebase_path(
            "${runtime_lib_path}/${musl_target_triple}/${_libs_path_prefix}")

D
dhy308 已提交
661 662
    musl_lib_path = rebase_path("${target_out_dir}/${_libs_out_dir}")

M
maweiye 已提交
663 664 665
    libc_map_path =
        rebase_path("${target_out_dir}/${musl_ported_dir}/libc.map.txt")

W
weichaox 已提交
666 667 668 669 670
    ldflags = [
      "-nostdlib",
      "-Wl,-e,_dlstart",
      "-L${libclang_rt_path}",
      "-lclang_rt.builtins",
D
dhy308 已提交
671 672 673 674
      "-lunwind",
      "-L${musl_lib_path}",
      "-ldl",
      "-lpthread",
M
maweiye 已提交
675
      "-Wl,--version-script=${libc_map_path}",
W
weichaox 已提交
676 677 678 679
    ]

    configs -= musl_inherited_configs
    configs -= [ "//build/config:default_libs" ]
X
xxlight 已提交
680
    configs += [ ":soft_musl_config" ]
W
weichaox 已提交
681 682

    deps = [
X
xxlight 已提交
683 684 685 686 687 688 689
      ":soft_libdl",
      ":soft_libpthread",
      ":soft_musl_crt_install_action",
      ":soft_musl_hook",
      ":soft_musl_ldso",
      ":soft_musl_src",
      ":soft_musl_src_nossp",
W
weichaox 已提交
690
    ]
691
    deps += dfx_deps
M
Mupceet 已提交
692 693 694
    if (is_standard_system) {
      deps += [ "//base/startup/init/services/param/base:parameterbase" ]
    }
W
weichaox 已提交
695 696
  }

X
xxlight 已提交
697
  action_foreach("soft_musl_crt_install_action") {
W
weichaox 已提交
698 699 700
    redir = "${root_out_dir}/obj"
    script = "${target_out_dir}/${musl_ported_dir}/scripts/install.py"
    sources = [
X
xxlight 已提交
701 702
      "${redir}/${target_out_dir}/${musl_ported_dir}/crt/${musl_arch}/soft_musl_crt/crti.o",
      "${redir}/${target_out_dir}/${musl_ported_dir}/crt/${musl_arch}/soft_musl_crt/crtn.o",
X
xxlight 已提交
703 704 705
      "${redir}/${target_out_dir}/${musl_ported_dir}/crt/soft_musl_crt/Scrt1.o",
      "${redir}/${target_out_dir}/${musl_ported_dir}/crt/soft_musl_crt/crt1.o",
      "${redir}/${target_out_dir}/${musl_ported_dir}/crt/soft_musl_crt/rcrt1.o",
W
weichaox 已提交
706
    ]
D
dhy308 已提交
707

H
hhj 已提交
708
    outputs = [ "${root_build_dir}/obj/third_party/musl/${_libs_out_dir}/{{source_file_part}}" ]
D
dhy308 已提交
709 710 711 712 713 714 715 716 717 718

    ldpath = []
    if (is_mac) {
      ldpath += [ "${clang_base_path}/bin/ld64.lld" ]
    } else if (is_win) {
      ldpath += [ "${clang_base_path}/bin/lld-link.exe" ]
    } else {
      ldpath += [ "${clang_base_path}/bin/ld.lld" ]
    }

W
weichaox 已提交
719 720 721 722 723
    args = [
      "--input",
      "{{source}}",
    ]
    args += [ "--output" ] + rebase_path(outputs, root_build_dir)
D
dhy308 已提交
724 725 726 727 728
    args += [ "--ldpath" ] + rebase_path(ldpath, root_build_dir)
    args += [ "--crtplus" ] + rebase_path(
                [ "${redir}/${target_out_dir}/${musl_ported_dir}/crt/soft_musl_crt/crtplus.o" ],
                root_build_dir)

X
xxlight 已提交
729
    deps = [ ":soft_musl_crt" ]
W
weichaox 已提交
730 731
  }

X
xxlight 已提交
732 733
  copy("soft_create_linker") {
    deps = [ ":soft_libc_musl_shared" ]
W
weichaox 已提交
734

X
xxlight 已提交
735
    # _libc_shared_outputs = get_target_outputs(":soft_libc_musl_shared")
W
weichaox 已提交
736 737
    _libc_shared_so = "${target_out_dir}/${_libs_out_dir}/libc.so"
    sources = [ _libc_shared_so ]
C
Caoruihong 已提交
738 739 740 741 742
    if (is_asan) {
      asan = "-asan"
    } else {
      asan = ""
    }
X
xxlight 已提交
743
    _muls_linker_so = "${root_out_dir}/common/common/libc/${_libs_path_prefix}/ld-musl-${musl_arch}${asan}.so.1"
W
weichaox 已提交
744 745 746
    outputs = [ _muls_linker_so ]
  }
}