1
1
openmpi/config/opal_check_package.m4
2015-10-13 14:15:06 +09:00

216 строки
10 KiB
Bash

dnl -*- shell-script -*-
dnl
dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
dnl University Research and Technology
dnl Corporation. All rights reserved.
dnl Copyright (c) 2004-2005 The University of Tennessee and The University
dnl of Tennessee Research Foundation. All rights
dnl reserved.
dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
dnl University of Stuttgart. All rights reserved.
dnl Copyright (c) 2004-2005 The Regents of the University of California.
dnl All rights reserved.
dnl Copyright (c) 2012-2015 Cisco Systems, Inc. All rights reserved.
dnl Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
dnl Copyright (c) 2014 Intel, Inc. All rights reserved.
dnl Copyright (c) 2015 Research Organization for Information Science
dnl and Technology (RIST). All rights reserved.
dnl $COPYRIGHT$
dnl
dnl Additional copyrights may follow
dnl
dnl $HEADER$
dnl
dnl _OPAL_CHECK_PACKAGE_HEADER(prefix, header, dir-prefix,
dnl [action-if-found], [action-if-not-found],
dnl includes)
dnl --------------------------------------------------------------------
AC_DEFUN([_OPAL_CHECK_PACKAGE_HEADER], [
# This is stolen from autoconf to peek under the covers to get the
# cache variable for the library check. one should not copy this
# code into other places unless you want much pain and suffering
AS_VAR_PUSHDEF([opal_Header], [ac_cv_header_$2])
# so this sucks, but there's no way to get through the progression
# of header includes without killing off the cache variable and trying
# again...
unset opal_Header
opal_check_package_header_happy="no"
AS_IF([test "$3" = "/usr" || \
test "$3" = "/usr/local"],
[ # try as is...
AC_VERBOSE([looking for header without includes])
AC_CHECK_HEADERS([$2], [opal_check_package_header_happy="yes"], [])
AS_IF([test "$opal_check_package_header_happy" = "no"],
[# no go on the as is - reset the cache and try again
unset opal_Header])])
AS_IF([test "$opal_check_package_header_happy" = "no"],
[AS_IF([test "$3" != ""],
[$1_CPPFLAGS="$$1_CPPFLAGS -I$3/include"
CPPFLAGS="$CPPFLAGS -I$3/include"])
AC_CHECK_HEADERS([$2], [opal_check_package_header_happy="yes"], [], [$6])
AS_IF([test "$opal_check_package_header_happy" = "yes"], [$4], [$5])],
[$4])
unset opal_check_package_header_happy
AS_VAR_POPDEF([opal_Header])dnl
])
dnl _OPAL_CHECK_PACKAGE_LIB(prefix, library, function, extra-libraries,
dnl dir-prefix, libdir,
dnl [action-if-found], [action-if-not-found]])
dnl --------------------------------------------------------------------
AC_DEFUN([_OPAL_CHECK_PACKAGE_LIB], [
# This is stolen from autoconf to peek under the covers to get the
# cache variable for the library check. one should not copy this
# code into other places unless you want much pain and suffering
AS_VAR_PUSHDEF([opal_Lib], [ac_cv_search_$3])
# see comment above
unset opal_Lib
opal_check_package_lib_happy="no"
AS_IF([test "$6" != ""],
[ # libdir was specified - search only there
$1_LDFLAGS="$$1_LDFLAGS -L$6"
LDFLAGS="$LDFLAGS -L$6"
AC_SEARCH_LIBS([$3], [$2],
[opal_check_package_lib_happy="yes"],
[opal_check_package_lib_happy="no"], [$4])
AS_IF([test "$opal_check_package_lib_happy" = "no"],
[LDFLAGS="$opal_check_package_$1_save_LDFLAGS"
$1_LDFLAGS="$opal_check_package_$1_orig_LDFLAGS"
unset opal_Lib])],
[ # libdir was not specified - go through search path
opal_check_package_libdir="$5"
AS_IF([test "$opal_check_package_libdir" = "" || \
test "$opal_check_package_libdir" = "/usr" || \
test "$opal_check_package_libdir" = "/usr/local"],
[ # try as is...
AC_VERBOSE([looking for library without search path])
AC_SEARCH_LIBS([$3], [$2],
[opal_check_package_lib_happy="yes"],
[opal_check_package_lib_happy="no"], [$4])
AS_IF([test "$opal_check_package_lib_happy" = "no"],
[ # no go on the as is.. see what happens later...
LDFLAGS="$opal_check_package_$1_save_LDFLAGS"
$1_LDFLAGS="$opal_check_package_$1_orig_LDFLAGS"
unset opal_Lib])])
AS_IF([test "$opal_check_package_lib_happy" = "no"],
[AS_IF([test "$opal_check_package_libdir" != ""],
[$1_LDFLAGS="$$1_LDFLAGS -L$opal_check_package_libdir/lib"
LDFLAGS="$LDFLAGS -L$opal_check_package_libdir/lib"
AC_VERBOSE([looking for library in lib])
AC_SEARCH_LIBS([$3], [$2],
[opal_check_package_lib_happy="yes"],
[opal_check_package_lib_happy="no"], [$4])
AS_IF([test "$opal_check_package_lib_happy" = "no"],
[ # no go on the as is.. see what happens later...
LDFLAGS="$opal_check_package_$1_save_LDFLAGS"
$1_LDFLAGS="$opal_check_package_$1_orig_LDFLAGS"
unset opal_Lib])])])
AS_IF([test "$opal_check_package_lib_happy" = "no"],
[AS_IF([test "$opal_check_package_libdir" != ""],
[$1_LDFLAGS="$$1_LDFLAGS -L$opal_check_package_libdir/lib64"
LDFLAGS="$LDFLAGS -L$opal_check_package_libdir/lib64"
AC_VERBOSE([looking for library in lib64])
AC_SEARCH_LIBS([$3], [$2],
[opal_check_package_lib_happy="yes"],
[opal_check_package_lib_happy="no"], [$4])
AS_IF([test "$opal_check_package_lib_happy" = "no"],
[ # no go on the as is.. see what happens later...
LDFLAGS="$opal_check_package_$1_save_LDFLAGS"
$1_LDFLAGS="$opal_check_package_$1_orig_LDFLAGS"
unset opal_Lib])])])])
AS_IF([test "$opal_check_package_lib_happy" = "yes"],
[ # The result of AC SEARCH_LIBS is cached in $ac_cv_search_[function]
AS_IF([test "$ac_cv_search_$3" != "no" &&
test "$ac_cv_search_$3" != "none required"],
[$1_LIBS="$ac_cv_search_$3 $4"],
[$1_LIBS="$4"])
$7],
[$8])
AS_VAR_POPDEF([opal_Lib])dnl
])
dnl OPAL_CHECK_PACKAGE(prefix,
dnl header,
dnl library,
dnl function,
dnl extra-libraries,
dnl dir-prefix,
dnl libdir-prefix,
dnl [action-if-found], [action-if-not-found],
dnl includes)
dnl -----------------------------------------------------------
dnl Check for package defined by header and libs, and probably
dnl located in dir-prefix, possibly with libs in libdir-prefix.
dnl Both dir-prefix and libdir-prefix can be empty. Will set
dnl prefix_{CPPFLAGS, LDFLAGS, LIBS} as needed.
dnl
dnl The general intent of this macro is to provide finer-grained scoping
dnl of C preprocessor flags, linker flags, and libraries (as opposed to
dnl unconditionally adding to the top-level CPFLAGS, LDFLAGS, and LIBS,
dnl which get used to compile/link *everything*).
dnl
dnl Here is a breakdown of the parameters:
dnl
dnl * prefix: the macro sets $prefix_CPPFLAGS, $prefix_LDFLAGS, and
dnl $prefix_LIBS (and AC_SUBSTs all of them). For example, if a
dnl provider uses this macro to check for a header/library that it
dnl needs, it might well set prefix to be its provider name.
dnl * header_filename: the foo.h file to check for
dnl * library_name / function_name: check for function function_name in
dnl -llibrary_name. Specifically, for library_name, use the "foo" form,
dnl as opposed to "libfoo".
dnl * extra_libraries: if the library_name you are checking for requires
dnl additonal -l arguments to link successfully, list them here.
dnl * dir_prefix: if the header/library is located in a non-standard
dnl location (e.g., /opt/foo as opposed to /usr), list it here
dnl * libdir_prefix: if the library is not under $dir_prefix/lib or
dnl $dir_prefix/lib64, list it here.
dnl * action_if_found: if both the header and library are found and
dnl usable, execute action_if_found
dnl * action_if_not_found: otherwise, execute action_if_not_found
dnl * extra_includes: if including header_filename requires additional
dnl headers to be included first, list them here
dnl
dnl The output _CPPFLAGS, _LDFLAGS, and _LIBS can be used to limit the
dnl scope various flags in Makefiles.
dnl
AC_DEFUN([OPAL_CHECK_PACKAGE],[
opal_check_package_$1_save_CPPFLAGS="$CPPFLAGS"
opal_check_package_$1_save_LDFLAGS="$LDFLAGS"
opal_check_package_$1_save_LIBS="$LIBS"
opal_check_package_$1_orig_CPPFLAGS="$$1_CPPFLAGS"
opal_check_package_$1_orig_LDFLAGS="$$1_LDFLAGS"
opal_check_package_$1_orig_LIBS="$$1_LIBS"
_OPAL_CHECK_PACKAGE_HEADER([$1], [$2], [$6],
[_OPAL_CHECK_PACKAGE_LIB([$1], [$3], [$4], [$5], [$6], [$7],
[opal_check_package_happy="yes"],
[opal_check_package_happy="no"])],
[opal_check_package_happy="no"],
[$10])
AS_IF([test "$opal_check_package_happy" = "yes"],
[$8],
[$1_CPPFLAGS="$opal_check_package_$1_orig_CPPFLAGS"
$1_LDFLAGS="$opal_check_package_$1_orig_LDFLAGS"
$1_LIBS="$opal_check_package_$1_orig_LIBS"
$9])
CPPFLAGS="$opal_check_package_$1_save_CPPFLAGS"
LDFLAGS="$opal_check_package_$1_save_LDFLAGS"
LIBS="$opal_check_package_$1_save_LIBS"
])