Hi!

Short Friday afternoon status update:

On 2023-10-27T08:51:12+0100, Iain Sandoe <i...@sandoe.co.uk> wrote:
>> On 26 Oct 2023, at 09:21, Thomas Schwinge <tho...@codesourcery.com> wrote:
>> First, I've pushed into GCC upstream Git branch devel/rust/libgrust-v2
>> the "v2" libgrust changes as posted by Arthur, so that people can easily
>> test this before it getting into Git master branch.
>>
>> I'll myself later try this for GCN and nvptx targets -- in their current
>> form where they don't support C++ (standard library)

Indeed, this currently fails to build:

    [...]
    make[3]: Entering directory 
`[...]/build-gcc/amdgcn-amdhsa/libgrust/libproc_macro'
    [...]
    libtool: compile:  [...]/build-gcc/./gcc/xg++ -B[...]/build-gcc/./gcc/ 
-nostdinc++ -funconfigured-libstdc++-v3 [...] -c 
[...]/source-gcc/libgrust/libproc_macro/proc_macro.cc
    xg++: error: unrecognized command-line option ‘-funconfigured-libstdc++-v3’
    make[3]: *** [proc_macro.lo] Error 1
    make[3]: Leaving directory 
`[...]/build-gcc/amdgcn-amdhsa/libgrust/libproc_macro'
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `[...]/build-gcc/amdgcn-amdhsa/libgrust'
    make[1]: *** [all-target-libgrust] Error 2
    make[1]: Leaving directory `[...]/build-gcc'
    make: *** [all] Error 2

("error: unrecognized command-line option ‘-funconfigured-libstdc++-v3’"
indeed is the expected outcome if libstdc++ is not available, as I
understand.)

Same for nvptx-none target.

We need two things: (a) make sure that target libgrust build depends on
target libstdc++, and (b) disable target libgrust if target libstdc++ is
not available (and, later, gracefully handle that situation in the Rust
front end).

As far as I remember, patches exist for (a), and Arthur is going to
integrate/re-submit those.  Arthur, before re-submission, feel free to
first cherr-pick and push'these into the GCC upstream Git branch
devel/rust/libgrust-v2, so that I can re-test.  I'm not sure about (b),
whether that fell out of the (a) changes, too?  I can otherwise look into
that later.

>> and in my hacky WIP
>> trees where C++ (standard library) is supported to some extent.

This does built -- but the default multilib only, as Iain already
reported:

>> (This
>> should, roughly, match C++ functionality (not) provided by a number of
>> other GCC "embedded" targets.)
>
> on Darwin, it works for later systems without multilibs, but fails to build 
> multilibs.

I see that, too.

> —— so….
>
> With the patch below bootstrap suceeded on x86_64-darwin17 and produced a 
> correct
> architecture multilib.

Confirmed, thanks!

> Of course, there is no way to test this at the moment - I’d suggest
> that the next step might be something small in functionality that can allow 
> at least one
> test to be wired up.

ACK.

> ^^^ this is “lightly tested” of course, as I cycle through other versions of 
> the OS will see
> how it pans out.
>
> Do you want me to make a PR with this change against upstream?

Yes, please.  (But no hurry.)


Grüße
 Thomas


