dnl Process this file with autoconf to produce a configure script. dnl { AC_INIT() AC_CONFIG_AUX_DIR(tool) AC_PREREQ(2.60) AC_DEFUN([RUBY_PREREQ_AC], [m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [$1]), [-1], AC_MSG_ERROR([Autoconf version ]$1[ or higher is required]$2))]) dnl environment section { AC_ARG_WITH(baseruby, AS_HELP_STRING([--with-baseruby=RUBY], [use RUBY as baseruby; RUBY is the pathname of ruby]), [ AS_CASE(["$withval"],[*ruby*],[BASERUBY=$withval],[AC_MSG_ERROR(need ruby)]) ], [ BASERUBY="ruby" ]) test "`RUBYOPT=- $BASERUBY -e 'p 42' 2>/dev/null`" = 42 || BASERUBY="echo executable host ruby is required. use --with-baseruby option.; false" AC_SUBST(BASERUBY) AC_DEFUN([RUBY_MINGW32], [AS_CASE(["$host_os"], [cygwin*], [ AC_CACHE_CHECK(for mingw32 environment, rb_cv_mingw32, [AC_TRY_CPP([ #ifndef __MINGW32__ # error #endif ], rb_cv_mingw32=yes,rb_cv_mingw32=no) rm -f conftest*]) test "$rb_cv_mingw32" = yes && target_os="mingw32" ]) AS_CASE(["$target_os"], [mingw*msvc], [ target_os="`echo ${target_os} | sed 's/msvc$//'`" ])]) AC_DEFUN([RUBY_CPPOUTFILE], [AC_CACHE_CHECK(whether ${CPP} accepts -o, rb_cv_cppoutfile, [cppflags=$CPPFLAGS CPPFLAGS='-o conftest.i' AC_TRY_CPP([], rb_cv_cppoutfile=yes, rb_cv_cppoutfile=no) CPPFLAGS=$cppflags rm -f conftest*]) if test "$rb_cv_cppoutfile" = yes; then CPPOUTFILE='-o conftest.i' elif test "$rb_cv_cppoutfile" = no; then CPPOUTFILE='> conftest.i' elif test -n "$rb_cv_cppoutfile"; then CPPOUTFILE="$rb_cv_cppoutfile" fi AC_SUBST(CPPOUTFILE)]) AC_DEFUN([RUBY_PROG_GNU_LD], [AC_CACHE_CHECK(whether the linker is GNU ld, rb_cv_prog_gnu_ld, [if `$CC $CFLAGS $CPPFLAGS $LDFLAGS --print-prog-name=ld 2>&1` -v 2>&1 | grep "GNU ld" > /dev/null; then rb_cv_prog_gnu_ld=yes else rb_cv_prog_gnu_ld=no fi ]) GNU_LD=$rb_cv_prog_gnu_ld AC_SUBST(GNU_LD)]) eval `sed -n 's/^#define RUBY_API_VERSION_\([A-Z][A-Z_0-9]*\) \([0-9][0-9]*\)/\1=\2/p' $srcdir/include/ruby/version.h` for v in MAJOR MINOR TEENY; do if eval "test \"\$$v\" = ''"; then AC_MSG_ERROR(could not determine $v number from version.h) fi done AC_SUBST(MAJOR) AC_SUBST(MINOR) AC_SUBST(TEENY) RUBY_PROGRAM_VERSION=`sed -n 's/^#define RUBY_VERSION "\(.*\)"/\1/p' $srcdir/version.h` AC_SUBST(RUBY_PROGRAM_VERSION) RUBY_RELEASE_DATE=`sed -n 's/^#define RUBY_RELEASE_DATE "\(.*\)"/\1/p' $srcdir/version.h` AC_SUBST(RUBY_RELEASE_DATE) if test "$MAJOR" = "1"; then AC_DEFINE(CANONICALIZATION_FOR_MATHN) fi dnl checks for alternative programs AC_ARG_WITH(gcc, AS_HELP_STRING([--without-gcc], [never use gcc]), [ AS_CASE([$withval], [no], [: ${CC=cc}], [yes], [: ${CC=gcc}], [CC=$withval])]) dnl If the user switches compilers, we can't believe the cache if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC" then AC_MSG_ERROR(cached CC is different -- throw away $cache_file (it is also a good idea to do 'make clean' before compiling)) fi test -z "$CC" || ac_cv_prog_CC="$CC" if test "$program_prefix" = NONE; then program_prefix= fi RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"` RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"` AC_SUBST(RUBY_BASE_NAME) AC_SUBST(RUBYW_BASE_NAME) AC_CANONICAL_TARGET target_os=`echo $target_os | sed 's/linux-gnu$/linux/;s/linux-gnu/linux-/'` ac_install_sh='' # unusable for extension libraries. AC_DEFUN([RUBY_APPEND_OPTION], [# RUBY_APPEND_OPTION($1, $2) AS_CASE([" [$]{$1-} "], [*' $2 '*], [], [' '], [ $1="$2"], [ $1="[$]$1 $2"])]) AC_DEFUN([RUBY_APPEND_OPTIONS], [{ for rb_opt in $2; do # RUBY_APPEND_OPTIONS($1, $2) AS_CASE([" [$]{$1-} "], [*" [$]{rb_opt} "*], [], [' '], [ $1="[$]{rb_opt}"], [ $1="[$]$1 [$]{rb_opt}"]) done; }]) AC_DEFUN([RUBY_PREPEND_OPTION], [# RUBY_PREPEND_OPTION($1, $2) AS_CASE([" [$]{$1-} "], [*' $2 '*], [], [' '], [ $1="$2"], [ $1="$2 [$]$1"])]) AC_DEFUN([RUBY_PREPEND_OPTIONS], [{ unset rb_opts; for rb_opt in $2; do # RUBY_PREPEND_OPTIONS($1, $2) AS_CASE([" [$]{rb_opts} [$]{$1-} "], [*" [$]{rb_opt} "*], [], [' '], [ $1="[$]{rb_opt}"], [ rb_opts="[$]{rb_opts}[$]{rb_opt} "]) done $1="[$]{rb_opts}[$]$1"; }]) AC_ARG_WITH(arch, AS_HELP_STRING([--with-arch=ARCHS], [build an Apple/NeXT Multi Architecture Binary (MAB); ARCHS is a comma-delimited list of architectures for which to build; if this option is disabled or omitted entirely, then the package will be built only for the target platform]), [target_archs="$withval"], [unset target_archs]) AC_DEFUN([RUBY_DEFAULT_ARCH], [ AC_MSG_CHECKING([arch option]) AS_CASE([$1], [*64], [ARCH_FLAG=-m64], [[i[3-6]86]], [ARCH_FLAG=-m32], [AC_MSG_ERROR(unknown target architecture: $target_archs)] ) AC_MSG_RESULT([$ARCH_FLAG]) ]) AC_DEFUN([RUBY_UNIVERSAL_ARCH], [ # RUBY_UNIVERSAL_ARCH begin test ${CFLAGS+set} && CFLAGS=`echo "$CFLAGS" | sed -e 's/ *-arch *[^ ]*//g' -e 's/ *-m32//g' -e 's/ *-m64//g'` test ${LDFLAGS+set} && LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-arch *[^ ]*//g' -e 's/ *-m32//g' -e 's/ *-m64//g'` unset ARCH_FLAG universal_binary universal_archnames if test ${target_archs+set}; then AC_MSG_CHECKING([target architectures]) target_archs=`echo $target_archs | tr , ' '` # /usr/lib/arch_tool -archify_list $TARGET_ARCHS for archs in $target_archs do AS_CASE([",$universal_binary,"],[*",$archs,"*], [],[ cpu=`$SHELL "$ac_aux_dir/config.sub" "${archs}-${target_os}" 2>&1` || { AC_MSG_RESULT([failed]) AC_MSG_ERROR([$cpu]) } cpu=`echo $cpu | sed 's/-.*-.*//'` universal_binary="${universal_binary+$universal_binary,}$cpu" universal_archnames="${universal_archnames} ${archs}=${cpu}" ARCH_FLAG="${ARCH_FLAG+$ARCH_FLAG }-arch $archs" ]) done target_archs="$universal_binary" unset universal_binary AS_CASE(["$target_archs"], [*,*], [universal_binary=yes], [unset universal_archnames]) AC_MSG_RESULT([$target_archs]) target=`echo $target | sed "s/^$target_cpu-/-/"` target_alias=`echo $target_alias | sed "s/^$target_cpu-/-/"` if test "${universal_binary-no}" = yes; then RUBY_PREREQ_AC(2.63, [ to compile universal binary]) AC_SUBST(try_header,try_compile) target_cpu=universal real_cross_compiling=$cross_compiling else if test x"$target_cpu" != x"${target_archs}"; then echo 'int main(){return 0;}' > conftest.c if $CC $CFLAGS $ARCH_FLAG conftest.c > /dev/null 2>&1; then rm -f conftest.* a.out else RUBY_DEFAULT_ARCH("$target_archs") fi fi target_cpu=${target_archs} fi AS_CASE(["$target"], [-*], [ target="$target_cpu${target}"]) AS_CASE(["$target_alias"], [-*], [ target_alias="$target_cpu${target_alias}"]) CFLAGS="$CFLAGS ${ARCH_FLAG}" LDFLAGS="${LDFLAGS+$LDFLAGS }${ARCH_FLAG}" else if test x"$target_alias" = x; then AS_CASE(["$target_os"], [darwin*], [ AC_MSG_CHECKING([for real target cpu]) target=`echo $target | sed "s/^$target_cpu-/-/"` target_cpu=`$CC -E - 2>/dev/null <], [FILE* volatile f = stdin; return 0;], [rb_cv_msvcrt=`$OBJDUMP -p conftest$ac_exeext | tr A-Z a-z | sed -n '/^[[ ]]*dll name: \(msvc.*\)\.dll$/{s//\1/p;q;}'`], [rb_cv_msvcrt=msvcrt]) test "$rb_cv_msvcrt" = "" && rb_cv_msvcrt=msvcrt]) ]) : ${enable_shared=yes} ], [aix*], [AC_CHECK_TOOL(NM, nm, /usr/ccs/bin/nm, /usr/ccs/bin:$PATH)], [hiuxmpp*], [AC_DEFINE(__HIUX_MPP__)]) # by TOYODA Eizi AC_PROG_LN_S AC_PROG_MAKE_SET AC_PROG_INSTALL AC_PROG_MKDIR_P if test "x$MKDIR_P" = "x -d"; then if test x"$as_mkdir_p" != xfalse; then MKDIR_P='mkdir -p' echo "use 'mkdir -p' as MKDIR_P" else AC_MSG_ERROR([mkdir -p is required]) fi fi MAKEDIRS="$MKDIR_P" AC_SUBST(MAKEDIRS) AC_CHECK_TOOL(DOT, dot) AC_CHECK_TOOL(DOXYGEN, doxygen) if test x"$DOXYGEN" = x; then CAPITARGET=nodoc else CAPITARGET=capi fi AC_SUBST(CAPITARGET) # checks for UNIX variants that set C preprocessor variables AC_USE_SYSTEM_EXTENSIONS AC_SUBST(RM, ['rm -f']) AC_SUBST(CP, ['cp']) RMDIRS='$(top_srcdir)/tool/rmdirs' RMDIR=rmdir mkdir "rmdirs_$$_test" "rmdirs_$$_test/a" rmdir --ignore-fail-on-non-empty "rmdirs_$$_test" 2>/dev/null && RMDIR='rmdir --ignore-fail-on-non-empty' $RMDIR -p "rmdirs_$$_test/a" 2>/dev/null && { test -d "rmdirs_$$_test" || RMDIRS="$RMDIR -p"; } rmdir "rmdirs_$$_test/a" "rmdirs_$$_test" 2>/dev/null AC_SUBST(RMDIR) AC_SUBST(RMDIRS) AC_SUBST(RMALL, ['rm -fr']) AC_MSG_CHECKING([for cd using phisical directory]) rm -fr conf$$.dir mkdir conf$$.dir && (cd conf$$.dir && mkdir src build && cd src && $as_ln_s ../build . > /dev/null 2>&1 && cd build && for chdir in 'cd -P' 'PWD= cd'; do /bin/sh -c "$chdir ../src && echo '$chdir' > cdcmd" 2> /dev/null && break done) if test -e conf$$.dir/src/cdcmd; then read CHDIR < conf$$.dir/src/cdcmd 2> /dev/null else CHDIR=cd fi rm -fr conf$$.dir AC_MSG_RESULT([$CHDIR]) AC_SUBST(CHDIR) dnl } dnl compiler section { AC_DEFUN([RUBY_WERROR_FLAG], [dnl if test "${ac_c_werror_flag+set}"; then rb_c_werror_flag="$ac_c_werror_flag" else unset rb_c_werror_flag fi ac_c_werror_flag=yes $1 if test "${rb_c_werror_flag+set}"; then ac_c_werror_flag="$rb_c_werror_flag" else unset ac_c_werror_flag fi]) AC_DEFUN(RUBY_TRY_CFLAGS, [ save_CFLAGS="$CFLAGS" CFLAGS="[$]CFLAGS $1" AC_MSG_CHECKING([whether ]$1[ is accepted]) RUBY_WERROR_FLAG([ AC_TRY_COMPILE([$4], [$5], [$2 AC_MSG_RESULT(yes)], [$3 AC_MSG_RESULT(no)]) ]) CFLAGS="$save_CFLAGS" save_CFLAGS= ]) if test "$GCC:${warnflags+set}:no" = yes::no; then for wflag in -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings \ -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long; do RUBY_TRY_CFLAGS($wflag, [warnflags="${warnflags+$warnflags }$wflag"]) done AS_CASE([" $warnflags "],[*" -Wno-missing-field-initializers "*], [wflag=-Wextra], [wflag=-Wall]) RUBY_TRY_CFLAGS($wflag, [warnflags="$wflag${warnflags+ $warnflags}"]) fi if test "$GCC" = yes; then RUBY_TRY_CFLAGS(-fvisibility=hidden, [RUBY_APPEND_OPTION(XCFLAGS, -fvisibility=hidden)]) fi test -z "${ac_env_CFLAGS_set}" -a -n "${cflags+set}" && eval CFLAGS="\"$cflags $ARCH_FLAG\"" test -z "${ac_env_CXXFLAGS_set}" -a -n "${cxxflags+set}" && eval CXXFLAGS="\"$cxxflags $ARCH_FLAG\"" dnl check for large file stuff mv confdefs.h confdefs1.h : > confdefs.h AC_SYS_LARGEFILE mv confdefs.h largefile.h mv confdefs1.h confdefs.h cat largefile.h >> confdefs.h AS_CASE(["$target_os"],[mingw*], [ac_cv_type_off_t=yes;ac_cv_sizeof_off_t=8]) AC_CHECK_TYPES([long long, off_t]) AC_CACHE_CHECK([char bit], [rb_cv_char_bit], [test "$universal_binary" = yes && cross_compiling=yes AC_COMPUTE_INT([rb_cv_char_bit], [CHAR_BIT], [AC_INCLUDES_DEFAULT([@%:@include ])], [rb_cv_char_bit=8]) test "$universal_binary" = yes && cross_compiling=$real_cross_compiling]) dnl RUBY_CHECK_SIZEOF [typename], [maybe same size types], [macros], [include] AC_DEFUN([RUBY_CHECK_SIZEOF], [m4_bmatch([$1], [\.], [], [if test "$universal_binary" = yes; then]) AC_CACHE_CHECK([size of $1], [AS_TR_SH([ac_cv_sizeof_$1])], [ unset AS_TR_SH(ac_cv_sizeof_$1) rbcv_var=" typedef m4_bpatsubst([$1], [\..*]) ac__type_sizeof_; static ac__type_sizeof_ *rbcv_ptr; @%:@define AS_TR_CPP(SIZEOF_$1) sizeof((*rbcv_ptr)[]m4_bmatch([$1], [\.], .m4_bpatsubst([$1], [^[^.]*\.]))) " m4_ifval([$2], [test -z "${AS_TR_SH(ac_cv_sizeof_$1)+set}" && { for t in $2; do AC_COMPILE_IFELSE( [AC_LANG_BOOL_COMPILE_TRY(AC_INCLUDES_DEFAULT([$4] [$rbcv_var]), [AS_TR_CPP(SIZEOF_$1) == sizeof($t)])], [ AS_TR_SH(ac_cv_sizeof_$1)=AS_TR_CPP([SIZEOF_]$t) break]) done }]) unset cond m4_ifval([$3], [test -z "${AS_TR_SH(ac_cv_sizeof_$1)+set}" && { for s in 32 64 128; do for t in $3; do cond="${cond} @%:@${cond+el}if defined(__${t}${s}__) || defined(__${t}${s}) || defined(_${t}${s}) || defined(${t}${s})" hdr="AC_INCLUDES_DEFAULT([$4 @%:@if defined(__${t}${s}__) || defined(__${t}${s}) || defined(_${t}${s}) || defined(${t}${s}) @%:@ define AS_TR_CPP(HAVE_$1) 1 @%:@else @%:@ define AS_TR_CPP(HAVE_$1) 0 @%:@endif])" AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([$hdr], [!AS_TR_CPP(HAVE_$1)])], [continue]) AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([$hdr] [$rbcv_var], [AS_TR_CPP(HAVE_$1) == (AS_TR_CPP(SIZEOF_$1) == ([$[s / rb_cv_char_bit]]))])], [AS_TR_SH(ac_cv_sizeof_$1)="${AS_TR_SH(ac_cv_sizeof_$1)+${AS_TR_SH(ac_cv_sizeof_$1)-} }${t}${s}"]) done done }]) m4_ifval([$2][$3], [case "${AS_TR_SH(ac_cv_sizeof_$1)}" in #( [SIZEOF_*]);; #( *)]) test "$universal_binary" = yes && cross_compiling=yes AC_COMPUTE_INT([t], AS_TR_CPP(SIZEOF_$1), [AC_INCLUDES_DEFAULT([$4])] [${cond+$cond @%:@else} $rbcv_var ${cond+@%:@endif} @%:@ifndef AS_TR_CPP(SIZEOF_$1) @%:@define AS_TR_CPP(SIZEOF_$1) 0 @%:@endif], [t=0]) test "$universal_binary" = yes && cross_compiling=$real_cross_compiling if test ${t-0} != 0; then AS_TR_SH(ac_cv_sizeof_$1)="${AS_TR_SH(ac_cv_sizeof_$1)+${AS_TR_SH(ac_cv_sizeof_$1)-} }${t}" fi m4_ifval([$2][$3], [;; esac]) : ${AS_TR_SH(ac_cv_sizeof_$1)=0} ]) { unset cond for t in ${AS_TR_SH(ac_cv_sizeof_$1)-}; do AS_CASE(["$t"], [[[0-9]*|SIZEOF_*]], [ ${cond+echo "@%:@else"} echo "[@%:@define ]AS_TR_CPP(SIZEOF_$1) [$t]" break ], [ s=`expr $t : ['.*[^0-9]\([0-9][0-9]*\)$']` echo "@%:@${cond+el}if defined(__${t}__) || defined(__${t}) || defined(_${t}) || defined($t)" echo "@%:@define AS_TR_CPP(SIZEOF_$1) [$[s / rb_cv_char_bit]]" cond=1 ]) done ${cond+echo "@%:@endif"} } >> confdefs.h m4_bmatch([$1], [\.], [], [else AC_CHECK_SIZEOF([$1], 0, [$4]) fi]) ]) RUBY_CHECK_SIZEOF(int, [], [ILP]) RUBY_CHECK_SIZEOF(short) RUBY_CHECK_SIZEOF(long, [int], [ILP LP]) RUBY_CHECK_SIZEOF(long long) RUBY_CHECK_SIZEOF(__int64) RUBY_CHECK_SIZEOF(off_t) RUBY_CHECK_SIZEOF(void*, [int long "long long"], [ILP LP LLP]) RUBY_CHECK_SIZEOF(float) RUBY_CHECK_SIZEOF(double) RUBY_CHECK_SIZEOF(time_t, [long "long long"], [], [@%:@include ]) dnl RUBY_REPLACE_TYPE [typename] [default type] [macro type] [included] AC_DEFUN([RUBY_REPLACE_TYPE], [dnl AC_CHECK_TYPE([$1], [n=[$1]], [n=[$2]], [$4]) AC_CACHE_CHECK([for convertible type of [$1]], rb_cv_[$1]_convertible, [ u= t= AS_CASE(["$n "], [*" signed "*], [ ], [*" unsigned "*], [ u=U], [ AC_COMPILE_IFELSE( [AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT([$4])], [($n)-1 > 0])], [u=U])]) if test x"$t" = x; then for t in "long long" long int short; do test -n "$u" && t="unsigned $t" AC_COMPILE_IFELSE( [AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT([$4])] [typedef $n rbcv_conftest_target_type; typedef $t rbcv_conftest_replace_type; extern rbcv_conftest_target_type rbcv_conftest_var; extern rbcv_conftest_replace_type rbcv_conftest_var; extern rbcv_conftest_target_type rbcv_conftest_func(void); extern rbcv_conftest_replace_type rbcv_conftest_func(void); ], [sizeof(rbcv_conftest_target_type) == sizeof(rbcv_conftest_replace_type)])], [n="$t"; break]) done fi AS_CASE([" $n "], [*" long long "*], [ t=LL], [*" long "*], [ t=LONG], [ t=INT]) rb_cv_[$1]_convertible=${u}${t}]) test "${AS_TR_SH(ac_cv_type_[$1])}" = "yes" && n="$1" AC_DEFINE_UNQUOTED(rb_[$1], $n) AC_DEFINE_UNQUOTED([$3]2NUM[(v)], [${rb_cv_[$1]_convertible}2NUM(v)]) AC_DEFINE_UNQUOTED(NUM2[$3][(v)], [NUM2${rb_cv_[$1]_convertible}(v)]) AC_DEFINE_UNQUOTED(PRI_[$3]_PREFIX, ["`echo ${rb_cv_[$1]_convertible} | sed ['s/^U//;s/[^L].*//;y/L/l/']`"]) ]) RUBY_REPLACE_TYPE(pid_t, int, PIDT) RUBY_REPLACE_TYPE(uid_t, int, UIDT) RUBY_REPLACE_TYPE(gid_t, int, GIDT) RUBY_REPLACE_TYPE(time_t, [], TIMET, [@%:@include ]) AC_CACHE_CHECK(for prototypes, rb_cv_have_prototypes, [AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);], rb_cv_have_prototypes=yes, rb_cv_have_prototypes=no)]) if test "$rb_cv_have_prototypes" = yes; then AC_DEFINE(HAVE_PROTOTYPES) fi AC_CACHE_CHECK(token paste string, rb_cv_tokenpaste, [AC_TRY_COMPILE([#define paste(a,b) a##b], [int xy = 1; return paste(x,y);], rb_cv_tokenpaste=ansi, rb_cv_tokenpaste=knr)]) if test "$rb_cv_tokenpaste" = ansi; then AC_DEFINE(TOKEN_PASTE(x,y),[x##y]) else AC_DEFINE(TOKEN_PASTE(x,y),[x/**/y]) fi AC_CACHE_CHECK(stringization, rb_cv_stringization, [ rb_cv_stringization=no for string in "#expr" '"expr"'; do AC_COMPILE_IFELSE([ AC_LANG_BOOL_COMPILE_TRY([ #define STRINGIZE0(expr) $string #define STRINGIZE(expr) STRINGIZE0(expr) #undef real_test_for_stringization #define test_for_stringization -.real_test_for_stringization.- const char stringized[[]] = STRINGIZE(test_for_stringization); ], [sizeof(stringized) == 32])], [rb_cv_stringization="$string"; break], [rb_cv_stringization=no]) done] ) AC_DEFINE(STRINGIZE(expr),STRINGIZE0(expr)) if test x"$rb_cv_stringization" != xno -a "$rb_cv_stringization" != "#expr"; then AC_DEFINE_UNQUOTED(STRINGIZE0(expr),$rb_cv_stringization) AC_DEFINE(OLD_FASHIONED_STRINGIZATION,1) fi AC_CACHE_CHECK([string literal concatenation], rb_cv_string_literal_concatenation, [ AC_COMPILE_IFELSE([ AC_LANG_BOOL_COMPILE_TRY([ const char concatenated_literal[[]] = "literals" "to" "be" "concatenated."; ], [sizeof(concatenated_literal) == 26])], [rb_cv_string_literal_concatenation=yes], [rb_cv_string_literal_concatenation=no])] ) if test "$rb_cv_string_literal_concatenation" = no; then AC_DEFINE(NO_STRING_LITERAL_CONCATENATION,1) fi AC_CACHE_CHECK(for variable length prototypes and stdarg.h, rb_cv_stdarg, [AC_TRY_COMPILE([ #include int foo(int x, ...) { va_list va; va_start(va, x); va_arg(va, int); va_arg(va, char *); va_arg(va, double); return 0; } ], [return foo(10, "", 3.14);], rb_cv_stdarg=yes, rb_cv_stdarg=no)]) if test "$rb_cv_stdarg" = yes; then AC_DEFINE(HAVE_STDARG_PROTOTYPES) fi AC_CACHE_CHECK(for variable length macro, rb_cv_va_args_macro, [AC_TRY_COMPILE([@%:@define FOO(a, ...) foo(a, @%:@@%:@__VA_ARGS__)], [FOO(1);FOO(1,2);FOO(1,2,3);], rb_cv_va_args_macro=yes, rb_cv_va_args_macro=no)]) if test "$rb_cv_va_args_macro" = yes; then AC_DEFINE(HAVE_VA_ARGS_MACRO) fi AC_DEFUN([RUBY_DEFINE_IF], [dnl m4_ifval([$1],[test "$1" && cat <> confdefs.h @%:@if $1 EOH ])dnl AC_DEFINE_UNQUOTED($2, $3) m4_ifval([$1],[test "$1" && cat <> confdefs.h @%:@endif /* $1 */ EOH ])dnl ])dnl dnl RUBY_FUNC_ATTRIBUTE(attrib, macroname, cachevar, condition) AC_DEFUN([RUBY_FUNC_ATTRIBUTE], [dnl m4_ifval([$2], dnl [AS_VAR_PUSHDEF([attrib],[$2])], dnl [AS_VAR_PUSHDEF([attrib],[FUNC_]AS_TR_CPP($1))] dnl )dnl m4_ifval([$3], dnl [AS_VAR_PUSHDEF([rbcv],[$3])], dnl [AS_VAR_PUSHDEF([rbcv],[rb_cv_func_][$1])]dnl )dnl m4_ifval([$4], [rbcv_cond=[$4]; test "$rbcv_cond" || unset rbcv_cond]) AC_CACHE_CHECK(for [$1] function attribute, rbcv, [rbcv=x RUBY_WERROR_FLAG([ for mac in "__attribute__ (($1)) x" "x __attribute__ (($1))" "__declspec($1) x" x; do m4_ifval([$4],mac="$mac"${rbcv_cond+" /* only if $rbcv_cond */"}) AC_TRY_COMPILE( m4_ifval([$4],${rbcv_cond+[@%:@if ]$rbcv_cond}) [@%:@define ]attrib[(x) $mac] m4_ifval([$4],${rbcv_cond+[@%:@else]} ${rbcv_cond+[@%:@define ]attrib[(x) x]} ${rbcv_cond+[@%:@endif]}) attrib[(void conftest_attribute_check(void));], [], [rbcv="$mac"; break]) done ])]) if test "$rbcv" != x; then RUBY_DEFINE_IF([${rbcv_cond}], attrib[(x)], $rbcv) fi AS_VAR_POPDEF([attrib]) AS_VAR_POPDEF([rbcv]) ]) RUBY_FUNC_ATTRIBUTE(noreturn, NORETURN) RUBY_FUNC_ATTRIBUTE(deprecated, DEPRECATED) RUBY_FUNC_ATTRIBUTE(noinline, NOINLINE) if_i386=${universal_binary+[defined __i386__]} RUBY_FUNC_ATTRIBUTE(stdcall, [], [], ${if_i386}) RUBY_FUNC_ATTRIBUTE(cdecl, [], [], ${if_i386}) RUBY_FUNC_ATTRIBUTE(fastcall, [], [], ${if_i386}) if test "$GCC" = yes; then AC_CACHE_CHECK([for function alias], [rb_cv_gcc_function_alias], [rb_cv_gcc_function_alias=no for a in alias weak,alias; do AC_TRY_LINK([void foo(void) {} void bar(void) __attribute__(($a("foo")));], [bar()], [rb_cv_gcc_function_alias=$a; break]) done]) if test "$rb_cv_gcc_function_alias" != no; then AC_DEFINE_UNQUOTED([RUBY_ALIAS_FUNCTION_TYPE(type, prot, name, args)], [type prot __attribute__(($rb_cv_gcc_function_alias(@%:@name)));]) AC_DEFINE_UNQUOTED([RUBY_ALIAS_FUNCTION_VOID(prot, name, args)], [RUBY_ALIAS_FUNCTION_TYPE(void, prot, name, args)]) fi fi AC_CACHE_CHECK(for exported function attribute, rb_cv_func_exported, [ rb_cv_func_exported=no RUBY_WERROR_FLAG([ for mac in '__attribute__ ((visibility("default")))' '__declspec(dllexport)'; do AC_TRY_COMPILE([@%:@define RUBY_FUNC_EXPORTED $mac extern RUBY_FUNC_EXPORTED void conftest_attribute_check(void);], [], [rb_cv_func_exported="$mac"; break]) done ])]) if test "$rb_cv_func_exported" != no; then AC_DEFINE_UNQUOTED(RUBY_FUNC_EXPORTED, [$rb_cv_func_exported extern]) fi RUBY_APPEND_OPTION(XCFLAGS, -DRUBY_EXPORT) dnl } dnl header and library section { dnl Check whether we need to define sys_nerr locally AC_CHECK_DECLS([sys_nerr], [], [], [$ac_includes_default #include ]) AC_ARG_ENABLE(win95, AS_HELP_STRING([--enable-win95], [enable Windows 95 series support]), [AS_CASE(["$enableval"],[yes|no],[enable_win95=$enableval],[unset enable_win95])]) AS_CASE(["$target_os"], [freebsd*], [ AC_CACHE_CHECK([whether pthread should be enabled by default], rb_cv_enable_pthread_default, [AC_TRY_CPP([ #include #if __FreeBSD_version < 502102 #error pthread should be disabled on this platform #endif ], rb_cv_enable_pthread_default=yes, rb_cv_enable_pthread_default=no)]) enable_pthread=$rb_cv_enable_pthread_default ], [mingw*], [ enable_pthread=no ], [ enable_pthread=yes ]) AC_ARG_ENABLE(pthread, AS_HELP_STRING([--enable-pthread], [obsolete, and ignored])) dnl Checks for libraries. AS_CASE(["$target_os"],[*bsd*|dragonfly*],[],[ac_cv_func_daemon=no]) AS_CASE(["$target_os"], [solaris*], [ AC_DEFINE(SIZEOF_STRUCT_DIRENT_TOO_SMALL, 1) LIBS="-lm $LIBS" ], [nextstep*], [ ], [openstep*], [ ], [rhapsody*], [ ], [darwin*], [ RUBY_PREPEND_OPTION(LIBS, -lobjc) RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE) AC_MSG_CHECKING(whether Mac OS X 10.5 or later) AC_TRY_CPP([#include #if MAC_OS_X_VERSION_MAX_ALLOWED <= 1040 #error pre OS X 10.4 [!<===== pre OS X 10.4 =====>] #endif ], [macosx_10_5=yes], [macosx_10_5=no]) AC_MSG_RESULT($macosx_10_5) if test $macosx_10_5 = yes; then ac_cv_header_ucontext_h=no else AC_DEFINE(BROKEN_SETREUID, 1) AC_DEFINE(BROKEN_SETREGID, 1) fi ac_cv_type_getgroups=gid_t # getgroups() on Rosetta fills garbage ac_cv_lib_crypt_crypt=no AC_CACHE_CHECK(for broken crypt with 8bit chars, rb_cv_broken_crypt, [AC_TRY_RUN([ #include #include #include int main() { int i; for (i = 0; i < 128*128; i++) { char salt[2], buf[256], *s; salt[0] = 0x80 | (i & 0x7f); salt[1] = 0x80 | (i >> 7); strcpy(buf, crypt("", salt)); if (strcmp(buf, s = crypt("", salt))) { #if 0 printf("%.2x%.2x: %s -> %s\n", (unsigned char)salt[0], (unsigned char)salt[1], buf+2, s+2); #endif return 1; } } return 0; } ], rb_cv_broken_crypt=no, rb_cv_broken_crypt=yes, rb_cv_broken_crypt=yes)]) if test "$rb_cv_broken_crypt" = yes; then AC_DEFINE(BROKEN_CRYPT, 1) fi ], [hpux*], [ LIBS="-lm $LIBS" ac_cv_c_inline=no], [human*], [ ac_cv_func_getpgrp_void=yes ac_cv_func_setitimer=no AC_CHECK_LIB(signal, _harderr) AC_CHECK_LIB(hmem, hmemset) AC_CHECK_FUNCS(select) AC_CACHE_CHECK(whether PD libc _dtos18 fail to convert big number, rb_cv_missing__dtos18, [AC_TRY_RUN([ #include int main() { char buf[256]; sprintf(buf, "%g", 1e+300); return (strcmp (buf, "1e+300") ? 0 : 1); } ], rb_cv_missing__dtos18=yes, rb_cv_missing__dtos18=no, rb_cv_missing__dtos18=no)]) if test "$rb_cv_missing__dtos18" = yes; then AC_DEFINE(MISSING__DTOS18) fi AC_CACHE_CHECK(whether PD libc fconvert fail to round, rb_cv_missing_fconvert, [AC_TRY_RUN([ #include #include int main() { char buf[256]; sprintf(buf, "%f", log(exp(1.0))); return (strcmp (buf, "1.000000") ? 0 : 1); } ], rb_cv_missing_fconvert=yes, rb_cv_missing_fconvert=no, rb_cv_missing_fconvert=no)]) if test "$rb_cv_missing_fconvert" = yes; then AC_DEFINE(MISSING_FCONVERT) fi ], [beos*|haiku*], [ ac_cv_func_link=no ac_cv_func_sched_yield=no ac_cv_func_pthread_attr_setinheritsched=no AS_CASE(["$target_os"], [beos*], [ ac_cv_header_net_socket_h=yes], [haiku*], [ ac_cv_func_shutdown=no]) LIBS="$LIBS" # m lib is include in root under BeOS/Haiku ], [cygwin*], [ ac_cv_header_langinfo_h=yes AC_LIBOBJ([langinfo]) ], [mingw*], [ LIBS="-lshell32 -lws2_32 -limagehlp $LIBS" ac_cv_header_a_out_h=no ac_cv_header_pwd_h=no ac_cv_header_utime_h=no ac_cv_header_sys_ioctl_h=no ac_cv_header_sys_param_h=no ac_cv_header_sys_resource_h=no ac_cv_header_sys_select_h=no ac_cv_header_sys_time_h=no ac_cv_header_sys_times_h=no ac_cv_header_sys_socket_h=no ac_cv_func_times=yes ac_cv_func_waitpid=yes ac_cv_func_fsync=yes ac_cv_func_seekdir=yes ac_cv_func_telldir=yes ac_cv_func_isinf=yes ac_cv_func_isnan=yes ac_cv_func_finite=yes ac_cv_func_link=yes ac_cv_func_truncate=yes ac_cv_func_fseeko=yes ac_cv_func_ftello=yes ac_cv_lib_crypt_crypt=no ac_cv_func_getpgrp_void=no ac_cv_func_setpgrp_void=yes ac_cv_func_memcmp_working=yes ac_cv_lib_dl_dlopen=no rb_cv_binary_elf=no rb_cv_negative_time_t=no ac_cv_func_fcntl=yes ac_cv_func_flock=yes rb_cv_large_fd_select=yes AC_LIBOBJ([langinfo]) : ${enable_win95=maybe} ], [os2-emx*], [ LIBS="-lm $LIBS" ac_cv_lib_dir_opendir=no], [msdosdjgpp*], [ LIBS="-lm $LIBS" ac_cv_func_getpgrp_void=yes ac_cv_func_setitimer=no ac_cv_sizeof_rlim_t=4 ac_cv_func_fork=no ac_cv_func_setrlimit=no ac_cv_header_sys_socket_h=no ], [bsdi*], [ LIBS="-lm $LIBS" AC_DEFINE(BROKEN_SETREUID, 1) AC_DEFINE(BROKEN_SETREGID, 1) ac_cv_sizeof_rlim_t=8], [freebsd*], [ LIBS="-lm $LIBS" ac_cv_func_getpeername=no ac_cv_func_getsockname=no ac_cv_func_shutdown=no ac_cv_func_close=no ], [dragonfly*], [ LIBS="-lm $LIBS" ], [bow], [ ac_cv_func_setitimer=no ], [superux*], [ ac_cv_func_setitimer=no ], [ LIBS="-lm $LIBS"]) AC_CHECK_LIB(crypt, crypt) AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX AC_CHECK_LIB(socket, socketpair) # SunOS/Solaris AC_CHECK_LIB(rt, clock_gettime) # GNU/Linux if test "${enable_win95}" = maybe; then AC_HAVE_LIBRARY(unicows, [enable_win95=yes], [enable_win95=no]) fi if test "${enable_win95}" = yes; then AC_DEFINE(WIN95) LIBS="-lunicows $LIBS" fi AS_CASE(["$target_cpu"], [alpha*], [AS_CASE(["$target_os"::"$GCC"], [*::yes], # gcc [CFLAGS="-mieee $CFLAGS"], [osf*], # ccc [CFLAGS="-ieee $CFLAGS"], )]) ac_cv_header_net_socket_h=${ac_cv_header_net_socket_h=no} if test "$ac_cv_header_net_socket_h" = yes; then ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h=no} else ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h=yes} fi dnl Checks for header files. AC_HEADER_DIRENT dnl AC_HEADER_STDC has been checked in AC_USE_SYSTEM_EXTENSIONS AC_HEADER_STDBOOL AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(limits.h sys/file.h sys/ioctl.h sys/syscall.h\ fcntl.h sys/fcntl.h sys/select.h sys/time.h sys/times.h sys/param.h\ syscall.h pwd.h grp.h a.out.h utime.h direct.h sys/resource.h \ sys/mkdev.h sys/utime.h xti.h netinet/in_systm.h float.h ieeefp.h \ ucontext.h intrinsics.h langinfo.h locale.h sys/sendfile.h time.h \ net/socket.h sys/socket.h) dnl Check additional types. RUBY_CHECK_SIZEOF(rlim_t, [int long "long long"], [], [ #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_TIME_H # include #endif #ifdef HAVE_SYS_RESOURCE_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #include ]) AC_TYPE_SIZE_T RUBY_CHECK_SIZEOF(size_t, [int long void*], [], [@%:@include ]) RUBY_CHECK_SIZEOF(ptrdiff_t, size_t, [], [@%:@include ]) AC_STRUCT_ST_BLKSIZE AC_STRUCT_ST_BLOCKS AC_STRUCT_ST_RDEV RUBY_CHECK_SIZEOF([struct stat.st_size], [int long "long long"]) if test "$ac_cv_member_struct_stat_st_blocks" = yes; then RUBY_CHECK_SIZEOF([struct stat.st_blocks], [int long "long long"]) fi AC_CHECK_MEMBERS([struct stat.st_atim]) AC_CHECK_MEMBERS([struct stat.st_atimespec]) AC_CHECK_MEMBERS([struct stat.st_atimensec]) AC_CHECK_MEMBERS([struct stat.st_mtim]) AC_CHECK_MEMBERS([struct stat.st_mtimespec]) AC_CHECK_MEMBERS([struct stat.st_mtimensec]) AC_CHECK_MEMBERS([struct stat.st_ctim]) AC_CHECK_MEMBERS([struct stat.st_ctimespec]) AC_CHECK_MEMBERS([struct stat.st_ctimensec]) AC_CHECK_TYPES([struct timespec], [], [], [@%:@ifdef HAVE_TIME_H @%:@include @%:@endif]) AC_CHECK_TYPES([struct timezone], [], [], [@%:@ifdef HAVE_TIME_H @%:@ include @%:@endif @%:@ifdef HAVE_SYS_TIME_H @%:@ include @%:@endif]) AC_CACHE_VAL([rb_cv_large_fd_select], [AC_CHECK_TYPE(fd_mask, [rb_cv_large_fd_select=yes], [rb_cv_large_fd_select=no])]) if test "$rb_cv_large_fd_select" = yes; then AC_DEFINE(HAVE_RB_FD_INIT, 1) fi dnl RUBY_DEFINT TYPENAME, SIZE, [SIGNED-OR-UNSIGNED], [INCLUDES = DEFAULT-INCLUDES] AC_DEFUN([RUBY_DEFINT], [dnl AC_CACHE_CHECK([for $1], [rb_cv_type_$1], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT([$4]) typedef $1 t; int s = sizeof(t) == 42;])], [rb_cv_type_$1=yes], [AS_CASE([m4_bmatch([$2], [^[1-9][0-9]*$], $2, [$ac_cv_sizeof_]AS_TR_SH($2))], ["1"], [ rb_cv_type_$1="m4_if([$3], [], [signed ], [$3 ])char"], ["$ac_cv_sizeof_short"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])short"], ["$ac_cv_sizeof_int"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])int"], ["$ac_cv_sizeof_long"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])long"], ["$ac_cv_sizeof_long_long"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])long long"], ["$ac_cv_sizeof___int64"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])__int64"], [ rb_cv_type_$1=no])])]) if test "${rb_cv_type_$1}" != no; then AC_DEFINE([HAVE_]AS_TR_CPP($1), 1) if test "${rb_cv_type_$1}" = yes; then m4_bmatch([$2], [^[1-9][0-9]*$], [AC_CHECK_SIZEOF([$1], 0, [AC_INCLUDES_DEFAULT([$4])])], [RUBY_CHECK_SIZEOF([$1], [$2], [], [AC_INCLUDES_DEFAULT([$4])])]) else AC_DEFINE_UNQUOTED($1, [$rb_cv_type_$1]) AC_DEFINE_UNQUOTED([SIZEOF_]AS_TR_CPP($1), [SIZEOF_]AS_TR_CPP([$rb_cv_type_$1])) fi fi ]) RUBY_DEFINT(int8_t, 1) RUBY_DEFINT(uint8_t, 1, unsigned) RUBY_DEFINT(int16_t, 2) RUBY_DEFINT(uint16_t, 2, unsigned) RUBY_DEFINT(int32_t, 4) RUBY_DEFINT(uint32_t, 4, unsigned) RUBY_DEFINT(int64_t, 8) RUBY_DEFINT(uint64_t, 8, unsigned) RUBY_DEFINT(int128_t, 16) RUBY_DEFINT(uint128_t, 16, unsigned) RUBY_DEFINT(intptr_t, void*) RUBY_DEFINT(uintptr_t, void*, unsigned) RUBY_DEFINT(ssize_t, size_t, [], [@%:@include ]) dnl may differ from int, so not use AC_TYPE_SSIZE_T. AC_CACHE_CHECK(for stack end address, rb_cv_stack_end_address, [rb_cv_stack_end_address=no for addr in __libc_stack_end _SEND; do AC_TRY_LINK( [extern void *$addr;], [if (!$addr) return 1;], [rb_cv_stack_end_address="$addr"; break]) done]) if test $rb_cv_stack_end_address != no; then AC_DEFINE_UNQUOTED(STACK_END_ADDRESS, $rb_cv_stack_end_address) fi dnl Checks for library functions. AC_TYPE_GETGROUPS AC_TYPE_SIGNAL AS_CASE(["${target_cpu}-${target_os}:${target_archs}"], [powerpc-darwin*], [ AC_LIBSOURCES(alloca.c) AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.${ac_objext}]) AC_DEFINE(C_ALLOCA) AC_DEFINE_UNQUOTED(alloca, alloca) ], [universal-darwin*:*ppc*], [ AC_LIBSOURCES(alloca.c) AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.${ac_objext}]) RUBY_DEFINE_IF([defined __powerpc__], C_ALLOCA, 1) RUBY_DEFINE_IF([defined __powerpc__], alloca, alloca) ], [ AC_FUNC_ALLOCA ]) AC_FUNC_MEMCMP # http://sources.redhat.com/ml/libc-hacker/2005-08/msg00008.html # Debian GNU/Linux Etch's libc6.1 2.3.6.ds1-13etch5 has this problem. # Debian GNU/Linux Lenny's libc6.1 2.7-10 has no problem. AC_CACHE_CHECK(for broken erfc of glibc-2.3.6 on IA64, rb_cv_broken_glibc_ia64_erfc, [AC_TRY_RUN([ #include int main() { erfc(10000.0); return 0; } ], rb_cv_broken_glibc_ia64_erfc=no, rb_cv_broken_glibc_ia64_erfc=yes, rb_cv_broken_glibc_ia64_erfc=no)]) AS_CASE([$rb_cv_broken_glibc_ia64_erfc],[yes],[ac_cv_func_erf=no]) AS_CASE(["$target_os"],[freebsd*],[ AC_DEFINE(BROKEN_CLOSE) AC_REPLACE_FUNCS(close) ]) AC_REPLACE_FUNCS(dup2 memmove strerror\ strchr strstr crypt flock\ isnan finite isinf hypot acosh erf tgamma lgamma_r cbrt \ strlcpy strlcat ffs) AC_CACHE_CHECK(for signbit, rb_cv_have_signbit, [AC_TRY_LINK([ #include ], [int v = signbit(-0.0);], rb_cv_have_signbit=yes, rb_cv_have_signbit=no)]) if test "$rb_cv_have_signbit" = yes; then AC_DEFINE(HAVE_SIGNBIT) else AC_LIBOBJ([signbit]) fi AC_CHECK_FUNCS(fmod killpg wait4 waitpid fork spawnv syscall chroot getcwd eaccess\ truncate ftruncate chsize times utimes utimensat fcntl lockf lstat\ link symlink readlink readdir_r fsync fdatasync fchown\ setitimer setruid seteuid setreuid setresuid setproctitle socketpair\ setrgid setegid setregid setresgid issetugid pause lchown lchmod\ getpgrp setpgrp getpgid setpgid initgroups getgroups setgroups\ getpriority getrlimit setrlimit sysconf close\ dlopen sigprocmask sigaction sigsetjmp _setjmp _longjmp\ setsid telldir seekdir fchmod cosh sinh tanh log2 round\ setuid setgid daemon select_large_fdset setenv unsetenv\ mktime timegm gmtime_r clock_gettime gettimeofday\ pread sendfile shutdown sigaltstack) AC_CACHE_CHECK(for unsetenv returns a value, rb_cv_unsetenv_return_value, [AC_TRY_COMPILE([ #include ], [int v = unsetenv("foo");], rb_cv_unsetenv_return_value=yes, rb_cv_unsetenv_return_value=no)]) if test "$rb_cv_unsetenv_return_value" = no; then AC_DEFINE(VOID_UNSETENV) fi AC_CACHE_CHECK(for __builtin_setjmp, ac_cv_func___builtin_setjmp, [AC_TRY_LINK([@%:@include jmp_buf jb; void t(v) int v; {__builtin_longjmp(jb, v);}], [__builtin_setjmp(jb);], [ac_cv_func___builtin_setjmp=yes], [ac_cv_func___builtin_setjmp=no]) ]) test x$ac_cv_func__longjmp = xno && ac_cv_func__setjmp=no AC_MSG_CHECKING(for setjmp type) AC_ARG_WITH(setjmp-type, AS_HELP_STRING([--with-setjmp-type], [select setjmp type]), [ AS_CASE([$withval], [__builtin_setjmp], [ setjmp_prefix=__builtin_], [_setjmp], [ setjmp_prefix=_], [sigsetjmp], [ setjmp_prefix=sig], [setjmp], [ setjmp_prefix=], [''], [ unset setjmp_prefix], [ AC_MSG_ERROR(invalid setjmp type: $withval)])], [unset setjmp_prefix]) if test ${setjmp_prefix+set}; then if test "${setjmp_prefix}" && eval test '$ac_cv_func_'${setjmp_prefix}setjmp = no; then AC_MSG_ERROR(${setjmp_prefix}setjmp is not available) fi elif test "$ac_cv_func___builtin_setjmp" = yes; then setjmp_prefix=__builtin_ elif test "$ac_cv_func__setjmp" = yes; then setjmp_prefix=_ elif test "$ac_cv_func_sigsetjmp" = yes; then AS_CASE([$target_os],[solaris*|cygwin*],[setjmp_prefix=],[setjmp_prefix=sig]) else setjmp_prefix= fi if test x$setjmp_prefix = xsig; then setjmp_sigmask=yes else unset setjmp_sigmask fi AC_MSG_RESULT(${setjmp_prefix}setjmp) AC_DEFINE_UNQUOTED([RUBY_SETJMP(env)], [${setjmp_prefix}setjmp(env${setjmp_sigmask+,0})]) AC_DEFINE_UNQUOTED([RUBY_LONGJMP(env,val)], [${setjmp_prefix}longjmp(env,val)]) AC_DEFINE_UNQUOTED(RUBY_JMP_BUF, ${setjmp_sigmask+${setjmp_prefix}}jmp_buf) AC_ARG_ENABLE(setreuid, AS_HELP_STRING([--enable-setreuid], [use setreuid()/setregid() according to need even if obsolete]), [use_setreuid=$enableval]) if test "$use_setreuid" = yes; then AC_DEFINE(USE_SETREUID) AC_DEFINE(USE_SETREGID) fi AC_STRUCT_TIMEZONE AC_CACHE_CHECK(for struct tm.tm_gmtoff, rb_cv_member_struct_tm_tm_gmtoff, [AC_TRY_COMPILE([#include ], [struct tm t; t.tm_gmtoff = 3600;], [rb_cv_member_struct_tm_tm_gmtoff=yes], [rb_cv_member_struct_tm_tm_gmtoff=no])]) if test "$rb_cv_member_struct_tm_tm_gmtoff" = yes; then AC_DEFINE(HAVE_STRUCT_TM_TM_GMTOFF) fi AC_CACHE_CHECK(for external int daylight, rb_cv_have_daylight, [AC_TRY_LINK([#include int i;], [i = daylight;], rb_cv_have_daylight=yes, rb_cv_have_daylight=no)]) if test "$rb_cv_have_daylight" = yes; then AC_DEFINE(HAVE_DAYLIGHT) fi AC_DEFUN([RUBY_CHECK_VARTYPE], [dnl AC_CACHE_CHECK([for external $1], AS_TR_SH(rb_cv_var_$1), [AS_TR_SH(rb_cv_var_$1)=no AC_TRY_COMPILE([ #ifndef _XOPEN_SOURCE #define _XOPEN_SOURCE 1 #endif $2 ; const volatile void *volatile t;], [t = &(&$1)[0];], [for t in $3; do AC_TRY_COMPILE([ #ifndef _XOPEN_SOURCE #define _XOPEN_SOURCE 1 #endif $2 ; extern $t $1; const volatile void *volatile t;], [t = &(&$1)[0];], [AS_TR_SH(rb_cv_var_$1)=$t; break]) done])]) if test "${AS_TR_SH(rb_cv_var_$1)}" != no; then AC_DEFINE(AS_TR_CPP(HAVE_VAR_$1)) AC_DEFINE_UNQUOTED(AS_TR_CPP(TYPEOF_VAR_$1), ${AS_TR_SH(rb_cv_var_$1)}) fi]) RUBY_CHECK_VARTYPE(timezone, [@%:@include ], [long int]) RUBY_CHECK_VARTYPE(altzone, [@%:@include ], [long int]) AC_CHECK_FUNCS(timezone) if test "$ac_cv_func_timezone" = yes; then AC_CACHE_CHECK([whether timezone requires zero arguments], rb_cv_func_timezone_void, [AC_TRY_COMPILE([@%:@include ], [(void)timezone(0, 0);], [rb_cv_func_timezone_void=no], [rb_cv_func_timezone_void=yes])] ) if test $rb_cv_func_timezone_void = yes; then AC_DEFINE(TIMEZONE_VOID) fi fi AC_CACHE_CHECK(for negative time_t for gmtime(3), rb_cv_negative_time_t, [AC_TRY_RUN([ #include void check(tm, y, m, d, h, s) struct tm *tm; int y, m, d, h, s; { if (!tm || tm->tm_year != y || tm->tm_mon != m-1 || tm->tm_mday != d || tm->tm_hour != h || tm->tm_sec != s) { exit(1); } } int main() { time_t t = -1; struct tm *tm; check(gmtime(&t), 69, 12, 31, 23, 59); t = ~(time_t)0 << 31; check(gmtime(&t), 1, 12, 13, 20, 52); return 0; } ], rb_cv_negative_time_t=yes, rb_cv_negative_time_t=no, rb_cv_negative_time_t=yes)]) if test "$rb_cv_negative_time_t" = yes; then AC_DEFINE(NEGATIVE_TIME_T) fi # [ruby-dev:40910] overflow of time on FreeBSD # http://www.freebsd.org/cgi/query-pr.cgi?pr=145341 AC_CACHE_CHECK(for localtime(3) overflow correctly, rb_cv_localtime_overflow, [AC_TRY_RUN([ #include void check(time_t t1) { struct tm *tm; time_t t2; tm = localtime(&t1); if (!tm) return; /* overflow detected. ok. */ t2 = mktime(tm); if (t1 == t2) return; /* round-trip. ok. */ exit(1); } int main() { time_t t; if (~(time_t)0 <= 0) { t = (((time_t)1) << (sizeof(time_t) * 8 - 2)); t |= t - 1; } else { t = ~(time_t)0; } check(t); return 0; } ], rb_cv_localtime_overflow=yes, rb_cv_localtime_overflow=no, rb_cv_localtime_overflow=yes)]) if test "$rb_cv_localtime_overflow" = no; then AC_DEFINE(LOCALTIME_OVERFLOW_PROBLEM) fi if test "$ac_cv_func_sigprocmask" = yes && test "$ac_cv_func_sigaction" = yes; then AC_DEFINE(POSIX_SIGNAL) else AC_CHECK_FUNCS(sigsetmask) AC_CACHE_CHECK(for BSD signal semantics, rb_cv_bsd_signal, [AC_TRY_RUN([ #include #include void sig_handler(dummy) int dummy; { } int main() { signal(SIGINT, sig_handler); kill(getpid(), SIGINT); kill(getpid(), SIGINT); return 0; } ], rb_cv_bsd_signal=yes, rb_cv_bsd_signal=no, rb_cv_bsd_signal=$ac_cv_func_sigsetmask)]) if test "$rb_cv_bsd_signal" = yes; then AC_DEFINE(BSD_SIGNAL) fi fi AC_FUNC_GETPGRP AC_FUNC_SETPGRP AC_C_BIGENDIAN AC_C_CONST AC_C_CHAR_UNSIGNED AC_C_INLINE AC_C_VOLATILE if test x"$target_cpu" = xia64; then AC_LIBOBJ([ia64]) AC_CACHE_CHECK(for __libc_ia64_register_backing_store_base, rb_cv___libc_ia64_register_backing_store_base, [rb_cv___libc_ia64_register_backing_store_base=no AC_TRY_LINK( [extern unsigned long __libc_ia64_register_backing_store_base;], [unsigned long p = __libc_ia64_register_backing_store_base; printf("%ld\n", p);], [rb_cv___libc_ia64_register_backing_store_base=yes])]) if test $rb_cv___libc_ia64_register_backing_store_base = yes; then AC_DEFINE(HAVE___LIBC_IA64_REGISTER_BACKING_STORE_BASE) fi fi AC_CACHE_CHECK(whether right shift preserve sign bit, rb_cv_rshift_sign, [AC_COMPILE_IFELSE(AC_LANG_BOOL_COMPILE_TRY([], [(-1==(-1>>1))]), rb_cv_rshift_sign=yes, rb_cv_rshift_sign=no)]) if test "$rb_cv_rshift_sign" = yes; then AC_DEFINE(RSHIFT(x,y), ((x)>>(int)(y))) else AC_DEFINE(RSHIFT(x,y), (((x)<0) ? ~((~(x))>>(int)(y)) : (x)>>(int)(y))) fi test "$rb_cv_fcnt" = "not found" && rb_cv_fcnt="not found (OK if using GNU libc)" AC_CACHE_CHECK([read count field in FILE structures], rb_cv_fcnt, [rb_cv_fcnt="not found (OK if using GNU libc)" for fcnt in dnl _cnt dnl __cnt dnl _r dnl readCount dnl _rcount dnl for emx0.9c ; do AC_TRY_COMPILE([#include ], [FILE *f = stdin; f->$fcnt = 0;], [rb_cv_fcnt="$fcnt"; break]) done]) AS_CASE("$rb_cv_fcnt", ["not found"*], [rb_cv_fcnt="not found"], [AC_DEFINE_UNQUOTED(FILE_COUNT, $rb_cv_fcnt)]) AC_CACHE_CHECK([read buffer ptr field in FILE structures], rb_cv_frptr, [for frptr in dnl _IO_read_ptr dnl _ptr dnl __ptr dnl bufpos dnl _p dnl __bufpos dnl ; do AC_TRY_COMPILE([#include ], [FILE *f = stdin; char buf[256]; f->$frptr = buf;], rb_cv_frptr="$frptr"; break, rb_cv_frptr="not found") done]) if test "$rb_cv_frptr" != "not found"; then AC_DEFINE_UNQUOTED(FILE_READPTR, $rb_cv_frptr) if test "$rb_cv_fcnt" = "not found"; then AC_CACHE_CHECK([read buffer end field in FILE structures], rb_cv_frend, [for frend in dnl _IO_read_end dnl bufread dnl __bufread dnl ; do AC_TRY_COMPILE([#include ], [FILE *f = stdin; char buf[256]; f->$frend = buf;], rb_cv_frend="$frend"; break, rb_cv_frend="not found") done]) if test "$rb_cv_frend" != "not found"; then AC_DEFINE_UNQUOTED(FILE_READEND, $rb_cv_frend) fi fi fi RUBY_CHECK_SIZEOF([struct stat.st_ino], [long "long long"], [], [@%:@include ]) if test "$ac_cv_func_sysconf" = yes; then AC_DEFUN([RUBY_CHECK_SYSCONF], [dnl AC_CACHE_CHECK([whether _SC_$1 is supported], rb_cv_have_sc_[]m4_tolower($1), [AC_TRY_COMPILE([#include ], [_SC_$1 >= 0], rb_cv_have_sc_[]m4_tolower($1)=yes, rb_cv_have_sc_[]m4_tolower($1)=no) ]) if test "$rb_cv_have_sc_[]m4_tolower($1)" = yes; then AC_DEFINE(HAVE__SC_$1) fi ]) RUBY_CHECK_SYSCONF(CLK_TCK) fi AC_DEFUN(RUBY_STACK_GROW_DIRECTION, [ AC_CACHE_CHECK(stack growing direction on $1, rb_cv_stack_grow_dir_$1, [ AS_CASE(["$1"], [m68*|x86*|i?86|ia64|ppc*|sparc*|alpha*], [ $2=-1], [hppa*], [ $2=+1], [ AC_TRY_RUN([ /* recurse to get rid of inlining */ static int stack_growup_p(addr, n) volatile int *addr, n; { volatile int end; if (n > 0) return *addr = stack_growup_p(addr, n - 1); else return (&end > addr); } int main() { int x; return stack_growup_p(&x, 10); } ], $2=-1, $2=+1, $2=0) ]) eval rb_cv_stack_grow_dir_$1=\$$2]) eval $2=\$rb_cv_stack_grow_dir_$1]) if test "${universal_binary-no}" = yes ; then archflagpat=`eval echo '"'"${ARCH_FLAG}"'"' | sed 's/[[][|.*]]/\\&/g'` save_CFLAGS="$CFLAGS" new_cflags=`echo "$CFLAGS" | sed "s|$archflagpat"'||'` save_LDFLAGS="$LDFLAGS" new_ldflags=`echo "$LDFLAGS" | sed "s|$archflagpat"'||'` stack_dir= for archs in ${universal_archnames}; do archs=`echo $archs | sed 's/=.*//'` CFLAGS="$new_cflags -arch $archs" LDFLAGS="$new_ldflags -arch $archs" RUBY_STACK_GROW_DIRECTION($archs, dir) if test x$stack_dir = x; then stack_dir=$dir elif test x$stack_dir != x$dir; then stack_dir=no fi done CFLAGS="$save_CFLAGS" LDFLAGS="$save_LDFLAGS" if test x$stack_dir = xno; then for archs in ${universal_archnames}; do archs=`echo $archs | sed 's/=.*//'` eval dir=\$rb_cv_stack_grow_dir_$archs RUBY_DEFINE_IF([defined __${archs}__], STACK_GROW_DIRECTION, $dir) done else AC_DEFINE_UNQUOTED(STACK_GROW_DIRECTION, $stack_dir) fi else RUBY_STACK_GROW_DIRECTION($target_cpu, dir) AC_DEFINE_UNQUOTED(STACK_GROW_DIRECTION, $dir) fi if test x"$enable_pthread" = xyes; then for pthread_lib in thr pthread pthreads c c_r root; do AC_CHECK_LIB($pthread_lib, pthread_kill, rb_with_pthread=yes, rb_with_pthread=no) if test "$rb_with_pthread" = "yes"; then break; fi done if test x"$rb_with_pthread" = xyes; then AC_DEFINE(_REENTRANT) AC_DEFINE(_THREAD_SAFE) AC_DEFINE(HAVE_LIBPTHREAD) AC_CHECK_HEADERS(pthread_np.h) AS_CASE([$pthread_lib], [c], [], [root], [], [c_r], [MAINLIBS="-pthread $MAINLIBS"], [LIBS="-l$pthread_lib $LIBS"]) else AC_MSG_WARN("Don't know how to find pthread library on your system -- thread support disabled") fi AC_CHECK_FUNCS(nanosleep sched_yield pthread_attr_setinheritsched \ pthread_getattr_np pthread_attr_get_np pthread_attr_getstack\ pthread_get_stackaddr_np pthread_get_stacksize_np \ thr_stksegment pthread_stackseg_np pthread_getthrds_np) if test x"$ac_cv_func_nanosleep" = xno; then AC_CHECK_LIB(rt, nanosleep) if test x"$ac_cv_lib_rt_nanosleep" = xyes; then AC_DEFINE(HAVE_NANOSLEEP) fi fi fi if test x"$ac_cv_header_ucontext_h" = xyes; then if test x"$rb_with_pthread" = xyes; then AC_CHECK_FUNCS(getcontext setcontext) fi fi if test "$ac_cv_func_fork" = "yes" -a "$rb_with_pthread" = "yes"; then AC_CACHE_CHECK([if fork works with pthread], rb_cv_fork_with_pthread, [AC_TRY_RUN([ #include #include #include #include #include #include #include #ifndef EXIT_SUCCESS #define EXIT_SUCCESS 0 #endif #ifndef EXIT_FAILURE #define EXIT_FAILURE 1 #endif void * thread_func(void *dmy) { return dmy; } int use_threads(void) { pthread_t tid; if (pthread_create(&tid, 0, thread_func, 0) != 0) { return -1; } if (pthread_join(tid, 0) != 0) { return -1; } return 0; } int main(int argc, char *argv[]) { pid_t pid; if (use_threads()) return EXIT_FAILURE; pid = fork(); if (pid) { int loc; sleep(1); if (waitpid(pid, &loc, WNOHANG) == 0) { kill(pid, SIGKILL); return EXIT_FAILURE; } if (!WIFEXITED(loc) || WEXITSTATUS(loc) != EXIT_SUCCESS) return EXIT_FAILURE; } else { if (use_threads()) return EXIT_FAILURE; } return EXIT_SUCCESS; }], rb_cv_fork_with_pthread=yes, rb_cv_fork_with_pthread=no, rb_cv_fork_with_pthread=yes)]) test x$rb_cv_fork_with_pthread = xyes || AC_DEFINE(CANNOT_FORK_WITH_PTHREAD) fi AC_CHECK_FUNCS(backtrace) AC_ARG_WITH(valgrind, AS_HELP_STRING([--with-valgrind],[enable valgrind memcheck support]), [AC_CHECK_HEADERS(valgrind/memcheck.h)]) dnl } dnl runtime section { dnl wheather use dln_a_out or not AC_ARG_WITH(dln-a-out, AS_HELP_STRING([--with-dln-a-out], [use dln_a_out if possible]), [ AS_CASE([$withval], [yes], [ if test "$enable_shared" = yes; then AC_MSG_ERROR(dln_a_out can not make shared library) fi with_dln_a_out=yes], [ with_dln_a_out=no])], [with_dln_a_out=no]) AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf, [AC_TRY_LINK([],[], [ AS_CASE(["`head -1 conftest$EXEEXT | cat -e`"], ['^?ELF'*], [rb_cv_binary_elf=yes], [rb_cv_binary_elf=no])], rb_cv_binary_elf=no)]) if test "$rb_cv_binary_elf" = yes; then AC_DEFINE(USE_ELF) if test "$with_dln_a_out" = yes; then AC_MSG_ERROR(dln_a_out does not work with ELF) fi fi AS_CASE(["$target_os"], [linux* | gnu* | k*bsd*-gnu | bsdi* | kopensolaris*-gnu], [ if test "$rb_cv_binary_elf" = no; then with_dln_a_out=yes else LDFLAGS="$LDFLAGS -rdynamic" fi]) LIBEXT=a AC_SUBST(DLDFLAGS)dnl AC_SUBST(ARCH_FLAG)dnl AC_SUBST(STATIC)dnl AC_SUBST(CCDLFLAGS)dnl AC_SUBST(LDSHARED)dnl AC_SUBST(LDSHAREDXX)dnl AC_SUBST(DLEXT)dnl AC_SUBST(DLEXT2)dnl AC_SUBST(LIBEXT)dnl STATIC= : ${PATHFLAG=''} if test "$with_dln_a_out" != yes; then rb_cv_dlopen=unknown AC_MSG_CHECKING(whether OS depend dynamic link works) if test "$GCC" = yes; then AS_CASE(["$target_os"], [nextstep*|openstep*|rhapsody*|darwin*], [ # The -fno-common is needed if we wish to embed the Ruby interpreter # into a plugin module of some project (as opposed to embedding it # within the project's application). The -I/usr/local/include is # needed because CPP as discovered by configure (cc -E -traditional) # fails to consult /usr/local/include by default. This causes # mkmf.rb's have_header() to fail if the desired resource happens to be # installed in the /usr/local tree. RUBY_APPEND_OPTION(CCDLFLAGS, -fno-common)], [human*|bsdi*|beos*|haiku*|cygwin*|mingw*|aix*|interix*], [ ], [ RUBY_APPEND_OPTION(CCDLFLAGS, -fPIC)]) else AS_CASE(["$target_os"], [hpux*], [CCDLFLAGS="$CCDLFLAGS +Z"], [solaris*|irix*], [CCDLFLAGS="$CCDLFLAGS -KPIC"], [sunos*], [CCDLFLAGS="$CCDLFLAGS -PIC"], [esix*|uxpds*], [CCDLFLAGS="$CCDLFLAGS -KPIC"], [: ${CCDLFLAGS=""}]) fi AC_ARG_ENABLE(rpath, AS_HELP_STRING([--disable-rpath], [embed run path into extension libraries]), [enable_rpath=$enableval], [enable_rpath="$rb_cv_binary_elf"]) if test "$enable_rpath" = yes; then RPATHFLAG=" ${linker_flag}-R%1\$-s" fi AS_CASE(["$target_os"], [hpux*], [ DLDFLAGS="$DLDFLAGS -E" : ${LDSHARED='ld -b'} XLDFLAGS="$XLDFLAGS -Wl,-E" : ${LIBPATHENV=SHLIB_PATH} if test "$rb_cv_prog_gnu_ld" = no; then RPATHFLAG=' +b %1$-s' fi rb_cv_dlopen=yes], [solaris*], [ if test "$GCC" = yes; then : ${LDSHARED='$(CC) -shared'} if test "$rb_cv_prog_gnu_ld" = yes; then LDFLAGS="$LDFLAGS -Wl,-E" fi else : ${LDSHARED='ld -G'} fi rb_cv_dlopen=yes], [sunos*], [ : ${LDSHARED='ld -assert nodefinitions'} rb_cv_dlopen=yes], [irix*], [ : ${LDSHARED='ld -shared'} rb_cv_dlopen=yes], [sysv4*], [ : ${LDSHARED='ld -G'} rb_cv_dlopen=yes], [nto-qnx*], [ : ${LDSHARED='$(CC) -shared'} rb_cv_dlopen=yes], [esix*|uxpds*], [ : ${LDSHARED="ld -G"} rb_cv_dlopen=yes], [osf*], [ : ${LDSHARED="ld -shared -expect_unresolved \"*\""} rb_cv_dlopen=yes], [bsdi3*], [ AS_CASE(["$CC"], [*shlicc*], [ : ${LDSHARED='$(CC) -r'} rb_cv_dlopen=yes])], [linux* | gnu* | k*bsd*-gnu | netbsd* | bsdi* | kopensolaris*-gnu], [ : ${LDSHARED='$(CC) -shared'} if test "$rb_cv_binary_elf" = yes; then LDFLAGS="$LDFLAGS -Wl,-export-dynamic" fi rb_cv_dlopen=yes], [interix*], [ : ${LDSHARED='$(CC) -shared'} XLDFLAGS="$XLDFLAGS -Wl,-E" LIBPATHFLAG=" -L%1\$-s" rb_cv_dlopen=yes], [freebsd*|dragonfly*], [ : ${LDSHARED='$(CC) -shared'} if test "$rb_cv_binary_elf" = yes; then LDFLAGS="$LDFLAGS -rdynamic" DLDFLAGS="$DLDFLAGS "'-Wl,-soname,$(.TARGET)' else test "$GCC" = yes && test "$rb_cv_prog_gnu_ld" = yes || LDSHARED="ld -Bshareable" fi rb_cv_dlopen=yes], [openbsd*], [ : ${LDSHARED='$(CC) -shared ${CCDLFLAGS}'} if test "$rb_cv_binary_elf" = yes; then LDFLAGS="$LDFLAGS -Wl,-E" fi rb_cv_dlopen=yes], [nextstep*], [ : ${LDSHARED='$(CC) -r -nostdlib'} LDFLAGS="$LDFLAGS -u libsys_s" rb_cv_dlopen=yes], [openstep*], [ : ${LDSHARED='$(CC) -dynamic -bundle -undefined suppress'} : ${LDFLAGS=""} rb_cv_dlopen=yes], [rhapsody*], [ : ${LDSHARED='$(CC) -dynamic -bundle -undefined suppress'} : ${LDFLAGS=""} rb_cv_dlopen=yes], [darwin*], [ : ${LDSHARED='$(CC) -dynamic -bundle'} : ${DLDFLAGS="${linker_flag}-undefined${linker_flag:+,}dynamic_lookup ${linker_flag}-multiply_defined${linker_flag:+,}suppress ${linker_flag}-flat_namespace"} : ${LDFLAGS=""} : ${LIBPATHENV=DYLD_LIBRARY_PATH} # /usr/local/include is always searched for # some reason, but /usr/local/lib is not. hdr=`find /usr/local/include -name \*.h -type f | sed 's:^/usr/local/include/::;q'` if test -n "$hdr" && $CC -E -include "$hdr" -xc /dev/null | fgrep -q "$hdr"; then $CC -print-search-dirs | grep -q '^libraries:.*:/usr/local/lib/*' || echo " $LDFLAGS " | grep -q ' -L */usr/local/lib/* ' || LDFLAGS="${LDFLAGS:+$LDFLAGS }-L/usr/local/lib" fi rb_cv_dlopen=yes], [aix*], [ : ${LDSHARED='$(CC)'} LDSHARED="$LDSHARED ${linker_flag}-G" DLDFLAGS='-eInit_$(TARGET)' XLDFLAGS="${linker_flag}"'-bE:$(ARCHFILE)'" ${linker_flag}-brtl" XLDFLAGS="$XLDFLAGS ${linker_flag}-blibpath:${prefix}/lib:${LIBPATH:-/usr/lib:/lib}" : ${ARCHFILE="ruby.imp"} TRY_LINK='$(CC) $(LDFLAGS) -oconftest $(INCFLAGS) -I$(hdrdir) $(CPPFLAGS)' TRY_LINK="$TRY_LINK"' $(CFLAGS) $(src) $(LIBPATH) $(LOCAL_LIBS) $(LIBS)' : ${LIBPATHENV=SHLIB_PATH} RPATHFLAG=" ${linker_flag}-blibpath:%1\$-s:${prefix}/lib:${LIBPATH:-/usr/lib:/lib}" rb_cv_dlopen=yes], [human*], [ : ${DLDFLAGS=''} : ${LDSHARED=''} : ${LDFLAGS=''} : ${LINK_SO='ar cru $@ $(OBJS)'} rb_cv_dlopen=yes], [beos*], [ AS_CASE(["$target_cpu"], [powerpc*], [ : ${LDSHARED="ld -xms"} DLDFLAGS="$DLDFLAGS "'-export Init_$(TARGET) -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o' LDFLAGS="$LDFLAGS -L/boot/home/config/lib -lbe -lroot" ], [i586*], [ : ${LDSHARED="ld -shared"} DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -L/boot/home/config/lib \$(topdir)/_APP_ -lbe -lroot" LDFLAGS="$LDFLAGS -L/boot/develop/lib/x86 -L/boot/home/config/lib -lbe -lroot" ]) : ${LIBPATHENV=LIBRARY_PATH} rb_cv_dlopen=yes], [haiku*], [ AS_CASE(["$target_cpu"], [powerpc*], [ : ${LDSHARED="ld -xms"} DLDFLAGS="$DLDFLAGS "'-export Init_$(TARGET) -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o' ], [i586*], [ : ${LDSHARED="ld -shared"} DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -lbe -lroot" ]) : ${LIBPATHENV=LIBRARY_PATH} rb_cv_dlopen=yes ], [nto-qnx*], [ DLDFLAGS="$DLDFLAGS -L/lib -L/usr/lib -L/usr/local/lib" : ${LDSHARED='ld -Bshareable -x'} LDFLAGS="$LDFLAGS -L/lib -L/usr/lib -L/usr/local/lib" rb_cv_dlopen=yes], [cygwin*|mingw*], [ : ${LDSHARED='$(CC) -shared $(if $(filter-out -g -g0,$(debugflags)),,-s)'} XLDFLAGS="$XLDFLAGS -Wl,--stack,0x00200000,--enable-auto-import" DLDFLAGS="${DLDFLAGS} -Wl,--enable-auto-image-base,--enable-auto-import" : ${LIBPATHENV=""} rb_cv_dlopen=yes], [hiuxmpp], [ : ${LDSHARED='ld -r'}], [atheos*], [ : ${LDSHARED='$(CC) -shared'} rb_cv_dlopen=yes], [os2-emx*], [ LDFLAGS="$LDFLAGS -Zomf" ], [ : ${LDSHARED='ld'}]) AC_MSG_RESULT($rb_cv_dlopen) fi if test "${LDSHAREDXX}" = ""; then AS_CASE(["${LDSHARED}"], [*'$(CC)'*], [ LDSHAREDXX=`echo "${LDSHARED}" | sed 's/\$(CC)/$(CXX)/'` ], [*'${CC}'*], [ LDSHAREDXX=`echo "${LDSHARED}" | sed 's/\${CC}/${CXX}/'` ], [*$CC*], [ LDSHAREDXX=`echo "${LDSHARED}" | sed "s|$CC|$CXX|"` ], [ld" "*], [ ]) fi AS_CASE([${RPATHFLAG}],[*'%1$'*],[: ${LIBPATHFLAG=' -L%1$-s'}],[: ${LIBPATHFLAG=' -L%s'}]) AC_SUBST(LINK_SO) AC_SUBST(LIBPATHFLAG) AC_SUBST(RPATHFLAG) AC_SUBST(LIBPATHENV, "${LIBPATHENV-LD_LIBRARY_PATH}") AC_SUBST(TRY_LINK) dln_a_out_works=no if test "$ac_cv_header_a_out_h" = yes; then if test "$with_dln_a_out" = yes || test "$rb_cv_dlopen" = unknown; then cat confdefs.h > config.h AC_CACHE_CHECK(whether matz's dln works, rb_cv_dln_a_out, [AC_TRY_COMPILE([ #define USE_DLN_A_OUT #include "dln.c" ], [], rb_cv_dln_a_out=yes, rb_cv_dln_a_out=no)]) if test "$rb_cv_dln_a_out" = yes; then dln_a_out_works=yes AC_DEFINE(USE_DLN_A_OUT) fi fi fi if test "$dln_a_out_works" = yes; then if test "$GCC" = yes; then STATIC=-static else STATIC=-Bstatic fi DLEXT=so CCDLFLAGS= else AS_CASE(["$target_os"], [hpux*], [ DLEXT=sl], [nextstep*|openstep*|rhapsody*|darwin*], [ RUBY_APPEND_OPTION(XLDFLAGS, [-Wl,-u,_objc_msgSend]) DLEXT=bundle], [os2-emx*], [ LOAD_RELATIVE=1 DLEXT=dll], [cygwin*|mingw*|*djgpp*], [ LOAD_RELATIVE=1 DLEXT=so], [ DLEXT=so]) fi if test "$rb_cv_dlopen:$load_relative" = yes:yes; then AC_CHECK_FUNCS(dladdr) if test "$ac_cv_func_dladdr" = yes; then LOAD_RELATIVE=1 else unset load_relative fi fi len=2 # .rb n=`expr "$DLEXT" : '.*'`; test "$n" -gt "$len" && len=$n n=`expr "$DLEXT2" : '.*'`; test "$n" -gt "$len" && len=$n AC_DEFINE_UNQUOTED(DLEXT_MAXLEN, `expr $len + 1`) test ".$DLEXT" = "." || AC_DEFINE_UNQUOTED(DLEXT, ".$DLEXT") test ".$DLEXT2" = "." || AC_DEFINE_UNQUOTED(DLEXT2, ".$DLEXT2") AC_SUBST(DLEXT) AC_SUBST(STRIP)dnl if test "$with_dln_a_out" = yes; then STRIP=true else STRIP=strip fi AS_CASE(["$target_os"], [linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu], [ STRIP='strip -S -x'], [nextstep* | openstep* | rhapsody* | darwin*], [ STRIP='strip -A -n']) AC_ARG_WITH(ext, AC_HELP_STRING([--with-ext=EXTS], [pass to --with-ext option of extmk.rb])) AC_ARG_WITH(out-ext, AC_HELP_STRING([--with-out-ext=EXTS], [pass to --without-ext option of extmk.rb])) EXTSTATIC= AC_SUBST(EXTSTATIC)dnl AC_ARG_WITH(static-linked-ext, AS_HELP_STRING([--with-static-linked-ext], [link external modules statically]), [AS_CASE([$withval],[yes],[STATIC=;EXTSTATIC=static])]) AS_CASE(["$target_os"], [human*], [ setup=Setup.x68 ], dnl OS/2 environment w/ Autoconf 2.1x for EMX [os2-emx], [ setup=Setup.emx ], [*djgpp*], [ setup=Setup.dj ], [ setup=Setup ]) AC_SUBST(setup) if test "$prefix" = NONE; then prefix=$ac_default_prefix fi if test x"$cross_compiling" = xyes; then test x"$MINIRUBY" = x && MINIRUBY="${RUBY-$BASERUBY} -I`pwd` "-r'$(arch)-fake' PREP='$(arch)-fake.rb' RUNRUBY='$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`' XRUBY='$(MINIRUBY)' TEST_RUNNABLE=no else MINIRUBY='./miniruby$(EXEEXT) -I$(srcdir)/lib' MINIRUBY="$MINIRUBY"' -I$(EXTOUT)/common' PREP='miniruby$(EXEEXT)' RUNRUBY='$(MINIRUBY) $(srcdir)/tool/runruby.rb --extout=$(EXTOUT)' XRUBY='$(RUNRUBY)' TEST_RUNNABLE=yes fi AC_SUBST(TEST_RUNNABLE) AC_SUBST(MINIRUBY) AC_SUBST(PREP) AC_SUBST(RUNRUBY) AC_SUBST(XRUBY) AC_SUBST(EXTOUT, [${EXTOUT=.ext}]) FIRSTMAKEFILE="" LIBRUBY_A='lib$(RUBY_SO_NAME)-static.a' LIBRUBY='$(LIBRUBY_A)' LIBRUBYARG_STATIC='-l$(RUBY_SO_NAME)-static' LIBRUBYARG='$(LIBRUBYARG_STATIC)' SOLIBS= AS_CASE(["$target_os"], [cygwin*|mingw*|beos*|haiku*|openstep*|nextstep*|rhapsody*|darwin*|os2-emx*], [ : ${DLDLIBS=""} ], [ DLDLIBS="$DLDLIBS -lc" ]) AC_ARG_WITH(soname, AS_HELP_STRING([--with-soname=SONAME], [base name of shared library]), [RUBY_SO_NAME=$withval], [RUBY_SO_NAME='$(RUBY_BASE_NAME)']) LIBRUBY_LDSHARED=$LDSHARED LIBRUBY_DLDFLAGS=$DLDFLAGS LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR).$(TEENY)' LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so' ENABLE_SHARED=no AC_ARG_ENABLE(shared, AS_HELP_STRING([--enable-shared], [build a shared library for Ruby]), [enable_shared=$enableval]) libprefix='$(libdir)' AS_CASE("$enable_shared", [yes], [ LIBRUBY='$(LIBRUBY_SO)' LIBRUBYARG_SHARED='-l$(RUBY_SO_NAME)' LIBRUBYARG='$(LIBRUBYARG_SHARED)' test -z "$CCDLFLAGS" || CFLAGS="$CFLAGS $CCDLFLAGS" ENABLE_SHARED=yes if test "$rb_cv_binary_elf" = yes; then SOLIBS='$(LIBS)' fi AS_CASE(["$target_os"], [sunos4*], [ LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).so' ], [linux* | gnu* | k*bsd*-gnu | atheos* | kopensolaris*-gnu], [ LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR)' LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).so' ], [freebsd*|dragonfly*], [ SOLIBS='$(LIBS)' LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR)' if test "$rb_cv_binary_elf" != "yes" ; then LIBRUBY_SO="$LIBRUBY_SO.\$(TEENY)" LIBRUBY_ALIASES='' fi ], [netbsd*], [ SOLIBS='$(LIBS)' LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR).$(TEENY)' LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR)' if test "$rb_cv_binary_elf" = yes; then # ELF platforms LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR) lib$(RUBY_SO_NAME).so' else # a.out platforms LIBRUBY_ALIASES="" fi ], [openbsd*], [ SOLIBS='$(LIBS)' LIBRUBY_SO='lib$(RUBY_INSTALL_NAME).so.$(MAJOR).'`expr ${MINOR} \* 10 + ${TEENY}` ], [solaris*], [ SOLIBS='$(LIBS)' LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR)' LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR).$(TEENY) lib$(RUBY_SO_NAME).so' if test "$GCC" = yes; then LIBRUBY_DLDFLAGS="$DLDFLAGS "'-Wl,-h,$(@F)' fi XLDFLAGS="$XLDFLAGS "'-R${libdir}' ], [hpux*], [ XLDFLAGS="$XLDFLAGS "'-Wl,+s,+b,$(libdir)' LIBRUBY_SO='lib$(RUBY_SO_NAME).sl.$(MAJOR).$(MINOR).$(TEENY)' LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).sl.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).sl' ], [aix*], [ LIBRUBY_DLDFLAGS="${linker_flag}-bnoentry $XLDFLAGS" LIBRUBYARG_SHARED='-L${libdir} -l${RUBY_SO_NAME}' SOLIBS='-lm -lc' ], [beos*], [ AS_CASE(["$target_cpu"], [powerpc*], [ LIBRUBY_DLDFLAGS='-f ruby.exp -lnet -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o' ]) ], [darwin*], [ RUBY_SO_NAME="$RUBY_SO_NAME"'.$(MAJOR).$(MINOR).$(TEENY)' LIBRUBY_LDSHARED='$(CC) -dynamiclib' if test "$load_relative" = yes; then libprefix='@executable_path/../lib' fi LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-install_name '${libprefix}'/$(LIBRUBY_SO)' LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-current_version $(MAJOR).$(MINOR).$(TEENY)' LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-compatibility_version $(ruby_version)' LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "' $(XLDFLAGS)' LIBRUBY_SO='lib$(RUBY_SO_NAME).dylib' LIBRUBY_ALIASES='lib$(RUBY_BASE_NAME).$(MAJOR).$(MINOR).dylib lib$(RUBY_INSTALL_NAME).dylib' ], [interix*], [ LIBRUBYARG_SHARED='-L. -L${libdir} -l$(RUBY_SO_NAME)' ]) ], [ LIBRUBYARG_SHARED= ]) if test "$enable_rpath" = yes; then LIBRUBY_RPATHFLAGS="${linker_flag}-R ${linker_flag}${libprefix} -L\$(libdir)" LIBRUBYARG_SHARED="$LIBRUBY_RPATHFLAGS $LIBRUBYARG_SHARED" LIBRUBYARG_STATIC="$LIBRUBY_RPATHFLAGS $LIBRUBYARG_STATIC" fi LDFLAGS="-L. $LDFLAGS" AC_SUBST(ARCHFILE) if test "$EXEEXT" = .exe; then EXECUTABLE_EXTS='".exe",".com",".cmd",".bat"' AC_DEFINE_UNQUOTED(EXECUTABLE_EXTS, $EXECUTABLE_EXTS) EXECUTABLE_EXTS=`echo $EXECUTABLE_EXTS | tr -d '"' | tr , ' '` AC_SUBST(EXECUTABLE_EXTS) fi dnl } dnl build section { dnl build rdoc index if requested RDOCTARGET="" AC_ARG_ENABLE(install-doc, AS_HELP_STRING([--disable-install-doc], [do not install rdoc indexes during install]), [install_doc=$enableval], [install_doc=yes]) if test "$install_doc" != no; then RDOCTARGET="rdoc" else RDOCTARGET="nodoc" CAPITARGET="nodoc" fi AC_SUBST(RDOCTARGET) AS_CASE(["$RDOCTARGET:$CAPITARGET"],[nodoc:nodoc],[INSTALLDOC=nodoc],[INSTALLDOC=all]) AC_SUBST(INSTALLDOC) if test "$rb_with_pthread" = "yes"; then THREAD_MODEL=pthread fi MINIDLNOBJ=dmydln.o AS_CASE(["$target_os"], [linux*], [ ], [netbsd*], [ RUBY_APPEND_OPTION(CFLAGS, -pipe) ], [nextstep*|openstep*], [ RUBY_APPEND_OPTION(CPPFLAGS, -I/usr/local/include) ], [rhapsody*], [ RUBY_APPEND_OPTIONS(CFLAGS, -pipe -no-precomp) ], [darwin*], [ RUBY_APPEND_OPTION(CFLAGS, -pipe) ], [human*], [ AC_LIBOBJ([x68.o]) CFLAGS="$CFLAGS -fansi-only" XCFLAGS="$XCFLAGS -cc1-stack=262144 -cpp-stack=2694144" EXEEXT=.x OBJEXT=o ], [os2-emx], [ AC_LIBOBJ([os2]) CFLAGS="$CFLAGS -DOS2" LIBRUBY_A=`echo $LIBRUBY_A | sed 's/^lib//'` LIBRUBY_SO=`echo $LIBRUBY_SO | sed 's/^lib//'` LIBRUBY_ALIASES=`for i in $LIBRUBY_ALIASES; do echo "$i"; done | sed 's/^lib//'` ], [osf*], [ if test "$GCC" != "yes" ; then # compile something small: taint.c is fine for this. # the main point is the '-v' flag of 'cc'. AS_CASE(["`cc -v -I. -c main.c -o /tmp/main.o 2>&1`"], [*/gemc_cc*], [ # we have the new DEC GEM CC CFLAGS="$CFLAGS -oldc" ], [ # we have the old MIPS CC ]) # cleanup rm -f /tmp/main.o CFLAGS="$CFLAGS -std" fi ], [beos*], [ AS_CASE(["$target_cpu"],[powerpc*], [CFLAGS="$CFLAGS -relax_pointers"]) CPPFLAGS="$CPPFLAGS -I/boot/home/config/include" ], [cygwin*|mingw*], [ RUBY_SO_NAME="${RUBY_SO_NAME}${MAJOR}${MINOR}${TEENY}" LIBRUBY_DLDFLAGS="${DLDFLAGS}"' -Wl,--out-implib=$(LIBRUBY)' AS_CASE(["$target_os"], [cygwin*], [ if test x"$enable_shared" = xyes; then LIBRUBY_SO='cyg$(RUBY_SO_NAME)'.dll LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' $(RUBYDEF)' fi ], [mingw*], [ RUBY_SO_NAME="${rb_cv_msvcrt}-${RUBY_SO_NAME}" if test x"$enable_shared" = xyes; then LIBRUBY_SO='$(RUBY_SO_NAME)'.dll LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' $(RUBYDEF)' fi EXPORT_PREFIX=' ' DLDFLAGS="${DLDFLAGS}"' $(DEFFILE)' AC_LIBOBJ([win32]) COMMON_LIBS=m # COMMON_MACROS="WIN32_LEAN_AND_MEAN=" COMMON_HEADERS="winsock2.h windows.h" THREAD_MODEL=win32 ]) LIBRUBY_ALIASES='' FIRSTMAKEFILE=GNUmakefile:cygwin/GNUmakefile.in SOLIBS='$(LIBS)' if test x"$enable_shared" = xyes; then LIBRUBY='lib$(RUBY_SO_NAME).dll.a' else LIBRUBY_SO=dummy LIBRUBY='lib$(RUBY_SO_NAME).a' LIBRUBYARG='-l$(RUBY_SO_NAME)' fi ], [hpux*], [ AS_CASE(["$YACC"],[*yacc*], [ XCFLAGS="$XCFLAGS -DYYMAXDEPTH=300" YACC="$YACC -Nl40000 -Nm40000" ])], [*msdosdjgpp*], [ FIRSTMAKEFILE=GNUmakefile:djgpp/GNUmakefile.in ]) MINIOBJS="$MINIDLNOBJ" AS_CASE(["$THREAD_MODEL"], [pthread], [AC_CHECK_HEADERS(pthread.h)], [win32], [], [""], [AC_MSG_ERROR(thread model is missing)], [AC_MSG_ERROR(unknown thread model $THREAD_MODEL)]) AC_ARG_ENABLE(debug-env, AS_HELP_STRING([--enable-debug-env], [enable RUBY_DEBUG environment variable]), [AC_DEFINE(RUBY_DEBUG_ENV)]) AS_CASE(["$FIRSTMAKEFILE"], [*GNUmakefile:*], [gnumake=yes], [ AC_MSG_CHECKING([for if ${MAKE-make} is GNU make]) mkdir conftest.dir echo "all:; @echo yes" > conftest.dir/GNUmakefile echo "all:; @echo no" > conftest.dir/Makefile gnumake=`(cd conftest.dir; ${MAKE-make})` rm -fr conftest.dir AS_CASE(["$gnumake"], [*yes*], [ echo "include Makefile" > GNUmakefile echo "-include uncommon.mk" >> GNUmakefile gnumake=yes], [ gnumake=no]) AC_MSG_RESULT($gnumake) ]) if test "${universal_binary-no}" = yes ; then AC_CACHE_CHECK([for architecture macros], rb_cv_architecture_macros, [ mv confdefs.h confdefs1.h : > confdefs.h AC_TRY_COMPILE([@%:@if defined __`echo ${universal_archnames} | sed 's/=[^ ]*//g;s/ /__ || defined __/g'`__ @%:@else @%:@error >>>>>><<<<<< @%:@endif], [], [ rb_cv_architecture_macros=yes mv -f confdefs1.h confdefs.h ], [ rb_cv_architecture_macros=no archflagpat=`eval echo '"'"${ARCH_FLAG}"'"' | sed 's/[[][|.*]]/\\&/g'` new_cflags=`echo "$CFLAGS" | sed "s|$archflagpat"'||'` for archs in ${universal_archnames}; do cpu=${archs#*=} archs=${archs%=*} CFLAGS="$new_cflags -arch $archs" archs="__${archs}__" AC_MSG_CHECKING([for macro ${archs} on ${cpu}]) AC_TRY_COMPILE([@%:@ifndef ${archs} @%:@error @%:@endif], [], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])]) done mv -f confdefs1.h confdefs.h AC_MSG_ERROR([failed]) ])]) fi CPPFLAGS="$CPPFLAGS "'$(DEFS)' test -z "$CPPFLAGS" || CPPFLAGS="$CPPFLAGS "; CPPFLAGS="$CPPFLAGS"'${cppflags}' if test -n "${cflags+set}"; then cflagspat=`eval echo '"'"${cflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/^ *$/ /'` CFLAGS=`echo " $CFLAGS " | sed "s|$cflagspat"'|${cflags}|;s/^ *//;s/ *$//'` fi if test -n "${cxxflags+set}"; then cxxflagspat=`eval echo '"'"${cxxflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/^ *$/ /'` CXXFLAGS=`echo " $CXXFLAGS " | sed "s|$cxxflagspat"'|${cxxflags}|;s/^ *//;s/ *$//'` fi if test "${ARCH_FLAG}"; then archflagpat=`eval echo '"'"${ARCH_FLAG}"'"' | sed 's/[[][|.*]]/\\&/g'` CFLAGS=`echo "$CFLAGS" | sed "s|$archflagpat"'|$(ARCH_FLAG)|'` CXXFLAGS=`echo "$CXXFLAGS" | sed "s|$archflagpat"'|$(ARCH_FLAG)|'` LDFLAGS=`echo "$LDFLAGS" | sed "s|$archflagpat"'|$(ARCH_FLAG)|'` fi AC_SUBST(cppflags, [])dnl AC_SUBST(cflags, ["$orig_cflags "'${optflags} ${debugflags} ${warnflags}'])dnl AC_SUBST(cxxflags, ["$orig_cxxflags "'${optflags} ${debugflags} ${warnflags}'])dnl AC_SUBST(optflags)dnl AC_SUBST(debugflags)dnl AC_SUBST(warnflags)dnl AC_SUBST(XCFLAGS)dnl AC_SUBST(XLDFLAGS)dnl AC_SUBST(LIBRUBY_LDSHARED) AC_SUBST(LIBRUBY_DLDFLAGS) AC_SUBST(RUBY_INSTALL_NAME) AC_SUBST(rubyw_install_name) AC_SUBST(RUBYW_INSTALL_NAME) AC_SUBST(RUBY_SO_NAME) AC_SUBST(LIBRUBY_A) AC_SUBST(LIBRUBY_SO) AC_SUBST(LIBRUBY_ALIASES) AC_SUBST(LIBRUBY) AC_SUBST(LIBRUBYARG) AC_SUBST(LIBRUBYARG_STATIC) AC_SUBST(LIBRUBYARG_SHARED) AC_SUBST(SOLIBS) AC_SUBST(DLDLIBS) AC_SUBST(ENABLE_SHARED) AC_SUBST(MAINLIBS) AC_SUBST(COMMON_LIBS) AC_SUBST(COMMON_MACROS) AC_SUBST(COMMON_HEADERS) AC_SUBST(EXPORT_PREFIX) AC_SUBST(MINIOBJS) AC_SUBST(THREAD_MODEL) MAKEFILES="Makefile `echo $FIRSTMAKEFILE | sed 's/:.*//'`" MAKEFILES="`echo $MAKEFILES`" AC_SUBST(MAKEFILES) ri_prefix= test "$program_prefix" != NONE && ri_prefix=$program_prefix ri_suffix= test "$program_suffix" != NONE && ri_suffix=$program_suffix RUBY_INSTALL_NAME="${ri_prefix}"'$(RUBY_BASE_NAME)'"${ri_suffix}" AS_CASE(["$target_os"], [cygwin*|mingw*], [ RUBYW_INSTALL_NAME="${ri_prefix}"'$(RUBYW_BASE_NAME)'"${ri_suffix}" rubyw_install_name='$(RUBYW_INSTALL_NAME)' ]) rubylibprefix='${libdir}/${RUBY_BASE_NAME}' AC_ARG_WITH(rubylibprefix, AS_HELP_STRING([--with-rubylibprefix=DIR], [prefix for ruby libraries [[LIBDIR/RUBY_BASE_NAME]]]), [rubylibprefix=$withval]) RUBY_LIB_PREFIX=`eval echo \\"${rubylibprefix}\\"` AC_SUBST(rubylibprefix) RI_BASE_NAME=`echo ${RUBY_BASE_NAME} | sed 's/ruby/ri/'` ridir='${datarootdir}/${RI_BASE_NAME}' AC_ARG_WITH(ridir, AS_HELP_STRING([--with-ridir=DIR], [ri documentation [[DATAROOTDIR/ri]]]), [ridir=$withval]) RIDIR=`eval echo \\"${ridir}\\"` AC_SUBST(ridir) AC_SUBST(RI_BASE_NAME) AC_ARG_WITH(ruby-version, AS_HELP_STRING([--with-ruby-version=STR], [ruby version string for version specific directories [[full]] (full|minor|STR)]), [ruby_version=$withval], [ruby_version=full]) unset RUBY_LIB_VERSION unset RUBY_LIB_VERSION_STYLE AS_CASE(["$ruby_version"], [full], [RUBY_LIB_VERSION_STYLE='3 /* full */'], [minor], [RUBY_LIB_VERSION_STYLE='2 /* minor */']) if test ${RUBY_LIB_VERSION_STYLE+set}; then { echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE" echo '#define STRINGIZE(x) x' test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0' echo '#include "version.h"' echo 'ruby_version=RUBY_LIB_VERSION' } > conftest.c ruby_version="`$CPP -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`" eval $ruby_version else RUBY_LIB_VERSION="\"${ruby_version}\"" fi AC_ARG_WITH(sitedir, AS_HELP_STRING([--with-sitedir=DIR], [site libraries in DIR [[RUBY_LIB_PREFIX/site_ruby]]]), [sitedir=$withval], [sitedir='${rubylibprefix}/site_ruby']) dir="${sitedir}" until SITE_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${SITE_DIR}"; do dir="${SITE_DIR}" done AC_ARG_WITH(vendordir, AS_HELP_STRING([--with-vendordir=DIR], [vendor libraries in DIR [[RUBY_LIB_PREFIX/vendor_ruby]]]), [vendordir=$withval], [vendordir='${rubylibprefix}/vendor_ruby']) dir="${vendordir}" until VENDOR_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${VENDOR_DIR}"; do dir="${VENDOR_DIR}" done if test "${LOAD_RELATIVE+set}"; then AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) RUBY_EXEC_PREFIX="" RUBY_LIB_PREFIX="`eval echo "$RUBY_LIB_PREFIX" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`" RUBY_SITE_LIB_PATH="`eval echo "$SITE_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`" RUBY_VENDOR_LIB_PATH="`eval echo "$VENDOR_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`" else RUBY_EXEC_PREFIX="`eval echo \\"$exec_prefix/\\" | sed 's|^NONE/|'"$prefix"'/|;s|/$||'`" RUBY_LIB_PREFIX="`eval echo \\"$RUBY_LIB_PREFIX\\" | sed 's|^NONE/|'"$prefix"'/|'`" RUBY_SITE_LIB_PATH="`eval echo \\"$SITE_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`" RUBY_VENDOR_LIB_PATH="`eval echo \\"$VENDOR_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`" fi pat=`echo "$RUBY_LIB_PREFIX/" | tr -c '\012' .`'\(.*\)' AS_CASE(["$RUBY_SITE_LIB_PATH"], ["$RUBY_LIB_PREFIX/"*], [ RUBY_SITE_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_SITE_LIB_PATH\" : \"$pat\"`"'"' ], [ RUBY_SITE_LIB_PATH="\"${RUBY_SITE_LIB_PATH}\"" ]) AS_CASE(["$RUBY_VENDOR_LIB_PATH"], ["$RUBY_LIB_PREFIX/"*], [ RUBY_VENDOR_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_VENDOR_LIB_PATH\" : \"$pat\"`"'"' ], [ RUBY_VENDOR_LIB_PATH="\"${RUBY_VENDOR_LIB_PATH}\"" ]) pat=`echo "$RUBY_EXEC_PREFIX/" | tr -c '\012' .`'\(.*\)' AS_CASE(["$RUBY_LIB_PREFIX"], ["$RUBY_EXEC_PREFIX/"*], [ RUBY_LIB_PREFIX='RUBY_EXEC_PREFIX"/'"`expr \"$RUBY_LIB_PREFIX\" : \"$pat\"`"'"' ], [ RUBY_LIB_PREFIX="\"${RUBY_LIB_PREFIX}\"" ]) if test ${RUBY_LIB_VERSION_STYLE+set}; then AC_DEFINE_UNQUOTED(RUBY_LIB_VERSION_STYLE, $RUBY_LIB_VERSION_STYLE) else AC_DEFINE_UNQUOTED(RUBY_LIB_VERSION, [$RUBY_LIB_VERSION]) fi AC_DEFINE_UNQUOTED(RUBY_EXEC_PREFIX, "${RUBY_EXEC_PREFIX}") AC_DEFINE_UNQUOTED(RUBY_LIB_PREFIX, ${RUBY_LIB_PREFIX}) AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, ${RUBY_SITE_LIB_PATH}) AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB, ${RUBY_VENDOR_LIB_PATH}) AC_SUBST(arch)dnl AC_SUBST(sitearch)dnl AC_SUBST(ruby_version)dnl AC_SUBST(sitedir)dnl AC_SUBST(vendordir)dnl configure_args=$ac_configure_args AC_SUBST(configure_args)dnl if test "${universal_binary-no}" = yes ; then arch="universal-${target_os}" AC_CACHE_CHECK(whether __ARCHITECTURE__ is available, rb_cv_architecture_available, AC_TRY_COMPILE([const char arch[] = __ARCHITECTURE__;], [puts(arch);], [rb_cv_architecture_available=yes], [rb_cv_architecture_available=no])) if test "${rb_cv_architecture_available}" = yes; then AC_DEFINE_UNQUOTED(RUBY_PLATFORM_CPU, __ARCHITECTURE__) else for archs in ${universal_archnames}; do cpu=`echo $archs | sed 's/.*=//'` archs=`echo $archs | sed 's/=.*//'` RUBY_DEFINE_IF([defined __${archs}__], RUBY_PLATFORM_CPU, ["${cpu}"]) done fi ints='long int' test "$ac_cv_type_long_long" = yes && ints="'long long' $ints" AC_SUBST(UNIVERSAL_ARCHNAMES, "${universal_archnames}") AC_SUBST(UNIVERSAL_INTS, "${ints}") AC_DEFINE_UNQUOTED(RUBY_PLATFORM_OS, "${target_os}") AC_DEFINE_UNQUOTED(RUBY_ARCH, "universal-"RUBY_PLATFORM_OS) AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "universal."RUBY_PLATFORM_CPU"-"RUBY_PLATFORM_OS) else arch="${target_cpu}-${target_os}" AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "${arch}") fi unset sitearch AS_CASE(["$target_os"],[mingw*],[sitearch="$target_cpu-$rb_cv_msvcrt"]) test ${sitearch+set} && AC_DEFINE_UNQUOTED(RUBY_SITEARCH, "${sitearch}") AC_ARG_WITH(search-path, AS_HELP_STRING([--with-search-path=DIR], [specify the additional search path]), [search_path=$withval]) if test "$search_path" != ""; then AC_DEFINE_UNQUOTED(RUBY_SEARCH_PATH,"$search_path") fi AC_ARG_WITH(rubyhdrdir, AS_HELP_STRING([--with-rubyhdrdir=DIR], [core headers in DIR [[INCLUDEDIR/RUBY_BASE_NAME-RUBY_VERSION]]]), [rubyhdrdir=$withval], [rubyhdrdir='${includedir}/${RUBY_BASE_NAME}-${ruby_version}']) AC_ARG_WITH(sitehdrdir, AS_HELP_STRING([--with-sitehdrdir=DIR], [core site headers in DIR [[RUBYHDRDIR/site_ruby]]]), [sitehdrdir=$withval], [sitehdrdir='${rubyhdrdir}/site_ruby']) AC_ARG_WITH(vendorhdrdir, AS_HELP_STRING([--with-vendorhdrdir=DIR], [core vendor headers in DIR [[RUBYHDRDIR/vendor_ruby]]]), [vendorhdrdir=$withval], [vendorhdrdir='${rubyhdrdir}/vendor_ruby']) AC_SUBST(rubyhdrdir)dnl AC_SUBST(sitehdrdir)dnl AC_SUBST(vendorhdrdir)dnl AC_ARG_WITH(opt-dir, AS_HELP_STRING([--with-opt-dir=DIR], [add optional headers and libraries DIR])) AC_ARG_WITH(mantype, AS_HELP_STRING([--with-mantype=TYPE], [specify man page type; TYPE is one of man and doc]), [ AS_CASE(["$withval"], [man|doc], [MANTYPE=$withval], [AC_MSG_ERROR(invalid man type: $withval)]) ]) if test -z "$MANTYPE"; then AC_PATH_PROGS(NROFF, nroff awf, /bin/false, "/usr/bin:/usr/ucb") if ${NROFF} -mdoc ${srcdir}/man/ruby.1 >/dev/null 2>&1; then MANTYPE=doc else MANTYPE=man fi fi AC_SUBST(MANTYPE) arch_hdrdir="${EXTOUT}/include/${arch}/ruby" AS_MKDIR_P("${arch_hdrdir}") config_h="${arch_hdrdir}/config.h" guard=INCLUDE_RUBY_CONFIG_H { echo "#ifndef $guard" echo "#define $guard 1" grep -v "^#define PACKAGE_" confdefs.h echo "#endif /* $guard */" } | tr -d '\015' | ${srcdir}/tool/ifchange "${config_h}" - tr -d '\015' < largefile.h > confdefs.h rm largefile.h BUILTIN_ENCS=["`sed -n -e '/^BUILTIN_ENCS[ ]*=/{' \ -e s/// -e :l -e '/\\\\$/N' -e 's/\\\\\\n/ /' -e 't l' -e p \ -e '}' "${srcdir}/enc/Makefile.in"`"] BUILTIN_ENCOBJS= for e in $BUILTIN_ENCS; do BUILTIN_ENCOBJS="$BUILTIN_ENCOBJS `basename $e .c`"'.$(OBJEXT)'; done AC_SUBST(BUILTIN_ENCOBJS) BUILTIN_TRANSES=["`sed -n -e '/^BUILTIN_TRANSES[ ]*=/{' \ -e s/// -e :l -e '/\\\\$/N' -e 's/\\\\\\n/ /' -e 't l' -e p \ -e '}' "${srcdir}/enc/Makefile.in"`"] BUILTIN_TRANSSRCS= BUILTIN_TRANSOBJS= for e in $BUILTIN_TRANSES; do BUILTIN_TRANSSRCS="$BUILTIN_TRANSSRCS `basename $e .trans`"'.c'; BUILTIN_TRANSOBJS="$BUILTIN_TRANSOBJS `basename $e .trans`"'.$(OBJEXT)'; done AC_SUBST(BUILTIN_TRANSSRCS) AC_SUBST(BUILTIN_TRANSOBJS) PACKAGE=$RUBY_BASE_NAME AC_SUBST(PACKAGE) AC_MSG_RESULT($PACKAGE library version = $ruby_version) AS_CASE([" $CPP "], [*" $CC "*], [CPP=`echo " $CPP " | sed "s| $CC |"' $(CC) |;s/^ *//;s/ *$//'`]) AC_CONFIG_FILES($FIRSTMAKEFILE) AC_CONFIG_FILES(Makefile, [{ if test -d "$srcdir/.svn"; then VCS='svn' VCSUP='$(VCS) up $(SVNUPOPTIONS)' elif test -d "$srcdir/.git/svn"; then VCS='git svn' VCSUP='$(VCS) rebase $(GITSVNREBASEOPTIONS)' elif test -d "$srcdir/.git"; then VCS='git' VCSUP='$(VCS) pull $(GITPULLOPTIONS)' else VCS='echo cannot' VCSUP='$(VCS)' fi sed '/^MISSING/s/\$U\././g;/^VCS *=/s#@VCS@#'"$VCS"'#;/^VCSUP *=/s#@VCSUP@#'"$VCSUP"'#' Makefile echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)' if test "$gnumake" != yes; then echo ['$(MKFILES): $(srcdir)/common.mk'] sed ['s/{\$([^(){}]*)[^{}]*}//g'] ${srcdir}/common.mk else echo 'distclean-local::; @$(RM) GNUmakefile uncommon.mk' fi } > confmk$$.tmp && mv -f confmk$$.tmp Makefile && ${MAKE-make} info-program | grep '^PROGRAM=ruby$' > /dev/null || echo 'ruby: $(PROGRAM);' >> Makefile], [EXEEXT='$EXEEXT' gnumake='$gnumake']) AC_OUTPUT dnl } dnl }