diff options
Diffstat (limited to 'manual.en.html')
-rwxr-xr-x | manual.en.html | 58 |
1 files changed, 44 insertions, 14 deletions
diff --git a/manual.en.html b/manual.en.html index a9d125a..d46954d 100755 --- a/manual.en.html +++ b/manual.en.html @@ -147,7 +147,7 @@ that the project <var>Comfignat</var> defines.</p> <li><p>If your project file builds a library, then use a subdirectory of <var>Comfignat.Stage_Includedir</var> for <var>Library_Src_Dir</var>, <var>Comfignat.Stage_Libdir</var> for <var>Library_Dir</var>, and a - subdirectory of <var>Comfignat.Stage_Libdir</var> for + subdirectory of <var>Comfignat.Stage_Alidir</var> for <var>Library_ALI_Dir</var>.</p></li> </ul> </li> @@ -159,8 +159,8 @@ project file without the "<samp>.gp</samp>" suffix. Make it import the project file that the preprocessor symbol <var>Directories_GPR</var> specifies, but only if <var>Directories_GPR</var> is defined. Do not import <var>comfignat.gpr</var>. Use the symbol <var>Includedir</var> in the value of -<var>Source_Dirs</var>, and use <var>Libdir</var> for <var>Library_Dir</var> -and as part of <var>Library_ALI_Dir</var>.</p></li> +<var>Source_Dirs</var>, use <var>Libdir</var> for <var>Library_Dir</var>, and +use <var>Alidir</var> as part of <var>Library_ALI_Dir</var>.</p></li> <li><p>Write a makefile that includes <var>comfignat.mk</var>. The makefile shall set the variable <var>build_GPRs</var> to the filename of the @@ -187,7 +187,7 @@ library project Build_Example is for Object_Dir use Comfignat.Objdir; for Library_Src_Dir use Comfignat.Stage_Includedir & "/example"; for Library_Dir use Comfignat.Stage_Libdir; - for Library_ALI_Dir use Comfignat.Stage_Libdir & "/example"; + for Library_ALI_Dir use Comfignat.Stage_Alidir & "/example"; end Build_Example;</pre></div> <div class="example file"><h5><code>example.gpr.gp</code></h5> @@ -200,7 +200,7 @@ library project Example is for Library_Kind use "dynamic"; for Source_Dirs use ($Includedir & "/example"); for Library_Dir use $Libdir; - for Library_ALI_Dir use $Libdir & "/example"; + for Library_ALI_Dir use $Alidir & "/example"; for Externally_Built use "true"; end Example;</pre></div> @@ -284,14 +284,31 @@ install log files but you may want to create a separate subdirectory under compilation of other software that uses your libraries shall be placed under <var>Comfignat.Stage_Includedir</var> by build project files, usually under a separate subdirectory. Usage project files shall get the directory from the -preprocessor symbol <var>Includedir</var>.</p></li> +preprocessor symbol <var>Includedir</var>. These files should normally be +architecture-independent.</p></li> + +<li><p>If you have architecture-specific source files that you need to make +available to other software that uses your libraries, then you should refactor +your code to encapsulate the architecture-specific bits in the compiled code +and keep the API clean. But if you really must install such files, then you may +put them under a separate subdirectory of <var>stage_archincludedir</var>. +Usage project files shall get the directory from the preprocessor symbol +<var>Archincludedir</var>.</p></li> <li><p>Binary libraries shall be placed in <var>Comfignat.Stage_Libdir</var> by build project files. Usage project files shall get the directory from the preprocessor symbol <var>Libdir</var>.</p></li> -<li><p>ALI files and other architecture-specific files shall usually be placed -under a separate subdirectory of <var>Comfignat.Stage_Libdir</var>.</p></li> +<li><p>Ada library information (ALI) files shall be placed under a separate +subdirectory of <var>Comfignat.Stage_Alidir</var> by build project files. Usage +project files shall get the directory from the preprocessor symbol +<var>Alidir</var>.</p></li> + +<li><p>Other architecture-specific files shall usually be placed under a +separate subdirectory of <var>stage_libdir</var>. (It will be the same +subdirectory that ALI files are placed in when +<var>alidir</var> = <var>libdir</var>.) Programs shall look for them under +<var>Comfignat.Libdir</var>.</p></li> <li><p>Comfignat puts usage project files in <var>stage_gprdir</var>.</p></li> @@ -334,12 +351,22 @@ target architecture.</dd> programs rather than by users.</dd> <dt><var>Includedir</var></dt> -<dd>The top-level directory for source files to be used in the compilation of -software using libraries.</dd> +<dd>The top-level directory for (normally architecture-independent) source +files to be used in the compilation of software using libraries.</dd> + +<dt><var>Archincludedir</var></dt> +<dd>The parent of libraries' separate library-specific directories for +architecture-specific source files to be used in the compilation of software +using libraries, for any libraries that absolutely must install such +files.</dd> <dt><var>Libdir</var></dt> <dd>The directory for binary libraries to be used by other software, and the top-level directory for other architecture-specific files.</dd> + +<dt><var>Alidir</var></dt> +<dd>The parent of libraries' separate library-specific directories for +Ada library information files.</dd> </dl> <p>Here's an example of what a directories project may look like:</p> @@ -357,16 +384,19 @@ top-level directory for other architecture-specific files.</dd> end case; Libdir := "/usr/" & Lib; - Bindir := "/usr/bin"; - Libexecdir := "/usr/libexec"; - Includedir := "/usr/include"; + Bindir := "/usr/bin"; + Libexecdir := "/usr/libexec"; + Includedir := "/usr/include"; + Alidir := Libdir; + Archincludedir := Libdir & "/include"; end System_Directories;</pre> <p>This directories project belongs in a multiarch operating system where libraries are kept in either <var>/usr/lib</var> or <var>/usr/lib64</var> depending on which architecture they are compiled for. The directories project -sets <var>Libdir</var> to the right directory for the target architecture based +sets <var>Libdir</var>, <var>Alidir</var> and <var>Archincludedir</var> +to the right directories for the target architecture based on an environment variable. A library project that uses this directories project will therefore automatically adapt to the current target architecture, so that 32-bit and 64-bit instances of the library can be installed in parallel |