#/bin/sh

######################
# Sunxi  compilation #
######################

show_usage() {
cat <<EOF
# NAME

  $(basename $0) -- Script to build sunxi kernel and boot files

# OPTIONS

  -o		offline mode				(mandatory)
  -t		olinux type (a10lime, a20lime, a20lime2, a20micro) 	(default: a20lime)

EOF
exit 1
}

while getopts ":ot:" opt; do
  case $opt in
    o)
      offline=$OPTARG
      ;;
    t)
      olinux=$OPTARG
      ;;
    \?)
      show_usage
      ;;
  esac
done

clone_or_pull (){
  project=$1
  repo=$2
  name=$(echo $project |  sed 's/.git$//')
  if [ "$offline" ] ; then
    cd /olinux/sunxi/$name/ && make clean
    return 0
  fi
  if [ -d /olinux/sunxi/$name/ ] ; then
    cd /olinux/sunxi/$name/ && make clean && git pull --depth 1
  else
    git clone --depth 1 $repo/$project /olinux/sunxi/$name/
  fi
}

if [ "$olinux" = "a20lime2" ] ; then
  u_boot_config="A20-OLinuXino-Lime2_defconfig"
  sunxi_board_config="a20/a20-olinuxino_lime2.fex"
  kernel_defconfig="a20_defconfig"
elif [ "$olinux" = "a20micro" ] ; then
  u_boot_config="A20-OLinuXino_MICRO_defconfig"
  sunxi_board_config="a20/a20-olinuxino_micro.fex"
  kernel_defconfig="a20_defconfig"
elif [ "$olinux" = "a10lime" ] ; then
  u_boot_config="A10-OLinuXino-Lime_defconfig"
  sunxi_board_config="a10/a10-olinuxino-lime.fex"
  kernel_defconfig="a10_defconfig"
else
  u_boot_config="A20-OLinuXino-Lime_defconfig"
  sunxi_board_config="a20/a20-olinuxino_lime.fex"
  kernel_defconfig="a20_defconfig"
fi

mkdir -p /olinux/sunxi/

# Sunxi u-boot
#clone_or_pull u-boot-sunxi
clone_or_pull u-boot.git git://git.denx.de
cd /olinux/sunxi/u-boot && make CROSS_COMPILE=arm-linux-gnueabihf $u_boot_config && make CROSS_COMPILE=arm-linux-gnueabihf-

# Sunxi kernel
clone_or_pull linux-sunxi.git https://github.com/linux-sunxi
cp /olinux/$kernel_defconfig /olinux/sunxi/linux-sunxi/arch/arm/configs/.
cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm $kernel_defconfig
cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 uImage  
cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 INSTALL_MOD_PATH=out modules
cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 INSTALL_MOD_PATH=out modules_install

# Sunxi board configs
clone_or_pull sunxi-boards.git https://github.com/linux-sunxi
# Sunxi tools
clone_or_pull sunxi-tools.git https://github.com/linux-sunxi
cd /olinux/sunxi/sunxi-tools/ && make
cd /olinux/sunxi/ && rm -f script.bin && ./sunxi-tools/fex2bin sunxi-boards/sys_config/$sunxi_board_config script.bin
cd /olinux/sunxi/ && chmod +x script.bin