135 lines
4.1 KiB
Plaintext
Raw Permalink Normal View History

2022-04-07 18:46:57 +02:00
AC_DEFUN([AM_PATH_PKGCONFIG],
[
dnl sets cflags and ldflags
dnl TEST_CXXFLAGS and TEST_LDFLAGS, by trying thes following
dnl until something works:
dnl
dnl 1 - try the test_prefix
dnl 2 - check whether pkgconfig can find values (unless --with-pkg-config=no)
dnl 3 - use the prefix, if it is not the default
dnl 4 - use defaults, /usr/local/include/OpenEXR and /usr/local/lib
dnl
dnl
dnl Expected arguments
dnl $1: arg_cxxflags - CXXFLAGS variable to set
dnl
dnl $2: arg-ldflags - LDFLAGS variable to set
dnl
dnl $3: package name (the package being checked), as requried by pkg-config
dnl
dnl $4: arg_include_subdir
dnl the name of the subdirectory name that is tacked on to
dnl the end of the include path e.g. "OpenEXR" in
dnl /usr/local/include/OpenEXR
dnl
dnl $5: arg_default_libs - default libraries, used if pkgconfig doesnt work
dnl
dnl $6: arg_test_prefix
dnl the argument passed to configure specifying a directory to
dnl be used in the CXX and LD flags for example:
dnl $2 = "openexr-prefix" and
dnl "configure --openexr-prefix=/usr/lib"
dnl leads to CXX including "-I/usr/lib/OpenEXR"
dnl
dnl create some local m4 "variables" so that we don't have to use numbers
define([arg_cxxflags],$1)
define([arg_ldflags],$2)
define([arg_libs],$3)
define([arg_pkg_name],$4)
define([arg_include_subdir],$5)
define([arg_default_ldflags],$6)
define([arg_default_libs],$7)
define([arg_test_prefix],$8)
TEST_CXXFLAGS=""
TEST_LDFLAGS=""
TEST_LIBS=""
AC_ARG_WITH(arg_test_prefix,[ --with-arg_test_prefix=PFX Prefix where tested libraries are supposed to be installed (optional)], test_prefix="$withval", test_prefix="NONE")
echo "test_prefix = $test_prefix"
AC_ARG_VAR(PKG_CONFIG, Path to pkg-config command)
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
AC_ARG_WITH(pkg-config,[ --with-pkg-config=PATH Specify which pkg-config to use (optional)], PKG_CONFIG="$withval",)
if test "x$test_prefix" != "xNONE" ; then
echo "using arg_test_prefix to set arg_cxxflags, arg_ldflags and arg_libs:"
for inc_dir in arg_include_subdir
do
TEST_CXXFLAGS="$TEST_CXXFLAGS -I$test_prefix/include/$inc_dir"
done
TEST_LDFLAGS="-L$test_prefix/lib"
TEST_LDFLAGS="$TEST_LDFLAGS arg_default_ldflags"
TEST_LIBS="arg_default_libs"
else
dnl
dnl Get the cflags and libraries from the arg_pkg_name package using
dnl pkg-config
dnl
dnl Note: the TEST_LIBS contains both the -L and the -l flags. This means
dnl the -L flags will appear twice on the command line, but we can not
dnl limit it to --libs-only-l because it may include the "-pthread" flag.
dnl
if test x$PKG_CONFIG != xno ; then
echo "using pkg-config to set arg_cxxflags and arg_ldflags:"
TEST_CXXFLAGS="`$PKG_CONFIG --cflags arg_pkg_name`"
TEST_LDFLAGS="`$PKG_CONFIG --libs-only-L arg_pkg_name`"
TEST_LIBS="`$PKG_CONFIG --libs arg_pkg_name`"
else
echo "Not using pkg-config."
TEST_CXXFLAGS=""
TEST_LDFLAGS=""
TEST_LIBS=""
fi
dnl
dnl if the flags are still not set, try a prefix and finally a default
dnl
if test -z "${TEST_CXXFLAGS}"; then
TEST_CXXFLAGS=""
if test "x$prefix" != "xNONE"; then
echo "using prefix to set arg_cxxflags and arg_ldflags:"
for inc_dir in arg_include_subdir
do
TEST_CXXFLAGS="$TEST_CXXFLAGS -I$prefix/include/$inc_dir"
done
TEST_LDFLAGS="-L$prefix/lib"
else
echo "using default as guess for arg_cxxflags and arg_ldflags:"
for inc_dir in arg_include_subdir
do
TEST_CXXFLAGS="$TEST_CXXFLAGS -I/usr/local/include/$inc_dir"
done
TEST_LDFLAGS="arg_default_ldflags"
fi
TEST_LIBS="arg_default_libs"
fi
fi
echo " arg_cxxflags = $TEST_CXXFLAGS"
echo " arg_ldflags = $TEST_LDFLAGS"
echo " arg_libs = $TEST_LIBS"
AC_SUBST(arg_cxxflags, $TEST_CXXFLAGS)
AC_SUBST(arg_ldflags, $TEST_LDFLAGS)
AC_SUBST(arg_libs, $TEST_LIBS)
dnl clean up local "variables"
undefine([arg_cxxflags])
undefine([arg_ldflags])
undefine([arg_libs])
undefine([arg_pkg_name])
undefine([arg_include_subdir])
undefine([arg_default_ldflags])
undefine([arg_default_libs])
undefine([arg_test_prefix])
])