diff options
Diffstat (limited to 'configure.in')
-rw-r--r-- | configure.in | 154 |
1 files changed, 76 insertions, 78 deletions
diff --git a/configure.in b/configure.in index 6d24689..7453c91 100644 --- a/configure.in +++ b/configure.in @@ -83,6 +83,7 @@ RUBY_PROGRAM_VERSION=`sed -n 's/^#define RUBY_VERSION "\(.*\)"/\1/p' $srcdir/ver 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) +RUBY_PATCHLEVEL=`sed -n 's/^#define RUBY_PATCHLEVEL //p' $srcdir/version.h` if test "$MAJOR" = "1"; then AC_DEFINE(CANONICALIZATION_FOR_MATHN) fi @@ -409,6 +410,8 @@ dnl } dnl compiler section { AC_DEFUN([RUBY_WERROR_FLAG], [dnl +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $rb_cv_warnflags" if test "${ac_c_werror_flag+set}"; then rb_c_werror_flag="$ac_c_werror_flag" else @@ -416,6 +419,8 @@ else fi ac_c_werror_flag=yes $1 +CFLAGS="$save_CFLAGS" +save_CFLAGS= if test "${rb_c_werror_flag+set}"; then ac_c_werror_flag="$rb_c_werror_flag" else @@ -423,18 +428,15 @@ else fi]) AC_DEFUN(RUBY_TRY_CFLAGS, [ - save_CFLAGS="$CFLAGS" - CFLAGS="[$]CFLAGS $1" AC_MSG_CHECKING([whether ]$1[ is accepted]) RUBY_WERROR_FLAG([ + CFLAGS="[$]CFLAGS $1" AC_TRY_COMPILE([$4], [$5], [$2 AC_MSG_RESULT(yes)], [$3 AC_MSG_RESULT(no)]) ]) - CFLAGS="$save_CFLAGS" - save_CFLAGS= ]) AC_DEFUN(RUBY_TRY_LDFLAGS, [ @@ -452,20 +454,26 @@ AC_DEFUN(RUBY_TRY_LDFLAGS, [ save_LDFLAGS= ]) +AS_CASE([$RUBY_PATCHLEVEL], [-*], + [particular_werror_flags=yes], [particular_werror_flags=no]) +AC_ARG_ENABLE(werror, + AS_HELP_STRING([--disable-werror], + [don't make warnings into errors + even if a compiler support -Werror feature + [[disabled by default unless development version]]]), + [particular_werror_flags=$enableval]) + rb_cv_warnflags="$warnflags" if test "$GCC:${warnflags+set}:no" = yes::no; then - particular_werror_flags=yes for wflag in -Wno-unused-parameter -Wno-parentheses -Wno-long-long \ -Wno-missing-field-initializers \ -Werror=pointer-arith \ -Werror=write-strings \ -Werror=declaration-after-statement \ -Werror=shorten-64-to-32 \ - -Werror-implicit-function-declaration \ + -Werror=implicit-function-declaration \ ; do - if test "$particular_werror_flags" = yes; then - wflag=`echo x$wflag | sed 's/^x-Werror-/-Werror=/;s/^x//'` - else + if test "$particular_werror_flags" != yes; then wflag=`echo x$wflag | sed 's/^x-Werror=/-W/;s/^x//'` fi ok=no @@ -478,7 +486,7 @@ if test "$GCC:${warnflags+set}:no" = yes::no; then ]) ]) done - AS_CASE([" $warnflags "],[*" -Wno-missing-field-initializers "*], [wflag=-Wextra], + AS_CASE([" $warnflags "],[*" -Wno-missing-field-initializers "*], [wflag="-Wall -Wextra"], [wflag=-Wall]) RUBY_TRY_CFLAGS($wflag, [warnflags="$wflag${warnflags+ $warnflags}"]) # Disable warnflags while conftest. -Werror=* flags might make bad OS capability guess. @@ -495,7 +503,15 @@ if test "$GCC" = ""; then AS_CASE(["$target_os"],[aix*],[warnflags="-qinfo=por"]) fi if test "$GCC" = yes; then - RUBY_TRY_CFLAGS(-fvisibility=hidden, [RUBY_APPEND_OPTION(XCFLAGS, -fvisibility=hidden)]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ + @%:@if !(defined __GNUC__ && __GNUC__ >= 4) + @%:@error not GCC 4 or later + >>>not GCC 4 or later<<< + @%:@endif])], + [visibility_option=yes], [visibility_option=no]) + if test "$visibility_option" = yes; then + RUBY_TRY_CFLAGS(-fvisibility=hidden, [visibility_option=yes], [visibility_option=no]) + fi AC_SUBST(WERRORFLAG, "-Werror") if test "$visibility_option" = yes; then RUBY_APPEND_OPTION(XCFLAGS, -fvisibility=hidden) @@ -939,6 +955,8 @@ AC_ARG_ENABLE(pthread, dnl Checks for libraries. AS_CASE(["$target_os"],[*bsd*|dragonfly*],[],[ac_cv_func_daemon=no]) +POSTLINK=: +AC_SUBST(POSTLINK) AS_CASE(["$target_os"], [solaris*], [ AC_DEFINE(SIZEOF_STRUCT_DIRENT_TOO_SMALL, 1) @@ -1059,7 +1077,7 @@ main() AC_CHECK_FUNCS(cygwin_conv_path) AC_LIBOBJ([langinfo]) ], -[mingw*], [ LIBS="-lshell32 -lws2_32 -limagehlp $LIBS" +[mingw*], [ LIBS="-lshell32 -lws2_32 -limagehlp -lshlwapi $LIBS" ac_cv_header_a_out_h=no ac_cv_header_pwd_h=no ac_cv_header_utime_h=no @@ -1089,6 +1107,7 @@ main() ac_cv_func_fcntl=yes ac_cv_func_flock=yes rb_cv_large_fd_select=yes + ac_cv_type_struct_timeval=yes AC_LIBOBJ([langinfo]) : ${enable_win95=maybe} ], @@ -1159,7 +1178,7 @@ AC_CHECK_HEADERS(limits.h sys/file.h sys/ioctl.h sys/syscall.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 process.h) + net/socket.h sys/socket.h process.h atomic.h) AC_TYPE_SIZE_T RUBY_CHECK_SIZEOF(size_t, [int long void*], [], [@%:@include <sys/types.h>]) @@ -1183,6 +1202,13 @@ 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 timeval], [], [], [@%:@ifdef HAVE_TIME_H +@%:@include <time.h> +@%:@endif +@%:@ifdef HAVE_SYS_TIME_H +@%:@include <sys/time.h> +@%:@endif]) + AC_CHECK_TYPES([struct timespec], [], [], [@%:@ifdef HAVE_TIME_H @%:@include <time.h> @%:@endif]) @@ -1259,63 +1285,6 @@ if test $rb_cv_stack_end_address != no; then AC_DEFINE_UNQUOTED(STACK_END_ADDRESS, $rb_cv_stack_end_address) fi -AC_CACHE_CHECK(for gc_mark and gc_children stack frame approximate size(word), rb_cv_gc_mark_stackframe_word, -[save_CFLAGS="$CFLAGS" -CFLAGS="-O0" -AC_TRY_RUN([ -int word; -char *stack_start; - -void -set_stackframe_word() -{ - int dumy = 42; - int diff; - - if (stack_start < (char *)&dumy) { - diff = (int)((char *)&dumy - stack_start); - } - else { - diff = (int)(stack_start - (char *)&dumy); - } - word = (diff/sizeof(void *)); - if ((diff % sizeof(void *)) != 0) { - word++; - } -} - -void -gc_mark_children(void *p1, void *p2, int lev) -{ - void *obj = p2; - - set_stackframe_word(p1,p2,lev); -} - -void -gc_mark(void *p1, void *p2, int lev) -{ - void *obj = p2; - - gc_mark_children(p1,p2,lev++); -} - -int -main() { - int dumy = 42; - - stack_start = (char *)&dumy; - gc_mark(0, 0, 255); - return word; -} -], - [rb_cv_gc_mark_stackframe_word="$?"], - [rb_cv_gc_mark_stackframe_word="$?"], - [rb_cv_gc_mark_stackframe_word="30"]) -CFLAGS="$save_CFLAGS"]) -AC_DEFINE_UNQUOTED(GC_MARK_STACKFRAME_WORD, $rb_cv_gc_mark_stackframe_word) - - dnl Checks for library functions. AC_TYPE_GETGROUPS AC_TYPE_SIGNAL @@ -2105,7 +2074,7 @@ if test "$with_dln_a_out" != yes; then rb_cv_dlopen=yes], [aix*], [ : ${LDSHARED='$(CC)'} LDSHARED="$LDSHARED ${linker_flag}-G" - DLDFLAGS='-eInit_$(TARGET)' + EXTDLDFLAGS='-e$(TARGET_ENTRY)' XLDFLAGS="${linker_flag}"'-bE:$(ARCHFILE)'" ${linker_flag}-brtl" XLDFLAGS="$XLDFLAGS ${linker_flag}-blibpath:${prefix}/lib:${LIBPATH:-/usr/lib:/lib}" : ${ARCHFILE="ruby.imp"} @@ -2122,7 +2091,8 @@ if test "$with_dln_a_out" != yes; then [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' + EXTDLDFLAGS='-export $(TARGET_ENTRY)' + DLDFLAGS="$DLDFLAGS -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o" LDFLAGS="$LDFLAGS -L/boot/home/config/lib -lbe -lroot" ], [i586*], [ @@ -2135,7 +2105,8 @@ if test "$with_dln_a_out" != yes; then [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' + EXTDLDFLAGS='-export $(TARGET_ENTRY)' + DLDFLAGS="$DLDFLAGS -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o" ], [i586*], [ : ${LDSHARED="ld -shared"} @@ -2354,6 +2325,13 @@ AS_CASE("$enable_shared", [yes], [ if test "$rb_cv_binary_elf" = yes; then SOLIBS='$(LIBS)' fi + # libdir can be overridden in config.site file (on OpenSUSE at least). + libdir_basename=lib + if test "$bindir" = '${exec_prefix}/bin'; then + AS_CASE(["$libdir"], ['${exec_prefix}/'*], [libdir_basename=`basename "$libdir"`]) + fi + AC_DEFINE_UNQUOTED(LIBDIR_BASENAME, ["${libdir_basename}"]) + AS_CASE(["$target_os"], [sunos4*], [ LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).so' @@ -2362,7 +2340,7 @@ AS_CASE("$enable_shared", [yes], [ 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' if test "$load_relative" = yes; then - LIBRUBY_RPATHFLAGS="'-Wl,-rpath,\$\${ORIGIN}/../lib'" + LIBRUBY_RPATHFLAGS="'-Wl,-rpath,\$\${ORIGIN}/../${libdir_basename}'" LIBRUBY_RELATIVE=yes fi ], @@ -2419,7 +2397,7 @@ AS_CASE("$enable_shared", [yes], [ RUBY_SO_NAME="$RUBY_SO_NAME"'.$(MAJOR).$(MINOR).$(TEENY)' LIBRUBY_LDSHARED='$(CC) -dynamiclib' if test "$load_relative" = yes; then - libprefix='@executable_path/../lib' + libprefix="@executable_path/../${libdir_basename}" LIBRUBY_RELATIVE=yes fi LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-install_name '${libprefix}'/$(LIBRUBY_SO)' @@ -2578,11 +2556,13 @@ AS_CASE(["$target_os"], fi EXPORT_PREFIX=' ' DLDFLAGS="${DLDFLAGS}"' $(DEFFILE)' - AC_LIBOBJ([win32]) + AC_LIBOBJ([win32/win32]) + AC_LIBOBJ([win32/file]) COMMON_LIBS=m # COMMON_MACROS="WIN32_LEAN_AND_MEAN=" COMMON_HEADERS="winsock2.h windows.h" THREAD_MODEL=win32 + PLATFORM_DIR=win32 ]) LIBRUBY_ALIASES='' FIRSTMAKEFILE=GNUmakefile:cygwin/GNUmakefile.in @@ -2711,6 +2691,7 @@ AC_SUBST(debugflags)dnl AC_SUBST(warnflags)dnl AC_SUBST(XCFLAGS)dnl AC_SUBST(XLDFLAGS)dnl +AC_SUBST(EXTDLDFLAGS)dnl AC_SUBST(LIBRUBY_LDSHARED) AC_SUBST(LIBRUBY_DLDFLAGS) AC_SUBST(RUBY_INSTALL_NAME) @@ -2735,6 +2716,7 @@ AC_SUBST(EXPORT_PREFIX) AC_SUBST(SYMBOL_PREFIX) AC_SUBST(MINIOBJS) AC_SUBST(THREAD_MODEL) +AC_SUBST(PLATFORM_DIR) MAKEFILES="Makefile `echo $FIRSTMAKEFILE | sed 's/:.*//'`" MAKEFILES="`echo $MAKEFILES`" @@ -2937,7 +2919,20 @@ 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])) + AS_HELP_STRING([--with-opt-dir=DIR-LIST], + [add optional headers and libraries directories separated by $PATH_SEPARATOR]), + [ + CPPFLAGS="$CPPFLAGS `echo \"$PATH_SEPARATOR$withval\" | sed \"s|$PATH_SEPARATOR\([[^$PATH_SEPARATOR]*]\)| -I\1/include|g;s/^ //\"`" + set -x + val=`IFS="$PATH_SEPARATOR" + for dir in $withval; do + echo x ${LIBPATHFLAG} ${RPATHFLAG} | + sed -E 's/^x *//;s'"${PATH_SEPARATOR}"'%1\\$-s|%s'"${IFS}${dir}/lib${IFS}g" + done | tr '\012' ' '` + set +x + LDFLAGS="$LDFLAGS${LDFLAGS:+ }$val" + DLDFLAGS="$DLDFLAGS${DLDFLAGS:+ }$val" + ]) AC_ARG_WITH(mantype, AS_HELP_STRING([--with-mantype=TYPE], [specify man page type; TYPE is one of man and doc]), @@ -3037,7 +3032,10 @@ AC_CONFIG_FILES(Makefile, [{ }], [EXEEXT='$EXEEXT' gnumake='$gnumake']) -ruby_pc="${RUBY_BASE_NAME}-${MAJOR}.${MINOR}.pc" +AC_ARG_WITH([ruby-pc], + AC_HELP_STRING([pc file basename]), + [ruby_pc="$withval"], + [ruby_pc="${RUBY_BASE_NAME}-${MAJOR}.${MINOR}.pc"]) AC_SUBST(ruby_pc) AC_SUBST(exec, [exec]) |