# Process this file with autoconf to produce a configure script.
-# Copyright (C) 1994-2016 Free Software Foundation, Inc.
+# Copyright (C) 1994-2024 Free Software Foundation, Inc.
# Originally contributed by Dave Love (d.love@dl.ac.uk).
#
#This file is part of GCC.
#along with GCC; see the file COPYING3. If not see
#<http://www.gnu.org/licenses/>.
-m4_include([../config/pkg.m4])
-
-AC_PREREQ(2.64)
AC_INIT(package-unused, version-unused,, libobjc)
AC_CONFIG_SRCDIR([objc/objc.h])
+AC_CONFIG_MACRO_DIRS([../config] [..])
GCC_TOPLEV_SUBDIRS
# We need the following definitions because AC_PROG_LIBTOOL relies on them
esac
AC_SUBST(glibcpp_srcdir)
+GCC_WITH_TOOLEXECLIBDIR
+
# Calculate toolexeclibdir
# Also toolexecdir, though it's only used in toolexeclibdir
case ${version_specific_libs} in
test x"$with_cross_host" != x"no"; then
# Install a library built with a cross compiler in tooldir, not libdir.
toolexecdir='$(exec_prefix)/$(target_noncanonical)'
- toolexeclibdir='$(toolexecdir)/lib'
+ case ${with_toolexeclibdir} in
+ no)
+ toolexeclibdir='$(toolexecdir)/lib'
+ ;;
+ *)
+ toolexeclibdir=${with_toolexeclibdir}
+ ;;
+ esac
else
toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
toolexeclibdir='$(libdir)'
# extra LD Flags which are required for targets
ACX_LT_HOST_FLAGS
-case "${host}" in
- *-darwin*)
- # Darwin needs -single_module when linking libobjc
- extra_ldflags_libobjc='$(lt_host_flags) -Wl,-single_module'
- ;;
- *-cygwin*|*-mingw*)
- # Tell libtool to build DLLs on Windows
- extra_ldflags_libobjc='$(lt_host_flags)'
- ;;
-esac
-AC_SUBST(extra_ldflags_libobjc)
+
+# Add CET specific flags if CET is enabled
+GCC_CET_FLAGS(CET_FLAGS)
+XCFLAGS="$XCFLAGS $CET_FLAGS"
AC_SUBST(CFLAGS)
+AC_SUBST(XCFLAGS)
AC_CHECK_TOOL(AS, as)
AC_CHECK_TOOL(AR, ar)
AC_PROG_MAKE_SET
+AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH], [test x$enable_darwin_at_rpath = xyes])
+
+# Must come after libtool is initialized.
+case "${host}" in
+ *-darwin[[4567]]*)
+ # Earlier Darwin versions need -single_module when linking libobjc; they
+ # do not support @rpath.
+ extra_ldflags_libobjc='$(lt_host_flags) -Wl,-single_module'
+ ;;
+ *-darwin*)
+ # Otherwise, single_module is the default and multi-module is ignored and
+ # obsolete.
+ extra_ldflags_libobjc='$(lt_host_flags)'
+ if test "x$enable_darwin_at_rpath" = "xyes"; then
+ extra_ldflags_libobjc="${extra_ldflags_libobjc} -Wc,-nodefaultrpaths"
+ extra_ldflags_libobjc="${extra_ldflags_libobjc} -Wl,-rpath,@loader_path"
+ fi
+ ;;
+ *-cygwin*|*-mingw*)
+ # Tell libtool to build DLLs on Windows
+ extra_ldflags_libobjc='$(lt_host_flags)'
+ ;;
+esac
+AC_SUBST(extra_ldflags_libobjc)
+
# -------
# Headers
# -------
*)
AC_MSG_CHECKING([for bdw garbage collector])
if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then
- dnl no bdw-gw options, fall back to the bdw-gc pkg-config module
- PKG_CHECK_EXISTS(bdw-gc,
- AC_MSG_RESULT([using bdw-gc pkg-config module]),
- AC_MSG_ERROR([no --with-target-bdw-gc options and no bdw-gc pkg-config module found]))
+ dnl no bdw-gw options, assuming bdw-gc in default locations
+ BDW_GC_CFLAGS=
+ BDW_GC_LIBS="-lgc"
else
dnl bdw-gw options passed by configure flags
if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then
for i in `echo $with_target_bdw_gc_include | tr ',' ' '`; do
case "$i" in
*=*) sd=${i%%=*}; d=${i#*=} ;;
- *) sd=.; d=$i ;;
+ *) sd=.; d=$i; fallback=$i ;;
esac
if test "$mldir" = "$sd"; then
bdw_val=$d
fi
done
- if test "x$bdw_val" = x; then
+ if test "x$bdw_val" = x && test "x$bdw_inc_dir" = x && test "x$fallback" != x; then
+ bdw_inc_dir="$fallback"
+ elif test "x$bdw_val" = x; then
AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-include])
+ else
+ bdw_inc_dir="$bdw_val"
fi
- bdw_inc_dir="$bdw_val"
fi
bdw_val=
if test "x$with_target_bdw_gc_lib" != x; then
AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-lib])
fi
BDW_GC_CFLAGS="-I$bdw_inc_dir"
- BDW_GC_LIBS="-L$bdw_lib_dir -lgc"
+ if test -f $bdw_lib_dir/libgc.la; then
+ BDW_GC_LIBS="$bdw_lib_dir/libgc.la"
+ else
+ BDW_GC_LIBS="-L$bdw_lib_dir -lgc"
+ fi
AC_MSG_RESULT([found])
fi
- AC_MSG_CHECKING([for system boehm-gc])
- save_CFLAGS=$CFLAGS
- save_LIBS=$LIBS
- CFLAGS="$CFLAGS $BDW_GC_CFLAGS"
- LIBS="$LIBS $BDW_GC_LIBS"
- dnl the link test is not good enough for ARM32 multilib detection,
- dnl first check to link, then to run
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([#include <gc/gc.h>],[GC_init()])],
- [
- AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <gc/gc.h>
- int main() {
- GC_init();
- return 0;
- }
- ]])],
- [system_bdw_gc_found=yes],
- [system_bdw_gc_found=no],
- dnl assume no system boehm-gc for cross builds ...
- [system_bdw_gc_found=no]
- )
- ],
- [system_bdw_gc_found=no])
- CFLAGS=$save_CFLAGS
- LIBS=$save_LIBS
- if test x$enable_objc_gc = xauto && test x$system_bdw_gc_found = xno; then
- AC_MSG_WARN([system bdw-gc not found, not building libobjc_gc])
- use_bdw_gc=no
- elif test x$enable_objc_gc = xyes && test x$system_bdw_gc_found = xno; then
- AC_MSG_ERROR([system bdw-gc required but not found])
- else
+ case "$BDW_GC_LIBS" in
+ *libgc.la)
use_bdw_gc=yes
- AC_MSG_RESULT([found])
- fi
+ ;;
+ *)
+ AC_MSG_CHECKING([for system boehm-gc])
+ save_CFLAGS=$CFLAGS
+ save_LIBS=$LIBS
+ CFLAGS="$CFLAGS $BDW_GC_CFLAGS"
+ LIBS="$LIBS $BDW_GC_LIBS"
+ dnl the link test is not good enough for ARM32 multilib detection,
+ dnl first check to link, then to run
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([#include <gc/gc.h>],[GC_init()])],
+ [
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ #include <gc/gc.h>
+ int main() {
+ GC_init();
+ return 0;
+ }
+ ]])],
+ [system_bdw_gc_found=yes],
+ [system_bdw_gc_found=no],
+ dnl assume no system boehm-gc for cross builds ...
+ [system_bdw_gc_found=no]
+ )
+ ],
+ [system_bdw_gc_found=no])
+ CFLAGS=$save_CFLAGS
+ LIBS=$save_LIBS
+ if test x$enable_objc_gc = xauto && test x$system_bdw_gc_found = xno; then
+ AC_MSG_WARN([system bdw-gc not found, not building libobjc_gc])
+ use_bdw_gc=no
+ elif test x$enable_objc_gc = xyes && test x$system_bdw_gc_found = xno; then
+ AC_MSG_ERROR([system bdw-gc required but not found])
+ else
+ use_bdw_gc=yes
+ AC_MSG_RESULT([found])
+ fi
+ esac
esac
if test "$use_bdw_gc" = no; then
AC_SUBST(OBJC_BOEHM_GC_INCLUDES)
AC_SUBST(OBJC_BOEHM_GC_LIBS)
+# Determine what GCC version number to use in filesystem paths.
+GCC_BASE_VER
+
# ------
# Output
# ------