1
1
openmpi/config/opal_check_ident.m4

102 lines
3.9 KiB
Plaintext
Raw Normal View History

dnl -*- shell-script -*-
dnl
dnl Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved.
dnl Copyright (c) 2014 Cisco Systems, 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 defines:
dnl OPAL_$1_USE_PRAGMA_IDENT
dnl OPAL_$1_USE_IDENT
dnl OPAL_$1_USE_CONST_CHAR_IDENT
dnl
# OPAL_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([OPAL_CHECK_IDENT], [
AC_MSG_CHECKING([for $4 ident string support])
opal_pragma_ident_happy=0
opal_ident_happy=0
opal_static_const_char_happy=0
_OPAL_CHECK_IDENT(
[$1], [$2], [$3],
[[#]pragma ident], [],
[opal_pragma_ident_happy=1
opal_message="[#]pragma ident"],
_OPAL_CHECK_IDENT(
[$1], [$2], [$3],
[[#]ident], [],
[opal_ident_happy=1
opal_message="[#]ident"],
_OPAL_CHECK_IDENT(
[$1], [$2], [$3],
[[#]pragma comment(exestr, ], [)],
[opal_pragma_comment_happy=1
opal_message="[#]pragma comment"],
[opal_static_const_char_happy=1
opal_message="static const char[[]]"])))
AC_DEFINE_UNQUOTED([OPAL_$1_USE_PRAGMA_IDENT],
[$opal_pragma_ident_happy], [Use #pragma ident strings for $4 files])
AC_DEFINE_UNQUOTED([OPAL_$1_USE_IDENT],
[$opal_ident_happy], [Use #ident strings for $4 files])
AC_DEFINE_UNQUOTED([OPAL_$1_USE_PRAGMA_COMMENT],
[$opal_pragma_comment_happy], [Use #pragma comment for $4 files])
AC_DEFINE_UNQUOTED([OPAL_$1_USE_CONST_CHAR_IDENT],
[$opal_static_const_char_happy], [Use static const char[] strings for $4 files])
AC_MSG_RESULT([$opal_message])
unset opal_pragma_ident_happy opal_ident_happy opal_static_const_char_happy opal_message
])
# _OPAL_CHECK_IDENT(compiler-env, compiler-flags,
# file-suffix, header_prefix, header_suffix, 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([_OPAL_CHECK_IDENT], [
eval opal_compiler="\$$1"
eval opal_flags="\$$2"
opal_ident="string_not_coincidentally_inserted_by_the_compiler"
cat > conftest.$3 <<EOF
#define IDENT_MSG "$opal_ident"
$4 IDENT_MSG $5
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.
OPAL_LOG_COMMAND([$opal_compiler $opal_flags -c conftest.$3 -o conftest.${OBJEXT}],
[AS_IF([test -f conftest.${OBJEXT}],
[opal_output="`strings -a conftest.${OBJEXT} | grep $opal_ident`"
grep $opal_ident conftest.${OBJEXT} 2>&1 1>/dev/null
opal_status=$?
AS_IF([test "$opal_output" != "" || test "$opal_status" = "0"],
[$6],
[$7])],
[OPAL_LOG_MSG([the failed program was:])
OPAL_LOG_FILE([conftest.$3])
$7]
[$7])])
unset opal_compiler opal_flags opal_output opal_status
rm -rf conftest.* conftest${EXEEXT}
])dnl