automake: Limitations on File Names

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