automake-1.16: Limitations on File Names

 
 26.4 Limitations on File Names
 ==============================
 
 Automake attempts to support all kinds of file names, even those that
 contain unusual characters or are unusually long.  However, some
 limitations are imposed by the underlying operating system and tools.
 
    Most operating systems prohibit the use of the null byte in file
 names, and reserve ‘/’ as a directory separator.  Also, they require
 that file names are properly encoded for the user’s locale.  Automake is
 subject to these limits.
 
    Portable packages should limit themselves to POSIX file names.  These
 can contain ASCII letters and digits, ‘_’, ‘.’, and ‘-’.  File names
 consist of components separated by ‘/’.  File name components cannot
 begin with ‘-’.
 
    Portable POSIX file names cannot contain components that exceed a
 14-byte limit, but nowadays it’s normally safe to assume the
 more-generous XOPEN limit of 255 bytes.  POSIX limits file names to 255
 bytes (XOPEN allows 1023 bytes), but you may want to limit a source
 tarball to file names of 99 bytes to avoid interoperability problems
 with old versions of ‘tar’.
 
    If you depart from these rules (e.g., by using non-ASCII characters
 in file names, or by using lengthy file names), your installers may have
 problems for reasons unrelated to Automake.  However, if this does not
 concern you, you should know about the limitations imposed by Automake
 itself.  These limitations are undesirable, but some of them seem to be
 inherent to underlying tools like Autoconf, Make, M4, and the shell.
 They fall into three categories: install directories, build directories,
 and file names.
 
    The following characters:
 
      newline " # $ ' `
 
    should not appear in the names of install directories.  For example,
 the operand of ‘configure’’s ‘--prefix’ option should not contain these
 characters.
 
    Build directories suffer the same limitations as install directories,
 and in addition should not contain the following characters:
 
      & @ \
 
    For example, the full name of the directory containing the source
 files should not contain these characters.
 
    Source and installation file names like ‘main.c’ are limited even
 further: they should conform to the POSIX/XOPEN rules described above.
 In addition, if you plan to port to non-POSIX environments, you should
 avoid file names that differ only in case (e.g., ‘makefile’ and
 ‘Makefile’).  Nowadays it is no longer worth worrying about the 8.3
 limits of DOS file systems.