> From 027bc2c5255a6f1b75592e896dd99fac55bfb9b8 Mon Sep 17 00:00:00 2001
> From: Iain Sandoe <i...@sandoe.co.uk>
> Date: Thu, 26 Oct 2023 23:19:36 +0100
> Subject: [PATCH] libgrust: enable multilib
>
> Most of this change is the regenerated files, the multilib config macro
> was already present, but commented out.
>
> libgrust/ChangeLog:
>
>       * Makefile.in:
>       * aclocal.m4: Regenerate.
>       * configure: Regenerate.
>       * configure.ac: Uncomment AM_ENABLE_MULTILIB.
>       * libproc_macro/Makefile.in:
>
> Signed-off-by: Iain Sandoe <i...@sandoe.co.uk>
> ---
>  libgrust/Makefile.in               |  2 +
>  libgrust/aclocal.m4                |  1 +
>  libgrust/configure                 | 68 ++++++++++++++++++++++++++++--
>  libgrust/configure.ac              |  2 +-
>  libgrust/libproc_macro/Makefile.in |  2 +
>  5 files changed, 71 insertions(+), 4 deletions(-)
>
> diff --git a/libgrust/Makefile.in b/libgrust/Makefile.in
> index bc9b6cc227a..2dc39adff24 100644
> --- a/libgrust/Makefile.in
> +++ b/libgrust/Makefile.in
> @@ -93,6 +93,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
>  am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
>       $(top_srcdir)/../config/depstand.m4 \
>       $(top_srcdir)/../config/lead-dot.m4 \
> +     $(top_srcdir)/../config/multi.m4 \
>       $(top_srcdir)/../config/no-executables.m4 \
>       $(top_srcdir)/../config/override.m4 \
>       $(top_srcdir)/../config/toolexeclibdir.m4 \
> @@ -275,6 +276,7 @@ localedir = @localedir@
>  localstatedir = @localstatedir@
>  mandir = @mandir@
>  mkdir_p = @mkdir_p@
> +multi_basedir = @multi_basedir@
>  oldincludedir = @oldincludedir@
>  pdfdir = @pdfdir@
>  prefix = @prefix@
> diff --git a/libgrust/aclocal.m4 b/libgrust/aclocal.m4
> index 1bd42c34d74..5d808f05afa 100644
> --- a/libgrust/aclocal.m4
> +++ b/libgrust/aclocal.m4
> @@ -1250,6 +1250,7 @@ AC_SUBST([am__untar])
>  m4_include([../config/acx.m4])
>  m4_include([../config/depstand.m4])
>  m4_include([../config/lead-dot.m4])
> +m4_include([../config/multi.m4])
>  m4_include([../config/no-executables.m4])
>  m4_include([../config/override.m4])
>  m4_include([../config/toolexeclibdir.m4])
> diff --git a/libgrust/configure b/libgrust/configure
> index 2756bddd10b..282027873bd 100755
> --- a/libgrust/configure
> +++ b/libgrust/configure
> @@ -732,6 +732,7 @@ build_os
>  build_vendor
>  build_cpu
>  build
> +multi_basedir
>  target_alias
>  host_alias
>  build_alias
> @@ -773,6 +774,7 @@ SHELL'
>  ac_subst_files=''
>  ac_user_opts='
>  enable_option_checking
> +enable_multilib
>  enable_maintainer_mode
>  enable_silent_rules
>  with_toolexeclibdir
> @@ -1421,6 +1423,7 @@ Optional Features:
>    --disable-option-checking  ignore unrecognized --enable/--with options
>    --disable-FEATURE       do not include FEATURE (same as 
> --enable-FEATURE=no)
>    --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
> +  --enable-multilib       build many library versions (default)
>    --enable-maintainer-mode
>                            enable make rules and dependencies not useful (and
>                            sometimes confusing) to the casual installer
> @@ -2376,7 +2379,43 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
>  ac_config_files="$ac_config_files Makefile"
>
>
> -# AM_ENABLE_MULTILIB(, ..)
> +# Default to --enable-multilib
> +# Check whether --enable-multilib was given.
> +if test "${enable_multilib+set}" = set; then :
> +  enableval=$enable_multilib; case "$enableval" in
> +  yes) multilib=yes ;;
> +  no)  multilib=no ;;
> +  *)   as_fn_error $? "bad value $enableval for multilib option" "$LINENO" 5 
> ;;
> + esac
> +else
> +  multilib=yes
> +fi
> +
> +
> +# We may get other options which we leave undocumented:
> +# --with-target-subdir, --with-multisrctop, --with-multisubdir
> +# See config-ml.in if you want the gory details.
> +
> +if test "$srcdir" = "."; then
> +  if test "$with_target_subdir" != "."; then
> +    multi_basedir="$srcdir/$with_multisrctop../.."
> +  else
> +    multi_basedir="$srcdir/$with_multisrctop.."
> +  fi
> +else
> +  multi_basedir="$srcdir/.."
> +fi
> +
> +
> +# Even if the default multilib is not a cross compilation,
> +# it may be that some of the other multilibs are.
> +if test $cross_compiling = no && test $multilib = yes \
> +   && test "x${with_multisubdir}" != x ; then
> +   cross_compiling=maybe
> +fi
> +
> +ac_config_commands="$ac_config_commands default-1"
> +
>
>  # Do not delete or change the following two lines.  For why, see
>  # http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
> @@ -12512,7 +12551,7 @@ else
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<_LT_EOF
> -#line 12515 "configure"
> +#line 12554 "configure"
>  #include "confdefs.h"
>
>  #if HAVE_DLFCN_H
> @@ -12618,7 +12657,7 @@ else
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<_LT_EOF
> -#line 12621 "configure"
> +#line 12660 "configure"
>  #include "confdefs.h"
>
>  #if HAVE_DLFCN_H
> @@ -16804,6 +16843,20 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
>  #
>  # INIT-COMMANDS
>  #
> +
> +srcdir="$srcdir"
> +host="$host"
> +target="$target"
> +with_multisubdir="$with_multisubdir"
> +with_multisrctop="$with_multisrctop"
> +with_target_subdir="$with_target_subdir"
> +ac_configure_args="${multilib_arg} ${ac_configure_args}"
> +multi_basedir="$multi_basedir"
> +CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
> +CC="$CC"
> +CXX="$CXX"
> +GFORTRAN="$GFORTRAN"
> +GDC="$GDC"
>  AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
>
>
> @@ -17175,6 +17228,7 @@ for ac_config_target in $ac_config_targets
>  do
>    case $ac_config_target in
>      "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
> +    "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
>      "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
>      "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
>      "libproc_macro/Makefile") CONFIG_FILES="$CONFIG_FILES 
> libproc_macro/Makefile" ;;
> @@ -17607,6 +17661,14 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
>
>
>    case $ac_file$ac_mode in
> +    "default-1":C)
> +# Only add multilib support code if we just rebuilt the top-level
> +# Makefile.
> +case " $CONFIG_FILES " in
> + *" Makefile "*)
> +   ac_file=Makefile . ${multi_basedir}/config-ml.in
> +   ;;
> +esac ;;
>      "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
>    # Older Autoconf quotes --file arguments for eval, but not when files
>    # are listed without --file.  Let's play safe and only enable the eval
> diff --git a/libgrust/configure.ac b/libgrust/configure.ac
> index 7aed489a643..d75aa632462 100644
> --- a/libgrust/configure.ac
> +++ b/libgrust/configure.ac
> @@ -2,7 +2,7 @@ AC_INIT([libgrust], version-unused,,librust)
>  AC_CONFIG_SRCDIR(Makefile.am)
>  AC_CONFIG_FILES([Makefile])
>
> -# AM_ENABLE_MULTILIB(, ..)
> +AM_ENABLE_MULTILIB(, ..)
>
>  # Do not delete or change the following two lines.  For why, see
>  # http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
> diff --git a/libgrust/libproc_macro/Makefile.in 
> b/libgrust/libproc_macro/Makefile.in
> index d3a39736679..46eb6484094 100644
> --- a/libgrust/libproc_macro/Makefile.in
> +++ b/libgrust/libproc_macro/Makefile.in
> @@ -95,6 +95,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
>  am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
>       $(top_srcdir)/../config/depstand.m4 \
>       $(top_srcdir)/../config/lead-dot.m4 \
> +     $(top_srcdir)/../config/multi.m4 \
>       $(top_srcdir)/../config/no-executables.m4 \
>       $(top_srcdir)/../config/override.m4 \
>       $(top_srcdir)/../config/toolexeclibdir.m4 \
> @@ -316,6 +317,7 @@ localedir = @localedir@
>  localstatedir = @localstatedir@
>  mandir = @mandir@
>  mkdir_p = @mkdir_p@
> +multi_basedir = @multi_basedir@
>  oldincludedir = @oldincludedir@
>  pdfdir = @pdfdir@
>  prefix = @prefix@
> --
> 2.39.2 (Apple Git-143)
>
>
>>
>>
>> Then:
>>
>> On 2023-10-25T13:06:46+0200, Arthur Cohen <arthur.co...@embecosm.com> wrote:
>>> From: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>
>>>
>>> Add some dummy files in libproc_macro along with its build system.
>>
>> I've not reviewed the build system in detail, just had a very quick look.
>>
>> Three instances of 'librust'; should be 'libgrust':
>>
>>    configure.ac:AC_INIT([libgrust], version-unused,,librust)
>>
>>    configure.ac:AC_MSG_NOTICE([librust has been configured.])
>>
>>    Makefile.am:        "TARGET_LIB_PATH_librust=$(TARGET_LIB_PATH_librust)" \
>>
>> Compared to libgomp (which I'm reasonably familiar with), I found missing
>> in 'libgrust' at 'configure'-level:
>>
>>      --enable-multilib       build many library versions (default)
>>
>>      --disable-werror        disable building with -Werror
>>
>>      --enable-symvers=STYLE  enables symbol versioning of the shared library
>>                              [default=yes]
>>
>>      --enable-cet            enable Intel CET in target libraries 
>> [default=auto]
>>
>>      --with-gcc-major-version-only
>>                              use only GCC major number in filesystem paths
>>
>> I can't tell off-hand whether all these are important, however.
>>
>> Additionally, the new one that's being discussed in
>> <https://github.com/Rust-GCC/gccrs/issues/2714>
>> 'Update libgrust for upstream GCC commit 
>> 6a6d3817afa02bbcd2388c8e005da6faf88932f1 "Config,Darwin: Allow for 
>> configuring Darwin to use embedded runpath"'.
>>
>>
>> Grüße
>> Thomas
>>
>>
>>> libgrust/Changelog:
>>>
>>>      * Makefile.am: New file.
>>>      * configure.ac: New file.
>>>      * libproc_macro/Makefile.am: New file.
>>>      * libproc_macro/proc_macro.cc: New file.
>>>      * libproc_macro/proc_macro.h: New file.
>>>
>>> Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>
>>> ---
>>> libgrust/Makefile.am                 |  68 ++++++++++++++++
>>> libgrust/configure.ac                | 113 +++++++++++++++++++++++++++
>>> libgrust/libproc_macro/Makefile.am   |  58 ++++++++++++++
>>> libgrust/libproc_macro/proc_macro.cc |   7 ++
>>> libgrust/libproc_macro/proc_macro.h  |   7 ++
>>> 5 files changed, 253 insertions(+)
>>> create mode 100644 libgrust/Makefile.am
>>> create mode 100644 libgrust/configure.ac
>>> create mode 100644 libgrust/libproc_macro/Makefile.am
>>> create mode 100644 libgrust/libproc_macro/proc_macro.cc
>>> create mode 100644 libgrust/libproc_macro/proc_macro.h
>>>
>>> diff --git a/libgrust/Makefile.am b/libgrust/Makefile.am
>>> new file mode 100644
>>> index 00000000000..8e5274922c5
>>> --- /dev/null
>>> +++ b/libgrust/Makefile.am
>>> @@ -0,0 +1,68 @@
>>> +AUTOMAKE_OPTIONS = 1.8 foreign
>>> +
>>> +SUFFIXES = .c .rs .def .o .lo .a
>>> +
>>> +ACLOCAL_AMFLAGS = -I . -I .. -I ../config
>>> +
>>> +AM_CFLAGS = -I $(srcdir)/../libgcc -I $(MULTIBUILDTOP)../../gcc/include
>>> +
>>> +TOP_GCCDIR := $(shell cd $(top_srcdir) && cd .. && pwd)
>>> +
>>> +GCC_DIR = $(TOP_GCCDIR)/gcc
>>> +RUST_SRC = $(GCC_DIR)/rust
>>> +
>>> +toolexeclibdir=@toolexeclibdir@
>>> +toolexecdir=@toolexecdir@
>>> +
>>> +SUBDIRS = libproc_macro
>>> +
>>> +RUST_BUILDDIR := $(shell pwd)
>>> +
>>> +# Work around what appears to be a GNU make bug handling MAKEFLAGS
>>> +# values defined in terms of make variables, as is the case for CC and
>>> +# friends when we are called from the top level Makefile.
>>> +AM_MAKEFLAGS = \
>>> +        "GCC_DIR=$(GCC_DIR)" \
>>> +        "RUST_SRC=$(RUST_SRC)" \
>>> +     "AR_FLAGS=$(AR_FLAGS)" \
>>> +     "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
>>> +     "CC_FOR_TARGET=$(CC_FOR_TARGET)" \
>>> +     "RUST_FOR_TARGET=$(RUST_FOR_TARGET)" \
>>> +     "CFLAGS=$(CFLAGS)" \
>>> +     "CXXFLAGS=$(CXXFLAGS)" \
>>> +     "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
>>> +     "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
>>> +     "INSTALL=$(INSTALL)" \
>>> +     "INSTALL_DATA=$(INSTALL_DATA)" \
>>> +     "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
>>> +     "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
>>> +     "LDFLAGS=$(LDFLAGS)" \
>>> +     "LIBCFLAGS=$(LIBCFLAGS)" \
>>> +     "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
>>> +     "MAKE=$(MAKE)" \
>>> +     "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
>>> +     "PICFLAG=$(PICFLAG)" \
>>> +     "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
>>> +     "SHELL=$(SHELL)" \
>>> +     "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
>>> +     "exec_prefix=$(exec_prefix)" \
>>> +     "infodir=$(infodir)" \
>>> +     "libdir=$(libdir)" \
>>> +     "includedir=$(includedir)" \
>>> +     "prefix=$(prefix)" \
>>> +     "tooldir=$(tooldir)" \
>>> +     "gxx_include_dir=$(gxx_include_dir)" \
>>> +     "AR=$(AR)" \
>>> +     "AS=$(AS)" \
>>> +     "LD=$(LD)" \
>>> +     "RANLIB=$(RANLIB)" \
>>> +     "NM=$(NM)" \
>>> +     "NM_FOR_BUILD=$(NM_FOR_BUILD)" \
>>> +     "NM_FOR_TARGET=$(NM_FOR_TARGET)" \
>>> +     "DESTDIR=$(DESTDIR)" \
>>> +     "WERROR=$(WERROR)" \
>>> +        "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \
>>> +        "TARGET_LIB_PATH_librust=$(TARGET_LIB_PATH_librust)" \
>>> +     "LIBTOOL=$(RUST_BUILDDIR)/libtool"
>>> +
>>> +include $(top_srcdir)/../multilib.am
>>> diff --git a/libgrust/configure.ac b/libgrust/configure.ac
>>> new file mode 100644
>>> index 00000000000..7aed489a643
>>> --- /dev/null
>>> +++ b/libgrust/configure.ac
>>> @@ -0,0 +1,113 @@
>>> +AC_INIT([libgrust], version-unused,,librust)
>>> +AC_CONFIG_SRCDIR(Makefile.am)
>>> +AC_CONFIG_FILES([Makefile])
>>> +
>>> +# AM_ENABLE_MULTILIB(, ..)
>>> +
>>> +# Do not delete or change the following two lines.  For why, see
>>> +# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
>>> +AC_CANONICAL_SYSTEM
>>> +target_alias=${target_alias-$host_alias}
>>> +AC_SUBST(target_alias)
>>> +
>>> +# Automake should never attempt to rebuild configure
>>> +AM_MAINTAINER_MODE
>>> +
>>> +AM_INIT_AUTOMAKE([1.15.1 foreign no-dist -Wall])
>>> +
>>> +# Make sure we don't test executables when making cross-tools.
>>> +GCC_NO_EXECUTABLES
>>> +
>>> +
>>> +# Add the ability to change LIBTOOL directory
>>> +GCC_WITH_TOOLEXECLIBDIR
>>> +
>>> +# Use system specific extensions
>>> +AC_USE_SYSTEM_EXTENSIONS
>>> +
>>> +
>>> +# Checks for header files.
>>> +AC_HEADER_STDC
>>> +AC_HEADER_SYS_WAIT
>>> +AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h \
>>> +                 time.h sys/stat.h wchar.h)
>>> +
>>> +# Check for tools
>>> +AM_PROG_AR
>>> +AC_PROG_CC
>>> +AC_PROG_CXX
>>> +AM_PROG_AS
>>> +AC_PROG_MAKE_SET
>>> +AC_PROG_INSTALL
>>> +
>>> +# Enable libtool
>>> +LT_INIT
>>> +
>>> +# target_noncanonical variables...
>>> +AC_CANONICAL_HOST
>>> +ACX_NONCANONICAL_HOST
>>> +ACX_NONCANONICAL_TARGET
>>> +GCC_TOPLEV_SUBDIRS
>>> +
>>> +AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
>>> +AC_ARG_ENABLE(version-specific-runtime-libs,
>>> +[  --enable-version-specific-runtime-libs    Specify that runtime 
>>> libraries should be installed in a compiler-specific directory ],
>>> +[case "$enableval" in
>>> + yes) version_specific_libs=yes ;;
>>> + no)  version_specific_libs=no ;;
>>> + *)   AC_MSG_ERROR([Unknown argument to enable/disable version-specific 
>>> libs]);;
>>> + esac],
>>> +[version_specific_libs=no])
>>> +AC_MSG_RESULT($version_specific_libs)
>>> +
>>> +toolexecdir=no
>>> +toolexeclibdir=no
>>> +
>>> +# Calculate toolexeclibdir
>>> +# Also toolexecdir, though it's only used in toolexeclibdir
>>> +case ${version_specific_libs} in
>>> +  yes)
>>> +    # Need the gcc compiler version to know where to install libraries
>>> +    # and header files if --enable-version-specific-runtime-libs option
>>> +    # is selected.
>>> +    toolexecdir='$(libdir)/gcc/$(target_noncanonical)'
>>> +    toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
>>> +    ;;
>>> +  no)
>>> +    if test -n "$with_cross_host" &&
>>> +       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'
>>> +    else
>>> +      toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
>>> +      toolexeclibdir='$(libdir)'
>>> +    fi
>>> +    multi_os_directory=`$CC -print-multi-os-directory`
>>> +    case $multi_os_directory in
>>> +      .) ;; # Avoid trailing /.
>>> +      *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
>>> +    esac
>>> +    ;;
>>> +esac
>>> +
>>> +AC_SUBST(toolexecdir)
>>> +AC_SUBST(toolexeclibdir)
>>> +
>>> +
>>> +AC_CONFIG_FILES(AC_FOREACH([DIR], [libproc_macro], [DIR/Makefile ]),
>>> + [ cat > vpsed$$ << \_EOF
>>> +s!`test -f '$<' || echo '$(srcdir)/'`!!
>>> +_EOF
>>> +   sed -f vpsed$$ $ac_file > tmp$$
>>> +   mv tmp$$ $ac_file
>>> +   rm vpsed$$
>>> +   echo 'MULTISUBDIR =' >> $ac_file
>>> +   ml_norecursion=yes
>>> +   AS_UNSET([ml_norecursion])
>>> +])
>>> +
>>> +
>>> +AC_MSG_NOTICE([librust has been configured.])
>>> +
>>> +AC_OUTPUT
>>> diff --git a/libgrust/libproc_macro/Makefile.am 
>>> b/libgrust/libproc_macro/Makefile.am
>>> new file mode 100644
>>> index 00000000000..1e61d12e506
>>> --- /dev/null
>>> +++ b/libgrust/libproc_macro/Makefile.am
>>> @@ -0,0 +1,58 @@
>>> +SUFFIXES = .cc .o .a .lo .la
>>> +
>>> +ACLOCAL_AMFLAGS = -I .. -I ../../config
>>> +
>>> +toolexeclibdir=@toolexeclibdir@
>>> +toolexecdir=@toolexecdir@
>>> +
>>> +# Work around what appears to be a GNU make bug handling MAKEFLAGS
>>> +# values defined in terms of make variables, as is the case for CC and
>>> +# friends when we are called from the top level Makefile.
>>> +AM_MAKEFLAGS = \
>>> +     "AR_FLAGS=$(AR_FLAGS)" \
>>> +     "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
>>> +     "CC_FOR_TARGET=$(CC_FOR_TARGET)" \
>>> +     "CFLAGS=$(CFLAGS)" \
>>> +     "CXXFLAGS=$(CXXFLAGS)" \
>>> +     "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
>>> +     "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
>>> +     "INSTALL=$(INSTALL)" \
>>> +     "INSTALL_DATA=$(INSTALL_DATA)" \
>>> +     "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
>>> +     "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
>>> +     "LDFLAGS=$(LDFLAGS)" \
>>> +     "LIBCFLAGS=$(LIBCFLAGS)" \
>>> +     "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
>>> +     "MAKE=$(MAKE)" \
>>> +     "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
>>> +     "PICFLAG=$(PICFLAG)" \
>>> +     "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
>>> +     "SHELL=$(SHELL)" \
>>> +     "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
>>> +     "exec_prefix=$(exec_prefix)" \
>>> +     "infodir=$(infodir)" \
>>> +     "libdir=$(libdir)" \
>>> +     "includedir=$(includedir)" \
>>> +     "prefix=$(prefix)" \
>>> +     "tooldir=$(tooldir)" \
>>> +     "gxx_include_dir=$(gxx_include_dir)" \
>>> +     "AR=$(AR)" \
>>> +     "AS=$(AS)" \
>>> +     "LD=$(LD)" \
>>> +     "RANLIB=$(RANLIB)" \
>>> +     "NM=$(NM)" \
>>> +     "NM_FOR_BUILD=$(NM_FOR_BUILD)" \
>>> +     "NM_FOR_TARGET=$(NM_FOR_TARGET)" \
>>> +     "DESTDIR=$(DESTDIR)" \
>>> +     "WERROR=$(WERROR)" \
>>> +        "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \
>>> +        "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
>>> +
>>> +toolexeclib_LTLIBRARIES = libproc_macro.la
>>> +
>>> +libproc_macro_la_SOURCES = \
>>> +     proc_macro.cc
>>> +
>>> +include_HEADERS = \
>>> +     proc_macro.h
>>> +
>>> diff --git a/libgrust/libproc_macro/proc_macro.cc 
>>> b/libgrust/libproc_macro/proc_macro.cc
>>> new file mode 100644
>>> index 00000000000..d13276294aa
>>> --- /dev/null
>>> +++ b/libgrust/libproc_macro/proc_macro.cc
>>> @@ -0,0 +1,7 @@
>>> +#include "proc_macro.h"
>>> +
>>> +int
>>> +test ()
>>> +{
>>> +  return 0;
>>> +}
>>> diff --git a/libgrust/libproc_macro/proc_macro.h 
>>> b/libgrust/libproc_macro/proc_macro.h
>>> new file mode 100644
>>> index 00000000000..2c96b3de685
>>> --- /dev/null
>>> +++ b/libgrust/libproc_macro/proc_macro.h
>>> @@ -0,0 +1,7 @@
>>> +#ifndef PROC_MACRO_H
>>> +#define PROC_MACRO_H
>>> +
>>> +int
>>> +test ();
>>> +
>>> +#endif /* ! PROC_MACRO_H */
>>> --
>>> 2.42.0
>> -----------------
>> Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 
>> 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: 
>> Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; 
>> Registergericht München, HRB 106955
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 
München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas 
Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht 
München, HRB 106955

Reply via email to