OSDN Git Service

* Makefile.in: Remove toolexecdir, glibcpp_toolexecdir (unused).
[pf3gnuchains/gcc-fork.git] / libobjc / configure.in
index 9183e52..6f7e765 100644 (file)
 # Process this file with autoconf to produce a configure script.
-#   Copyright (C) 1995, 1997, 1998, 1999 Free Software Foundation, Inc.
-#   Contributed by Dave Love (d.love@dl.ac.uk).
+#   Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004
+#   Free Software Foundation, Inc.
+#   Originally contributed by Dave Love (d.love@dl.ac.uk).
 #
-#This file is part of GNU Objective C.
+#This file is part of GCC.
 #
-#GNU Objective C is free software; you can redistribute it and/or modify
+#GCC is free software; you can redistribute it and/or modify
 #it under the terms of the GNU General Public License as published by
 #the Free Software Foundation; either version 2, or (at your option)
 #any later version.
 #
-#GNU Objective C is distributed in the hope that it will be useful,
+#GCC is distributed in the hope that it will be useful,
 #but WITHOUT ANY WARRANTY; without even the implied warranty of
 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #GNU General Public License for more details.
 #
 #You should have received a copy of the GNU General Public License
-#along with GNU Objective C; see the file COPYING.  If not, write to
+#along with GCC; see the file COPYING.  If not, write to
 #the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #02111-1307, USA.
 
-AC_PREREQ(2.13)
-AC_INIT(objc/objc.h)
-AC_CONFIG_HEADER(config.h)
+AC_PREREQ(2.59)
+AC_INIT
+AC_CONFIG_SRCDIR([objc/objc.h])
+
+# We need the following definitions because AC_PROG_LIBTOOL relies on them
+PACKAGE=libobjc
+# Version is pulled out to make it a bit easier to change using sed.
+VERSION=1:0:0
+AC_SUBST(VERSION)
+
+# This works around the fact that libtool configuration may change LD
+# for this particular configuration, but some shells, instead of
+# keeping the changes in LD private, export them just because LD is
+# exported.
+ORIGINAL_LD_FOR_MULTILIBS=$LD
+
+# -------
+# Options
+# -------
+
+# Default to --enable-multilib
+AC_ARG_ENABLE(multilib,
+  [  --enable-multilib       build hella library versions (default)],
+  [case "${enableval}" in
+    yes) multilib=yes ;;
+    no)  multilib=no ;;
+    *)   AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
+   esac],
+  [multilib=yes])
+
+# We use these options to decide which functions to include.
+AC_ARG_WITH(target-subdir,
+[  --with-target-subdir=SUBDIR
+                           configuring in a subdirectory])
+AC_ARG_WITH(cross-host,
+[  --with-cross-host=HOST  configuring with a cross compiler])
+
+AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
+AC_ARG_ENABLE(version-specific-runtime-libs,
+[  --enable-version-specific-runtime-libs    Specify that runtime libraries should be installed in a compiler-specific directory ],
+[case "$enableval" in
+ yes) version_specific_libs=yes ;;
+ no)  version_specific_libs=no ;;
+ *)   AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
+ esac],
+[version_specific_libs=no])
+AC_MSG_RESULT($version_specific_libs)
 
-if test "${srcdir}" = "." ; then
-  if test "${with_target_subdir}" != "." ; then
-    topsrcdir=${with_multisrctop}../..
+AC_ARG_ENABLE(objc-gc,
+[  --enable-objc-gc       enable the use of Boehm's garbage collector with
+                          the GNU Objective-C runtime.],
+[case $enable_objc_gc in
+  no) OBJC_BOEHM_GC='' ;;
+  *) OBJC_BOEHM_GC=libobjc_gc.la ;;
+esac],
+[OBJC_BOEHM_GC=''])
+AC_SUBST(OBJC_BOEHM_GC)
+
+# -----------
+# Directories
+# -----------
+
+# When building with srcdir == objdir, links to the source files will
+# be created in directories within the target_subdir.  We have to
+# adjust toplevel_srcdir accordingly, so that configure finds
+# install-sh and other auxiliary files that live in the top-level
+# source directory.
+if test "${srcdir}" = "."; then
+  if test -z "${with_target_subdir}"; then
+    toprel=".."
   else
