Purpose: to contain discussion relating to an installation directory structure that is recommended for people writing tcl extensions or applications.

LV Jump right in and add info as you see needed:


By default, extensions should use two main groups of locations for installing things, one for architecture-independent files, and one for architecture-dependent files.

--prefix specifies the location of the architecture-independent files (e.g. Tcl scripts, header files, documentation) and is conventionally /usr/local by default. Beneath this location, the following places are usually defined:

include
Place to put header file(s) needed when writing code against a library.
lib
Location where Tcl-only extensions are installed.
lib/extension.version.level
Location for pkgIndex.tcl files, tcl files, etc.
bin
Place to install Tcl-only applications.
man
Place to install nroff manual pages.
   '''share''': Place to install miscellaneous other files, such as HTML pages.

--exec-prefix specifies the location of architecture-dependent files (binary extensions, etc.)

lib
Location where binary extensions and their pkgIndex.tcl are installed.
lib/extension.version.level
Location for pkgIndex.tcl files, .so/.dll files, static archives (.a, .lib), etc.
bin
Location where binary applications are installed.

jenglish I find it works better to put the entire package runtime in a sibling directory of info library. This is usually the same as ${libdir}, but not always.

Splitting up architecture-dependant (e.g. shared libraries) and architecture-independant (e.g., scripts) parts makes it more difficult for the former to locate the latter.


It is the eternal difficulty of keeping parallel versions in sync versus keeping a single copy of sharable code and a binary for each platform.


What about demos? I would prefer to see demo executables be installed in $prefix/bin, instead of the current practice of some extensions of putting them into $prefix/lib/extension$version.$level/demos or whatever .