xref: /netbsd-src/external/gpl3/gcc.old/dist/libobjc/configure.ac (revision 8feb0f0b7eaff0608f8350bbfa3098827b4bb91b)
136ac495dSmrg# Process this file with autoconf to produce a configure script.
2*8feb0f0bSmrg#   Copyright (C) 1994-2020 Free Software Foundation, Inc.
336ac495dSmrg#   Originally contributed by Dave Love (d.love@dl.ac.uk).
436ac495dSmrg#
536ac495dSmrg#This file is part of GCC.
636ac495dSmrg#
736ac495dSmrg#GCC is free software; you can redistribute it and/or modify
836ac495dSmrg#it under the terms of the GNU General Public License as published by
936ac495dSmrg#the Free Software Foundation; either version 3, or (at your option)
1036ac495dSmrg#any later version.
1136ac495dSmrg#
1236ac495dSmrg#GCC is distributed in the hope that it will be useful,
1336ac495dSmrg#but WITHOUT ANY WARRANTY; without even the implied warranty of
1436ac495dSmrg#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1536ac495dSmrg#GNU General Public License for more details.
1636ac495dSmrg#
1736ac495dSmrg#You should have received a copy of the GNU General Public License
1836ac495dSmrg#along with GCC; see the file COPYING3.  If not see
1936ac495dSmrg#<http://www.gnu.org/licenses/>.
2036ac495dSmrg
2136ac495dSmrgAC_INIT(package-unused, version-unused,, libobjc)
2236ac495dSmrgAC_CONFIG_SRCDIR([objc/objc.h])
2336ac495dSmrgGCC_TOPLEV_SUBDIRS
2436ac495dSmrg
2536ac495dSmrg# We need the following definitions because AC_PROG_LIBTOOL relies on them
2636ac495dSmrgPACKAGE=libobjc
2736ac495dSmrg# Version is pulled out to make it a bit easier to change using sed.
2836ac495dSmrgVERSION=4:0:0
2936ac495dSmrgAC_SUBST(VERSION)
3036ac495dSmrg
3136ac495dSmrg# This works around the fact that libtool configuration may change LD
3236ac495dSmrg# for this particular configuration, but some shells, instead of
3336ac495dSmrg# keeping the changes in LD private, export them just because LD is
3436ac495dSmrg# exported.
3536ac495dSmrgORIGINAL_LD_FOR_MULTILIBS=$LD
3636ac495dSmrg
3736ac495dSmrg# -------
3836ac495dSmrg# Options
3936ac495dSmrg# -------
4036ac495dSmrg
4136ac495dSmrg# We use these options to decide which functions to include.
4236ac495dSmrgAC_ARG_WITH(target-subdir,
4336ac495dSmrg[  --with-target-subdir=SUBDIR
4436ac495dSmrg                           configuring in a subdirectory])
4536ac495dSmrgAC_ARG_WITH(cross-host,
4636ac495dSmrg[  --with-cross-host=HOST  configuring with a cross compiler])
4736ac495dSmrg
4836ac495dSmrgAC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
4936ac495dSmrgAC_ARG_ENABLE(version-specific-runtime-libs,
5036ac495dSmrg[  --enable-version-specific-runtime-libs    Specify that runtime libraries should be installed in a compiler-specific directory ],
5136ac495dSmrg[case "$enableval" in
5236ac495dSmrg yes) version_specific_libs=yes ;;
5336ac495dSmrg no)  version_specific_libs=no ;;
5436ac495dSmrg *)   AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
5536ac495dSmrg esac],
5636ac495dSmrg[version_specific_libs=no])
5736ac495dSmrgAC_MSG_RESULT($version_specific_libs)
5836ac495dSmrg
5936ac495dSmrg# -----------
6036ac495dSmrg# Directories
6136ac495dSmrg# -----------
6236ac495dSmrg
6336ac495dSmrg# Find the rest of the source tree framework.
6436ac495dSmrgAM_ENABLE_MULTILIB(, ..)
6536ac495dSmrg
6636ac495dSmrgAC_CANONICAL_SYSTEM
6736ac495dSmrgACX_NONCANONICAL_TARGET
6836ac495dSmrg
6936ac495dSmrg# Export source directory.
7036ac495dSmrg# These need to be absolute paths, yet at the same time need to
7136ac495dSmrg# canonicalize only relative paths, because then amd will not unmount
7236ac495dSmrg# drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd.
7336ac495dSmrgcase $srcdir in
7436ac495dSmrg  [\\/$]* | ?:[\\/]*) glibcpp_srcdir=${srcdir} ;;
7536ac495dSmrg  *) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
7636ac495dSmrgesac
7736ac495dSmrgAC_SUBST(glibcpp_srcdir)
7836ac495dSmrg
79*8feb0f0bSmrgGCC_WITH_TOOLEXECLIBDIR
80*8feb0f0bSmrg
8136ac495dSmrg# Calculate toolexeclibdir
8236ac495dSmrg# Also toolexecdir, though it's only used in toolexeclibdir
8336ac495dSmrgcase ${version_specific_libs} in
8436ac495dSmrg  yes)
8536ac495dSmrg    # Need the gcc compiler version to know where to install libraries
8636ac495dSmrg    # and header files if --enable-version-specific-runtime-libs option
8736ac495dSmrg    # is selected.
8836ac495dSmrg    toolexecdir='$(libdir)/gcc/$(target_noncanonical)'
8936ac495dSmrg    toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
9036ac495dSmrg    ;;
9136ac495dSmrg  no)
9236ac495dSmrg    if test -n "$with_cross_host" &&
9336ac495dSmrg       test x"$with_cross_host" != x"no"; then
9436ac495dSmrg      # Install a library built with a cross compiler in tooldir, not libdir.
9536ac495dSmrg      toolexecdir='$(exec_prefix)/$(target_noncanonical)'
96*8feb0f0bSmrg      case ${with_toolexeclibdir} in
97*8feb0f0bSmrg	no)
9836ac495dSmrg	  toolexeclibdir='$(toolexecdir)/lib'
99*8feb0f0bSmrg	  ;;
100*8feb0f0bSmrg	*)
101*8feb0f0bSmrg	  toolexeclibdir=${with_toolexeclibdir}
102*8feb0f0bSmrg	  ;;
103*8feb0f0bSmrg      esac
10436ac495dSmrg    else
10536ac495dSmrg      toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
10636ac495dSmrg      toolexeclibdir='$(libdir)'
10736ac495dSmrg    fi
10836ac495dSmrg    multi_os_directory=`$CC -print-multi-os-directory`
10936ac495dSmrg    case $multi_os_directory in
11036ac495dSmrg      .) ;; # Avoid trailing /.
11136ac495dSmrg      *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
11236ac495dSmrg    esac
11336ac495dSmrg    ;;
11436ac495dSmrgesac
11536ac495dSmrgAC_SUBST(toolexecdir)
11636ac495dSmrgAC_SUBST(toolexeclibdir)
11736ac495dSmrg
11836ac495dSmrg# Figure out if we want to name the include directory and the
11936ac495dSmrg#  library name changes differently.
12036ac495dSmrgincludedirname=include
12136ac495dSmrglibsuffix=
12236ac495dSmrgcase "${host}" in
12336ac495dSmrg  *-darwin*)
12436ac495dSmrg    # Darwin is the only target so far that needs a different include directory.
12536ac495dSmrg    includedirname=include-gnu-runtime
12636ac495dSmrg    libsuffix=-gnu
12736ac495dSmrg    ;;
12836ac495dSmrgesac
12936ac495dSmrgAC_SUBST(includedirname)
13036ac495dSmrgAC_SUBST(libsuffix)
13136ac495dSmrg
13236ac495dSmrgAC_CONFIG_HEADERS(config.h)
13336ac495dSmrg
13436ac495dSmrg# --------
13536ac495dSmrg# Programs
13636ac495dSmrg# --------
13736ac495dSmrg
13836ac495dSmrgGCC_NO_EXECUTABLES
13936ac495dSmrg
14036ac495dSmrg# We must force CC to /not/ be a precious variable; otherwise
14136ac495dSmrg# the wrong, non-multilib-adjusted value will be used in multilibs.
14236ac495dSmrg# As a side effect, we have to subst CFLAGS ourselves.
14336ac495dSmrgm4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
14436ac495dSmrgm4_define([_AC_ARG_VAR_PRECIOUS],[])
14536ac495dSmrgAC_PROG_CC
14636ac495dSmrgm4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
14736ac495dSmrg
14836ac495dSmrg# extra LD Flags which are required for targets
14936ac495dSmrgACX_LT_HOST_FLAGS
15036ac495dSmrgcase "${host}" in
15136ac495dSmrg  *-darwin*)
15236ac495dSmrg    # Darwin needs -single_module when linking libobjc
15336ac495dSmrg    extra_ldflags_libobjc='$(lt_host_flags) -Wl,-single_module'
15436ac495dSmrg    ;;
15536ac495dSmrg  *-cygwin*|*-mingw*)
15636ac495dSmrg    # Tell libtool to build DLLs on Windows
15736ac495dSmrg    extra_ldflags_libobjc='$(lt_host_flags)'
15836ac495dSmrg    ;;
15936ac495dSmrgesac
16036ac495dSmrgAC_SUBST(extra_ldflags_libobjc)
16136ac495dSmrg
162a2dc1f3fSmrg# Add CET specific flags if CET is enabled
163a2dc1f3fSmrgGCC_CET_FLAGS(CET_FLAGS)
164a2dc1f3fSmrgXCFLAGS="$XCFLAGS $CET_FLAGS"
165a2dc1f3fSmrg
16636ac495dSmrgAC_SUBST(CFLAGS)
167a2dc1f3fSmrgAC_SUBST(XCFLAGS)
16836ac495dSmrg
16936ac495dSmrgAC_CHECK_TOOL(AS, as)
17036ac495dSmrgAC_CHECK_TOOL(AR, ar)
17136ac495dSmrgAC_CHECK_TOOL(RANLIB, ranlib, :)
17236ac495dSmrgAC_PROG_INSTALL
17336ac495dSmrg
17436ac495dSmrgAM_MAINTAINER_MODE
17536ac495dSmrg
17636ac495dSmrg# Enable Win32 DLL on MS Windows - FIXME
17736ac495dSmrgAC_LIBTOOL_WIN32_DLL
17836ac495dSmrg
17936ac495dSmrgAC_PROG_LIBTOOL
18036ac495dSmrg
18136ac495dSmrgAM_PROG_CC_C_O
18236ac495dSmrg
18336ac495dSmrgAC_PROG_MAKE_SET
18436ac495dSmrg
18536ac495dSmrg# -------
18636ac495dSmrg# Headers
18736ac495dSmrg# -------
18836ac495dSmrg
18936ac495dSmrg# Sanity check for the cross-compilation case:
19036ac495dSmrgAC_CHECK_HEADER(stdio.h,:,
19136ac495dSmrg  [AC_MSG_ERROR([Can't find stdio.h.
19236ac495dSmrgYou must have a usable C system for the target already installed, at least
19336ac495dSmrgincluding headers and, preferably, the library, before you can configure
19436ac495dSmrgthe Objective C runtime system.  If necessary, install gcc now with
19536ac495dSmrg\`LANGUAGES=c', then the target library, then build with \`LANGUAGES=objc'.])])
19636ac495dSmrg
19736ac495dSmrgAC_HEADER_STDC
19836ac495dSmrg
19936ac495dSmrgAC_CHECK_HEADERS(sched.h)
20036ac495dSmrg
20136ac495dSmrg# -----------
20236ac495dSmrg# Miscellanea
20336ac495dSmrg# -----------
20436ac495dSmrg
20536ac495dSmrg# Check if we have thread-local storage
20636ac495dSmrgGCC_CHECK_TLS
20736ac495dSmrg
20836ac495dSmrggt_BITFIELD_TYPE_MATTERS
20936ac495dSmrg
21036ac495dSmrg# -----------
21136ac495dSmrg# boehm-gc
21236ac495dSmrg# -----------
21336ac495dSmrg
21436ac495dSmrgAC_ARG_ENABLE(objc-gc,
21536ac495dSmrg[AS_HELP_STRING([--enable-objc-gc],
21636ac495dSmrg		[enable use of Boehm's garbage collector with the
21736ac495dSmrg		 GNU Objective-C runtime])],,enable_objc_gc=no)
21836ac495dSmrgAC_ARG_WITH([target-bdw-gc],
21936ac495dSmrg[AS_HELP_STRING([--with-target-bdw-gc=PATHLIST],
22036ac495dSmrg		[specify prefix directory for installed bdw-gc package.
22136ac495dSmrg		 Equivalent to --with-target-bdw-gc-include=PATH/include
22236ac495dSmrg		 plus --with-target-bdw-gc-lib=PATH/lib])])
22336ac495dSmrgAC_ARG_WITH([target-bdw-gc-include],
22436ac495dSmrg[AS_HELP_STRING([--with-target-bdw-gc-include=PATHLIST],
22536ac495dSmrg		[specify directories for installed bdw-gc include files])])
22636ac495dSmrgAC_ARG_WITH([target-bdw-gc-lib],
22736ac495dSmrg[AS_HELP_STRING([--with-target-bdw-gc-lib=PATHLIST],
22836ac495dSmrg		[specify directories for installed bdw-gc library])])
22936ac495dSmrg
23036ac495dSmrgcase "$enable_objc_gc" in
23136ac495dSmrgno)
23236ac495dSmrg  use_bdw_gc=no
23336ac495dSmrg  ;;
23436ac495dSmrg*)
23536ac495dSmrg  AC_MSG_CHECKING([for bdw garbage collector])
23636ac495dSmrg  if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then
23736ac495dSmrg    dnl no bdw-gw options, assuming bdw-gc in default locations
23836ac495dSmrg    BDW_GC_CFLAGS=
23936ac495dSmrg    BDW_GC_LIBS="-lgc"
24036ac495dSmrg  else
24136ac495dSmrg    dnl bdw-gw options passed by configure flags
24236ac495dSmrg    if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then
24336ac495dSmrg      AC_MSG_ERROR([found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing])
24436ac495dSmrg    elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then
24536ac495dSmrg      AC_MSG_ERROR([found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing])
24636ac495dSmrg    else
24736ac495dSmrg      AC_MSG_RESULT([using paths configured with --with-target-bdw-gc options])
24836ac495dSmrg    fi
24936ac495dSmrg    mldir=`${CC-gcc} --print-multi-directory 2>/dev/null`
25036ac495dSmrg    bdw_val=
25136ac495dSmrg    if test "x$with_target_bdw_gc" != x; then
25236ac495dSmrg      for i in `echo $with_target_bdw_gc | tr ',' ' '`; do
25336ac495dSmrg        case "$i" in
25436ac495dSmrg          *=*) sd=${i%%=*}; d=${i#*=} ;;
25536ac495dSmrg          *) sd=.; d=$i ;;
25636ac495dSmrg        esac
25736ac495dSmrg        if test "$mldir" = "$sd"; then
25836ac495dSmrg          bdw_val=$d
25936ac495dSmrg        fi
26036ac495dSmrg      done
26136ac495dSmrg      if test "x$bdw_val" = x; then
26236ac495dSmrg        AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc])
26336ac495dSmrg      fi
26436ac495dSmrg      bdw_inc_dir="$bdw_val/include"
26536ac495dSmrg      bdw_lib_dir="$bdw_val/lib"
26636ac495dSmrg    fi
26736ac495dSmrg    bdw_val=
26836ac495dSmrg    if test "x$with_target_bdw_gc_include" != x; then
26936ac495dSmrg      for i in `echo $with_target_bdw_gc_include | tr ',' ' '`; do
27036ac495dSmrg        case "$i" in
27136ac495dSmrg          *=*) sd=${i%%=*}; d=${i#*=} ;;
27236ac495dSmrg          *) sd=.; d=$i; fallback=$i ;;
27336ac495dSmrg        esac
27436ac495dSmrg        if test "$mldir" = "$sd"; then
27536ac495dSmrg          bdw_val=$d
27636ac495dSmrg        fi
27736ac495dSmrg      done
27836ac495dSmrg      if test "x$bdw_val" = x && test "x$bdw_inc_dir" = x && test "x$fallback" != x; then
27936ac495dSmrg        bdw_inc_dir="$fallback"
28036ac495dSmrg      elif test "x$bdw_val" = x; then
28136ac495dSmrg        AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-include])
28236ac495dSmrg      else
28336ac495dSmrg        bdw_inc_dir="$bdw_val"
28436ac495dSmrg      fi
28536ac495dSmrg    fi
28636ac495dSmrg    bdw_val=
28736ac495dSmrg    if test "x$with_target_bdw_gc_lib" != x; then
28836ac495dSmrg      for i in `echo $with_target_bdw_gc_lib | tr ',' ' '`; do
28936ac495dSmrg        case "$i" in
29036ac495dSmrg          *=*) sd=${i%%=*}; d=${i#*=} ;;
29136ac495dSmrg          *) sd=.; d=$i ;;
29236ac495dSmrg        esac
29336ac495dSmrg        if test "$mldir" = "$sd"; then
29436ac495dSmrg          bdw_val=$d
29536ac495dSmrg        fi
29636ac495dSmrg      done
29736ac495dSmrg      if test "x$bdw_val" = x; then
29836ac495dSmrg        AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-lib])
29936ac495dSmrg      fi
30036ac495dSmrg      bdw_lib_dir="$bdw_val"
30136ac495dSmrg    fi
30236ac495dSmrg    if test "x$bdw_inc_dir" = x; then
30336ac495dSmrg      AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-include])
30436ac495dSmrg    fi
30536ac495dSmrg    if test "x$bdw_lib_dir" = x; then
30636ac495dSmrg      AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-lib])
30736ac495dSmrg    fi
30836ac495dSmrg    BDW_GC_CFLAGS="-I$bdw_inc_dir"
30936ac495dSmrg    if test -f $bdw_lib_dir/libgc.la; then
31036ac495dSmrg      BDW_GC_LIBS="$bdw_lib_dir/libgc.la"
31136ac495dSmrg    else
31236ac495dSmrg      BDW_GC_LIBS="-L$bdw_lib_dir -lgc"
31336ac495dSmrg    fi
31436ac495dSmrg    AC_MSG_RESULT([found])
31536ac495dSmrg  fi
31636ac495dSmrg
31736ac495dSmrg  case "$BDW_GC_LIBS" in
31836ac495dSmrg  *libgc.la)
31936ac495dSmrg    use_bdw_gc=yes
32036ac495dSmrg    ;;
32136ac495dSmrg  *)
32236ac495dSmrg    AC_MSG_CHECKING([for system boehm-gc])
32336ac495dSmrg    save_CFLAGS=$CFLAGS
32436ac495dSmrg    save_LIBS=$LIBS
32536ac495dSmrg    CFLAGS="$CFLAGS $BDW_GC_CFLAGS"
32636ac495dSmrg    LIBS="$LIBS $BDW_GC_LIBS"
32736ac495dSmrg    dnl the link test is not good enough for ARM32 multilib detection,
32836ac495dSmrg    dnl first check to link, then to run
32936ac495dSmrg    AC_LINK_IFELSE(
33036ac495dSmrg      [AC_LANG_PROGRAM([#include <gc/gc.h>],[GC_init()])],
33136ac495dSmrg      [
33236ac495dSmrg        AC_RUN_IFELSE([AC_LANG_SOURCE([[
33336ac495dSmrg          #include <gc/gc.h>
33436ac495dSmrg          int main() {
33536ac495dSmrg            GC_init();
33636ac495dSmrg            return 0;
33736ac495dSmrg          }
33836ac495dSmrg          ]])],
33936ac495dSmrg          [system_bdw_gc_found=yes],
34036ac495dSmrg          [system_bdw_gc_found=no],
34136ac495dSmrg          dnl assume no system boehm-gc for cross builds ...
34236ac495dSmrg          [system_bdw_gc_found=no]
34336ac495dSmrg        )
34436ac495dSmrg      ],
34536ac495dSmrg      [system_bdw_gc_found=no])
34636ac495dSmrg    CFLAGS=$save_CFLAGS
34736ac495dSmrg    LIBS=$save_LIBS
34836ac495dSmrg    if test x$enable_objc_gc = xauto && test x$system_bdw_gc_found = xno; then
34936ac495dSmrg      AC_MSG_WARN([system bdw-gc not found, not building libobjc_gc])
35036ac495dSmrg      use_bdw_gc=no
35136ac495dSmrg    elif test x$enable_objc_gc = xyes && test x$system_bdw_gc_found = xno; then
35236ac495dSmrg      AC_MSG_ERROR([system bdw-gc required but not found])
35336ac495dSmrg    else
35436ac495dSmrg      use_bdw_gc=yes
35536ac495dSmrg      AC_MSG_RESULT([found])
35636ac495dSmrg    fi
35736ac495dSmrg  esac
35836ac495dSmrgesac
35936ac495dSmrg
36036ac495dSmrgif test "$use_bdw_gc" = no; then
36136ac495dSmrg  OBJC_GCFLAGS=''
36236ac495dSmrg  OBJC_BOEHM_GC=''
36336ac495dSmrg  OBJC_BOEHM_GC_INCLUDES=''
36436ac495dSmrg  OBJC_BOEHM_GC_LIBS=''
36536ac495dSmrgelse
36636ac495dSmrg  OBJC_GCFLAGS='-DOBJC_WITH_GC=1'
36736ac495dSmrg  OBJC_BOEHM_GC='libobjc_gc$(libsuffix).la'
36836ac495dSmrg  OBJC_BOEHM_GC_INCLUDES=$BDW_GC_CFLAGS
36936ac495dSmrg  OBJC_BOEHM_GC_LIBS=$BDW_GC_LIBS
37036ac495dSmrgfi
37136ac495dSmrgAC_SUBST(OBJC_GCFLAGS)
37236ac495dSmrgAC_SUBST(OBJC_BOEHM_GC)
37336ac495dSmrgAC_SUBST(OBJC_BOEHM_GC_INCLUDES)
37436ac495dSmrgAC_SUBST(OBJC_BOEHM_GC_LIBS)
37536ac495dSmrg
37636ac495dSmrg# Determine what GCC version number to use in filesystem paths.
37736ac495dSmrgGCC_BASE_VER
37836ac495dSmrg
37936ac495dSmrg# ------
38036ac495dSmrg# Output
38136ac495dSmrg# ------
38236ac495dSmrg
38336ac495dSmrgif test ${multilib} = yes; then
38436ac495dSmrg  multilib_arg="--enable-multilib"
38536ac495dSmrgelse
38636ac495dSmrg  multilib_arg=
38736ac495dSmrgfi
38836ac495dSmrg
38936ac495dSmrgAC_CONFIG_FILES([Makefile])
39036ac495dSmrgAC_OUTPUT
391