nxdrvlinux/build_install_driver

139 lines
4.5 KiB
Plaintext
Raw Permalink Normal View History

#!/bin/bash -e
function check_help {
case "$1" in
"--help" | "-h")
echo "************************************************************"
echo "*** HELP ***************************************************"
echo "************************************************************"
echo "*** Run the script without parameter to build and ***"
echo "*** install the driver. The build script will creates a ***"
echo "*** build directory (./tmp_build). ***"
echo "*** To specify a build directory just pass a directory ***"
echo "*** path. ***"
echo "*** ***"
echo "*** e.g.: ***"
echo "*** mkdir ./my_build_path ***"
echo "*** ./build_install_driver ./my_build_path ***"
echo "************************************************************"
exit 0
;;
*)
;;
esac
}
builddir="./tmp_build/"
if (( "$#" >= "1" )); then
check_help $1
if [ -d "${1}" ]; then
builddir=$(realpath "${1}")
else
echo "Error - Given parameter \"$1\" is not a folder or does not exist!"
exit 1
fi
else
mkdir -p "${builddir}"
fi
# check if directories contain white spaces...
invalid_path=$(pwd | { grep " " || true; } )
if [ "${invalid_path}" != "" ]; then
echo "Error - path contains spaces (\"${PWD}\")! Please use path without."
exit 1
fi
invalid_path=$(echo ${builddir} | { grep " " || true; } )
if [ "${invalid_path}" != "" ]; then
echo "Error - path contains spaces (\"${builddir}\")! Please use path without."
exit 1
fi
if [ -d "${builddir}/libcifx" ] || [ -d "${builddir}/uio_netx" ]; then
echo "********************************************************************************"
echo "NOTE: The build folder (\"${builddir}\") is not empty! Force overwrting (yes=y)?"
echo " Or pass a new build folder (./build_install_driver [my_build_folder]."
echo "********************************************************************************"
read delete_files
if [ "${delete_files}" = "y" ]; then
echo "...deleting build folder!"
rm -rf "${builddir}/libcifx"
rm -rf "${builddir}/uio_netx"
else
echo "...canceled build process!"
exit 1
fi
fi
driver_src=$(dirname $(realpath $0))
scripts_dir="${driver_src}/scripts"
cur_path=$PWD
kernelversion=""
ret=0
install_step="uio_netx"
while [ "$install_step" != "stop" ]
do
case $install_step in
error)
echo "************************************************************"
echo "**** An error occured during the installation ***"
echo "************************************************************"
echo "Please check the error message in the previous steps."
echo "When the problem is fixed restart the installation."
install_step="stop"
ret=1
;;
uio_netx)
install_step="firmware"
mkdir -p "${builddir}/uio_netx"
echo "************************************************************"
echo "**** Start building kernel module uio_netx ***"
echo "************************************************************"
if ! "${scripts_dir}/"install_uio_netx build "${builddir}/uio_netx"; then # build module
echo "Error building kernel module!"
install_step="error"
fi
if ! "${scripts_dir}/"install_uio_netx install "${builddir}/uio_netx"; then # install module
echo "Error installing kernel module!"
install_step="error"
fi
;;
firmware)
install_step="libcifx"
echo "************************************************************"
echo "**** Installing kernel module and firmware ***"
echo "************************************************************"
install_step="libcifx"
if ! "${scripts_dir}/"install_firmware install ; then # install firmware
echo "Error installing firmware!"
install_step="error"
fi
if ! "${scripts_dir}/"install_uio_netx update ; then # load driver
echo "Error updating module dependencies!"
install_step="error"
fi
if ! "${scripts_dir}/"install_uio_netx unload ; then
echo "Error unloading driver!"
install_step="error"
fi
if ! "${scripts_dir}/"install_uio_netx load; then
echo "Error loading driver!"
install_step="error"
fi
;;
libcifx)
echo "************************************************************"
echo "**** Building and installing user space library libcifx ***"
echo "************************************************************"
mkdir -p "${builddir}/libcifx"
"${scripts_dir}/"install_libcifx "${builddir}/libcifx"
install_step="stop"
;;
esac
done
cd ..
exit $ret