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 Free Software Foundation, Inc. 4# Originally contributed by Dave Love (d.love@dl.ac.uk). 5# 6#This file is part of GCC. 7# 8#GCC is free software; you can redistribute it and/or modify 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) 11#any later version. 12# 13#GCC is distributed in the hope that it will be useful, 14#but WITHOUT ANY WARRANTY; without even the implied warranty of 15#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16#GNU General Public License for more details. 17# 18#You should have received a copy of the GNU General Public License 19#along with GCC; see the file COPYING3. If not see 20#<http://www.gnu.org/licenses/>. 21 22AC_PREREQ(2.64) 23AC_INIT(package-unused, version-unused,, libobjc) 24AC_CONFIG_SRCDIR([objc/objc.h]) 25GCC_TOPLEV_SUBDIRS 26 27# We need the following definitions because AC_PROG_LIBTOOL relies on them 28PACKAGE=libobjc 29# Version is pulled out to make it a bit easier to change using sed. 30VERSION=2:0:0 31AC_SUBST(VERSION) 32 33# This works around the fact that libtool configuration may change LD 34# for this particular configuration, but some shells, instead of 35# keeping the changes in LD private, export them just because LD is 36# exported. 37ORIGINAL_LD_FOR_MULTILIBS=$LD 38 39# ------- 40# Options 41# ------- 42 43# We use these options to decide which functions to include. 44AC_ARG_WITH(target-subdir, 45[ --with-target-subdir=SUBDIR 46 configuring in a subdirectory]) 47AC_ARG_WITH(cross-host, 48[ --with-cross-host=HOST configuring with a cross compiler]) 49 50AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) 51AC_ARG_ENABLE(version-specific-runtime-libs, 52[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ], 53[case "$enableval" in 54 yes) version_specific_libs=yes ;; 55 no) version_specific_libs=no ;; 56 *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);; 57 esac], 58[version_specific_libs=no]) 59AC_MSG_RESULT($version_specific_libs) 60 61AC_ARG_ENABLE(objc-gc, 62[ --enable-objc-gc enable the use of Boehm's garbage collector with 63 the GNU Objective-C runtime.], 64[case $enable_objc_gc in 65 no) 66 OBJC_BOEHM_GC='' 67 OBJC_BOEHM_GC_INCLUDES='' 68 ;; 69 *) 70 OBJC_BOEHM_GC=libobjc_gc.la 71 OBJC_BOEHM_GC_INCLUDES='-I$(top_srcdir)/../boehm-gc/include -I../boehm-gc/include' 72 ;; 73esac], 74[OBJC_BOEHM_GC=''; OBJC_BOEHM_GC_INCLUDES='']) 75AC_SUBST(OBJC_BOEHM_GC) 76AC_SUBST(OBJC_BOEHM_GC_INCLUDES) 77 78# ----------- 79# Directories 80# ----------- 81 82# Find the rest of the source tree framework. 83AM_ENABLE_MULTILIB(, ..) 84 85AC_CANONICAL_SYSTEM 86ACX_NONCANONICAL_TARGET 87 88# Export source directory. 89# These need to be absolute paths, yet at the same time need to 90# canonicalize only relative paths, because then amd will not unmount 91# drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd. 92case $srcdir in 93 [\\/$]* | ?:[\\/]*) glibcpp_srcdir=${srcdir} ;; 94 *) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;; 95esac 96AC_SUBST(glibcpp_srcdir) 97 98# Calculate toolexeclibdir 99# Also toolexecdir, though it's only used in toolexeclibdir 100case ${version_specific_libs} in 101 yes) 102 # Need the gcc compiler version to know where to install libraries 103 # and header files if --enable-version-specific-runtime-libs option 104 # is selected. 105 toolexecdir='$(libdir)/gcc/$(target_noncanonical)' 106 toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' 107 ;; 108 no) 109 if test -n "$with_cross_host" && 110 test x"$with_cross_host" != x"no"; then 111 # Install a library built with a cross compiler in tooldir, not libdir. 112 toolexecdir='$(exec_prefix)/$(target_noncanonical)' 113 toolexeclibdir='$(toolexecdir)/lib' 114 else 115 toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' 116 toolexeclibdir='$(libdir)' 117 fi 118 multi_os_directory=`$CC -print-multi-os-directory` 119 case $multi_os_directory in 120 .) ;; # Avoid trailing /. 121 *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; 122 esac 123 ;; 124esac 125AC_SUBST(toolexecdir) 126AC_SUBST(toolexeclibdir) 127 128# Figure out if we want to name the include directory and the 129# library name changes differently. 130includedirname=include 131libsuffix= 132case "${host}" in 133 *-darwin*) 134 # Darwin is the only target so far that needs a different include directory. 135 includedirname=include-gnu-runtime 136 libsuffix=-gnu 137 ;; 138esac 139AC_SUBST(includedirname) 140AC_SUBST(libsuffix) 141 142AC_CONFIG_HEADERS(config.h) 143 144# -------- 145# Programs 146# -------- 147 148GCC_NO_EXECUTABLES 149 150# We must force CC to /not/ be a precious variable; otherwise 151# the wrong, non-multilib-adjusted value will be used in multilibs. 152# As a side effect, we have to subst CFLAGS ourselves. 153m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) 154m4_define([_AC_ARG_VAR_PRECIOUS],[]) 155AC_PROG_CC 156m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) 157 158# extra LD Flags which are required for targets 159case "${host}" in 160 *-darwin*) 161 # Darwin needs -single_module when linking libobjc 162 extra_ldflags_libobjc=-Wl,-single_module 163 ;; 164 *-cygwin*|*-mingw*) 165 # Tell libtool to build DLLs on Windows 166 extra_ldflags_libobjc='-no-undefined -bindir $(bindir)' 167 ;; 168esac 169AC_SUBST(extra_ldflags_libobjc) 170 171AC_SUBST(CFLAGS) 172 173AC_CHECK_TOOL(AS, as) 174AC_CHECK_TOOL(AR, ar) 175AC_CHECK_TOOL(RANLIB, ranlib, :) 176AC_PROG_INSTALL 177 178AM_MAINTAINER_MODE 179 180# Enable Win32 DLL on MS Windows - FIXME 181AC_LIBTOOL_WIN32_DLL 182 183AC_PROG_LIBTOOL 184 185AM_PROG_CC_C_O 186 187AC_PROG_MAKE_SET 188 189# ------- 190# Headers 191# ------- 192 193# Sanity check for the cross-compilation case: 194AC_CHECK_HEADER(stdio.h,:, 195 [AC_MSG_ERROR([Can't find stdio.h. 196You must have a usable C system for the target already installed, at least 197including headers and, preferably, the library, before you can configure 198the Objective C runtime system. If necessary, install gcc now with 199\`LANGUAGES=c', then the target library, then build with \`LANGUAGES=objc'.])]) 200 201AC_HEADER_STDC 202 203AC_CHECK_HEADERS(sched.h) 204 205# ----------- 206# Miscellanea 207# ----------- 208 209AC_MSG_CHECKING([for thread model used by GCC]) 210target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` 211AC_MSG_RESULT([$target_thread_file]) 212 213if test $target_thread_file != single; then 214 AC_DEFINE(HAVE_GTHR_DEFAULT, 1, 215 [Define if the compiler has a thread header that is non single.]) 216fi 217 218 219AC_MSG_CHECKING([for exception model to use]) 220AC_LANG_PUSH(C) 221AC_ARG_ENABLE(sjlj-exceptions, 222 AS_HELP_STRING([--enable-sjlj-exceptions], 223 [force use of builtin_setjmp for exceptions]), 224[:], 225[dnl Botheration. Now we've got to detect the exception model. 226dnl Link tests against libgcc.a are problematic since -- at least 227dnl as of this writing -- we've not been given proper -L bits for 228dnl single-tree newlib and libgloss. 229dnl 230dnl This is what AC_TRY_COMPILE would do if it didn't delete the 231dnl conftest files before we got a change to grep them first. 232cat > conftest.$ac_ext << EOF 233[#]line __oline__ "configure" 234@interface Frob 235@end 236@implementation Frob 237@end 238int proc(); 239int foo() 240{ 241 @try { 242 return proc(); 243 } 244 @catch (Frob* ex) { 245 return 0; 246 } 247} 248EOF 249old_CFLAGS="$CFLAGS" 250dnl work around that we don't have Objective-C support in autoconf 251CFLAGS="-x objective-c -fgnu-runtime -fobjc-exceptions -S" 252if AC_TRY_EVAL(ac_compile); then 253 if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then 254 enable_sjlj_exceptions=yes 255 elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then 256 enable_sjlj_exceptions=no 257 fi 258fi 259CFLAGS="$old_CFLAGS" 260rm -f conftest*]) 261if test x$enable_sjlj_exceptions = xyes; then 262 AC_DEFINE(SJLJ_EXCEPTIONS, 1, 263 [Define if the compiler is configured for setjmp/longjmp exceptions.]) 264 ac_exception_model_name=sjlj 265elif test x$enable_sjlj_exceptions = xno; then 266 ac_exception_model_name="call frame" 267else 268 AC_MSG_ERROR([unable to detect exception model]) 269fi 270AC_LANG_POP(C) 271AC_MSG_RESULT($ac_exception_model_name) 272 273# ------ 274# Output 275# ------ 276 277if test ${multilib} = yes; then 278 multilib_arg="--enable-multilib" 279else 280 multilib_arg= 281fi 282 283AC_CONFIG_FILES([Makefile]) 284AC_OUTPUT 285