configure.ac 7.98 KB
Newer Older
Ben Elliston committed
1
# Process this file with autoconf to produce a configure script.
2
#   Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004
3
#   2005, 2006, 2009, 2011, 2012 Free Software Foundation, Inc.
4
#   Originally contributed by Dave Love (d.love@dl.ac.uk).
Ben Elliston committed
5
#
6
#This file is part of GCC.
Ben Elliston committed
7
#
8
#GCC is free software; you can redistribute it and/or modify
Ben Elliston committed
9
#it under the terms of the GNU General Public License as published by
10
#the Free Software Foundation; either version 3, or (at your option)
Ben Elliston committed
11 12
#any later version.
#
13
#GCC is distributed in the hope that it will be useful,
Ben Elliston committed
14 15 16 17 18
#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
19 20
#along with GCC; see the file COPYING3.  If not see
#<http://www.gnu.org/licenses/>.
Ben Elliston committed
21

22
AC_PREREQ(2.64)
23
AC_INIT(package-unused, version-unused,, libobjc)
24
AC_CONFIG_SRCDIR([objc/objc.h])
25
GCC_TOPLEV_SUBDIRS
Ben Elliston committed
26

27
# We need the following definitions because AC_PROG_LIBTOOL relies on them
28
PACKAGE=libobjc
29
# Version is pulled out to make it a bit easier to change using sed.
30
VERSION=4:0:0
31 32
AC_SUBST(VERSION)

33 34 35 36 37 38
# 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

39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
# -------
# Options
# -------

# 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)

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
65
  no)
66
    OBJC_GCFLAGS=''
67 68 69 70
    OBJC_BOEHM_GC=''
    OBJC_BOEHM_GC_INCLUDES=''
    ;;
  *)
71 72
    OBJC_GCFLAGS='-DOBJC_WITH_GC=1'
    OBJC_BOEHM_GC='libobjc_gc$(libsuffix).la'
73 74
    OBJC_BOEHM_GC_INCLUDES='-I$(top_srcdir)/../boehm-gc/include -I../boehm-gc/include'
    ;;
75
esac],
76 77
[OBJC_GCFLAGS=''; OBJC_BOEHM_GC=''; OBJC_BOEHM_GC_INCLUDES=''])
AC_SUBST(OBJC_GCFLAGS)
78
AC_SUBST(OBJC_BOEHM_GC)
79
AC_SUBST(OBJC_BOEHM_GC_INCLUDES)
80 81 82 83

# -----------
# Directories
# -----------
84

85 86
# Find the rest of the source tree framework.
AM_ENABLE_MULTILIB(, ..)
87

88
AC_CANONICAL_SYSTEM
89
ACX_NONCANONICAL_TARGET
90

91
# Export source directory.
92 93 94 95
# 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
96 97
  [\\/$]* | ?:[\\/]*) glibcpp_srcdir=${srcdir} ;;
  *) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
98 99 100
esac
AC_SUBST(glibcpp_srcdir)

101
# Calculate toolexeclibdir
102
# Also toolexecdir, though it's only used in toolexeclibdir
103 104 105 106 107
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.
108
    toolexecdir='$(libdir)/gcc/$(target_noncanonical)'
109
    toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
110 111 112 113 114
    ;;
  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.
115
      toolexecdir='$(exec_prefix)/$(target_noncanonical)'
116 117
      toolexeclibdir='$(toolexecdir)/lib'
    else
118
      toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
119
      toolexeclibdir='$(libdir)'
120 121 122 123
    fi
    multi_os_directory=`$CC -print-multi-os-directory`
    case $multi_os_directory in
      .) ;; # Avoid trailing /.
124
      *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
125 126 127
    esac
    ;;
esac
128
AC_SUBST(toolexecdir)
129
AC_SUBST(toolexeclibdir)
130

131 132
# Figure out if we want to name the include directory and the
#  library name changes differently.
133
includedirname=include
134
libsuffix=
135 136 137
case "${host}" in
  *-darwin*)
    # Darwin is the only target so far that needs a different include directory.
138
    includedirname=include-gnu-runtime
139
    libsuffix=-gnu
140 141
    ;;
esac
142
AC_SUBST(includedirname)
H.J. Lu committed
143
AC_SUBST(libsuffix)
144

145 146
AC_CONFIG_HEADERS(config.h)

147 148 149 150 151
# --------
# Programs
# --------

GCC_NO_EXECUTABLES
152 153 154 155 156 157

