mirror of
https://github.com/openharmony/third_party_toybox.git
synced 2026-07-01 21:34:01 -04:00
9d734ccd0d
Signed-off-by: gongguilin <gongguilin@h-partners.com>
42 lines
1.6 KiB
Bash
Executable File
42 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Regenerate scripts/prereq (hopefully) portable build.
|
|
|
|
# Detect toybox prerequisites using record-commands
|
|
|
|
mkroot/record-commands make clean defconfig toybox
|
|
sed -i 's/default y/default n/' generated/Config.probed
|
|
CMDLIST="$(echo toybox; ./toybox cut -DF 1 log.txt | sort -u | grep -v nproc)"
|
|
{
|
|
for i in $(tr '[:lower:]' '[:upper:]' <<<"$CMDLIST")
|
|
do
|
|
grep -qi CONFIG_$i'[= ]' .config && echo CONFIG_$i=y
|
|
done
|
|
} > prereq.mini
|
|
|
|
# Create minimal dependency-free build
|
|
|
|
make clean allnoconfig KCONFIG_ALLCONFIG=prereq.mini
|
|
make toybox
|
|
cat > scripts/prereq/build.sh << 'EOF'
|
|
#!/bin/sh
|
|
|
|
BUILD='cc -funsigned-char -I scripts/prereq -I . -Os -ffunction-sections -fdata-sections -fno-asynchronous-unwind-tables -fno-strict-aliasing -DTOYBOX_VERSION=""'
|
|
LINK=''
|
|
EOF
|
|
grep -A999 FILES= generated/build.sh >> scripts/prereq/build.sh
|
|
sed -i 's/ toybox$/&-prereq/' scripts/prereq/build.sh
|
|
|
|
# harvest stripped down headers
|
|
|
|
echo > scripts/prereq/generated/tags.h
|
|
sed 's/.*/#define HELP_& ""/' <<<"$CMDLIST" > scripts/prereq/generated/help.h
|
|
egrep "($(xargs <<<"$CMDLIST"|tr ' [:lower:]' '|[:upper:]'))" \
|
|
generated/newtoys.h > scripts/prereq/generated/newtoys.h
|
|
FORS="$(sed -n 's/#define FOR_//p' $(grep -o 'toys/[^/]*/[^.]*\.c' scripts/prereq/build.sh) | xargs | tr ' ' '|')"
|
|
sed -En '1,/^$/p;/\/\/ ('"$FORS"') /,/^$/p;/#ifdef FOR_('"$FORS"')$/,/^$/p' generated/flags.h > scripts/prereq/generated/flags.h
|
|
egrep "OPTSTR_($(egrep -v "($FORS)" <<<"$CMDLIST" | xargs | tr ' ' '|'))" \
|
|
generated/flags.h >> scripts/prereq/generated/flags.h
|
|
# TODO: slim down config.h
|
|
cp generated/{globals,config}.h scripts/prereq/generated/
|