automake-1.16: Two-Part Install

 
 2.2.7 Two-Part Installation
 ---------------------------
 
 In our last example (⇒VPATH Builds), a source tree was shared by
 two hosts, but compilation and installation were done separately on each
 host.
 
    The GNU Build System also supports networked setups where part of the
 installed files should be shared amongst multiple hosts.  It does so by
 distinguishing architecture-dependent files from
 architecture-independent files, and providing two ‘Makefile’ targets to
 install each of these classes of files.
 
    These targets are ‘install-exec’ for architecture-dependent files and
 ‘install-data’ for architecture-independent files.  The command we used
 up to now, ‘make install’, can be thought of as a shorthand for ‘make
 install-exec install-data’.
 
    From the GNU Build System point of view, the distinction between
 architecture-dependent files and architecture-independent files is based
 exclusively on the directory variable used to specify their installation
 destination.  In the list of directory variables we provided earlier
 (⇒Standard Directory Variables), all the variables based on
 EXEC-PREFIX designate architecture-dependent directories whose files
 will be installed by ‘make install-exec’.  The others designate
 architecture-independent directories and will serve files installed by
 ‘make install-data’.  ⇒The Two Parts of Install, for more
 details.
 
    Here is how we could revisit our two-host installation example,
 assuming that (1) we want to install the package directly in ‘/usr’, and
 (2) the directory ‘/usr/share’ is shared by the two hosts.
 
    On the first host we would run
      [HOST1] ~ % mkdir /tmp/amh && cd /tmp/amh
      [HOST1] /tmp/amh % /nfs/src/amhello-1.0/configure --prefix /usr
      ...
      [HOST1] /tmp/amh % make && sudo make install
      ...
 
    On the second host, however, we need only install the
 architecture-specific files.
      [HOST2] ~ % mkdir /tmp/amh && cd /tmp/amh
      [HOST2] /tmp/amh % /nfs/src/amhello-1.0/configure --prefix /usr
      ...
      [HOST2] /tmp/amh % make && sudo make install-exec
      ...
 
    In packages that have installation checks, it would make sense to run
 ‘make installcheck’ (⇒Basic Installation) to verify that the
 package works correctly despite the apparent partial installation.