[vlc-devel] [PATCH v2 1/2] extra: packages: add a Raspberry Pi build script

Steve Lhomme robux4 at ycbcr.xyz
Fri Mar 20 12:57:23 CET 2020


Addressed all the raised issues in v2. We don't force the compiler 
anymore, we have the prefix/triplet for that and it seems to work fine. 
So it should be possible to build aarch64 with the same script using "-a 
aarch64".

On 2020-03-20 12:51, Steve Lhomme wrote:
> Tested cross compiling for armv7 with this docker image
> registry.videolan.org/vlc-debian-raspbian:20200213203125
> ---
>   extras/package/raspberry/build.sh     | 169 ++++++++++++++++++++++++++
>   extras/package/raspberry/configure.sh |  22 ++++
>   2 files changed, 191 insertions(+)
>   create mode 100755 extras/package/raspberry/build.sh
>   create mode 100755 extras/package/raspberry/configure.sh
> 
> diff --git a/extras/package/raspberry/build.sh b/extras/package/raspberry/build.sh
> new file mode 100755
> index 00000000000..628abff6cdb
> --- /dev/null
> +++ b/extras/package/raspberry/build.sh
> @@ -0,0 +1,169 @@
> +#!/bin/sh
> +
> +set -e
> +set -x
> +
> +info()
> +{
> +    local green="\033[1;32m"
> +    local normal="\033[0m"
> +    echo "[${green}build${normal}] $1"
> +}
> +
> +usage()
> +{
> +cat << EOF
> +usage: $0 [options]
> +
> +Build vlc in the current directory
> +
> +OPTIONS:
> +   -h            Show some help
> +   -r            Release mode (default is debug)
> +   -a <arch>     Use the specified arch (default: arm, possible aarch64)
> +   -p            Use a Prebuilt contrib package (speeds up compilation)
> +   -c            Create a Prebuilt contrib package (rarely used)
> +   -l            Enable translations (can be slow)
> +   -s            Interactive shell (get correct environment variables for build)
> +   -x            Add extra checks when compiling
> +EOF
> +}
> +
> +ARCH="arm"
> +while getopts "hra:pcli:sdx" OPTION
> +do
> +     case $OPTION in
> +         h)
> +             usage
> +             exit 1
> +         ;;
> +         r)
> +             RELEASE="yes"
> +         ;;
> +         a)
> +             ARCH=$OPTARG
> +         ;;
> +         p)
> +             PREBUILT="yes"
> +         ;;
> +         c)
> +             PACKAGE="yes"
> +         ;;
> +         l)
> +             I18N="yes"
> +         ;;
> +         s)
> +             INTERACTIVE="yes"
> +         ;;
> +         x)
> +             EXTRA_CHECKS="yes"
> +         ;;
> +     esac
> +done
> +shift $(($OPTIND - 1))
> +
> +if [ "x$1" != "x" ]; then
> +    usage
> +    exit 1
> +fi
> +
> +case $ARCH in
> +    aarch64)
> +        SHORTARCH="linuxarm64"
> +        EABI="gnu"
> +        ;;
> +    arm)
> +        SHORTARCH="linuxarm"
> +        EABI="gnueabihf"
> +        ;;
> +    *)
> +        usage
> +        exit 1
> +esac
> +
> +#####
> +
> +SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )"
> +
> +: ${JOBS:=$(getconf _NPROCESSORS_ONLN 2>&1)}
> +TRIPLET=$ARCH-linux-$EABI
> +
> +info "Building extra tools"
> +mkdir -p tools
> +cd tools
> +export PATH="$PWD/build/bin":"$PATH"
> +if [ "$INTERACTIVE" != "yes" ] || [ ! -f ./Makefile ]; then
> +    ${SCRIPT_PATH}/../../tools/bootstrap
> +fi
> +make -j$JOBS --output-sync=recurse
> +cd ..
> +
> +export USE_FFMPEG=1
> +
> +if [ "$INTERACTIVE" = "yes" ]; then
> +if [ "x$SHELL" != "x" ]; then
> +    exec $SHELL
> +else
> +    exec /bin/sh
> +fi
> +fi
> +
> +info "Building contribs"
> +
> +mkdir -p contrib/contrib-$SHORTARCH && cd contrib/contrib-$SHORTARCH
> +
> +# issue with arm detection of the target (detects i686)
> +CONTRIBFLAGS="$CONTRIBFLAGS --disable-x265"
> +
> +${SCRIPT_PATH}/../../../contrib/bootstrap --host=$TRIPLET $CONTRIBFLAGS
> +
> +# use the system headers for the OS and firmware
> +export CFLAGS="$CFLAGS -g -mfpu=neon -isystem=/usr/lib/$TRIPLET -isystem=/opt/vc/include"
> +export CXXFLAGS="$CXXFLAGS -g -mfpu=neon -isystem=/usr/lib/$TRIPLET -isystem=/opt/vc/include"
> +export CPPFLAGS="$CPPFLAGS -g -mfpu=neon -isystem=/usr/lib/$TRIPLET -isystem=/opt/vc/include"
> +export LDFLAGS="$LDFLAGS -L/usr/$TRIPLET/lib -L/opt/vc/lib"
> +
> +# Rebuild the contribs or use the prebuilt ones
> +if [ "$PREBUILT" != "yes" ]; then
> +    make list
> +    make -j$JOBS --output-sync=recurse fetch
> +    make -j$JOBS --output-sync=recurse -k || make -j1
> +    if [ "$PACKAGE" = "yes" ]; then
> +        make package
> +    fi
> +elif [ -n "$VLC_PREBUILT_CONTRIBS_URL" ]; then
> +    make prebuilt PREBUILT_URL="$VLC_PREBUILT_CONTRIBS_URL"
> +else
> +    make prebuilt
> +fi
> +cd ../..
> +
> +info "Bootstrapping"
> +if ! [ -e ${SCRIPT_PATH}/../../../configure ]; then
> +    echo "Bootstraping vlc"
> +    ${SCRIPT_PATH}/../../../bootstrap
> +fi
> +
> +info "Configuring VLC"
> +mkdir $SHORTARCH || true
> +cd $SHORTARCH
> +
> +if [ "$RELEASE" != "yes" ]; then
> +     CONFIGFLAGS="$CONFIGFLAGS --enable-debug"
> +else
> +     CONFIGFLAGS="$CONFIGFLAGS --disable-debug"
> +fi
> +if [ "$I18N" != "yes" ]; then
> +     CONFIGFLAGS="$CONFIGFLAGS --disable-nls"
> +fi
> +if [ ! -z "$EXTRA_CHECKS" ]; then
> +    CFLAGS="$CFLAGS -Werror=incompatible-pointer-types -Werror=missing-field-initializers"
> +fi
> +
> +ac_cv_path_MOC="qtchooser -qt=qt5-$TRIPLET -run-tool=moc" \
> +ac_cv_path_RCC="qtchooser -qt=qt5-$TRIPLET -run-tool=rcc" \
> +ac_cv_path_UIC="qtchooser -qt=qt5-$TRIPLET -run-tool=uic" \
> +${SCRIPT_PATH}/configure.sh --host=$TRIPLET $CONFIGFLAGS
> +
> +info "Compiling"
> +make -j$JOBS
> diff --git a/extras/package/raspberry/configure.sh b/extras/package/raspberry/configure.sh
> new file mode 100755
> index 00000000000..fa81c1e5259
> --- /dev/null
> +++ b/extras/package/raspberry/configure.sh
> @@ -0,0 +1,22 @@
> +#!/bin/sh
> +
> +OPTIONS="
> +      --enable-mmal
> +      --enable-lua
> +      --enable-faad
> +      --enable-flac
> +      --enable-theora
> +      --enable-avcodec --enable-merge-ffmpeg
> +      --enable-dca
> +      --enable-libass
> +      --enable-schroedinger
> +      --enable-live555
> +      --enable-dvdread
> +      --enable-shout
> +      --enable-goom
> +      --enable-libcddb
> +      --enable-zvbi --disable-telx
> +      --enable-nls
> +"
> +
> +sh "$(dirname $0)"/../../../configure ${OPTIONS}  "$@"
> -- 
> 2.17.1
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
> 


More information about the vlc-devel mailing list