Patchwork libgo patch committed: Add SPARC RTEMS specific file

login
register
mail settings
Submitter Ian Taylor
Date Jan. 22, 2011, 2:01 a.m.
Message ID <mcrpqrpbssb.fsf@google.com>
Download mbox | patch
Permalink /patch/79971/
State New
Headers show

Comments

Ian Taylor - Jan. 22, 2011, 2:01 a.m.
This trivial libgo patch adds a file to hold SPARC RTEMS specific
information to the syscalls subdirectory.  There is nothing in there at
present.  If anybody knows of a simple way to use automake with files
that may or may not exist, please let me know.  I'd prefer to avoid
configure tests since they separate the test and the use in a way that I
find hard to maintain over time.  Anyhow, bootstrapped and ran Go
testsuite on x86_64-unknown-linux-gnu.  Committed to mainline.

Ian
Ralf Wildenhues - Jan. 22, 2011, 8:14 a.m.
* Ian Lance Taylor wrote on Sat, Jan 22, 2011 at 03:01:40AM CET:
> If anybody knows of a simple way to use automake with files
> that may or may not exist, please let me know.  I'd prefer to avoid
> configure tests since they separate the test and the use in a way that I
> find hard to maintain over time.

Hmm, you can

if COND
foo_SOURCES += bar.go
endif

or you can

foo_SOURCES = $(computed)
EXTRA_foo_SOURCES = bar1.go bar2.go bar3.go

where $(computed) must come from the second set.

If you want to use only Posix make, then you need to have at least some
bit of computation at configure time for this.

Hope that helps.

Cheers,
Ralf
Ian Taylor - Jan. 23, 2011, 5:23 a.m.
Ralf Wildenhues <Ralf.Wildenhues@gmx.de> writes:

> * Ian Lance Taylor wrote on Sat, Jan 22, 2011 at 03:01:40AM CET:
>> If anybody knows of a simple way to use automake with files
>> that may or may not exist, please let me know.  I'd prefer to avoid
>> configure tests since they separate the test and the use in a way that I
>> find hard to maintain over time.
>
> Hmm, you can
>
> if COND
> foo_SOURCES += bar.go
> endif
>
> or you can
>
> foo_SOURCES = $(computed)
> EXTRA_foo_SOURCES = bar1.go bar2.go bar3.go
>
> where $(computed) must come from the second set.
>
> If you want to use only Posix make, then you need to have at least some
> bit of computation at configure time for this.

Thanks, I know about those possibilities, but they aren't what I want,
because they require me to determine whether the files exist in the
configure script and to then use that determination in the Makefile.  I
don't want to split things up that way.  I want to say something like

foo_SOURCES = `test -f f.c && echo f.c`

Ian
Ralf Wildenhues - Jan. 23, 2011, 8:45 a.m.
* Ian Lance Taylor wrote on Sun, Jan 23, 2011 at 06:23:35AM CET:
> Ralf Wildenhues writes:
> > * Ian Lance Taylor wrote on Sat, Jan 22, 2011 at 03:01:40AM CET:
> >> If anybody knows of a simple way to use automake with files
> >> that may or may not exist, please let me know.  I'd prefer to avoid
> >> configure tests since they separate the test and the use in a way that I
> >> find hard to maintain over time.

> > if COND
> > foo_SOURCES += bar.go
> > endif
> >
> > or you can
> >
> > foo_SOURCES = $(computed)
> > EXTRA_foo_SOURCES = bar1.go bar2.go bar3.go

> Thanks, I know about those possibilities, but they aren't what I want,
> because they require me to determine whether the files exist in the
> configure script and to then use that determination in the Makefile.  I
> don't want to split things up that way.  I want to say something like
> 
> foo_SOURCES = `test -f f.c && echo f.c`

That doesn't work with the current dependency tracking machinery; it
needs to know the list of files at automake time in order to include
the relevant .Po and .Plo files in the Makefile.

This is something we may be able to address once we have machinery in
place to emit GNU make-specific code, and this Makefile is required to
work with GNU make only.

Sorry,
Ralf
Joel Sherrill - Jan. 23, 2011, 7:51 p.m.
On Fri, Jan 21, 2011 at 8:01 PM, Ian Lance Taylor <iant@google.com> wrote:
> This trivial libgo patch adds a file to hold SPARC RTEMS specific
> information to the syscalls subdirectory.  There is nothing in there at
> present.  If anybody knows of a simple way to use automake with files
> that may or may not exist, please let me know.  I'd prefer to avoid
> configure tests since they separate the test and the use in a way that I
> find hard to maintain over time.  Anyhow, bootstrapped and ran Go
> testsuite on x86_64-unknown-linux-gnu.  Committed to mainline.

Out of curiosity, why is there a need for architecture specific
Go syscalls for RTEMS?  We use newlib and are a link-in library
OS.  RTEMS doesn't have a trap interface.  We have avoided
architecture  specific files in the Ada run-time.

All the ones that exist now are empty and I would expect that
to continue through the dozen or so architectures RTEMS supports.

--joel

> Ian
>
>
Ian Taylor - Jan. 24, 2011, 7:29 p.m.
Joel Sherrill <joel.sherrill@gmail.com> writes:

> On Fri, Jan 21, 2011 at 8:01 PM, Ian Lance Taylor <iant@google.com> wrote:
>> This trivial libgo patch adds a file to hold SPARC RTEMS specific
>> information to the syscalls subdirectory.  There is nothing in there at
>> present.  If anybody knows of a simple way to use automake with files
>> that may or may not exist, please let me know.  I'd prefer to avoid
>> configure tests since they separate the test and the use in a way that I
>> find hard to maintain over time.  Anyhow, bootstrapped and ran Go
>> testsuite on x86_64-unknown-linux-gnu.  Committed to mainline.
>
> Out of curiosity, why is there a need for architecture specific
> Go syscalls for RTEMS?  We use newlib and are a link-in library
> OS.  RTEMS doesn't have a trap interface.  We have avoided
> architecture  specific files in the Ada run-time.
>
> All the ones that exist now are empty and I would expect that
> to continue through the dozen or so architectures RTEMS supports.

Yes, for RTEMS, right now, I agree.  The problem is that for some CPU/OS
combinations, there does need to be some specific support, e.g.,
syscall_linux_386.go.  So it would be nice to have a clean and simple
way to determine, in the Makefile, whether there is a CPU/OS specific
file that needs to be built.

I guess I should give up and do the test in libgo/configure.ac.

Ian

Patch

Index: libgo/syscalls/syscall_rtems_sparc.go
===================================================================
--- libgo/syscalls/syscall_rtems_sparc.go	(revision 0)
+++ libgo/syscalls/syscall_rtems_sparc.go	(revision 0)
@@ -0,0 +1,7 @@ 
+// syscall_rtems_sparc.go -- RTEMS SPARC specific syscall interface.
+
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package syscall