未验证 提交 82cd3c3c 编写于 作者: O openharmony_ci 提交者: Gitee

!471 Modify copy_uapi to improve incremental compilation

Merge pull request !471 from yinchuang/slove_incremental_compilation_for_copy_uapi
...@@ -97,7 +97,7 @@ if (is_lite_system && current_os == "ohos") { ...@@ -97,7 +97,7 @@ if (is_lite_system && current_os == "ohos") {
action("create_porting_src") { action("create_porting_src") {
script = "scripts/porting.sh" script = "scripts/porting.sh"
sources = [ "//third_party/musl" ] sources_dir = [ "//third_party/musl" ]
outdir = [ "${target_out_dir}/${musl_ported_dir}" ] outdir = [ "${target_out_dir}/${musl_ported_dir}" ]
...@@ -132,7 +132,7 @@ if (is_lite_system && current_os == "ohos") { ...@@ -132,7 +132,7 @@ if (is_lite_system && current_os == "ohos") {
"scripts/create_syscall.sh", "scripts/create_syscall.sh",
] ]
args = [ "-i" ] + rebase_path(sources) args = [ "-i" ] + rebase_path(sources_dir)
args += [ "-o" ] + rebase_path(outdir) args += [ "-o" ] + rebase_path(outdir)
args += [ "-p" ] + [ "${musl_target_os}" ] args += [ "-p" ] + [ "${musl_target_os}" ]
...@@ -210,43 +210,93 @@ if (is_lite_system && current_os == "ohos") { ...@@ -210,43 +210,93 @@ if (is_lite_system && current_os == "ohos") {
deps = [ ":create_porting_src" ] deps = [ ":create_porting_src" ]
} }
action("make_uapi") { # if uapi_dir does not exist, then make uapi from linux_kernel_dir
if (exec_script("/bin/sh",
[
"-c",
"if [ ! -d " + rebase_path(uapi_dir) +
" ]; then echo true; else echo false; fi",
],
"value")) {
kernel_dir = rebase_path(linux_kernel_dir) kernel_dir = rebase_path(linux_kernel_dir)
kernel_out_dir = rebase_path(get_path_info("${kernel_dir}/", "out_dir")) kernel_out_dir = "${kernel_dir}/make_output"
uapi_dir = "${kernel_out_dir}/usr/include" uapi_dir = "${kernel_out_dir}/usr/include"
make_uapi_cmd = "rm -rf ${uapi_dir}" make_uapi_cmd = "rm -rf ${uapi_dir}"
make_uapi_cmd += " && make -C ${kernel_dir} -sj headers O=${kernel_out_dir} ARCH=${target_cpu}" make_uapi_cmd += " && make -C ${kernel_dir} -sj headers O=${kernel_out_dir} ARCH=${target_cpu}"
make_uapi_cmd += " && cp -f ${kernel_dir}/drivers/staging/android/uapi/ashmem.h ${uapi_dir}/linux/ashmem.h" make_uapi_cmd += " && cp -f ${kernel_dir}/drivers/staging/android/uapi/ashmem.h ${uapi_dir}/linux/ashmem.h"
make_uapi_cmd += " && sed -i '/#define _INPUT_H/i#define _UAPI_INPUT_H' ${uapi_dir}/linux/input.h" make_uapi_cmd += " && sed -i '/#define _INPUT_H/i#define _UAPI_INPUT_H' ${uapi_dir}/linux/input.h"
make_uapi_cmd += " && sed -i '/struct __kernel_sockaddr_storage/i#define sockaddr_storage __kernel_sockaddr_storage' ${uapi_dir}/linux/socket.h" make_uapi_cmd += " && sed -i '/struct __kernel_sockaddr_storage/i#define sockaddr_storage __kernel_sockaddr_storage' ${uapi_dir}/linux/socket.h"
outputs = [ "${target_out_dir}/" + rebase_path(uapi_dir, target_out_dir) ] args_make_uapi = [ "-c" ]
script = "/bin/sh" args_make_uapi += [ make_uapi_cmd ]
args = [ "-c" ] exec_script("/bin/sh", args_make_uapi, "value")
args += [ make_uapi_cmd ] uapi_from = "make"
} else {
uapi_from = "local"
} }
# if uapi_dir does not exist, then make uapi from linux_kernel_dir uapi_full_path = rebase_path(uapi_dir)
if (exec_script("/bin/sh", arguments_uapi = [ "-c" ]
[
"-c", # exclude these files because they need special treatment
"if [ ! -d " + rebase_path(uapi_dir) + if (uapi_from == "make") {
" ]; then echo true; else echo false; fi", exclude_files = "asm|scsi"
],
"value")) {
uapi_dir = get_path_info("${linux_kernel_dir}/", "out_dir") + "/usr/include"
uapi_deps = [ ":make_uapi" ]
} else { } else {
uapi_deps = [] exclude_files = "asm-arm|asm-arm64|scsi"
}
arguments_uapi +=
[ "ls ${uapi_full_path} | grep -Ev " + "\"" + "${exclude_files}" + "\"" ]
uspi_files = exec_script("/bin/sh", arguments_uapi, "list lines")
# Generate a copy target for each file
foreach(file, uspi_files) {
copy("copy_uapi_${file}") {
sources = [ "${uapi_dir}/${file}" ]
outputs = [ "${target_out_dir}/${musl_inc_out_dir}/${file}" ]
}
} }
action("copy_uapi") { group("copy_uapi_scsi") {
outputs = [ "${target_out_dir}/${musl_inc_out_dir}" ] deps = []
inputs = [ uapi_dir ] sources = []
deps = uapi_deps outputs = []
script = "scripts/copy_uapi.sh" uapi_scsi_dir = rebase_path("${uapi_dir}/scsi")
args = [ "-i" ] + rebase_path(inputs) arguments_scsi = [ "-c" ]
args += [ "-o" ] + rebase_path(outputs) arguments_scsi += [ "ls ${uapi_scsi_dir}" ]
args += [ "-t" ] + [ "${musl_arch}" ] uapi_scsi_files = exec_script("/bin/sh", arguments_scsi, "list lines")
# Generate a copy target for each file in scsi dir to avoid being influenced by musl_copy_inc_scsi output
foreach(file, uapi_scsi_files) {
copy("copy_uapi_scsi_${file}") {
sources += [ "${uapi_dir}/scsi/${file}" ]
outputs += [ "${target_out_dir}/${musl_inc_out_dir}/scsi/${file}" ]
}
deps += [ ":copy_uapi_scsi_${file}" ]
}
}
copy("copy_uapi_asm") {
if (uapi_from == "local") {
if ("${musl_arch}" == "arm") {
file_name = "asm-arm"
} else { # aarch64 and x86_64 use same file
file_name = "asm-arm64"
}
sources = [ "${uapi_dir}/${file_name}/asm" ]
} else {
sources = [ "${uapi_dir}/asm" ]
}
outputs = [ "${target_out_dir}/${musl_inc_out_dir}/asm" ]
}
group("copy_uapi") {
deps = [ ":copy_uapi_scsi" ]
# We need do different processing for asm according to the source of uapi
deps += [ ":copy_uapi_asm" ]
foreach(file, uspi_files) {
deps += [ ":copy_uapi_${file}" ]
}
} }
copy("musl_copy_inc_bits") { copy("musl_copy_inc_bits") {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册