[Nexus-developers] autoconf

Jens Krüger Jens.Krueger at frm2.tum.de
Thu Feb 19 17:30:48 GMT 2004


Freddie,

Am Donnerstag, 19. Februar 2004 14:03 schrieb Akeroyd, FA (Freddie):
> Jens,
>

I was nearly ready for the most tasks for the use of autotools like:

- include the build of documentation
- build of java binding

and and ...

But this is not a real problem. The most of this will exists yet, and I will integrate it into
the current CVS step by step again. The new structure in the CVS is like my some
time ago.

>From my opions with the use of autotools is it a good way to create a Makefile.am in
each directory and handle all files in this directory. So you may avoid some inscrutable
cross links or references and you may ensure that all needed files belong to the distribution.

> Yes, I remember you working on autotools before - I wasn't sure how far you
> had got and I didn't have your files easily to hand to check (we've moved
> CVS machines so I would need to get them from the backup tape). Also as we
> have re-organised the repository since then I though it would be a good
> time for me to learn how all the tools worked properly - I'd only used
> autoconf before so starting from scratch seemed a good way to learn.
>

I know the problem of the versions of autotools. I'm currently using the newest
versions: autotools (2.59), automake(1.8.2), libtool (1.5.2). 
I think we may reduce this requirements but we should use at least:
autoconf (2.59), automake (1.7.X), libtool(1.5)
If these tools are not installed on your machine or in your system, it is no problem
to install these tools in $(HOME)/bin. I often use this to test my developments on
foreign systems. 

The use of autotools is only required for the developers of NeXus not for the user.
He gets a complete tarball which he extracts and lets run the configure script.
I guess it should no problem for the NeXus developers to use the versions of autotools
as mentioned above. The newer versions are more convenient than the older.

If you agreed with this proposal I would not add your changes due to the use of
older versions. I the latter case we have also to support: autoconf(2.13), automake(1.4), 
and libtool(1.3.5). This seems to be a very painful job to do this. I don't like it (this
comes from my experiences)

> Thank you for your patches and for tidying up my rather lax use of ".." in
> some paths. I have a few comments, mostly dealing with difference between
> my version of automake (1.6.3) and yours (1.7) Automake-1.6.3 is installed
> by default on e.g. Redhat linux 9, so if we can keep things compatible with
> the older version it is one less thing to worry about/install separately
> for developers.
>

That's true, the  handbook of the newer version of automake marks the
AM_CONFIG_HEADER as obsolete.

> In configure.ac you have changed AM_CONFIG_HEADER  to  AC_CONFIG_HEADER; 
> on automake-1.6.3 it complains and tells me to use AM_CONFIG_HEADER
> instead; I guess your version gives a warning with AM_CONFIG_HEADER and
> suggests the other way round? Maybe we can conditionally check the automake
> version and run the appropriate one.
>
> In src/Makefile.am you have conditionally modified the same variable
> (libNeXus_la_SOURCES) in more than once place; this isn't allowed in 1.6.3
> Instead you need to use something like
>
> ! if HAVE_HDF4
> ! H4SRC = napi4.c
> ! endif
> !
> ! if HAVE_HDF5
> ! H5SRC = napi5.c
> ! endif
> !
> ! libNeXus_la_SOURCES = napi.c $(H4SRC) $(H5SRC)
>
> It's only slightly more verbose, so I think it is worth doing for backward
> compatibility. Also do you need to explicity add the HDF libraries to
> libNeXus_la_LIBADD ? They have been added to LIBS already by configure -
> would
>
> libNeXus_la_LIBADD = $(LIBS)
>

As I know, the contents of $(LIBS) is automatically added during the linking.

> be OK, or is anything needed at all (is LIBS checked automatically?)
>
> > Some additional remark to the files in the CVS. I suggest
> > to remove all generated files like:
> > Makefile.in
> > configure
> > nxconfig.h.in
> > config.guess
> > config.sub
> > and so on
> > otherwise you have always problem with cvs conflicts if you
> > are change some of the Makefile.am's
> > or the configure.ac file.
>
> Agreed - they (and other files) are only there for the moment as we are in
> a "transition period" and used to distribute the CVS tree as the "source";
> once we are happy with "make dist" etc. they can be removed.
>
> > Due to my experiences with the use of automake, autoconf, and libtool
> > I would like to help you to integrate these tools into the
> > NeXus development.
>
> Thank you - I'd also be interested in your view on nxconfig.h V napi.h etc
>
> > If you agreed with my patch, I would check in the changes into the CVS.
>
> Please go ahead and submit them
>
> Regards
>
> Freddie

Regards

Jens

-- 

Jens Krüger

Technische Universität München
ZWE FRM-II
Lichtenberg-Str. 1
D-85747 Garching

Tel: + 49 89 289 14 716
Fax: + 49 89 289 14 666
mailto:jens.krueger at frm2.tum.de
http://www.frm2.tum.de/





More information about the NeXus-developers mailing list