Rombobjörn

summaryrefslogtreecommitdiff
path: root/manual.en.html
diff options
context:
space:
mode:
Diffstat (limited to 'manual.en.html')
-rwxr-xr-xmanual.en.html58
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 &amp; "/example";
for Library_Dir use Comfignat.Stage_Libdir;
- for Library_ALI_Dir use Comfignat.Stage_Libdir &amp; "/example";
+ for Library_ALI_Dir use Comfignat.Stage_Alidir &amp; "/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 &amp; "/example");
for Library_Dir use $Libdir;
- for Library_ALI_Dir use $Libdir &amp; "/example";
+ for Library_ALI_Dir use $Alidir &amp; "/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/" &amp; Lib;
- Bindir := "/usr/bin";
- Libexecdir := "/usr/libexec";
- Includedir := "/usr/include";
+ Bindir := "/usr/bin";
+ Libexecdir := "/usr/libexec";
+ Includedir := "/usr/include";
+ Alidir := Libdir;
+ Archincludedir := Libdir &amp; "/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