<title>How to compile a script</title>
<para>
Scripts are compiled to base URIs. Base URIs are of the form
- "cic:/matita/path" and are give once for all for a given set of
- scripts using the "root" file. For example, imagine a directory
- "dir1" containing a script file "file1.ma" and a
- subdirectory "dir2" containing "file2.ma". A
- regular text file called "root" has to be placed in "dir1"
- ad must contain a line like "baseuri=cic:/matita/example".
- Then, running "matitac" from "dir1" will compile
- both script files, placing objects defined in "file1.ma" in
- "cic:/matita/example/file1" while objects defined in "file2.ma"
- are placed in "cic:/matita/example/dir2/file2".
- Before you can compile the scripts you have to generate a "depend" file
- running "matitadep" from the root directory.
- You can divide you work in many roots, just place a proper root file in each of them.
- If a root depends on files living under another one, you can add an extra line in the root
- file like "include_paths=../other_root1 ../foo/bar" and "matitac"
- will enter these patsh to eventually compile needed files.
+ "cic:/matita/path" and are given once for all for a set
+ of scripts using the "root" file.
</para>
+ <para>
+ A "root" file has to be placed in the root of a script set,
+ for example, consider the following files and directories, and
+ assume you keep files in "list" separated from files
+ in "sort" (for example the former directory may contain
+ functions on proofs about lists, while latter sorting algorithms
+ for lists):
+<programlisting><![CDATA[
+ list/
+ list.ma (* depending just on the standard library *)
+ utils/
+ swap.ma (* including list.ma *)
+ sort/
+ qsort.ma (* including utils/swap.ma *)
+]]></programlisting>
+ To be able to compile properly the contents of "list"
+ a file called root has to be placed in it. The file should be like
+ the following snippet.
+<programlisting><![CDATA[
+ baseuri=cic:/matita/mydatastructures
+]]></programlisting>
+ This file tells &appname; that objects generated by
+ "list.ma" have to be placed in
+ "cic:/matita/mydatastructures/list" while
+ objects generated by
+ "swap.ma" have to be placed in
+ "cic:/matita/mydatastructures/utils/swap".
+ </para>
+ <para>
+ Once you created the root file, you must generate a depend file.
+ Enter the "list" directory (the root of yuor file set)
+ and type "matitadep". Remember to regenerate the depend file
+ every time you alter the dependencies of your files (for example
+ including other scripts).
+ You can now compile you files typing "matitac".
+ </para>
+ <para>
+ To compile the "sort" directory, create a root file
+ in "sort/" like the following one and then run
+ "matitadep".
+<programlisting><![CDATA[
+ baseuri=cic:/matita/myalgorithms
+ include_paths=../list
+]]></programlisting>
+ The include_paths field can declare a list of paths separated by space.
+ Please omit any "/" from the end of base URIs or paths.
+ </para>
</sect2>
<sect2 id="authoringinterface">
<title>The authoring interface</title>