• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2
3# Copyright (C) 2022 Huawei Technologies Co., Ltd.
4# Licensed under the Mulan PSL v2.
5# You can use this software according to the terms and conditions of the Mulan
6# PSL v2.
7# You may obtain a copy of Mulan PSL v2 at:
8#     http://license.coscl.org.cn/MulanPSL2
9# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY
10# KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
11# NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
12# See the Mulan PSL v2 for more details.
13
14set -e
15
16THIRD_PARTY_ORIGIN=$(pwd)/../../../../../../../../third_party
17
18MUSL_CODE=${THIRD_PARTY_ORIGIN}/musl
19EXPORT_MUSL_HEADER_PATH=$(pwd)/musl
20
21BOUNDS_CHECK_CODE=${THIRD_PARTY_ORIGIN}/bounds_checking_function
22EXPORT_BOUNDS_CHECK_HEADER_PATH=$(pwd)/bounds_checking_function
23
24function do_copy_musl_header_file() {
25    if [[ "$1" == "ARM32" ]]; then
26        ARCH=arm
27        LIBC_HEADER=libc_32
28    else
29        ARCH=aarch64
30        LIBC_HEADER=libc
31    fi
32
33    LIBC_HEADER_PATH=${EXPORT_MUSL_HEADER_PATH}/${LIBC_HEADER}
34    if [[ -d "${LIBC_HEADER_PATH}" ]]; then
35        rm -rf ${LIBC_HEADER_PATH}
36    fi
37
38    mkdir ${LIBC_HEADER_PATH}
39    mkdir -p ${LIBC_HEADER_PATH}/sys
40    mkdir -p ${LIBC_HEADER_PATH}/netinet
41    mkdir -p ${LIBC_HEADER_PATH}/arpa
42    mkdir -p ${LIBC_HEADER_PATH}/arch/generic
43    mkdir -p ${LIBC_HEADER_PATH}/fortify
44
45    LIBC_ARCH_PATH=${LIBC_HEADER_PATH}/arch
46    mkdir -p ${LIBC_ARCH_PATH}
47
48    cp ${MUSL_CODE}/include/semaphore.h ${LIBC_HEADER_PATH}
49    cp ${MUSL_CODE}/include/signal.h ${LIBC_HEADER_PATH}
50    cp ${MUSL_CODE}/include/stdalign.h ${LIBC_HEADER_PATH}
51    cp ${MUSL_CODE}/include/stdbool.h ${LIBC_HEADER_PATH}
52    cp ${MUSL_CODE}/include/malloc.h ${LIBC_HEADER_PATH}
53    cp ${MUSL_CODE}/include/dlfcn.h ${LIBC_HEADER_PATH}
54    cp ${MUSL_CODE}/include/byteswap.h ${LIBC_HEADER_PATH}
55    cp ${MUSL_CODE}/include/pthread.h ${LIBC_HEADER_PATH}
56    cp ${MUSL_CODE}/include/stdlib.h ${LIBC_HEADER_PATH}
57    cp ${MUSL_CODE}/include/stdio.h ${LIBC_HEADER_PATH}
58    cp ${MUSL_CODE}/include/errno.h ${LIBC_HEADER_PATH}
59    cp ${MUSL_CODE}/include/inttypes.h ${LIBC_HEADER_PATH}
60    cp ${MUSL_CODE}/include/elf.h ${LIBC_HEADER_PATH}
61    cp ${MUSL_CODE}/include/assert.h ${LIBC_HEADER_PATH}
62    cp ${MUSL_CODE}/include/string.h ${LIBC_HEADER_PATH}
63    cp ${MUSL_CODE}/include/strings.h ${LIBC_HEADER_PATH}
64    cp ${MUSL_CODE}/include/stdarg.h ${LIBC_HEADER_PATH}
65    cp ${MUSL_CODE}/include/setjmp.h ${LIBC_HEADER_PATH}
66    cp ${MUSL_CODE}/include/fcntl.h ${LIBC_HEADER_PATH}
67    cp ${MUSL_CODE}/include/endian.h ${LIBC_HEADER_PATH}
68    cp ${MUSL_CODE}/include/time.h ${LIBC_HEADER_PATH}
69    cp ${MUSL_CODE}/include/limits.h ${LIBC_HEADER_PATH}
70    cp ${MUSL_CODE}/include/unistd.h ${LIBC_HEADER_PATH}
71    cp ${MUSL_CODE}/include/locale.h ${LIBC_HEADER_PATH}
72    cp ${MUSL_CODE}/include/wchar.h ${LIBC_HEADER_PATH}
73    cp ${MUSL_CODE}/include/sched.h ${LIBC_HEADER_PATH}
74    cp ${MUSL_CODE}/include/ctype.h ${LIBC_HEADER_PATH}
75    cp ${MUSL_CODE}/include/math.h ${LIBC_HEADER_PATH}
76    cp ${MUSL_CODE}/include/wctype.h ${LIBC_HEADER_PATH}
77    cp ${MUSL_CODE}/include/alloca.h ${LIBC_HEADER_PATH}
78    cp ${MUSL_CODE}/include/stddef.h ${LIBC_HEADER_PATH}
79    cp ${MUSL_CODE}/include/stdint.h ${LIBC_HEADER_PATH}
80    cp ${MUSL_CODE}/include/alloca.h ${LIBC_HEADER_PATH}
81    cp ${MUSL_CODE}/include/netdb.h ${LIBC_HEADER_PATH}
82    cp ${MUSL_CODE}/include/poll.h ${LIBC_HEADER_PATH}
83    cp ${MUSL_CODE}/include/syscall.h ${LIBC_HEADER_PATH}
84    cp ${MUSL_CODE}/include/features.h ${LIBC_HEADER_PATH}
85    cp ${MUSL_CODE}/include/sys/mman.h ${LIBC_HEADER_PATH}/sys
86    cp ${MUSL_CODE}/include/sys/syscall.h ${LIBC_HEADER_PATH}/sys
87    cp ${MUSL_CODE}/include/sys/procfs.h ${LIBC_HEADER_PATH}/sys
88    cp ${MUSL_CODE}/include/sys/user.h ${LIBC_HEADER_PATH}/sys
89    cp ${MUSL_CODE}/include/sys/stat.h ${LIBC_HEADER_PATH}/sys
90    cp ${MUSL_CODE}/include/sys/param.h ${LIBC_HEADER_PATH}/sys
91    cp ${MUSL_CODE}/include/sys/time.h ${LIBC_HEADER_PATH}/sys
92    cp ${MUSL_CODE}/include/sys/types.h ${LIBC_HEADER_PATH}/sys
93    cp ${MUSL_CODE}/include/sys/select.h ${LIBC_HEADER_PATH}/sys
94    cp ${MUSL_CODE}/include/sys/sysmacros.h ${LIBC_HEADER_PATH}/sys
95    cp ${MUSL_CODE}/include/sys/resource.h ${LIBC_HEADER_PATH}/sys
96    cp ${MUSL_CODE}/include/sys/auxv.h ${LIBC_HEADER_PATH}/sys
97    cp ${MUSL_CODE}/include/sys/uio.h ${LIBC_HEADER_PATH}/sys
98    cp ${MUSL_CODE}/include/sys/socket.h ${LIBC_HEADER_PATH}/sys
99    cp ${MUSL_CODE}/include/sys/un.h ${LIBC_HEADER_PATH}/sys
100    cp ${MUSL_CODE}/include/sys/ioctl.h ${LIBC_HEADER_PATH}/sys
101    cp ${MUSL_CODE}/include/sys/times.h ${LIBC_HEADER_PATH}/sys
102    cp ${MUSL_CODE}/include/netinet/in.h ${LIBC_HEADER_PATH}/netinet
103    cp ${MUSL_CODE}/include/netinet/tcp.h ${LIBC_HEADER_PATH}/netinet
104    cp ${MUSL_CODE}/include/arpa/inet.h ${LIBC_HEADER_PATH}/arpa
105    cp -r ${MUSL_CODE}/porting/linux/user/include/fortify/* ${LIBC_HEADER_PATH}/fortify
106    cp -r ${MUSL_CODE}/arch/generic/* ${LIBC_HEADER_PATH}/arch/generic/
107    cp -r ${MUSL_CODE}/arch/${ARCH} ${LIBC_ARCH_PATH}
108
109    cp -r ${MUSL_CODE}/arch/${ARCH}/bits/syscall.h.in ${LIBC_ARCH_PATH}/${ARCH}/bits/syscall.h
110    sed -f ${MUSL_CODE}/tools/mkalltypes.sed ${MUSL_CODE}/arch/${ARCH}/bits/alltypes.h.in ${MUSL_CODE}/include/alltypes.h.in > ${LIBC_ARCH_PATH}/${ARCH}/bits/alltypes.h
111    sed -n -e s/__NR_/SYS_/p < ${MUSL_CODE}/arch/${ARCH}/bits/alltypes.h.in >> ${LIBC_ARCH_PATH}/${ARCH}/bits/alltypes.h
112}
113
114function copy_musl_header_file() {
115    mkdir -p ${EXPORT_MUSL_HEADER_PATH}
116    do_copy_musl_header_file ARM32
117    do_copy_musl_header_file ARM64
118}
119
120function copy_bounds_check_header_file() {
121    mkdir -p ${EXPORT_BOUNDS_CHECK_HEADER_PATH}
122    mkdir -p ${EXPORT_BOUNDS_CHECK_HEADER_PATH}/include
123    cp -r ${BOUNDS_CHECK_CODE}/include/* ${EXPORT_BOUNDS_CHECK_HEADER_PATH}/include/
124}
125
126copy_musl_header_file
127copy_bounds_check_header_file
128