# We must force CC to /not/ be a precious variable; otherwise
# the wrong, non-multilib-adjusted value will be used in multilibs.
# As a side effect, we have to subst CFLAGS ourselves.
m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
m4_define([_AC_ARG_VAR_PRECIOUS],[])
158
AC_PROG_CC
159
m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
160

161
# extra LD Flags which are required for targets
162
ACX_LT_HOST_FLAGS
163 164 165
case "${host}" in
  *-darwin*)
    # Darwin needs -single_module when linking libobjc
166
    extra_ldflags_libobjc='$(lt_host_flags) -Wl,-single_module'
167
    ;;
168 169
  *-cygwin*|*-mingw*)
    # Tell libtool to build DLLs on Windows
170
    extra_ldflags_libobjc='$(lt_host_flags)'
171
    ;;
172 173 174
esac
AC_SUBST(extra_ldflags_libobjc)

175
AC_SUBST(CFLAGS)
176 177 178 179 180

AC_CHECK_TOOL(AS, as)
AC_CHECK_TOOL(AR, ar)
AC_CHECK_TOOL(RANLIB, ranlib, :)
AC_PROG_INSTALL
Geoffrey Keating committed
181

Mike Stump committed
182 183
AM_MAINTAINER_MODE

184 185
# Enable Win32 DLL on MS Windows - FIXME
AC_LIBTOOL_WIN32_DLL
Geoffrey Keating committed
186

187
AC_PROG_LIBTOOL
Ben Elliston committed
188

Mike Stump committed
189 190
AM_PROG_CC_C_O

191
AC_PROG_MAKE_SET
Ben Elliston committed
192

193 194 195 196
# -------
# Headers
# -------

Ben Elliston committed
197 198 199 200 201 202 203 204 205 206
# Sanity check for the cross-compilation case:
AC_CHECK_HEADER(stdio.h,:,
  [AC_MSG_ERROR([Can't find stdio.h.
You must have a usable C system for the target already installed, at least
including headers and, preferably, the library, before you can configure
the Objective C runtime system.  If necessary, install gcc now with 
\`LANGUAGES=c', then the target library, then build with \`LANGUAGES=objc'.])])

AC_HEADER_STDC

207 208
AC_CHECK_HEADERS(sched.h)

209 210 211 212
# -----------
# Miscellanea
# -----------

213 214
# Check if we have thread-local storage
GCC_CHECK_TLS
Ben Elliston committed
215

216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269
AC_MSG_CHECKING([for exception model to use])
AC_LANG_PUSH(C)
AC_ARG_ENABLE(sjlj-exceptions,
  AS_HELP_STRING([--enable-sjlj-exceptions],
                 [force use of builtin_setjmp for exceptions]),
[:],
[dnl Botheration.  Now we've got to detect the exception model.
dnl Link tests against libgcc.a are problematic since -- at least
dnl as of this writing -- we've not been given proper -L bits for
dnl single-tree newlib and libgloss.
dnl
dnl This is what AC_TRY_COMPILE would do if it didn't delete the
dnl conftest files before we got a change to grep them first.
cat > conftest.$ac_ext << EOF
[#]line __oline__ "configure"
@interface Frob
@end
@implementation Frob
@end
int proc();
int foo()
{
  @try {
   return proc();
  }
  @catch (Frob* ex) {
    return 0;
  }
}
EOF
old_CFLAGS="$CFLAGS" 
dnl work around that we don't have Objective-C support in autoconf
CFLAGS="-x objective-c -fgnu-runtime -fobjc-exceptions -S"
if AC_TRY_EVAL(ac_compile); then
  if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
    enable_sjlj_exceptions=yes
  elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
    enable_sjlj_exceptions=no
  fi
fi
CFLAGS="$old_CFLAGS"
rm -f conftest*])
if test x$enable_sjlj_exceptions = xyes; then
  AC_DEFINE(SJLJ_EXCEPTIONS, 1,
	[Define if the compiler is configured for setjmp/longjmp exceptions.])
  ac_exception_model_name=sjlj
elif test x$enable_sjlj_exceptions = xno; then
  ac_exception_model_name="call frame"
else
  AC_MSG_ERROR([unable to detect exception model])
fi
AC_LANG_POP(C)
AC_MSG_RESULT($ac_exception_model_name)

270 271 272
# ------
# Output
# ------
Ben Elliston committed
273

274 275 276 277 278
if test ${multilib} = yes; then
  multilib_arg="--enable-multilib"
else
  multilib_arg=
fi
279

280
AC_CONFIG_FILES([Makefile])
281
AC_OUTPUT