# This file is part of UltraStar Deluxe # Created by the UltraStar Deluxe Team # OVERVIEW # # PKG_VALUE(VARIABLE_PREFIX, POSTFIX, COMMAND, MODULE, HELP-STRING) # PKG_VERSION(VARIABLE_PREFIX, MODULE) # PKG_HAVE(VARIABLE_PREFIX, MODULE, [REQUIRED]) # AX_TRIM(STRING) # SYNOPSIS # # PKG_VALUE(VARIABLE_PREFIX, POSTFIX, COMMAND, MODULE, HELP-STRING) # # DESCRIPTION # # Calls pkg-config with a given command and stores the result. # If the variable was already defined by the user or the package # is not present on the system ([$VARIABLE_PREFIX]_HAVE <> yes) # pkg-config will not be executed and the old value remains. # In addition the variable will be shown on "./configure --help" # described by a given help-string. # # Parameters: # - VARIABLE_PREFIX: the prefix for the variables storing # information about the package. # - POSTFIX: [$VARIABLE_PREFIX]_[$POSTFIX] will contain the value # - COMMAND: a pkg-config command, e.g. "variable=prefix" # - MODULE: the package pkg-config will retrieve info from # - HELP-STRING: description of the variable # # Sets: # [$VARIABLE_PREFIX]_[$POSTFIX] # value (AC_SUBST) AC_DEFUN([PKG_VALUE], [ AC_ARG_VAR([$1]_[$2], [$5, overriding pkg-config]) # check if variable was defined by the user if test -z "$[$1]_[$2]"; then # if not, get it from pkg-config if test x$[$1][_HAVE] = xyes; then PKG_CHECK_EXISTS([$4], [[$1]_[$2]=`$PKG_CONFIG --[$3] --silence-errors "$4"`], [# print error message and quit err_msg=`$PKG_CONFIG --errors-to-stdout --print-errors "$4"` AC_MSG_ERROR( [ $err_msg If --with-[$1]=nocheck is defined the environment variable [$1]_[$2] must be set to avoid the need to call pkg-config. See the pkg-config man page for more details. ]) ]) fi fi AC_SUBST([$1]_[$2]) ]) # SYNOPSIS # # PKG_VERSION(VARIABLE_PREFIX, MODULE) # # DESCRIPTION # # Retrieves the version of a package # # Parameters: # - VARIABLE_PREFIX: the prefix for the variables storing # information about the package. # - MODULE: package name according to pkg-config # # Sets: # [$VARIABLE_PREFIX]_VERSION # full version string # # (format: "major.minor.release") # # [$VARIABLE_PREFIX]_VERSION_MAJOR # major version number # [$VARIABLE_PREFIX]_VERSION_MINOR # minor version number # [$VARIABLE_PREFIX]_VERSION_RELEASE # release version number # # [$VARIABLE_PREFIX]_VERSION_INT # integer representation: # # MMMmmmrrr (M:major,m:minor,r:release) AC_DEFUN([PKG_VERSION], [ if test x$[$1][_HAVE] = xyes; then AC_MSG_CHECKING([version of $1]) PKG_VALUE([$1], [VERSION], [modversion], [$2], [version of $1]) AC_MSG_RESULT(@<:@$[$1][_VERSION]@:>@) else [$1][_VERSION]="0.0.0" fi AX_EXTRACT_VERSION([$1], $[$1][_VERSION]) # for avutil: map library version to ffmpeg version if test $1 = "libavutil"; then AC_MSG_CHECKING([version of ffmpeg]) if test $[$1][_VERSION_INT] -le 60000000; then if test $[$1][_VERSION_INT] -ge 54007001; then FFMPEG_VERSION="2.4" elif test $[$1][_VERSION_INT] -ge 52066100; then FFMPEG_VERSION="2.2" elif test $[$1][_VERSION_INT] -ge 52048100; then FFMPEG_VERSION="2.1" elif test $[$1][_VERSION_INT] -ge 52038100; then FFMPEG_VERSION="2.0" elif test $[$1][_VERSION_INT] -ge 52018100; then FFMPEG_VERSION="1.2" elif test $[$1][_VERSION_INT] -ge 52013100; then FFMPEG_VERSION="1.1" elif test $[$1][_VERSION_INT] -ge 51073101; then FFMPEG_VERSION="1.0" elif test $[$1][_VERSION_INT] -ge 51054100; then FFMPEG_VERSION="0.11" elif test $[$1][_VERSION_INT] -ge 51034101; then FFMPEG_VERSION="0.10" elif test $[$1][_VERSION_INT] -ge 51032000; then FFMPEG_VERSION="0.9" elif test $[$1][_VERSION_INT] -ge 51009001; then FFMPEG_VERSION="0.8" elif test $[$1][_VERSION_INT] -ge 50043000; then FFMPEG_VERSION="0.7" else FFMPEG_VERSION="0" fi else FFMPEG_VERSION="0" fi AX_EXTRACT_VERSION(FFMPEG, $FFMPEG_VERSION) AC_SUBST(FFMPEG_VERSION) AC_MSG_RESULT(@<:@$FFMPEG_VERSION@:>@) fi ]) # SYNOPSIS # # AX_TRIM(STRING) # # DESCRIPTION # # Removes surrounding whitespace AC_DEFUN([AX_TRIM], [ echo "[$1]" | $SED 's/^[[ \t]]*//' | $SED 's/[[ \t]]*$//' ]) # SYNOPSIS # # PKG_HAVE(VARIABLE_PREFIX, MODULE, [REQUIRED]) # # DESCRIPTION # # Checks with pkg-config if a package exists and retrieves # information about it. # # Parameters: # - VARIABLE_PREFIX: the prefix for the variables storing information about the package. # - MODULE: package name according to pkg-config # - REQUIRED: if true, the configure-script is aborted if the package was not found # # Uses: # with_[$VARIABLE_PREFIX]: whether and how the package should be checked for # "check": check for the package but do not abort if it does not exist (default) # "no": do not check for the package (sets _HAVE to "no" and _VERSION to "0.0.0") # "yes": check for the package and abort if it does not exist # "nocheck": do not check for the package (sets _HAVE to "yes") # # Sets: # [$VARIABLE_PREFIX]_HAVE # package is available (values: "yes"|"no") # [$VARIABLE_PREFIX]_LIBS # linker flags (e.g. -Lmylibdir -lmylib) # [$VARIABLE_PREFIX]_LIBDIRS # library dirs (e.g. -Lmylibdir) AC_DEFUN([PKG_HAVE], [ have_lib="no" AC_MSG_CHECKING([for $2]) if test x"$with_[$1]" = xnocheck; then # do not call pkg-config, use user settings have_lib="yes" elif test x"$with_[$1]" != xno; then # check if package exists PKG_CHECK_EXISTS([$2], [ have_lib="yes" [$1][_LIBS]=`$PKG_CONFIG --libs --silence-errors "$2"` [$1][_LIBDIRS]=`$PKG_CONFIG --libs-only-L --silence-errors "$2"` [$1][_LIBDIRS]=`AX_TRIM($[$1][_LIBDIRS])` # add library directories to LIBS (ignore *_LIBS for now) if test -n "$[$1][_LIBDIRS]"; then LIBS="$LIBS $[$1][_LIBDIRS]" fi ]) fi if test x$have_lib = xyes; then [$1][_HAVE]="yes" if test -n "$[$1][_LIBDIRS]"; then # show additional lib-dirs AC_MSG_RESULT(yes [(]$[$1][_LIBDIRS][)]) else AC_MSG_RESULT(yes) fi else [$1][_HAVE]="no" AC_MSG_RESULT(no) # check if package is required if test x$3 = xyes -o x"$with_[$1]" = xyes ; then # print error message and quit err_msg=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` AC_MSG_ERROR( [ $err_msg Alternatively, you may set --with-[$1]=nocheck and the environment variables [$1]_[[...]] (see configure --help) to appropriate values to avoid the need to call pkg-config. See the pkg-config man page for more details. ]) fi fi ])