1 Star 0 Fork 555

littlebee/third_party_musl

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
musl_template.gni 28.63 KB
一键复制 编辑 原始数据 按行查看 历史
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022
import("//base/startup/init/begetd.gni")
import("//build/config/clang/clang.gni")
import("//build/ohos.gni")
import("//third_party/FreeBSD/FreeBSD.gni")
import("//third_party/optimized-routines/optimized-routines.gni")
import("musl_src.gni")
template("musl_libs") {
no_default_deps = true
forward_variables_from(invoker, [ "*" ])
_libs_path_prefix = "."
_libs_out_dir = "usr/lib/${musl_target_triple}"
dfx_deps = [ "//base/hiviewdfx/faultloggerd/interfaces/innerkits/signal_handler:dfxsignalhandler" ]
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 = [
":soft_create_linker",
":soft_libc_musl_shared",
":soft_libc_musl_static",
":soft_musl_crt_libs",
]
}
group("soft_shared_libs") {
deps = [
":musl_headers",
":soft_libc_musl_shared",
":soft_libcrypt",
":soft_libdl",
":soft_libm",
":soft_libpthread",
":soft_libresolv",
":soft_librt",
":soft_libutil",
":soft_libxnet",
":soft_musl_crt_libs",
]
}
group("soft_static_libs") {
deps = [
":musl_headers",
":soft_libc_musl_static",
":soft_libcrypt",
":soft_libdl",
":soft_libm",
":soft_libpthread",
":soft_libresolv",
":soft_librt",
":soft_libutil",
":soft_libxnet",
":soft_musl_crt_libs",
]
}
group("soft_musl_crt_libs") {
deps = [ ":soft_musl_crt_install_action" ]
}
# 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",
"//build/config/sanitizers:default_sanitizer_flags",
]
config("soft_musl_config") {
configs = [
"//build/config/compiler:compiler_cpu_abi",
"//build/config/coverage:default_coverage",
]
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",
"-Wl,-z,relro,-z,now,-z,noexecstack",
]
if (musl_arch == "arm") {
cflags_basic += [ "-mtp=cp15" ]
} else if (musl_arch == "aarch64") {
}
cflags_auto = [
"-D_XOPEN_SOURCE=700",
"-g",
"-pipe",
"-fno-omit-frame-pointer",
"-funwind-tables",
"-fasynchronous-unwind-tables",
"-ffunction-sections",
"-fdata-sections",
"-Werror=implicit-function-declaration",
"-Werror=implicit-int",
"-Werror=pointer-sign",
"-Werror=pointer-arith",
"-Qunused-arguments",
"-Wno-int-conversion",
]
if (!is_asan) {
cflags_auto += [
"-DHOOK_ENABLE",
"-DOHOS_SOCKET_HOOK_ENABLE",
]
}
if (use_pthread_cancel) {
cflags_auto += [ "-DFEATURE_PTHREAD_CANCEL" ]
}
cflags_auto += [ "-DRESERVE_SIGNAL_STACK" ]
cflags_auto += [ "-DDFX_SIGNAL_LIBC" ]
cflags_c99fse = [
"-std=c99",
"-nostdinc",
"-Wa,--noexecstack",
]
cflags_all = cflags_basic + cflags_c99fse + cflags_auto
cflags = cflags_all
defines = [ "BROKEN_VFP_ASM" ]
defines += [ "FEATURE_ATEXIT_CB_PROTECT" ]
if (is_standard_system) {
defines += [
"OHOS_DNS_PROXY_BY_NETSYS=1",
"OHOS_PERMISSION_INTERNET=1",
"STANDARD_SYSTEM",
]
}
if (!is_standard_system && defined(enable_musl_log)) {
if (enable_musl_log) {
defines += [ "ENABLE_MUSL_LOG" ]
}
}
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
}
config("soft_hook") {
defines = []
configs = [ "//build/config/coverage:default_coverage" ]
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",
]
if (!is_asan) {
defines += [
"HOOK_ENABLE",
"OHOS_SOCKET_HOOK_ENABLE",
]
}
ldflags = [ "-nostdlib" ]
libs = []
if (is_component_build) {
defines += [ "COMPONENT_BUILD" ]
}
}
config("soft_jemalloc") {
configs = [ "//build/config/coverage:default_coverage" ]
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}",
"${clang_base_path}/lib/clang/${clang_version}/include",
]
cflags = [
"--target=${musl_target_triple}",
"-D_GNU_SOURCE",
"-D_REENTRANT",
"-Wall",
"-Wshorten-64-to-32",
"-Wsign-compare",
"-Wundef",
"-Wno-format-zero-length",
"-pipe",
"-g3",
"-fvisibility=hidden",
"-O3",
"-funroll-loops",
"-funwind-tables",
# The following flags are for avoiding errors when compiling.
"-Wno-unused-parameter",
"-Wno-unused-function",
"-Wno-missing-field-initializers",
"-U_FORTIFY_SOURCE",
"-DOHOS_ENABLE_TCACHE", # For jemalloc 5.X
"-DJEMALLOC_TCACHE", # For jemalloc 4.X
"-DOHOS_LG_TCACHE_MAXCLASS_DEFAULT=16",
"-DOHOS_NUM_ARENAS=2", # For jemalloc 5.X
"-DOHOS_MAX_ARENAS=2", # For jemalloc 4.X
"-DOHOS_TCACHE_NSLOTS_SMALL_MAX=8",
"-DOHOS_TCACHE_NSLOTS_LARGE=16",
]
if (is_debug || musl_secure_level > 1) {
cflags += [ "-DOHOS_TCACHE_NSLOTS_RANDOM" ]
}
if (musl_arch == "arm") {
cflags += [
"-march=armv7-a",
"-DOHOS_LG_CHUNK_DEFAULT=19", # For jemalloc 4.X
]
} else if (musl_arch == "aarch64") {
cflags += [
"-march=armv8",
"-DOHOS_LG_CHUNK_DEFAULT=19", # For jemalloc 4.X
]
} else if (musl_arch == "x86_64") {
cflags += [ "-march=x86-64" ]
}
include_dirs += [
"//third_party",
"//third_party/musl/src/include/",
"//third_party/jemalloc/include/",
"//third_party/jemalloc/include/jemalloc/internal",
"//third_party/jemalloc/include/jemalloc",
]
}
source_set("soft_musl_crt") {
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",
"${target_out_dir}/${musl_ported_dir}/crt/crtplus.c",
"${target_out_dir}/${musl_ported_dir}/crt/rcrt1.c",
]
defines = [ "CRT" ]
configs -= musl_inherited_configs
configs += [ ":soft_musl_config" ]
cflags = [
"-fPIC",
"-ffreestanding",
"-fno-stack-protector",
]
deps = porting_deps
asmflags = cflags
}
source_set("soft_musl_src") {
sources_orig = []
sources = []
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",
"src/stdlib/qsort.c",
"src/stdlib/qsort_nr.c",
]
sources += [
"$FREEBSD_DIR/contrib/tcp_wrappers/strcasecmp.c",
"$FREEBSD_DIR/lib/libc/stdlib/qsort.c",
]
if (musl_arch == "arm") {
sources_orig -= [
"src/thread/${musl_arch}/__set_thread_area.c",
"src/string/arm/memcpy.S",
"src/string/memchr.c",
"src/string/strcmp.c",
"src/string/strlen.c",
"src/math/sincosf.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",
"src/math/sinf.c",
"src/math/cosf.c",
]
} else if (musl_arch == "aarch64") {
sources_orig -= [
"src/thread/${musl_arch}/__set_thread_area.s",
"src/string/memcpy.c",
"src/string/memmove.c",
"src/string/memchr.c",
"src/string/memcmp.c",
"src/string/strcpy.c",
"src/string/strcmp.c",
"src/string/strlen.c",
"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",
"src/math/cos.c",
"src/math/exp.c",
"src/math/exp2.c",
"src/math/exp2f.c",
"src/math/expf.c",
"src/math/log.c",
"src/math/log10.c",
"src/math/log2.c",
"src/math/log2f.c",
"src/math/logb.c",
"src/math/logf.c",
"src/math/sin.c",
"src/math/sincos.c",
"src/math/pow.c",
"src/math/powf.c",
]
} else if (musl_arch == "x86_64") {
sources_orig -= [ "src/thread/${musl_arch}/__set_thread_area.s" ]
}
defines = []
if (musl_arch == "arm") {
defines += [ "MUSL_ARM_ARCH" ]
}
if (musl_arch == "aarch64") {
defines += [ "MUSL_AARCH64_ARCH" ]
}
if (musl_arch == "x86_64") {
defines += [ "MUSL_X86_64_ARCH" ]
}
if (musl_secure_level > 0) {
defines += [ "MALLOC_FREELIST_HARDENED" ]
}
if (musl_secure_level > 1) {
defines += [ "MALLOC_FREELIST_QUARANTINE" ]
}
if (musl_secure_level > 2) {
defines += [ "MALLOC_RED_ZONE" ]
}
if (is_debug || musl_secure_level >= 3) {
defines += [ "MALLOC_SECURE_ALL" ]
}
if (musl_iterate_and_stats_api) {
defines += [ "MUSL_ITERATE_AND_STATS_API" ]
}
foreach(s, sources_orig) {
sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
}
if (musl_arch == "arm") {
sources += [
"$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",
"$OPTRTDIR/string/arm/memchr.S",
"$OPTRTDIR/string/arm/memcpy.S",
"$OPTRTDIR/string/arm/memset.S",
"$OPTRTDIR/string/arm/strcmp.S",
"$OPTRTDIR/string/arm/strlen-armv6t2.S",
]
sources += added_freebsd_files
asmflags = [
"-D__memcpy_arm = memcpy",
"-D__memchr_arm = memchr",
"-D__memset_arm = memset",
"-D__strcmp_arm = strcmp",
"-D__strlen_armv6t2 = strlen",
]
} else if (musl_arch == "aarch64") {
if (defined(ARM_FEATURE_SVE)) {
sources += [
"$OPTRTDIR/string/aarch64/memchr-sve.S",
"$OPTRTDIR/string/aarch64/memcmp-sve.S",
"$OPTRTDIR/string/aarch64/memcpy.S",
"$OPTRTDIR/string/aarch64/memset.S",
"$OPTRTDIR/string/aarch64/stpcpy-sve.S",
"$OPTRTDIR/string/aarch64/strchr-sve.S",
"$OPTRTDIR/string/aarch64/strchrnul-sve.S",
"$OPTRTDIR/string/aarch64/strcmp-sve.S",
"$OPTRTDIR/string/aarch64/strcpy-sve.S",
"$OPTRTDIR/string/aarch64/strlen-sve.S",
"$OPTRTDIR/string/aarch64/strncmp-sve.S",
"$OPTRTDIR/string/aarch64/strnlen-sve.S",
"$OPTRTDIR/string/aarch64/strrchr-sve.S",
]
asmflags = [
"-D__memcpy_aarch64 = memcpy",
"-D__memset_aarch64 = memset",
"-D__memcmp_aarch64_sve = memcmp",
"-D__memchr_aarch64_sve = memchr",
"-D__strcmp_aarch64_sve = strcmp",
"-D__strlen_aarch64_sve = strlen",
"-D__strcpy_aarch64_sve = strcpy",
"-D__stpcpy_aarch64_sve = stpcpy",
"-D__strchr_aarch64_sve = strchr",
"-D__strrchr_aarch64_sve = strrchr",
"-D__strchrnul_aarch64_sve = strchrnul",
"-D__strnlen_aarch64_sve = strnlen",
"-D__strncmp_aarch64_sve = strncmp",
]
} else if (defined(ARM_FEATURE_MTE)) {
sources += [
"$OPTRTDIR/string/aarch64/memchr-mte.S",
"$OPTRTDIR/string/aarch64/memcmp.S",
"$OPTRTDIR/string/aarch64/memcpy.S",
"$OPTRTDIR/string/aarch64/memset.S",
"$OPTRTDIR/string/aarch64/stpcpy-mte.S",
"$OPTRTDIR/string/aarch64/strchr-mte.S",
"$OPTRTDIR/string/aarch64/strchrnul-mte.S",
"$OPTRTDIR/string/aarch64/strcmp-mte.S",
"$OPTRTDIR/string/aarch64/strcpy-mte.S",
"$OPTRTDIR/string/aarch64/strlen-mte.S",
"$OPTRTDIR/string/aarch64/strncmp-mte.S",
"$OPTRTDIR/string/aarch64/strnlen.S",
"$OPTRTDIR/string/aarch64/strrchr-mte.S",
]
asmflags = [
"-D__memcpy_aarch64 = memcpy",
"-D__memset_aarch64 = memset",
"-D__memcmp_aarch64 = memcmp",
"-D__memchr_aarch64_mte = memchr",
"-D__strcmp_aarch64_mte = strcmp",
"-D__strlen_aarch64_mte = strlen",
"-D__strcpy_aarch64_mte = strcpy",
"-D__stpcpy_aarch64_mte = stpcpy",
"-D__strchr_aarch64_mte = strchr",
"-D__strrchr_aarch64_mte = strrchr",
"-D__strchrnul_aarch64_mte = strchrnul",
"-D__strnlen_aarch64 = strnlen",
"-D__strncmp_aarch64_mte = strncmp",
]
} else {
sources += [
"$OPTRTDIR/string/aarch64/memchr.S",
"$OPTRTDIR/string/aarch64/memcmp.S",
"$OPTRTDIR/string/aarch64/memcpy.S",
"$OPTRTDIR/string/aarch64/memset.S",
"$OPTRTDIR/string/aarch64/stpcpy.S",
"$OPTRTDIR/string/aarch64/strchr.S",
"$OPTRTDIR/string/aarch64/strchrnul.S",
"$OPTRTDIR/string/aarch64/strcmp.S",
"$OPTRTDIR/string/aarch64/strcpy.S",
"$OPTRTDIR/string/aarch64/strlen.S",
"$OPTRTDIR/string/aarch64/strncmp.S",
"$OPTRTDIR/string/aarch64/strnlen.S",
"$OPTRTDIR/string/aarch64/strrchr.S",
]
sources += added_freebsd_files
asmflags = [
"-D__memmove_aarch64 = memmove",
"-D__memcpy_aarch64 = memcpy",
"-D__memchr_aarch64 = memchr",
"-D__memset_aarch64 = memset",
"-D__memcmp_aarch64 = memcmp",
"-D__strcmp_aarch64 = strcmp",
"-D__strlen_aarch64 = strlen",
"-D__strcpy_aarch64 = strcpy",
"-D__stpcpy_aarch64 = stpcpy",
"-D__strchr_aarch64 = strchr",
"-D__strrchr_aarch64 = strrchr",
"-D__strchrnul_aarch64 = strchrnul",
"-D__strnlen_aarch64 = strnlen",
"-D__strncmp_aarch64 = strncmp",
]
}
}
cflags = [
"-O3",
"-fPIC",
"-ffreestanding",
"-fstack-protector-strong",
]
if (use_jemalloc) {
defines += [ "USE_JEMALLOC" ]
if (use_jemalloc_dfx_intf) {
defines += [ "USE_JEMALLOC_DFX_INTF" ]
}
if (use_jemalloc_recycle_func) {
defines += [ "USE_JEMALLOC_RECYCLE_FUNC" ]
}
include_dirs = [ "//third_party/jemalloc/include/jemalloc" ]
}
if (!defined(include_dirs)) {
if (musl_arch == "aarch64") {
include_dirs = [ "//third_party/FreeBSD/lib/libc/aarch64" ]
}
if (musl_arch == "arm") {
include_dirs = [ "//third_party/FreeBSD/lib/libc/arm" ]
}
} else {
if (musl_arch == "aarch64") {
include_dirs += [ "//third_party/FreeBSD/lib/libc/aarch64" ]
}
if (musl_arch == "arm") {
include_dirs += [ "//third_party/FreeBSD/lib/libc/arm" ]
}
}
configs -= musl_inherited_configs
configs += [ ":soft_musl_config" ]
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}" ]
}
}
deps = porting_deps
if (!startup_init_with_param_base) {
defines += [ "OHOS_ENABLE_PARAMETER" ]
deps += [ "//base/startup/init/services/param/base:parameterbase" ]
}
}
source_set("soft_musl_src_optimize") {
sources = []
sources_orig = []
if (musl_arch == "aarch64") {
sources_orig += [
"src/math/cos.c",
"src/math/exp.c",
"src/math/exp2.c",
"src/math/exp2f.c",
"src/math/expf.c",
"src/math/log.c",
"src/math/log10.c",
"src/math/log2.c",
"src/math/log2f.c",
"src/math/logb.c",
"src/math/logf.c",
"src/math/sin.c",
"src/math/sincos.c",
"src/math/pow.c",
"src/math/powf.c",
]
}
foreach(s, sources_orig) {
sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
}
if (musl_arch == "aarch64") {
sources += [
"$OPTRTDIR/math/cosf.c",
"$OPTRTDIR/math/sincosf.c",
"$OPTRTDIR/math/sincosf_data.c",
"$OPTRTDIR/math/sinf.c",
]
}
configs -= musl_inherited_configs
configs += [ ":soft_musl_config" ]
cflags = [
"-mllvm",
"-instcombine-max-iterations=0",
"-ffp-contract=fast",
"-O3",
"-fPIC",
"-fstack-protector-strong",
]
deps = porting_deps
}
source_set("soft_musl_src_nossp") {
sources = []
sources_orig = [
"src/string/mempcpy.c",
"src/env/__init_tls.c",
"src/env/__libc_start_main.c",
"src/env/__stack_chk_fail.c",
]
defines = []
if (musl_iterate_and_stats_api) {
defines += [ "MUSL_ITERATE_AND_STATS_API" ]
}
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" ]
} else if (musl_arch == "x86_64") {
sources_orig += [
"src/thread/${musl_arch}/__set_thread_area.s",
"src/string/memset.c",
]
}
foreach(s, sources_orig) {
sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
}
configs -= musl_inherited_configs
configs += [ ":soft_musl_config" ]
cflags = [
"-O3",
"-fPIC",
"-ffreestanding",
"-fno-stack-protector",
]
deps = porting_deps
}
source_set("soft_musl_ldso") {
sources = []
sources_orig = musl_src_ldso
foreach(s, sources_orig) {
sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
}
configs -= musl_inherited_configs
configs += [ ":soft_musl_config" ]
cflags = [
"-fPIC",
"-ffreestanding",
"-fno-stack-protector",
"-O3",
]
if (is_asan) {
defines = [
"NSLIST_DEFAULT_SIZE=1600",
"DSOLIST_DEFAULT_SIZE=1600",
"INHERIT_DEFAULT_SIZE=1600",
]
} else {
defines = [
"HANDLE_RANDOMIZATION",
"LOAD_ORDER_RANDOMIZATION",
]
}
deps = porting_deps
if (!startup_init_with_param_base) {
defines += [ "OHOS_ENABLE_PARAMETER" ]
deps += [ "//base/startup/init/services/param/base:parameterbase" ]
}
if (musl_unit_test_flag) {
defines += [
"UNIT_TEST_STATIC",
"DL_NOMMU_SUPPORT=1",
]
}
}
source_set("soft_musl_hook") {
sources = [
"./porting/linux/user/src/hook/malloc_common.c",
"./porting/linux/user/src/hook/memory_trace.c",
"./porting/linux/user/src/hook/musl_preinit.c",
"./porting/linux/user/src/hook/musl_preinit_common.c",
"./porting/linux/user/src/hook/musl_socket_preinit.c",
"./porting/linux/user/src/hook/musl_socket_preinit_common.c",
"./porting/linux/user/src/hook/socket_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",
"//third_party/musl:musl_copy_inc_fortify",
"//third_party/musl:musl_copy_inc_root",
"//third_party/musl:musl_copy_inc_sys",
]
if (!startup_init_with_param_base) {
defines = [ "OHOS_ENABLE_PARAMETER" ]
deps += [ "//base/startup/init/services/param/base:parameterbase" ]
}
if (musl_unit_test_flag) {
defines += [ "UNIT_TEST_STATIC" ]
}
if (use_jemalloc) {
defines += [ "USE_JEMALLOC" ]
if (use_jemalloc_dfx_intf) {
defines += [ "USE_JEMALLOC_DFX_INTF" ]
}
if (use_jemalloc_recycle_func) {
defines += [ "USE_JEMALLOC_RECYCLE_FUNC" ]
}
include_dirs = [ "//third_party/jemalloc/include/jemalloc" ]
}
configs -= musl_inherited_configs
configs += [
"//build/config/compiler:compiler",
":soft_hook",
]
cflags = [
"-mllvm",
"--instcombine-max-iterations=0",
"-ffp-contract=fast",
"-O3",
"-Wno-int-conversion",
]
}
source_set("soft_musl_jemalloc") {
sources = [ "./porting/linux/user/src/malloc/jemalloc/jemalloc.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",
"//third_party/musl:musl_copy_inc_root",
"//third_party/musl:musl_copy_inc_sys",
]
configs -= musl_inherited_configs
configs += [ ":soft_jemalloc" ]
}
static_library("soft_libc_musl_static") {
output_name = "libc"
complete_static_lib = true
configs -= musl_inherited_configs
output_dir = "${target_out_dir}/${_libs_out_dir}"
deps = [
":soft_musl_hook",
":soft_musl_ldso",
":soft_musl_src",
":soft_musl_src_nossp",
":soft_musl_src_optimize",
]
deps += dfx_deps
if (!startup_init_with_param_base) {
deps += [ "//base/startup/init/services/param/base:parameterbase" ]
}
if (use_jemalloc) {
deps += [ ":soft_musl_jemalloc" ]
}
}
static_library("soft_libm") {
complete_static_lib = true
configs -= musl_inherited_configs
output_name = "libm"
output_dir = "${target_out_dir}/${_libs_out_dir}"
}
static_library("soft_librt") {
complete_static_lib = true
configs -= musl_inherited_configs
output_name = "librt"
output_dir = "${target_out_dir}/${_libs_out_dir}"
}
static_library("soft_libpthread") {
complete_static_lib = true
configs -= musl_inherited_configs
output_name = "libpthread"
output_dir = "${target_out_dir}/${_libs_out_dir}"
}
static_library("soft_libcrypt") {
complete_static_lib = true
configs -= musl_inherited_configs
output_name = "libcrypt"
output_dir = "${target_out_dir}/${_libs_out_dir}"
}
static_library("soft_libutil") {
complete_static_lib = true
configs -= musl_inherited_configs
output_name = "libutil"
output_dir = "${target_out_dir}/${_libs_out_dir}"
}
static_library("soft_libresolv") {
complete_static_lib = true
configs -= musl_inherited_configs
output_name = "libresolv"
output_dir = "${target_out_dir}/${_libs_out_dir}"
}
static_library("soft_libxnet") {
complete_static_lib = true
configs -= musl_inherited_configs
output_name = "libxnet"
output_dir = "${target_out_dir}/${_libs_out_dir}"
}
static_library("soft_libdl") {
complete_static_lib = true
configs -= musl_inherited_configs
output_name = "libdl"
output_dir = "${target_out_dir}/${_libs_out_dir}"
}
shared_library("soft_libc_musl_shared") {
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}")
musl_lib_path = rebase_path("${target_out_dir}/${_libs_out_dir}")
ldflags = []
if (!musl_unit_test_flag) {
libc_map_path =
rebase_path("${target_out_dir}/${musl_ported_dir}/libc.map.txt")
ldflags += [ "-Wl,--version-script=${libc_map_path}" ]
}
ldflags += [
"-nostdlib",
"-Wl,-e,_dlstart",
"-L${libclang_rt_path}",
"-lclang_rt.builtins",
"-lunwind",
"-L${musl_lib_path}",
"-ldl",
"-lpthread",
]
configs -= musl_inherited_configs
configs -= [ "//build/config:default_libs" ]
configs += [ ":soft_musl_config" ]
deps = [
":soft_libdl",
":soft_libpthread",
":soft_musl_crt_install_action",
":soft_musl_hook",
":soft_musl_ldso",
":soft_musl_src",
":soft_musl_src_nossp",
":soft_musl_src_optimize",
]
deps += dfx_deps
if (!startup_init_with_param_base) {
deps += [ "//base/startup/init/services/param/base:parameterbase" ]
}
if (use_jemalloc) {
deps += [ ":soft_musl_jemalloc" ]
}
}
action_foreach("soft_musl_crt_install_action") {
redir = "${root_out_dir}/obj"
script = "${target_out_dir}/${musl_ported_dir}/scripts/install.py"
sources = [
"${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",
"${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",
]
outputs = [ "${root_build_dir}/obj/third_party/musl/${_libs_out_dir}/{{source_file_part}}" ]
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" ]
}
args = [
"--input",
"{{source}}",
]
args += [ "--output" ] + rebase_path(outputs, root_build_dir)
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)
deps = [ ":soft_musl_crt" ]
}
copy("soft_create_linker") {
deps = [ ":soft_libc_musl_shared" ]
# _libc_shared_outputs = get_target_outputs(":soft_libc_musl_shared")
_libc_shared_so = "${target_out_dir}/${_libs_out_dir}/libc.so"
sources = [ _libc_shared_so ]
if (is_asan) {
asan = "-asan"
} else {
asan = ""
}
_muls_linker_so = "${root_out_dir}/common/common/libc/${_libs_path_prefix}/ld-musl-${musl_arch}${asan}.so.1"
outputs = [ _muls_linker_so ]
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/powerlittlebee/third_party_musl.git
git@gitee.com:powerlittlebee/third_party_musl.git
powerlittlebee
third_party_musl
third_party_musl
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385