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))]) AC_DEFUN([when], dnl [(] makes parentheses balanced. dnl note that spaces after comma need to be quoted. [[$*]][)]) dnl environment section { AC_ARG_WITH(baseruby, AS_HELP_STRING([--with-baseruby=RUBY], [ use RUBY as baseruby; RUBY is the pathname of ruby]), [ case "$withval" in when(*ruby*) BASERUBY=$withval ;; when(*) AC_MSG_ERROR(need ruby) ;; esac ], [ 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], [case "$host_os" in when(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" ;; esac]) 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_VERSION_\([A-Z][A-Z_0-9]*\) \([0-9][0-9]*\)/\1=\2/p' $srcdir/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]), [ case $withval in when(no) : ${CC=cc} ;; when(yes) : ${CC=gcc} ;; when(*) CC=$withval ;; esac]) 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 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], [case " [$]{$1-} " in # RUBY_APPEND_OPTION($1, $2) when(*' $2 '*);; when(' ') $1="$2";; when(*) $1="[$]$1 $2";; esac]) AC_DEFUN([RUBY_APPEND_OPTIONS], [{ for rb_opt in $2; do # RUBY_APPEND_OPTIONS($1, $2) case " [$]{$1-} " in when(*" [$]{rb_opt} "*);; when(' ') $1="[$]{rb_opt}";; when(*) $1="[$]$1 [$]{rb_opt}";; esac done; }]) AC_DEFUN([RUBY_PREPEND_OPTION], [case " [$]{$1-} " in # RUBY_PREPEND_OPTION($1, $2) when(*' $2 '*);; when(' ') $1="$2";; when(*) $1="$2 [$]$1";; esac]) AC_DEFUN([RUBY_PREPEND_OPTIONS], [{ unset rb_opts; for rb_opt in $2; do # RUBY_PREPEND_OPTIONS($1, $2) case " [$]{rb_opts} [$]{$1-} " in when(*" [$]{rb_opt} "*);; when(' ') $1="[$]{rb_opt}";; when(*) rb_opts="[$]{rb_opts}[$]{rb_opt} ";; esac 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_UNIVERSAL_ARCH], [ test ${CFLAGS+set} && CFLAGS=`echo "$CFLAGS" | sed 's/ *-arch *[^ ]*//g'` test ${LDFLAGS+set} && LDFLAGS=`echo "$LDFLAGS" | sed 's/ *-arch *[^ ]*//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 case ",$universal_binary," in when(*",$archs,"*) ;; when(*) 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" ;; esac done target_archs="$universal_binary" unset universal_binary case "$target_archs" in when(*,*) universal_binary=yes;; when(*) unset universal_archnames;; esac AC_MSG_RESULT([$target_archs]) if test "${universal_binary-no}" = yes; then RUBY_PREREQ_AC(2.63, [ to compile universal binary]) AC_SUBST(try_header,try_compile) target=`echo $target | sed "s/^$target_cpu-/universal-/"` target_alias=`echo $target_alias | sed "s/^$target_cpu-/universal-/"` target_cpu=universal real_cross_compiling=$cross_compiling else target=`echo $target | sed "s/^$target_cpu-/${target_archs}-/"` target_alias=`echo $target_alias | sed "s/^$target_cpu-/${target_archs}-/"` target_cpu=${target_archs} fi CFLAGS="$CFLAGS ${ARCH_FLAG}" LDFLAGS="${LDFLAGS+$LDFLAGS }${ARCH_FLAG}" else if test x"$target_alias" = x; then case "$target_os" in when(darwin*) AC_MSG_CHECKING([for real 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]) esac : ${enable_shared=yes} ;; when(aix*) AC_CHECK_TOOL(NM, nm, /usr/ccs/bin/nm, /usr/ccs/bin:$PATH) ;; when(hiuxmpp*) # by TOYODA Eizi AC_DEFINE(__HIUX_MPP__) ;; esac 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']) AC_SUBST(RMDIRS, ['$(top_srcdir)/tool/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 { if test "$GCC:${warnflags+set}:no" = yes::no; then save_CFLAGS="$CFLAGS" for wflag in -Wall -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings \ -Wno-missing-field-initializers -Wshorten-64-to-32; do CFLAGS="$CFLAGS $wflag" AC_MSG_CHECKING([whether $wflag is accepted]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [warnflags="${warnflags+$warnflags }$wflag" AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)]) done CFLAGS="$save_CFLAGS" unset save_CFLAGS 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 case "$target_os" in when(mingw*) ac_cv_type_off_t=yes ac_cv_sizeof_off_t=8 ;; esac 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 when([SIZEOF_*]);; when(*)]) 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 case "$t" in when([[0-9]*|SIZEOF_*]) ${cond+echo "@%:@else"} echo "[@%:@define ]AS_TR_CPP(SIZEOF_$1) [$t]" break ;; when([*]) 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 ;; esac 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= case "$n " in when(*" signed "*) ;; when(*" unsigned "*) u=U;; when(*) AC_COMPILE_IFELSE( [AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT([$4])], [($n)-1 > 0])], [u=U]);; esac 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 case " $n " in when(*" long long "*) t=LL;; when(*" long "*) t=LONG;; when(*) t=INT;; esac 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 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 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 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 "${rb_c_werror_flag+set}"; then ac_c_werror_flag="$rb_c_werror_flag" else unset ac_c_werror_flag fi ]) 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 RUBY_EXTERN], rb_cv_ruby_extern, [rb_cv_ruby_extern=no for mac in "__attribute__((dllimport))" "__declspec(dllimport)"; do AC_TRY_COMPILE( [extern $mac void conftest(void);], [rb_cv_ruby_extern="extern $mac"; break]) done]) test "x$rb_cv_ruby_extern" = xno || AC_DEFINE_UNQUOTED(RUBY_EXTERN, $rb_cv_ruby_extern) 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]), [case "$enableval" in when(yes|no) enable_win95=$enableval;; when(*) unset enable_win95;; esac]) case "$target_os" in when(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 ;; when(mingw*) enable_pthread=no ;; when(*) enable_pthread=yes ;; esac AC_ARG_ENABLE(pthread, AS_HELP_STRING([--enable-pthread], [obsolete, and ignored])) dnl Checks for libraries. case "$target_os" in when(*bsd*|dragonfly*) ;; when(*) ac_cv_func_daemon=no ;; esac case "$target_os" in when(solaris*) AC_DEFINE(SIZEOF_STRUCT_DIRENT_TOO_SMALL, 1) LIBS="-lm $LIBS" ;; when(nextstep*) ;; when(openstep*) ;; when(rhapsody*) ;; when(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 ;; when(hpux*) LIBS="-lm $LIBS" ac_cv_c_inline=no;; when(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 ;; when(beos*|haiku*) ac_cv_func_link=no ac_cv_func_sched_yield=no ac_cv_func_pthread_attr_setinheritsched=no case "$target_os" in when(beos*) ac_cv_header_net_socket_h=yes;; when(haiku*) ac_cv_func_shutdown=no;; esac LIBS="$LIBS" # m lib is include in root under BeOS/Haiku ;; when(cygwin*) ac_cv_header_langinfo_h=yes AC_LIBOBJ([langinfo]) ;; when(mingw*) LIBS="-lshell32 -lws2_32 $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 AC_LIBOBJ([langinfo]) : ${enable_win95=maybe} ;; when(os2-emx*) LIBS="-lm $LIBS" ac_cv_lib_dir_opendir=no;; when(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 ;; when(bsdi*) LIBS="-lm $LIBS" AC_DEFINE(BROKEN_SETREUID, 1) AC_DEFINE(BROKEN_SETREGID, 1) ac_cv_sizeof_rlim_t=8;; when(freebsd*) LIBS="-lm $LIBS" ;; when(dragonfly*) LIBS="-lm $LIBS" ;; when(bow) ac_cv_func_setitimer=no ;; when(superux*) ac_cv_func_setitimer=no ;; when(*) LIBS="-lm $LIBS";; esac 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 case "$target_cpu" in when(alpha*) case "$target_os"::"$GCC" in when(*::yes) CFLAGS="-mieee $CFLAGS" ;; # gcc when(osf*) CFLAGS="-ieee $CFLAGS" ;; # ccc esac ;; esac 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_TYPE(fd_mask, [AC_DEFINE(HAVE_RB_FD_INIT, 1)]) 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], [case m4_bmatch([$2], [^[1-9][0-9]*$], $2, [$ac_cv_sizeof_]AS_TR_SH($2)) in when("1") rb_cv_type_$1="m4_if([$3], [], [signed ], [$3 ])char";; when("$ac_cv_sizeof_short") rb_cv_type_$1="m4_if([$3], [], [], [$3 ])short";; when("$ac_cv_sizeof_int") rb_cv_type_$1="m4_if([$3], [], [], [$3 ])int";; when("$ac_cv_sizeof_long") rb_cv_type_$1="m4_if([$3], [], [], [$3 ])long";; when("$ac_cv_sizeof_long_long") rb_cv_type_$1="m4_if([$3], [], [], [$3 ])long long";; when("$ac_cv_sizeof___int64") rb_cv_type_$1="m4_if([$3], [], [], [$3 ])__int64";; when(*) rb_cv_type_$1=no;; esac])]) 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 case "${target_cpu}-${target_os}:${target_archs}" in when(powerpc-darwin*) AC_LIBSOURCES(alloca.c) AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.${ac_objext}]) AC_DEFINE(C_ALLOCA) AC_DEFINE_UNQUOTED(alloca, alloca) ;; when(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) ;; when(*) AC_FUNC_ALLOCA ;; esac 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)]) case $rb_cv_broken_glibc_ia64_erfc in when(yes) ac_cv_func_erf=no;; esac AC_REPLACE_FUNCS(dup2 memmove strerror\ strchr strstr crypt flock vsnprintf\ isnan finite isinf hypot acosh erf tgamma lgamma_r cbrt \ strlcpy strlcat) 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\ 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 group_member\ dlopen sigprocmask sigaction sigsetjmp _setjmp _longjmp snprintf\ setsid telldir seekdir fchmod cosh sinh tanh log2 round signbit\ setuid setgid daemon select_large_fdset setenv unsetenv\ mktime timegm gmtime_r clock_gettime gettimeofday\ pread sendfile shutdown sigaltstack) 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]), [ case $withval in when(__builtin_setjmp) setjmp_prefix=__builtin_;; when(_setjmp) setjmp_prefix=_;; when(sigsetjmp) setjmp_prefix=sig;; when(setjmp) setjmp_prefix=;; when('') unset setjmp_prefix;; when(*) AC_MSG_ERROR(invalid setjmp type: $withval);; esac], [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 case $target_os in when(solaris*|cygwin*) setjmp_prefix=;; when(*) setjmp_prefix=sig;; esac 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 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))>>y) : (x)>>y)) fi AC_MSG_CHECKING(read count field in FILE structures) AC_CACHE_VAL(rb_cv_fcnt, [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, rb_cv_fcnt="not found") done]) if test "$rb_cv_fcnt" = "not found"; then AC_MSG_RESULT([not found(OK if using GNU libc)]) else AC_MSG_RESULT($rb_cv_fcnt) AC_DEFINE_UNQUOTED(FILE_COUNT, $rb_cv_fcnt) fi AC_MSG_CHECKING(read buffer ptr field in FILE structures) AC_CACHE_VAL(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_MSG_RESULT([not found]) else AC_MSG_RESULT($rb_cv_frptr) AC_DEFINE_UNQUOTED(FILE_READPTR, $rb_cv_frptr) if test "$rb_cv_fcnt" = "not found"; then AC_MSG_CHECKING(read buffer end field in FILE structures) AC_CACHE_VAL(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_MSG_RESULT([not found]) else AC_MSG_RESULT($rb_cv_frend) 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 case "$target_cpu" in when(m68*|i?86|ia64|sparc*|alpha*) rb_cv_stack_grow_dir=-1;; when(hppa*) rb_cv_stack_grow_dir=+1;; esac AC_CACHE_CHECK(stack growing direction, rb_cv_stack_grow_dir, [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); } ], rb_cv_stack_grow_dir=-1, rb_cv_stack_grow_dir=+1, rb_cv_stack_grow_dir=0)]) AC_DEFINE_UNQUOTED(STACK_GROW_DIRECTION, $rb_cv_stack_grow_dir) 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) case $pthread_lib in when(c) ;; when(root) ;; when(c_r) MAINLIBS="-pthread $MAINLIBS" ;; when(*) LIBS="-l$pthread_lib $LIBS" ;; esac 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) 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]), [ case $withval in when(yes) if test "$enable_shared" = yes; then AC_MSG_ERROR(dln_a_out can not make shared library) fi with_dln_a_out=yes;; when(*) with_dln_a_out=no;; esac], [with_dln_a_out=no]) AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf, [AC_TRY_LINK([],[], [ case "`head -1 conftest$EXEEXT | cat -e`" in when('^?ELF'*) rb_cv_binary_elf=yes;; when(*) rb_cv_binary_elf=no;; esac], 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 case "$target_os" in when(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;; esac 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 case "$target_os" in when(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);; when(human*|bsdi*|beos*|haiku*|cygwin*|mingw*|aix*|interix*) ;; when(*) RUBY_APPEND_OPTION(CCDLFLAGS, -fPIC);; esac else case "$target_os" in when(hpux*) CCDLFLAGS="$CCDLFLAGS +Z";; when(solaris*|irix*) CCDLFLAGS="$CCDLFLAGS -KPIC" ;; when(sunos*) CCDLFLAGS="$CCDLFLAGS -PIC" ;; when(esix*|uxpds*) CCDLFLAGS="$CCDLFLAGS -KPIC" ;; when(*) : ${CCDLFLAGS=""} ;; esac 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 case "$target_os" in when(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;; when(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;; when(sunos*) : ${LDSHARED='ld -assert nodefinitions'} rb_cv_dlopen=yes;; when(irix*) : ${LDSHARED='ld -shared'} rb_cv_dlopen=yes;; when(sysv4*) : ${LDSHARED='ld -G'} rb_cv_dlopen=yes;; when(nto-qnx*) : ${LDSHARED="qcc -shared"} rb_cv_dlopen=yes ;; when(esix*|uxpds*) : ${LDSHARED="ld -G"} rb_cv_dlopen=yes ;; when(osf*) : ${LDSHARED="ld -shared -expect_unresolved \"*\""} rb_cv_dlopen=yes ;; when(bsdi3*) case "$CC" in when(*shlicc*) : ${LDSHARED="$CC -r"} rb_cv_dlopen=yes ;; esac ;; when(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 ;; when(interix*) : ${LDSHARED="$CC -shared"} XLDFLAGS="$XLDFLAGS -Wl,-E" LIBPATHFLAG=" -L%1\$-s" rb_cv_dlopen=yes ;; when(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 ;; when(openbsd*) : ${LDSHARED="\$(CC) -shared ${CCDLFLAGS}"} if test "$rb_cv_binary_elf" = yes; then LDFLAGS="$LDFLAGS -Wl,-E" fi rb_cv_dlopen=yes ;; when(nextstep*) : ${LDSHARED='cc -r -nostdlib'} LDFLAGS="$LDFLAGS -u libsys_s" rb_cv_dlopen=yes ;; when(openstep*) : ${LDSHARED='cc -dynamic -bundle -undefined suppress'} : ${LDFLAGS=""} rb_cv_dlopen=yes ;; when(rhapsody*) : ${LDSHARED='cc -dynamic -bundle -undefined suppress'} : ${LDFLAGS=""} rb_cv_dlopen=yes ;; when(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 ;; when(aix*) if test "$GCC" = yes; then : ${LDSHARED='$(CC) -shared'} else : ${LDSHARED='$(CC)'} fi 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" rb_cv_dlopen=yes ;; when(human*) : ${DLDFLAGS=''} : ${LDSHARED=''} : ${LDFLAGS=''} : ${LINK_SO='ar cru $@ $(OBJS)'} rb_cv_dlopen=yes ;; when(beos*) case "$target_cpu" in when(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" ;; when(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" ;; esac : ${LIBPATHENV=LIBRARY_PATH} rb_cv_dlopen=yes ;; when(haiku*) case "$target_cpu" in when(powerpc*) : ${LDSHARED="ld -xms"} DLDFLAGS="$DLDFLAGS "'-export Init_$(TARGET) -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o' ;; when(i586*) : ${LDSHARED="ld -shared"} DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -lbe -lroot" ;; esac : ${LIBPATHENV=LIBRARY_PATH} rb_cv_dlopen=yes ;; when(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;; when(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 ;; when(hiuxmpp) : ${LDSHARED='ld -r'} ;; when(atheos*) : ${LDSHARED="$CC -shared"} rb_cv_dlopen=yes ;; when(os2-emx*) LDFLAGS="$LDFLAGS -Zomf" ;; when(*) : ${LDSHARED='ld'} ;; esac AC_MSG_RESULT($rb_cv_dlopen) fi if test "${LDSHAREDXX}" = ""; then case "${LDSHARED}" in when(*'$(CC)'*) LDSHAREDXX=`echo "${LDSHARED}" | sed 's/\$(CC)/$(CXX)/'` ;; when(*'${CC}'*) LDSHAREDXX=`echo "${LDSHARED}" | sed 's/\${CC}/${CXX}/'` ;; when(*$CC*) LDSHAREDXX=`echo "${LDSHARED}" | sed "s|$CC|$CXX|"` ;; when(ld" "*) ;; esac fi case ${RPATHFLAG} in when(*'%1$'*) : ${LIBPATHFLAG=' -L%1$-s'};; when(*) : ${LIBPATHFLAG=' -L%s'};; esac 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 case "$target_os" in when(hpux*) DLEXT=sl;; when(nextstep*|openstep*|rhapsody*|darwin*) RUBY_APPEND_OPTION(XLDFLAGS, [-Wl,-u,_objc_msgSend]) DLEXT=bundle;; when(os2-emx*) LOAD_RELATIVE=1 DLEXT=dll;; when(cygwin*|mingw*|*djgpp*) LOAD_RELATIVE=1 DLEXT=so;; when(*) DLEXT=so;; esac 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 case "$target_os" in when(linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu) STRIP='strip -S -x';; when(nextstep* | openstep* | rhapsody* | darwin*) STRIP='strip -A -n';; esac EXTSTATIC= AC_SUBST(EXTSTATIC)dnl AC_ARG_WITH(static-linked-ext, AS_HELP_STRING([--with-static-linked-ext], [link external modules statically]), [case $withval in when(yes) STATIC= EXTSTATIC=static;; when(*) ;; esac]) case "$target_os" in when(human*) setup=Setup.x68 ;; dnl OS/2 environment w/ Autoconf 2.1x for EMX when(os2-emx) setup=Setup.emx ;; when(*djgpp*) setup=Setup.dj ;; when(*) setup=Setup ;; esac 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-ruby} -I`pwd` "-r'$(arch)-fake' PREP='$(arch)-fake.rb' RUNRUBY='$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`' TEST_RUNNABLE=no else MINIRUBY='./miniruby$(EXEEXT) -I$(srcdir)/lib' MINIRUBY="$MINIRUBY"' -I$(EXTOUT)/common -I./- -r$(srcdir)/ext/purelib.rb' PREP='miniruby$(EXEEXT)' RUNRUBY='$(MINIRUBY) $(srcdir)/tool/runruby.rb --extout=$(EXTOUT)' TEST_RUNNABLE=yes fi AC_SUBST(TEST_RUNNABLE) AC_SUBST(MINIRUBY) AC_SUBST(PREP) AC_SUBST(RUNRUBY) 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= case "$target_os" in when(cygwin*|mingw*|beos*|haiku*|openstep*|nextstep*|rhapsody*|darwin*|os2-emx*) : ${DLDLIBS=""} ;; when(*) DLDLIBS="$DLDLIBS -lc" ;; esac 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]) LIBRUBYARG_SHARED='-l$(RUBY_SO_NAME)' if test "$enable_shared" = 'yes'; then LIBRUBY='$(LIBRUBY_SO)' LIBRUBYARG='$(LIBRUBYARG_SHARED)' test -z "$CCDLFLAGS" || CFLAGS="$CFLAGS $CCDLFLAGS" ENABLE_SHARED=yes if test "$rb_cv_binary_elf" = yes; then SOLIBS='$(LIBS)' fi case "$target_os" in when(sunos4*) LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).so' ;; when(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' ;; when(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 ;; when(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 ;; when(openbsd*) SOLIBS='$(LIBS)' LIBRUBY_SO='lib$(RUBY_INSTALL_NAME).so.$(MAJOR).'`expr ${MINOR} \* 10 + ${TEENY}` ;; when(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}' ;; when(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' ;; when(aix*) LIBRUBY_DLDFLAGS="${linker_flag}-bnoentry $XLDFLAGS" LIBRUBYARG_SHARED='-L${libdir} -l${RUBY_SO_NAME}' SOLIBS='-lm -lc' ;; when(beos*) case "$target_cpu" in when(powerpc*) LIBRUBY_DLDFLAGS='-f ruby.exp -lnet -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o' ;; esac ;; when(darwin*) RUBY_SO_NAME="$RUBY_SO_NAME"'.$(MAJOR).$(MINOR).$(TEENY)' LIBRUBY_LDSHARED='$(CC) -dynamiclib' if test "$load_relative" = yes; then libprefix='@executable_path/../lib' else libprefix='$(libdir)' 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 "'-Wl,-unexported_symbol,_Init_* $(XLDFLAGS)' LIBRUBY_SO='lib$(RUBY_SO_NAME).dylib' LIBRUBY_ALIASES='lib$(RUBY_BASE_NAME).$(MAJOR).$(MINOR).dylib lib$(RUBY_INSTALL_NAME).dylib' ;; when(interix*) LIBRUBYARG_SHARED='-L. -L${libdir} -l$(RUBY_SO_NAME)' ;; when(*) ;; esac fi if test "$enable_rpath" = yes; then LIBRUBY_RPATHFLAGS="${linker_flag}-R ${linker_flag}\$(libdir) -L\$(libdir)" LIBRUBYARG_SHARED="$LIBRUBY_RPATHFLAGS $LIBRUBYARG_SHARED" LIBRUBYARG_STATIC="$LIBRUBY_RPATHFLAGS $LIBRUBYARG_STATIC" fi LDFLAGS="-L. $LDFLAGS" AC_SUBST(ARCHFILE) 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" fi AC_SUBST(RDOCTARGET) case "$RDOCTARGET:$CAPITARGET" in when(nodoc:nodoc) INSTALLDOC=nodoc;; when(*) INSTALLDOC=all;; esac AC_SUBST(INSTALLDOC) if test "$rb_with_pthread" = "yes"; then THREAD_MODEL=pthread fi MINIDLNOBJ=dln.o case "$target_os" in when(linux*) ;; when(netbsd*) RUBY_APPEND_OPTION(CFLAGS, -pipe) ;; when(nextstep*|openstep*) RUBY_APPEND_OPTION(CPPFLAGS, -I/usr/local/include) ;; when(rhapsody*) RUBY_APPEND_OPTIONS(CFLAGS, -pipe -no-precomp) ;; when(darwin*) RUBY_APPEND_OPTION(CFLAGS, -pipe) MINIDLNOBJ=dmydln.o ;; when(human*) AC_LIBOBJ([x68.o]) CFLAGS="$CFLAGS -fansi-only" XCFLAGS="$XCFLAGS -cc1-stack=262144 -cpp-stack=2694144" EXEEXT=.x OBJEXT=o ;; when(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//'` ;; when(osf*) if test "$GCC" != "yes" ; then # compile something small: taint.c is fine for this. # the main point is the '-v' flag of 'cc'. case "`cc -v -I. -c main.c -o /tmp/main.o 2>&1`" in when(*/gemc_cc*) # we have the new DEC GEM CC CFLAGS="$CFLAGS -oldc" ;; when(*) # we have the old MIPS CC ;; esac # cleanup rm -f /tmp/main.o CFLAGS="$CFLAGS -std" fi ;; when(beos*) case "$target_cpu" in when(powerpc*) CFLAGS="$CFLAGS -relax_pointers" ;; esac CPPFLAGS="$CPPFLAGS -I/boot/home/config/include" ;; when(cygwin*|mingw*) RUBY_SO_NAME="${RUBY_SO_NAME}${MAJOR}${MINOR}${TEENY}" LIBRUBY_DLDFLAGS="${DLDFLAGS}"' -Wl,--out-implib=$(LIBRUBY)' case "$target_os" in when(cygwin*) if test x"$enable_shared" = xyes; then LIBRUBY_SO='cyg$(RUBY_SO_NAME)'.dll LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' $(RUBYDEF)' fi ;; when(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 AC_LIBOBJ([win32]) COMMON_LIBS=m # COMMON_MACROS="WIN32_LEAN_AND_MEAN=" COMMON_HEADERS="winsock2.h windows.h" THREAD_MODEL=win32 ;; esac 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 MINIDLNOBJ=dmydln.o ;; when(hpux*) case "$YACC" in when(*yacc*) XCFLAGS="$XCFLAGS -DYYMAXDEPTH=300" YACC="$YACC -Nl40000 -Nm40000" ;; esac MINIDLNOBJ=dmydln.o ;; when(*msdosdjgpp*) FIRSTMAKEFILE=GNUmakefile:djgpp/GNUmakefile.in ;; when(*) ;; esac MINIOBJS="$MINIDLNOBJ" case "$THREAD_MODEL" in when(pthread) AC_CHECK_HEADERS(pthread.h) ;; when(win32) ;; when("") AC_MSG_ERROR(thread model is missing) ;; when(*) AC_MSG_ERROR(unknown thread model $THREAD_MODEL) ;; esac case "$FIRSTMAKEFILE" in when(*GNUmakefile:*) gnumake=yes ;; when(*) 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 case "$gnumake" in when(*yes*) echo "include Makefile" > GNUmakefile echo "-include uncommon.mk" >> GNUmakefile gnumake=yes;; when(*) gnumake=no;; esac AC_MSG_RESULT($gnumake) ;; esac if test "${universal_binary-no}" = yes ; then AC_MSG_CHECKING([for 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], [], [ AC_MSG_RESULT(yes) mv -f confdefs1.h confdefs.h ], [ AC_MSG_RESULT(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}" case "$target_os" in when(cygwin*|mingw*) RUBYW_INSTALL_NAME="${ri_prefix}"'$(RUBYW_BASE_NAME)'"${ri_suffix}" rubyw_install_name='$(RUBYW_INSTALL_NAME)' ;; esac 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 case "$ruby_version" in when(full) RUBY_LIB_VERSION_STYLE='3 /* full */' ;; when(minor) RUBY_LIB_VERSION_STYLE='2 /* minor */' ;; esac 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_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_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' .`'\(.*\)' RUBY_LIB_PATH='RUBY_LIB_PREFIX"/"RUBY_LIB_VERSION' case "$RUBY_SITE_LIB_PATH" in when("$RUBY_LIB_PREFIX/"*) RUBY_SITE_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_SITE_LIB_PATH\" : \"$pat\"`"'"' ;; when(*) RUBY_SITE_LIB_PATH="\"${RUBY_SITE_LIB_PATH}\"" ;; esac RUBY_SITE_LIB_PATH2='RUBY_SITE_LIB"/"RUBY_LIB_VERSION' case "$RUBY_VENDOR_LIB_PATH" in when("$RUBY_LIB_PREFIX/"*) RUBY_VENDOR_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_VENDOR_LIB_PATH\" : \"$pat\"`"'"' ;; when(*) RUBY_VENDOR_LIB_PATH="\"${RUBY_VENDOR_LIB_PATH}\"" ;; esac RUBY_VENDOR_LIB_PATH2='RUBY_VENDOR_LIB"/"RUBY_LIB_VERSION' 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_LIB_PREFIX, "${RUBY_LIB_PREFIX}") AC_DEFINE_UNQUOTED(RUBY_LIB, ${RUBY_LIB_PATH}) AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, ${RUBY_SITE_LIB_PATH}) AC_DEFINE_UNQUOTED(RUBY_SITE_LIB2, ${RUBY_SITE_LIB_PATH2}) AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB, ${RUBY_VENDOR_LIB_PATH}) AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB2, ${RUBY_VENDOR_LIB_PATH2}) 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) AC_DEFINE_UNQUOTED(RUBY_THIN_ARCHLIB, RUBY_LIB"/"RUBY_PLATFORM_CPU"-"RUBY_PLATFORM_OS) AC_DEFINE_UNQUOTED(RUBY_SITE_THIN_ARCHLIB, RUBY_SITE_LIB2"/"RUBY_PLATFORM_CPU"-"RUBY_PLATFORM_OS) AC_DEFINE_UNQUOTED(RUBY_VENDOR_THIN_ARCHLIB, RUBY_VENDOR_LIB2"/"RUBY_PLATFORM_CPU"-"RUBY_PLATFORM_OS) else arch="${target_cpu}-${target_os}" AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "${arch}") fi unset sitearch case "$target_os" in when(mingw*) sitearch="$target_cpu-$rb_cv_msvcrt" ;; esac test ${sitearch+set} && AC_DEFINE_UNQUOTED(RUBY_SITEARCH, "${sitearch}") AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, RUBY_LIB"/"RUBY_ARCH) AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, RUBY_SITE_LIB2"/"RUBY_SITEARCH) AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCHLIB, RUBY_VENDOR_LIB2"/"RUBY_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(mantype, AS_HELP_STRING([--with-mantype=TYPE], [specify man page type; TYPE is one of man and doc]), [ case "$withval" in when(man|doc) MANTYPE=$withval ;; when(*) AC_MSG_ERROR(invalid man type: $withval) ;; esac ]) 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" tr -d '\015' < confdefs.h | grep -v "^#define PACKAGE_" | ${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) 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 }