126 lines
3.0 KiB
Bash
126 lines
3.0 KiB
Bash
|
|
#!/bin/bash -e
|
||
|
|
|
||
|
|
GREEN='\033[0;32m'
|
||
|
|
RED='\033[0;31m'
|
||
|
|
NC='\033[0m'
|
||
|
|
ERROR="${RED}[ERROR]${NC}"
|
||
|
|
SUCCESS="${GREEN}[SUCCESS]${NC}"
|
||
|
|
OUTDIR="out"
|
||
|
|
FORCEY="NO"
|
||
|
|
GNARGS=""
|
||
|
|
|
||
|
|
function main() {
|
||
|
|
while [[ $# -gt 0 ]]; do
|
||
|
|
case $1 in
|
||
|
|
-h|--help)
|
||
|
|
print_help
|
||
|
|
;;
|
||
|
|
-y|--yes)
|
||
|
|
FORCEY="YES"
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
--dir)
|
||
|
|
OUTDIR="$2"
|
||
|
|
shift
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
# All other flags are passed to GN.
|
||
|
|
--*)
|
||
|
|
GNARGS+="${1:2}="
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
GNARGS+="\"$1\""
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
done
|
||
|
|
|
||
|
|
if [ -d "$OUTDIR" ]; then
|
||
|
|
if [[ $FORCEY != "YES" ]]; then
|
||
|
|
read -p "Are you sure you want to overwrite all files in ${OUTDIR} (y/N): " -n 1 -r
|
||
|
|
echo
|
||
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||
|
|
rm -rf $OUTDIR
|
||
|
|
else
|
||
|
|
echo "Exiting..."
|
||
|
|
exit
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
gn gen $OUTDIR --args=$GNARGS
|
||
|
|
if [ $? -ne 0 ]; then echo -e "${ERROR} Can't do gn gen" && exit 1; fi
|
||
|
|
ninja -C $OUTDIR scripts
|
||
|
|
if [ $? -ne 0 ]; then echo -e "${ERROR} Can't do ninja -C ${OUTDIR} scripts" && exit 1; fi
|
||
|
|
chmod +x $OUTDIR/build.sh
|
||
|
|
chmod +x $OUTDIR/run.sh
|
||
|
|
chmod +x $OUTDIR/sync.sh
|
||
|
|
chmod +x $OUTDIR/all.sh
|
||
|
|
chmod +x $OUTDIR/run_tester.sh
|
||
|
|
chmod +x $OUTDIR/debug.sh
|
||
|
|
chmod +x $OUTDIR/dll.sh
|
||
|
|
|
||
|
|
#building one.img
|
||
|
|
IMAGE_SIZE=128M
|
||
|
|
qemu-img create -f raw $OUTDIR/one.img $IMAGE_SIZE
|
||
|
|
if [ $? -ne 0 ]; then echo -e "${ERROR} Can't create an one.img" && exit 1; fi
|
||
|
|
MKFS="" # Provide path here
|
||
|
|
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||
|
|
MKFS=mkfs
|
||
|
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||
|
|
MKFS=/usr/local/opt/e2fsprogs/sbin/mkfs.ext2
|
||
|
|
else
|
||
|
|
echo "Please provide path to MKFS in MKFSBIN env variable"
|
||
|
|
fi
|
||
|
|
$MKFS -t ext2 -r 0 -b 1024 $OUTDIR/one.img
|
||
|
|
if [ $? -ne 0 ]; then echo -e "${ERROR} Can't create an one.img" && exit 1; fi
|
||
|
|
echo -e "${SUCCESS} Generated files with args: $*"
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
function print_help() {
|
||
|
|
echo "--target_arch {arch}
|
||
|
|
Sets target arch.
|
||
|
|
Possible values:
|
||
|
|
x86 (default)
|
||
|
|
x86_64
|
||
|
|
arm32 / arm
|
||
|
|
arm64 / aarch64
|
||
|
|
riscv64
|
||
|
|
|
||
|
|
--host {host}
|
||
|
|
Sets toolchain to build the OS.
|
||
|
|
Possible values:
|
||
|
|
gnu (default)
|
||
|
|
llvm
|
||
|
|
|
||
|
|
--device_type {type}
|
||
|
|
Configueres OS parts to work in either desktop or mobile mode.
|
||
|
|
Possible values:
|
||
|
|
d / desktop (default)
|
||
|
|
m / mobile
|
||
|
|
|
||
|
|
--test_method {method}
|
||
|
|
Possible values:
|
||
|
|
none (default)
|
||
|
|
tests
|
||
|
|
bench
|
||
|
|
|
||
|
|
--target_board {board}
|
||
|
|
Possible values (arm64):
|
||
|
|
qemu-virt (default)
|
||
|
|
apl
|
||
|
|
|
||
|
|
--dir {name}
|
||
|
|
Creates the build directory with the given {name}.
|
||
|
|
|
||
|
|
-y|--yes
|
||
|
|
Force yes all operations.
|
||
|
|
|
||
|
|
-h|--help
|
||
|
|
Prints all options of ./gn_gen.sh"
|
||
|
|
exit
|
||
|
|
}
|
||
|
|
|
||
|
|
main "$@"; exit
|