[FFmpeg-devel] [PATCH 2/2] configure: libbsd support for arc4random()
Hendrik Leppkes
h.leppkes at gmail.com
Mon Dec 7 08:57:57 CET 2015
On Mon, Dec 7, 2015 at 4:56 AM, Ganesh Ajjanagadde
<gajjanagadde at gmail.com> wrote:
> On non-BSD machines, there exists a package libbsd for providing BSD
> functionality. This can be used to get support for arc4random.
>
> Thus, an opt-in --enable-libbsd is added to configure for this
> functionality.
>
> Tested on GNU/Linux.
>
> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde at gmail.com>
> ---
> configure | 23 +++++++++++++++++++++++
> libavutil/random_seed.c | 7 ++++++-
> 2 files changed, 29 insertions(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index e676269..bf18198 100755
> --- a/configure
> +++ b/configure
> @@ -211,6 +211,7 @@ External library support:
> --enable-libass enable libass subtitles rendering,
> needed for subtitles and ass filter [no]
> --enable-libbluray enable BluRay reading using libbluray [no]
> + --enable-libbsd enable random seeding via arc4random [no]
> --enable-libbs2b enable bs2b DSP library [no]
> --enable-libcaca enable textual display using libcaca [no]
> --enable-libcelt enable CELT decoding via libcelt [no]
> @@ -1295,6 +1296,26 @@ require_pkg_config(){
> use_pkg_config "$@" || die "ERROR: $pkg not found using pkg-config$pkg_config_fail_message"
> }
>
> +require_libbsd(){
> + log require_libbsd "$@"
> + pkg="libbsd"
> + check_cmd $pkg_config --exists --print-errors $pkg \
> + || die "ERROR: $pkg not found"
> + pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg)
> + pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg)
> + {
> + echo "#define _DEFAULT_SOURCE"
> + echo "#include <bsd/stdlib.h>"
> + echo "long check_func(void) { return (long) arc4random; }"
> + echo "int main(void) { return 0; }"
> + } | check_ld "cc" $pkg_cflags $pkg_libs \
> + && set_safe "${pkg}_cflags" $pkg_cflags \
> + && set_safe "${pkg}_libs" $pkg_libs \
> + || die "ERROR: $pkg not found"
> + add_cflags $(get_safe "${pkg}_cflags")
> + add_extralibs $(get_safe "${pkg}_libs")
> +}
> +
We don't usually define such functions for a dep, it would be better
if you can implement the check using the normal "require" function, or
even better if libbsd provides a pkgconfig file, use that.
Or is there any particular reason why this would need a much more
complex handling than default pkg config could offer?
> require_libfreetype(){
> log require_libfreetype "$@"
> pkg="freetype2"
> @@ -1441,6 +1462,7 @@ EXTERNAL_LIBRARY_LIST="
> libaacplus
> libass
> libbluray
> + libbsd
> libbs2b
> libcaca
> libcdio
> @@ -5386,6 +5408,7 @@ enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883
> enabled libaacplus && require "libaacplus >= 2.0.0" aacplus.h aacplusEncOpen -laacplus
> enabled libass && require_pkg_config libass ass/ass.h ass_library_init
> enabled libbluray && require_pkg_config libbluray libbluray/bluray.h bd_open
> +enabled libbsd && require_libbsd
> enabled libbs2b && require_pkg_config libbs2b bs2b.h bs2b_open
> enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
> { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
> diff --git a/libavutil/random_seed.c b/libavutil/random_seed.c
> index 205a636..464b406 100644
> --- a/libavutil/random_seed.c
> +++ b/libavutil/random_seed.c
> @@ -20,6 +20,8 @@
>
> #include "config.h"
>
> +#define _DEFAULT_SOURCE
> +#define _BSD_SOURCE
> #if HAVE_UNISTD_H
> #include <unistd.h>
> #endif
> @@ -30,6 +32,9 @@
> #include <windows.h>
> #include <wincrypt.h>
> #endif
> +#if CONFIG_LIBBSD
> +#include <bsd/stdlib.h>
> +#endif
> #include <fcntl.h>
> #include <math.h>
> #include <time.h>
> @@ -121,7 +126,7 @@ uint32_t av_get_random_seed(void)
> }
> #endif
>
> -#if HAVE_ARC4RANDOM
> +#if HAVE_ARC4RANDOM || CONFIG_LIBBSD
> return arc4random();
> #endif
>
> --
> 2.6.3
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
More information about the ffmpeg-devel
mailing list