[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to install only derived file, not its .in?

From: Brad Larsen
Subject: Re: How to install only derived file, not its .in?
Date: Fri, 09 Nov 2007 12:11:11 -0500
User-agent: Opera Mail/9.24 (Linux)

On Fri, 09 Nov 2007 11:50:56 -0500, Ralf Wildenhues <address@hidden> wrote:

Hi Ralf,

Hello Brad,

* Brad Larsen wrote on Fri, Nov 09, 2007 at 05:44:37PM CET:
In the distribution, I want to include only the .in files and not the
derived files. When installing, I want to install only the derived files
and not the .in files.  So far my looks like this:

# runme doesn't get included in the distribution.
runtemplate_DATA = runme

You don't need the DISTCLEANFILES line.

# all the .in files are included in the distribution.  But they are also
installed (because of _DATA, I presume).
dist_runtemplate_DATA = \
        [snip] \

Just remove from this list.  It will be distributed because you

in  The manual explains both the distribution and the
cleaning aspect in this chapter:


I guess I wasn't clear enough. In section 4.7.2 of the autoconf manual, it says:

Most of these variables have values that rely on prefix or exec_prefix. It is deliberate that the directory output variables keep them unexpanded: typically address@hidden@' will be replaced by `${prefix}/share', not `/usr/local/share'.

This behavior is mandated by the GNU coding standards, so that when the user runs:

she can still specify a different prefix from the one specified to configure, in which case, if needed, the package shall hard code dependencies corresponding to the make-specified prefix.

`make install'
she can specify a different installation location, in which case the package must still depend on the location which was compiled in (i.e., never recompile when `make install' is run). This is an extremely important feature, as many people may decide to install all the files of a package grouped together, and then install links from the final locations to there.

In order to support these features, it is essential that datadir remains being defined as `${prefix}/share' to depend upon the current value of prefix.

A corollary is that you should not use these variables except in Makefiles.

Similarly you should not rely on AC_OUTPUT_FILES to replace datadir and friends in your shell scripts and other files, rather let make manage their replacement. For instance Autoconf ships templates of its shell scripts ending with `.in' [...]

That's why I'm having the makefile (which autoconf generates) do the substitution rather than calling AC_OUTPUT_FILES([runme]) or AC_CONFIG_FILES([runme]). (I tried the latter strategies without success---the substitutions would end up with '${prefix}' or '${exec_prefix}' in them, which would probably be undefined when runme is actually executed. And since I am using a makefile to generate the derived script 'runme', 'make distclean' doesn't remove it unless I add it to DISTCLEANFILES---otherwise 'make distcheck' fails.

Brad Larsen

reply via email to

[Prev in Thread] Current Thread [Next in Thread]