1
1
openmpi/config/ompi_check_ident.m4
Ethan Mallove 005652c9d4 * Embed ident strings into the Open MPI libraries using one of the following
methods (in order of precedence):
  1. #pragma ident <ident string> (e.g., Intel and Sun)
  1. #ident <ident string> (e.g., GCC)
  1. static const char ident[] = <ident string> (all others)
By default, the ident string used is the standard Open MPI version string. Only
the following libraries will get the embedded version strings (e.g., DSOs will
not):
  * libmpi.so
  * libmpi_cxx.so
  * libmpi_f77.so
  * libopen-pal.so
  * libopen-rte.so
* Added two new configure options:
  * `--with-package-name="STRING"` (defaults to "Open MPI username@hostname
    Distribution"). `STRING` is displayed by `ompi_info` next to the "Package"
    heading.
  * `--with-ident-string="STRING"` (defaults to the standard Open MPI version
    string - e.g., X.Y.Zr######). `%VERSION%` will expand to the Open MPI
    version string if it is supplied to this configure option.

This commit was SVN r16644.
2007-11-03 02:40:22 +00:00

89 строки
3.1 KiB
Bash

dnl -*- shell-script -*-
dnl
dnl Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved.
dnl $COPYRIGHT$
dnl
dnl Additional copyrights may follow
dnl
dnl $HEADER$
dnl
dnl defines:
dnl OMPI_$1_USE_PRAGMA_IDENT
dnl OMPI_$1_USE_IDENT
dnl OMPI_$1_USE_CONST_CHAR_IDENT
dnl
# OMPI_CHECK_IDENT(compiler-env, compiler-flags,
# file-suffix, lang) Try to compile a source file containing
# a #pragma ident, and determine whether the ident was
# inserted into the resulting object file
# -----------------------------------------------------------
AC_DEFUN([OMPI_CHECK_IDENT], [
AC_MSG_CHECKING([for $4 ident string support])
ompi_pragma_ident_happy=0
ompi_ident_happy=0
ompi_static_const_char_happy=0
_OMPI_CHECK_IDENT(
[$1], [$2], [$3],
[[#]pragma ident],
[ompi_pragma_ident_happy=1
ompi_message="[#]pragma ident"],
_OMPI_CHECK_IDENT(
[$1], [$2], [$3],
[[#]ident],
[ompi_ident_happy=1
ompi_message="[#]ident"],
[ompi_static_const_char_happy=1
ompi_message="static const char[[]]"]))
AC_DEFINE_UNQUOTED([OMPI_$1_USE_PRAGMA_IDENT],
[$ompi_pragma_ident_happy], [Use #pragma ident strings for $4 files])
AC_DEFINE_UNQUOTED([OMPI_$1_USE_IDENT],
[$ompi_ident_happy], [Use #ident strings for $4 files])
AC_DEFINE_UNQUOTED([OMPI_$1_USE_CONST_CHAR_IDENT],
[$ompi_static_const_char_happy], [Use static const char[] strings for $4 files])
AC_MSG_RESULT([$ompi_message])
unset ompi_pragma_ident_happy ompi_ident_happy ompi_static_const_char_happy ompi_message
])
# _OMPI_CHECK_IDENT(compiler-env, compiler-flags,
# file-suffix, header, action-if-success, action-if-fail)
# Try to compile a source file containing a #-style ident,
# and determine whether the ident was inserted into the
# resulting object file
# -----------------------------------------------------------
AC_DEFUN([_OMPI_CHECK_IDENT], [
eval ompi_compiler="\$$1"
eval ompi_flags="\$$2"
ompi_ident="string_not_coincidentally_inserted_by_the_compiler"
cat > conftest.$3 <<EOF
$4 "$ompi_ident"
int main(int argc, char** argv);
int main(int argc, char** argv) { return 0; }
EOF
# "strings" won't always return the ident string. objdump isn't
# universal (e.g., OS X doesn't have it), and ...other
# complications. So just try to "grep" for the string in the
# resulting object file. If the ident is found in "strings" or
# the grep succeeds, rule that we have this flavor of ident.
OMPI_LOG_COMMAND([$ompi_compiler $ompi_flags -c conftest.$3 -o conftest],
[ompi_output="`strings -a conftest | grep $ompi_ident`"
grep $ompi_ident conftest 2>&1 1>/dev/null
ompi_status=$?
AS_IF([test "$ompi_output" != "" -o "$ompi_status" = "0"],
[$5],
[$6])],
[OMPI_LOG_MSG([the failed program was:])
OMPI_LOG_FILE([conftest.$3])
$6])
unset ompi_compiler ompi_flags ompi_output ompi_status
/bin/rm -f conftest.* conftest
])dnl