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