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