[erlang-questions] Erlang and autoconf/make

Romain Lenglet <>
Wed Nov 15 05:22:34 CET 2006


On Tuesday 14 November 2006 23:24, Pupeno wrote:
> > AC_INIT(Modules to write servers, 0.0.0, ,
> > serlvers)
> > AC_COPYRIGHT(Copyright (C) 2006 Jose Pablo Pupeno Fernandez)
> >
> > dnl Require autoconf version >=2.59c. first one with erlang
> > macros
> > AC_PREREQ(2.59c)
> > dnl Require automake version >=1.9.5.
> > AM_INIT_AUTOMAKE(1.9.5)
> >
> > AC_ERLANG_NEED_ERLC
> >
> > AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR(AC_PACKAGE_TARNAME,
> > AC_PACKAGE_VERSION)
> >
> > AC_CONFIG_FILES([Makefile src/Makefile])
> >
> > AC_OUTPUT
>
> No need for
>
> AC_ERLANG_SUBST_ROOT_DIR
> AC_ERLANG_SUBST_LIB_DIR
> AC_ERLANG_SUBST_INSTALL_LIB_DIR
>
> ?

The macros have dependencies between them, expressed 
by "AC_REQUIRE(..)" macro calls in their implementation.

For instance, if one writes
AC_REQUIRE(AC_ERLANG_NEED_ERLC)
then the macro AC_ERLANG_NEED_ERLC is called if and only if it 
has not already been called.

That way, AC_ERLANG_SUBST_INSTALL_LIB_DIR is required by 
AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR(...,...).

And calls to AC_ERLANG_SUBST_ROOT_DIR and AC_ERLANG_SUBST_LIB_DIR 
were not necessary anyway in gtknode's configure.ac.
(By the way, Mats, I think that you should remove those calls in 
gtknode...)

I think that I added those explicit calls in gtknode's 
configure.ac, only to demonstrate the use of the available 
macros. (^_^)


It must be noted that AC_ERLANG_NEED_ERLC is also required by 
AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR(...,...), since the ERLC 
variable (i.e., the erlc command) is used to compile tests 
written in Erlang, like in this macro.

However, since you explicitly use the ERLC variable in your 
Makefile.am, I think that it is better to explicitly keep the 
call to AC_ERLANG_NEED_ERLC in your configure.ac.
That way, if one day you need to comment out the call to 
AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR(...,...), ERLC will still be 
substituted.

[...]
> > > and this is the main Makefile.am
> > > http://software.pupeno.com/Serlvers/src/Makefile.am
> > > And in that last one is where I am worried. I have to list
> > > the sources and the beam files, is that needed ? I have to
> > > also put the .app among the (automatically generated) beam
> > > files, is that needed as well ? I mean, isn't there a
> > > better way ?
> >
> > If your .app file is not generated,
>
> It can be generated ?

It could. Why not? (^_^)
Ruslan Babayev has thought of a way to substitute the version 
numbers in .app files, with the versions of actually installed 
libraries.

However, adding the support for that in Autoconf has been 
rejected by Autoconf maintainers. They reject anything that has 
to do with version numbers, since it is contrary to Autoconf's 
philosophy.
Anyway, we could do such substitutions easily with a short Erlang 
program. Any volunteer to develop that?

The configuration+build process would then be:

1) one checks with Autoconf that all required libraries are 
installed, and that they have all the required features 
(exported functions, etc.), etc.

2) at build time, one can generate the .app files to reflect the 
version numbers of the installed libraries.

[...]

Regards,

-- 
Romain LENGLET
Pr. Chiba Shigeru Group
Dept. of Mathematical and Computing Sciences
Tokyo Institute of Technology



More information about the erlang-questions mailing list