377 lines
13 KiB
Bash
Executable File
377 lines
13 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
########################################################
|
|
# establish build environment and build options value
|
|
# Please modify the following items according your build environment
|
|
|
|
if [ ! -z $1 ]; then
|
|
ARCH=$1
|
|
fi
|
|
|
|
PCROSS_TOOL_PATH=$3
|
|
CROSS=${PCROSS_TOOL_PATH##*/}
|
|
fstr=${PCROSS_TOOL_PATH%/*}
|
|
fstr=${fstr%/*}
|
|
|
|
echo "====cross"=$CROSS
|
|
echo "====ARCH"=$ARCH
|
|
|
|
export AQROOT=`pwd`
|
|
export AQARCH=$AQROOT/arch/XAQ2
|
|
|
|
export SDK_DIR=$AQROOT/build/sdk
|
|
|
|
case "$ARCH" in
|
|
|
|
arm)
|
|
ARCH=arm
|
|
export ARCH_TYPE=arm
|
|
export CPU_TYPE=cortex-a9
|
|
export CPU_ARCH=armv7-a
|
|
export FIXED_ARCH_TYPE=$1
|
|
|
|
export KERNEL_DIR=$2
|
|
export COMMON_DRIVERS_DIR=common_drivers
|
|
export CROSS_COMPILE=$CROSS
|
|
export TOOLCHAIN=$fstr/bin
|
|
export LIB_DIR=$fstr/libc/lib
|
|
export PATH=$TOOLCHAIN:$PATH
|
|
;;
|
|
|
|
|
|
arm64)
|
|
ARCH=arm64
|
|
export ARCH_TYPE=arm64
|
|
export CPU_TYPE=cortex-a53
|
|
export CPU_ARCH=armv8-a
|
|
export FIXED_ARCH_TYPE=$1
|
|
|
|
export KERNEL_DIR=$2
|
|
export COMMON_DRIVERS_DIR=common_drivers
|
|
export CROSS_COMPILE=$CROSS
|
|
export TOOLCHAIN=$fstr/bin
|
|
export LIB_DIR=$fstr/libc/lib
|
|
export PATH=$TOOLCHAIN:$PATH
|
|
|
|
;;
|
|
|
|
arm-yocto)
|
|
ARCH=arm
|
|
export ARCH_TYPE=$ARCH
|
|
export CPU_TYPE=cortex-a9
|
|
export CPU_ARCH=armv7-a
|
|
export FIXED_ARCH_TYPE=arm-yocto
|
|
|
|
export KERNEL_DIR=/home/software/Linux/YOCTO/L3.10.9_1.0.0_alpha_20131009
|
|
export TOOLCHAIN=/home/software/Linux/YOCTO/poky/sysroots/x86_64-pokysdk-linux/usr
|
|
export PATH=$TOOLCHAIN/bin:$TOOLCHAIN/bin/cortexa9hf-vfp-neon-poky-linux-gnueabi:$PATH
|
|
export CROSS_COMPILE=arm-poky-linux-gnueabi-
|
|
export ROOTFS=/home/software/Linux/YOCTO/x11-20130912221643
|
|
export ROOTFS_USR=$ROOTFS/usr
|
|
export X11_ARM_DIR=$ROOTFS/usr
|
|
export CFLAGS="-D__ARM_PCS_VFP --sysroot=$ROOTFS"
|
|
export LFLAGS="--sysroot=$ROOTFS"
|
|
export PFLAGS="--sysroot=$ROOTFS"
|
|
export FPU=vfp
|
|
export FLOAT_ABI=hard
|
|
BUILD_YOCTO_DRI_BUILD=1
|
|
;;
|
|
|
|
unicore)
|
|
export ARCH_TYPE=unicore
|
|
export CPU_TYPE=0
|
|
export CPU_ARCH=0
|
|
export FIXED_ARCH_TYPE=unicore
|
|
|
|
export KERNEL_DIR=/home/software/Linux/linux-2.6.32
|
|
export CROSS_COMPILE=unicore32-linux-
|
|
export TOOLCHAIN=/home/software/Linux/uc4-1.0-beta-hard-RHELAS5
|
|
export LIB_DIR=$TOOLCHAIN/unicore32-linux/lib
|
|
;;
|
|
|
|
tensilica)
|
|
export ARCH_TYPE=$ARCH
|
|
export CPU_TYPE=0
|
|
export CPU_ARCH=0
|
|
export FIXED_ARCH_TYPE=tensilica
|
|
|
|
# KERNEL_DIR=/home/software/Linux/linux-2.6.24.7
|
|
CROSS_COMPILE=xtensa_venus-linux-
|
|
TOOLCHAIN=/home/software/Linux/xtensa/staging_dir/usr
|
|
LIB_DIR=$TOOLCHAIN/lib
|
|
;;
|
|
|
|
ppc-be)
|
|
export ARCH_TYPE=powerpc
|
|
export CPU_TYPE=440
|
|
|
|
# '-be' mens big-endian
|
|
export FIXED_ARCH_TYPE=ppc-be
|
|
|
|
# set ENDIANNESS to build driver with little-endian
|
|
#export ENDIANNESS=-mlittle-endian
|
|
|
|
# KERNEL_DIR=/home/software/Linux/linux-2.6.27
|
|
export CROSS_COMPILE=ppc_4xx-
|
|
export TOOLCHAIN=/home/software/eldk/usr
|
|
export DEPMOD=$TOOLCHAIN/bin/depmod.pl
|
|
export LIB_DIR=/home/software/eldk/ppc_4xx/lib
|
|
|
|
;;
|
|
|
|
mips-le)
|
|
|
|
export ARCH_TYPE=$ARCH
|
|
export CPU_TYPE=0
|
|
export ARCH_TYPE=mips
|
|
export CPU_ARCH=34kf
|
|
|
|
#
|
|
# to select the right ES20 pre-built files
|
|
#
|
|
export FIXED_ARCH_TYPE=mips-le
|
|
|
|
#
|
|
# to build driver with little endin
|
|
#
|
|
export ENDIANNESS=-mel
|
|
|
|
export KERNEL_DIR=/home/software/Linux/linux-2.6.19-mips.le
|
|
export CROSS_COMPILE=mips-linux-gnu-
|
|
export TOOLCHAIN=/home/software/Linux/mips-4.4-5
|
|
export LIB_DIR=$TOOLCHAIN/mips-linux-gnu/libc/el/usr/lib
|
|
;;
|
|
|
|
mips-be)
|
|
|
|
export ARCH_TYPE=$ARCH
|
|
export CPU_TYPE=0
|
|
export ARCH_TYPE=mips
|
|
export CPU_ARCH=34kf
|
|
|
|
#
|
|
# to select the right ES20 pre-built files
|
|
#
|
|
export FIXED_ARCH_TYPE=mips-be
|
|
|
|
#
|
|
# to build driver with little endin
|
|
#
|
|
export ENDIANNESS=-meb
|
|
|
|
export KERNEL_DIR=/home/software/Linux/linux-2.6.19-mips.be
|
|
export CROSS_COMPILE=mips-linux-gnu-
|
|
export TOOLCHAIN=/home/software/Linux/mips-4.4-5
|
|
export LIB_DIR=$TOOLCHAIN/lib
|
|
;;
|
|
|
|
mips-le-24kc)
|
|
export ARCH_TYPE=mips
|
|
export CPU_ARCH=24kc
|
|
export CPU_TYPE=0
|
|
|
|
export FIXED_ARCH_TYPE=mips-le-24kc
|
|
|
|
#
|
|
# set build optons: little-endian
|
|
#
|
|
export ENDIANNESS=-mel
|
|
|
|
export KERNEL_DIR=/home/software/Linux/linux-2.6.19-mips.le
|
|
export CROSS_COMPILE=mipsel-linux-gnu-
|
|
export TOOLCHAIN=/home/software/Linux/tools-2.6.27
|
|
export LIB_DIR=$TOOLCHAIN/lib
|
|
;;
|
|
|
|
*)
|
|
echo "ERROR: Unknown $ARCH, or not support so far"
|
|
exit 1
|
|
;;
|
|
|
|
esac;
|
|
|
|
|
|
########################################################
|
|
# set special build options valule
|
|
# You can modify the build options for different results according your requirement
|
|
#
|
|
# option value description default value
|
|
# -------------------------------------------------------------------------------------
|
|
# DEBUG 1 Enable debugging. 0
|
|
# 0 Disable debugging.
|
|
#
|
|
# NO_DMA_COHERENT 1 Disable coherent DMA function. 0
|
|
# 0 Enable coherent DMA function.
|
|
#
|
|
# Please set this to 1 if you are not sure what
|
|
# it should be.
|
|
#
|
|
# ABI 0 Change application binary interface, default 0
|
|
# is 0 which means no setting
|
|
# aapcs-linux For example, build driver for Aspenite board
|
|
#
|
|
# LINUX_OABI 1 Enable this if build environment is ARM OABI. 0
|
|
# 0 Normally disable it for ARM EABI or other machines.
|
|
#
|
|
# USE_VDK 1 Eanble this one when the applications 0
|
|
# are using the VDK programming interface.
|
|
# 0 Disable this one when the applications
|
|
# are NOT using the VDK programming interface.
|
|
#
|
|
# Don't eanble gcdSTATIC_LINK (see below)
|
|
# at the same time since VDK will load some
|
|
# libraries dynamically.
|
|
#
|
|
# EGL_API_FB 1 Use the FBDEV as the GUI system for the EGL. 0
|
|
# 0 Use X11 system as the GUI system for the EGL.
|
|
#
|
|
# EGL_API_DRI 1 Use DRI to support X accelerator. 0
|
|
# EGL_API_FB and EGL_API_DFB must be 0.
|
|
# 0 Do not use DRI to support X accelerator.
|
|
#
|
|
# X11_DRI3 1 Use DRI3 framework to support X11. 0
|
|
# 0 Do not use DRI3 framework to support X11.
|
|
#
|
|
# EGL_API_DFB 1 Use directFB accelerator. 0
|
|
# EGL_API_FB and EGL_API_DRI must be 0.
|
|
# 0 Do not use directFB accelerator.
|
|
#
|
|
# gcdSTATIC_LINK 1 Enable static linking. 0
|
|
# 0 Disable static linking;
|
|
#
|
|
# Don't enable this one when you are building
|
|
# GFX driver and HAL unit tests since both of
|
|
# them need dynamic linking mechanisim.
|
|
# And it must NOT be enabled when USE_VDK=1.
|
|
#
|
|
# CUSTOM_PIXMAP 1 Use the user defined Pixmap format in EGL. 0
|
|
# 0 Use X11 pixmap format in EGL.
|
|
#
|
|
# ENABLE_GPU_CLOCK_BY_DRIVER 1 Set the GPU clock in the driver. 0
|
|
# 0 The GPU clock should be set by BSP.
|
|
#
|
|
# USE_FB_DOUBLE_BUFFER 0 Use single buffer for the FBDEV 0
|
|
# 1 Use double buffer for the FBDEV (NOTE: the FBDEV must support it)
|
|
#
|
|
#
|
|
# USE_PLATFORM_DRIVER 1 Use platform driver model to build kernel 1
|
|
# module on linux while kernel version is 2.6.
|
|
# 0 Use legecy kernel driver model.
|
|
#
|
|
# FPGA_BUILD 1 Set this option to 1 if you're running on 0
|
|
# FPGA board.
|
|
# 0
|
|
#
|
|
# USE_BANK_ALIGNMENT 1 Enable gcdENABLE_BANK_ALIGNMENT, and video memory is allocated bank aligned.
|
|
# The vendor can modify _GetSurfaceBankAlignment() and gcoSURF_GetBankOffsetBytes()
|
|
# to define how different types of allocations are bank and channel aligned.
|
|
# 0 Disabled (default), no bank alignment is done.
|
|
#
|
|
# BANK_BIT_START 0 Use default start bit of the bank defined in gc_hal_options.h
|
|
# [BANK_BIT_START] Specifies the start bit of the bank (inclusive).
|
|
# This option has an effect only when gcdENABLE_BANK_ALIGNMENT is enabled;
|
|
#
|
|
# BANK_BIT_END 0 Use default end bit of the bank defined in gc_hal_options.h
|
|
# [BANK_BIT_END] Specifies the end bit of the bank (inclusive);
|
|
# This option has an effect only when gcdENABLE_BANK_ALIGNMENT is enabled;
|
|
#
|
|
# BANK_CHANNEL_BIT 0 Use default channel bit defined in gc_hal_options.h
|
|
# [BANK_CHANNEL_BIT] When set to no-zero, video memory when allocated bank aligned is allocated such
|
|
# that render and depth buffer addresses alternate on the channel bit specified.
|
|
# This option has an effect only when gcdENABLE_BANK_ALIGNMENT is enabled.
|
|
#
|
|
|
|
BUILD_OPTION_DEBUG=1
|
|
BUILD_OPTION_ABI=0
|
|
BUILD_OPTION_LINUX_OABI=0
|
|
BUILD_OPTION_NO_DMA_COHERENT=1
|
|
BUILD_OPTION_USE_VDK=1
|
|
|
|
BUILD_OPTION_USE_VXC_BINARY=0
|
|
BUILD_OPTION_GPU_CONFIG="vipnanoqi_pid0x7d"
|
|
if [ -z $BUILD_OPTION_EGL_API_FB ]; then
|
|
BUILD_OPTION_EGL_API_FB=1
|
|
fi
|
|
if [ -z $BUILD_OPTION_EGL_API_DFB ]; then
|
|
BUILD_OPTION_EGL_API_DFB=0
|
|
fi
|
|
if [ -z $BUILD_OPTION_EGL_API_DRI ]; then
|
|
BUILD_OPTION_EGL_API_DRI=0
|
|
fi
|
|
if [ -z $BUILD_OPTION_X11_DRI3 ]; then
|
|
BUILD_OPTION_X11_DRI3=0
|
|
fi
|
|
if [ -z $BUILD_OPTION_EGL_API_WL ]; then
|
|
BUILD_OPTION_EGL_API_WL=0
|
|
fi
|
|
if [ -z $BUILD_OPTION_EGL_API_NULLWS ]; then
|
|
BUILD_OPTION_EGL_API_NULLWS=0
|
|
fi
|
|
BUILD_OPTION_gcdSTATIC_LINK=0
|
|
BUILD_OPTION_CUSTOM_PIXMAP=0
|
|
BUILD_OPTION_USE_3D_VG=1
|
|
if [ -z $BUILD_OPTION_USE_OPENCL ]; then
|
|
BUILD_OPTION_USE_OPENCL=1
|
|
fi
|
|
if [ -z $BUILD_OPTION_USE_OPENVX ]; then
|
|
BUILD_OPTION_USE_OPENVX=1
|
|
fi
|
|
if [ -z $BUILD_OPTION_USE_VULKAN ]; then
|
|
BUILD_OPTION_USE_VULKAN=0
|
|
fi
|
|
BUILD_OPTION_USE_FB_DOUBLE_BUFFER=0
|
|
BUILD_OPTION_USE_PLATFORM_DRIVER=1
|
|
if [ -z $BUILD_OPTION_ENABLE_GPU_CLOCK_BY_DRIVER ]; then
|
|
BUILD_OPTION_ENABLE_GPU_CLOCK_BY_DRIVER=0
|
|
fi
|
|
|
|
if [ -z $BUILD_YOCTO_DRI_BUILD ]; then
|
|
BUILD_YOCTO_DRI_BUILD=0
|
|
fi
|
|
|
|
BUILD_OPTION_CONFIG_DOVEXC5_BOARD=0
|
|
BUILD_OPTION_FPGA_BUILD=0
|
|
BUILD_OPTIONS="NO_DMA_COHERENT=$BUILD_OPTION_NO_DMA_COHERENT"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS USE_VDK=$BUILD_OPTION_USE_VDK"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS EGL_API_FB=$BUILD_OPTION_EGL_API_FB"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS EGL_API_DFB=$BUILD_OPTION_EGL_API_DFB"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS EGL_API_DRI=$BUILD_OPTION_EGL_API_DRI"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS X11_DRI3=$BUILD_OPTION_X11_DRI3"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS EGL_API_NULLWS=$BUILD_OPTION_EGL_API_NULLWS"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS gcdSTATIC_LINK=$BUILD_OPTION_gcdSTATIC_LINK"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS EGL_API_WL=$BUILD_OPTION_EGL_API_WL"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS ABI=$BUILD_OPTION_ABI"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS LINUX_OABI=$BUILD_OPTION_LINUX_OABI"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS DEBUG=$BUILD_OPTION_DEBUG"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS CUSTOM_PIXMAP=$BUILD_OPTION_CUSTOM_PIXMAP"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS USE_3D_VG=$BUILD_OPTION_USE_3D_VG"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS USE_OPENCL=$BUILD_OPTION_USE_OPENCL"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS USE_OPENVX=$BUILD_OPTION_USE_OPENVX"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS USE_VULKAN=$BUILD_OPTION_USE_VULKAN"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS USE_FB_DOUBLE_BUFFER=$BUILD_OPTION_USE_FB_DOUBLE_BUFFER"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS USE_PLATFORM_DRIVER=$BUILD_OPTION_USE_PLATFORM_DRIVER"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS ENABLE_GPU_CLOCK_BY_DRIVER=$BUILD_OPTION_ENABLE_GPU_CLOCK_BY_DRIVER"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS CONFIG_DOVEXC5_BOARD=$BUILD_OPTION_CONFIG_DOVEXC5_BOARD"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS FPGA_BUILD=$BUILD_OPTION_FPGA_BUILD"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS YOCTO_DRI_BUILD=$BUILD_YOCTO_DRI_BUILD"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS USE_VXC_BINARY=$BUILD_OPTION_USE_VXC_BINARY"
|
|
BUILD_OPTIONS="$BUILD_OPTIONS GPU_CONFIG=$BUILD_OPTION_GPU_CONFIG"
|
|
|
|
#export PATH=$TOOLCHAIN/bin:$PATH
|
|
|
|
########################################################
|
|
# clean/build driver and samples
|
|
# build results will save to $SDK_DIR/
|
|
#
|
|
cd $AQROOT; make -j1 -f makefile.linux $BUILD_OPTIONS clean
|
|
cd $AQROOT; make -j64 -f makefile.linux $BUILD_OPTIONS install 2>&1 | tee $AQROOT/linux_build.log
|
|
rm galcore.o galcore.mod.o galcore.mod.c galcore.ko
|
|
########################################################
|
|
# other build/clean commands to build/clean specified items, eg.
|
|
#
|
|
# cd $AQROOT; make -f makefile.linux $BUILD_OPTIONS gal_core V_TARGET=clean || exit 1
|
|
# cd $AQROOT; make -f makefile.linux $BUILD_OPTIONS gal_core V_TARGET=install || exit 1
|
|
|