automake-1.16: Program Sources

 
 8.1.1 Defining program sources
 ------------------------------
 
 In a directory containing source that gets built into a program (as
 opposed to a library or a script), the ‘PROGRAMS’ primary is used.
 Programs can be installed in ‘bindir’, ‘sbindir’, ‘libexecdir’,
 ‘pkglibexecdir’, or not at all (‘noinst_’).  They can also be built only
 for ‘make check’, in which case the prefix is ‘check_’.
 
    For instance:
 
      bin_PROGRAMS = hello
 
    In this simple case, the resulting ‘Makefile.in’ will contain code to
 generate a program named ‘hello’.
 
    Associated with each program are several assisting variables that are
 named after the program.  These variables are all optional, and have
 reasonable defaults.  Each variable, its use, and default is spelled out
 below; we use the “hello” example throughout.
 
    The variable ‘hello_SOURCES’ is used to specify which source files
 get built into an executable:
 
      hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
 
    This causes each mentioned ‘.c’ file to be compiled into the
 corresponding ‘.o’.  Then all are linked to produce ‘hello’.
 
    If ‘hello_SOURCES’ is not specified, then it defaults to the single
 file ‘hello.c’ (⇒Default _SOURCES).
 
    Multiple programs can be built in a single directory.  Multiple
 programs can share a single source file, which must be listed in each
 ‘_SOURCES’ definition.
 
    Header files listed in a ‘_SOURCES’ definition will be included in
 the distribution but otherwise ignored.  In case it isn’t obvious, you
 should not include the header file generated by ‘configure’ in a
 ‘_SOURCES’ variable; this file should not be distributed.  Lex (‘.l’)
 and Yacc (‘.y’) files can also be listed; see ⇒Yacc and Lex.