-    topsrcdir=${with_multisrctop}..
+    if test "${with_target_subdir}" != "."; then
+      toprel="${with_multisrctop}../.."
+    else
+      toprel="${with_multisrctop}.."
+    fi
   fi
 else
-  topsrcdir=${srcdir}/..
+  toprel=".."
 fi
-dnl This is needed for a multilibbed build in the source tree so
-dnl that install-sh and config.sub get found.
-AC_CONFIG_AUX_DIR($topsrcdir)
-
-# If the language specific compiler does not exist, but the "gcc" directory 
-# does, we do not build anything. Note, $r is set by the top-level Makefile.
-# Note that when we look for the compiler, we search both with and without
-# extension to handle cross and canadian cross builds. 
-compiler_name=cc1obj
-rm -f skip-this-dir
-AC_MSG_CHECKING(if compiler $compiler_name has been built)
-AC_CACHE_VAL(objc_cv_compiler_exists,
-[objc_cv_compiler_exists=yes
-if test -n "$r"; then
-  if test -d "$r"/gcc; then
-    if test -f "$r"/gcc/$compiler_name \
-       || test -f "$r"/gcc/$compiler_name.exe; then
-      true
+AC_CONFIG_AUX_DIR(${srcdir}/$toprel)
+toplevel_srcdir=\${srcdir}/$toprel
+AC_SUBST(toplevel_srcdir)
+
+AC_CANONICAL_SYSTEM
+_GCC_TOPLEV_NONCANONICAL_TARGET
+AC_SUBST(target_noncanonical)
+
+# Export source directory.
+# These need to be absolute paths, yet at the same time need to
+# canonicalize only relative paths, because then amd will not unmount
+# drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd.
+case $srcdir in
+  [\\/$]* | ?:[\\/]*) glibcpp_srcdir=${srcdir} ;;
+  *) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
+esac
+AC_SUBST(glibcpp_srcdir)
+
+# Process the option "--enable-version-specific-runtime-libs"
+gcc_version_trigger=${srcdir}/../gcc/version.c
+gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([[^ \"]]*\)[[ \"]].*/\1/'`
+gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
+AC_SUBST(gcc_version)
+
+# Calculate toolexeclibdir
+case ${version_specific_libs} in
+  yes)
+    # Need the gcc compiler version to know where to install libraries
+    # and header files if --enable-version-specific-runtime-libs option
+    # is selected.
+    toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
+    ;;
+  no)
+    if test -n "$with_cross_host" &&
+       test x"$with_cross_host" != x"no"; then
+      # Install a library built with a cross compiler in tooldir, not libdir.
+      toolexeclibdir='$(toolexecdir)/lib'
     else
-      objc_cv_compiler_exists=no
-      echo "rm -f config.cache config.log multilib.out" > skip-this-dir
+      toolexeclibdir='$(libdir)'
     fi
-  fi
-fi
-])
-AC_MSG_RESULT($objc_cv_compiler_exists)
-if test x$objc_cv_compiler_exists = xno
-then
-  rm -f Makefile conftest* confdefs* core
-  exit 0
-fi
-
-dnl Checks for programs.
-# For ObjC we'll set CC to point at the built gcc, but this will get it into
-# the makefiles
+    multi_os_directory=`$CC -print-multi-os-directory`
+    case $multi_os_directory in
+      .) ;; # Avoid trailing /.
+      *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
+    esac
+    ;;
+esac
+AC_SUBST(toolexeclibdir)
+
+glibcpp_prefixdir=${prefix}
+AC_SUBST(glibcpp_prefixdir)
+
+# --------
+# Programs
+# --------
+
+GCC_NO_EXECUTABLES
 AC_PROG_CC
 
