Subject: bug#8599: upc (Unified Parallel C) support in automake (was: Re: AM_PROG_UPC)

From: Stefano Lattarini <[email-masked]>
Date: Sat, 30 Apr 2011 22:10:34 +0200

[adding automake and bug-automake lists]
[follow-ups might drop autoconf list IMHO]
[Reference: <http://lists.gnu.org/archive/html/autoconf/2011-04/msg00072.html>]

Hello Justin and Ralf, and sorry for the delay.

On Saturday 30 April 2011, Justin  wrote:
> On 4/29/11 8:57 PM, "Ralf Corsepius" <[email-masked]> wrote:
> 
> >On 04/30/2011 01:16 AM, Too, Justin A. wrote:
> >> Hi all,
> >>
> >> In my configure.ac I simply invoke: AC_PROG_UPC
> >>
> >> Š
> >> $ aclocal Š
> >>      aclocal:configure.ac:12: warning: macro `AM_PROG_UPC' not found in
> >>library
> >> Š
> >> $ autoconf
> >>      Configure.ac:12: error: possibly undefined macro: AM_PROG_UPC
> >> If this token and others are legitimate, please use m4patternallow.
> >> See the Autoconf documentation.
> >>
> >> Is this a non-standard macro?
> >Yes.
> >
No, it's not (well, it shouldn't be).  It is defined in the file
`upc.m4' provided by automake.  Thus the failure above, if not due
to some misconfiguration or user error, is an automake bug.

Justin, could you please provide more details about the failure you
encountered?  What system are you on?  Which automake version are you
using?  What is the content of your configure.ac and Makefile.am files?
And everything else you think might be useful.

> >[Apart of this, AM_PROG_UPC violates auto*tools naming conventions;
> >AM_*/AM_* prefixed macros are reserved for autoconf rsp. automake.]
> >
> >> Then, how can I add UPC support to my Autotools project?
> >Non-standard macros need to be supplied by either the package itself or
> >by other packages.
> >
> >There are several ways to do so, so answering your question would
> >require knowing more details about the package you are trying to build.
> 
> Currently, I'm setting my upc file extensions to .c so that they will
> compile without complaint from Automake, however it's obviously more clear
> if they had a .upc extension:
> 
> foo_la_SOURCES = \
>  main.c
>  test.c
> 
> I want:
> 
> foo_la_SOURCES = \
>  main.upc
>  test.upc
> 
>
Well, this should be supported out of the box with Automake (there is
even a testcase about this in the automake testsuite)...  Have you really
tried it?  Does it fail for you?  If yes, what is the error?

> 
> I found this documentation:
> 
>     18.2 Handling new file extensions
>     
> https://idlebox.net/2009/apidocs/automake-1.11.zip/automake_18.html#SEC148
> 
> So I'm assuming I can do this:
>
> .upc.o:
>         upcc -c -o $@ $<
> 
> 
> But this would have to be in every Makefile.am where I'd want to compile
> UPC.  Also, I would have to do a lot of configure checking and setting up
> myself so that I can use $(UPC) as the compiler in my rule, check that
> upc/upcc is available, etc.  The AM_PROG_UPC macro seemed like the most
> convenient method.
> 
>
You might take a look at this documentation instead:

 <http://www.gnu.org/software/automake/manual/html_node/Unified-Parallel-C-Support.html>

Admittedly, it is sketchy and suboptimal, and could benefit from some
extensions and examples. I will probably write patch sooner or later
if nobody beats me (but I hope somebody will do, since I know nothing
about UPC and doesn't have it available for testing).

Regards,
  Stefano