# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed # with this work for additional information regarding copyright # ownership. The ASF licenses this file to you under the Apache # License, Version 2.0 (the License); you may not use this file # except in compliance with the License. You may obtain a copy of # the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. See the License for the specific language governing # permissions and limitations under the License. # # Copyright 1999-2008 Rogue Wave Software, Inc. # # TODO: Write _RW_TR_CPP_PREPARE version of _AS_TR_CPP_PREPARE macro for # pattern substitution in shell script and replace _AS_TR_CPP_PREPARE # and as_tr_cpp in RW_TR_CPP macro below. # RW_TR_CPP(EXPRESSION) # --------------------- # Much like AC_TR_CPP except that certain intrinsic types are converted # into abbreviated form used in macro defines (e.g. `short' is converted # to `SHRT', `long double' becomes `LDBL'). # TODO: An m4 guru could probably simplify the pattern substitution. m4_defun([RW_TR_CPP], [AS_REQUIRE([_AS_TR_CPP_PREPARE])dnl AS_LITERAL_IF([$1], [m4_bpatsubst( m4_bpatsubst( m4_bpatsubst( m4_bpatsubst( m4_bpatsubst( m4_bpatsubst( m4_bpatsubst( m4_bpatsubst( m4_bpatsubst( m4_bpatsubst( m4_bpatsubst( m4_bpatsubst( m4_bpatsubst( m4_bpatsubst( m4_bpatsubst(m4_translit([[$1]], [*abcdefghijklmnopqrstuvwxyz], [PABCDEFGHIJKLMNOPQRSTUVWXYZ]), [UNSIGNED CHAR], [UCHAR]), [SIGNED CHAR], [SCHAR]), [UNSIGNED SHORT], [USHRT]), [SHORT], [SHRT]), [UNSIGNED INT], [UINT]), [UNSIGNED LONG LONG], [ULLONG]), [UNSIGNED LONG], [ULONG]), [LONG LONG], [LLONG]), [FLOAT], [FLT]), [LONG DOUBLE], [LDBL]), [DOUBLE], [DBL]), [VOID(P)()], [FUNPTR]), [VOIDP], [PTR]), [WCHAR_T], [WCHAR]), [[^A-Z0-9_]], [_])], [`echo "$1" | $as_tr_cpp`])]) ])# RW_TR_CPP # RW_CHECK_SIZEOF # --------------- # Just like AC_CHECK_SIZEOF except that this macro defines # _RWSTD_{TYPE}_SIZE instead of SIZEOF_{TYPE}. AC_DEFUN([RW_CHECK_SIZEOF], [AS_LITERAL_IF([$1], [], [AC_FATAL([$0: requires literal arguments])])dnl # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. _AC_CACHE_CHECK_INT([size of $1], [AS_TR_SH([ac_cv_sizeof_$1])], [(long int) (sizeof ($1))], [AC_INCLUDES_DEFAULT([$3])], [if test "$AS_TR_SH([ac_cv_type_$1])" = yes; then AC_MSG_FAILURE([cannot compute sizeof ($1)], 77) else AS_TR_SH([ac_cv_sizeof_$1])=0 fi]) AC_DEFINE_UNQUOTED(RW_TR_CPP(_rwstd_$1_size), $AS_TR_SH([ac_cv_sizeof_$1]), [The size of `$1', as computed by sizeof.]) ])# RW_CHECK_SIZEOF # RW_STDC_TYPES # ------------- # Performs all config checks related to intrinisic types in standard C. AC_DEFUN([RW_STDC_TYPES], [ AC_CHECK_TYPE([long long], [], [AC_DEFINE([_RWSTD_NO_LONG_LONG], [1], [Define if compiler does not support native `long long' type.])]) AC_CHECK_TYPE([long double], [], [AC_DEFINE([_RWSTD_NO_LONG_DOUBLE], [1], [Define if compiler does not support native `long double' type.])]) RW_CHECK_SIZEOF([char]) RW_CHECK_SIZEOF([short]) RW_CHECK_SIZEOF([int]) RW_CHECK_SIZEOF([long]) if test $ac_cv_type_long_long = yes; then RW_CHECK_SIZEOF([long long]) RW_CHECK_SIZEOF([unsigned long long]) fi RW_CHECK_SIZEOF([float]) RW_CHECK_SIZEOF([double]) RW_CHECK_SIZEOF([long double]) RW_CHECK_SIZEOF([void*]) RW_CHECK_SIZEOF([void(*)()]) dnl See C++ Language section for size check of member function type. ])# RW_STDC_TYPES