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

From: "Too, Justin A." <[email-masked]>
Date: Mon, 2 May 2011 12:18:34 -0700

Hi Stefano

On 4/30/11 1:10 PM, "Stefano Lattarini" <[email-masked]>
wrote:

>[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.

Sorry, the problem was not critical.  It turns out that my system
installation of Automake is 1.9, but /usr/share/aclocal/upc.m4 did not
exist.  I've got 'upc.m4' in place now so it seems to make it pass
'aclocal' and 'automake' now.

I've got another somewhat related issue, and that is: how can I
conditionally use the macro AM_PROG_UPC?  Most users won't have UPC in
their path so I'd like to only check for UPC if the user configures
explicitly with UPC.  If I wrap the macro call like so:

if test "xwith_upc" = "xyes" ; then
    AM_PROG_UPC
fi

I get "configure: error: conditional "am__fastdepUPC" was never defined.
Usually this means the macro was only invoked conditionally.".   In the
configure script, it looks like UPC-related code is generated outside of
my if..fi block in addition to inside of the block.

Thanks for the advise,
Justin

>
>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#SEC14
>>8
>> 
>> 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