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 <gajjanaga...@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") +} + 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@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel