For FAQs specifically about installation, see the next section, and for quite detailed FAQs about the various ways that state is held in the starconf system, see Section 5.3.
In the examples below, the installation location
(that is, STARCONF_DEFAULT_PREFIX
) is written as
/local-star
, and the example component is usually
cpt
.
F77
,
FC
, CC
or CXX
, as
appropriate; and you
add compiler options with the
FFLAGS
, FCFLAGS
or
CFLAGS
variables. For details and
warnings, see Section 2.1.5.make: *** No rule to make
target `/local-star/manifests/cpt', needed by
`world'. Stop.
What's wrong?cpt
has been referred to
in a dependency, but the
Makefile.dependencies
file has no knowledge
of it. Whoever added the cpt
component
forgot to do the final step mentioned in Section 4.7, so you should do that now.make world
not do
anything?make world
build works by comparing
timestamps of the installed files in the
manifests directory -- that is, in something like
/local-star/manifests
, outside of the build
tree. It only checks whether each component was
installed after each of the components it
depends on. If you wish to use this to (rebuild and)
reinstall a given component, then simply delete the
manifest file for the component in question and re-run
make world
.Alternatively, make
in the top-level
checkout directory will recurse, and invoke make
all
in each of its children, and thus bring
the whole tree up to date.
You can check the default installation location --
shown as /local-star
above -- with
./starconf-status --show
STARCONF_DEFAULT_PREFIX
Also, make world
only makes those targets
listed in the variable ALL_TARGETS
within
the top-level Makefile. Thus if the component you're
interested in isn't there, nor required by something
that is there and that will be rebuilt, nothing will
happen. See also Section 4.7.
See Section 5.3 for a few more remarks about state.
./configure; make;
make install
there.Alternatively, you can stay in the top-level
directory, delete the component's manifest file,
rm /local-star/manifests/cpt
, and remake it:
make /local-star/manifests/cpt
.
./bootstrap --buildsupport
in the
top level of the checkout. When the bootstrap script
is run in this mode, it always deletes any
buildsupport manifests, to ensure that the
buildsupport tools are always rebuilt if
updated.It's best to avoid the ./configure; make; make
install
route described in the last item. Some
of the buildsupport tools need special handling, and
the ./bootstrap
script knows how to do that.
make
would remake everything
that needs remaking, but wouldn't install it. The
command make world
wouldn't work either,
because that only works with the dependencies between
manifest files -- this is the way that the
Makefile.dependencies
file expresses the
dependencies of components on each other.The best way to do this is as follows. After your update, and while in the top-level directory, do
That is, you delete all the manifests, and remake them. This does a% rm /local-star/manifests/* % make buildsupport % make world
make; make
install
in each component directory, and that
step handles any files that were updated.Makefile.am
for the
prm
component. It's a good example of
using noinst_
tools, the Fortran
preprocessor, and ./configure
variables
in a reasonably tidy way.Automake also has support for extending what is cleaned
and what is included in the distribution, though this
does not have to be as elaborate as the support for
extended installation above. See the
documentation on CLEANFILES
and
EXTRA_DIST
in the Automake manual.
./configure
to use a particular compiler
by specifying one of the F77
,
FC
or CC
environment
variables at configure time. You may have forgotten
that you have that variable set.Alternatively, you may be unaware that that variable
is set: a known manifestation of this problem is that
the IRAF startup script sets F77
to be an
IRAF-specific script, which works OK from the
command-line (given that you want to use IRAF), but
which leaves libtool in a confused heap.
This problem has also been spotted in the form
libtool: compile: specify a tag with
`--tag'
, with apparently the same cause.
See Section 2.1.5 for more discussion of these variables.
F77
or CC
influence the compilers
chosen at configure time, as discussed in Section 2.1.5. There is a
particular problem with the IRAF startup script
often sourced from the .login
file:
see item `I've just been told that libtool is
``unable to infer tagged configuration''. What on earth
is that supposed to mean?'.