-test "$AR" || AR=ar
-AC_SUBST(AR)
-if test "$RANLIB"; then :
-  AC_SUBST(RANLIB)
-else
-  AC_PROG_RANLIB
-fi
+AC_CHECK_TOOL(AS, as)
+AC_CHECK_TOOL(AR, ar)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
 AC_PROG_INSTALL
 
-dnl Checks for libraries.
+# Disable shared libs by default
+AC_DISABLE_SHARED
+# Enable Win32 DLL on MS Windows - FIXME
+AC_LIBTOOL_WIN32_DLL
+
+AC_PROG_LIBTOOL
+
+AC_PROG_MAKE_SET
+
+# -------
+# Headers
+# -------
 
-dnl Checks for header files.
 # Sanity check for the cross-compilation case:
 AC_CHECK_HEADER(stdio.h,:,
   [AC_MSG_ERROR([Can't find stdio.h.
@@ -93,8 +189,13 @@ AC_HEADER_STDC
 
 AC_CHECK_HEADERS(sched.h)
 
-# Determine CFLAGS for gthread.
+# -----------
+# Miscellanea
+# -----------
 
+# Determine CFLAGS for gthread.
+# FIXME: the current implementation is dependent on the 'r' variable
+# passed down from the top level
 AC_CACHE_CHECK([for gthread cflags],objc_cv_gthread_flags,
 [if test -f "$r"/gcc/Makefile
 then
@@ -105,47 +206,30 @@ fi])
 GTHREAD_FLAGS=$objc_cv_gthread_flags
 AC_SUBST(GTHREAD_FLAGS)
 
-# Disable shared libs by default
-AC_DISABLE_SHARED
-# Enable Win32 DLL on MS Windows - FIXME 
-AC_LIBTOOL_WIN32_DLL 
-# Use libtool
-AC_PROG_LIBTOOL
-
-AC_ARG_ENABLE(objc-gc,
-[  --enable-objc-gc       enable the use of Boehm's garbage collector with
-                          the GNU Objective-C runtime.],
-if [[[ x$enable_objc_gc = xno ]]]; then
-        OBJC_BOEHM_GC=''
-else
-        OBJC_BOEHM_GC=libobjc_gc.la
-fi,
-OBJC_BOEHM_GC='')
-AC_SUBST(OBJC_BOEHM_GC)
+# ------
+# Output
+# ------
 
+AC_CONFIG_FILES([Makefile])
 
-# We need multilib support, but only if configuring for the target.
-AC_OUTPUT(Makefile,
-[test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
-if test -n "$CONFIG_FILES"; then
+AC_CONFIG_COMMANDS([default],
+[[if test -n "$CONFIG_FILES"; then
   if test -n "${with_target_subdir}"; then
     # FIXME: We shouldn't need to set ac_file
     ac_file=Makefile
-    . ${topsrcdir}/config-ml.in
+    LD="${ORIGINAL_LD_FOR_MULTILIBS}"
+    . ${toplevel_srcdir}/config-ml.in
   fi
-fi],
-srcdir=${srcdir}
+fi]],
+[[srcdir=${srcdir}
 host=${host}
 target=${target}
 with_target_subdir=${with_target_subdir}
 with_multisubdir=${with_multisubdir}
 ac_configure_args="--enable-multilib ${ac_configure_args}"
+toplevel_srcdir=${toplevel_srcdir}
 CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-topsrcdir=${topsrcdir}
-)
-
-dnl Local Variables:
-dnl comment-start: "dnl "
-dnl comment-end: ""
-dnl comment-start-skip: "\\bdnl\\b\\s *"
-dnl End:
+ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}"
+]])
+
+AC_OUTPUT