I seem to be having some strange problems when using the LinuxDoc document
class. With the document I send attached to this message I only get a
whole bunch of errors when trying to export any kind of output (errors
like "end tag for "TT" omitted, but its declaration does not permit
this"). The postscript output is also completely jumbled. From LyX the
document seems to be quite fine and all the necessary elements should be
in there in the right order. Any ideas how to fix the situation?

I am using LyX 1.1.4fix2.

Replies to my email address aswell as the mailing list, please (I'm not on
it).

         -     ---------- = = ---------//--+
         |    /     Kristoffer Lawson      |  www.fishpool.fi|.com
         +-> |    [EMAIL PROTECTED]       |  - - --+------
             |-- Fishpool Creations Ltd - /         |
             +-------- = - - - = ---------      /~setok/
#LyX 1.1 created this file. For more info see http://www.lyx.org/
\lyxformat 2.15
\textclass linuxdoc
\language english
\inputencoding latin1
\fontscheme default
\graphics default
\paperfontsize default
\spacing single 
\papersize a4paper
\paperpackage a4
\use_geometry 0
\use_amsmath 0
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\quotes_times 2
\papercolumns 1
\papersides 1
\paperpagestyle default

\layout Title
\added_space_top vfill \added_space_bottom vfill 

\family typewriter 
smake
\family default 
 --- Building makefiles in TCL
\layout Author


\noun on 
Kristoffer Lawson
\noun default 
, 
\begin_inset LatexCommand \url{mailto:[EMAIL PROTECTED]}

\end_inset 


\layout Date

4th April 2000
\layout Section

Description
\layout Standard

Traditional UNIX makefiles are quite limited in their possibilities.
 Dealing with large projects is difficult and you have only very basic ways
 of structuring elements in the makefile.
 
\family typewriter 
smake
\family default 
's Smakefiles (so as not to cause conflicts with 
\family typewriter 
make
\family default 
's Makefiles) are based on TCL scripts.
 TCL is a free script language with a very simple syntax which is easy to
 use but infinitely extendible.
 
\layout Standard

Smakefiles themselves are 100% TCL.
 You can load TCL modules and packages (such as ones for using OO scripts),
 use namespaces, replace the action for checking dependencies and other
 TCL-specific things in your makefiles.
\layout Standard

For more information on TCL see 
\begin_inset LatexCommand \url{http://www.scriptics.com/}

\end_inset 

.
 However, to build simple Smakefiles no deep knowledge of TCL is required.
 This document assumes some basic knowledge of TCL.
\layout Section

Usage
\layout Code

smake [-f Smakefile] [target]
\layout Standard

If the target is not specified it is 'all'.
 
\layout Subsection

Options
\layout Description

-f Specify Smakefile to use.
 Defaults to 
\family typewriter 
Smakefile
\family default 
 in the current working directory.
\layout Section

Format of the Smakefile
\layout Standard

Targets in Smakefiles are based on TCL procedures.
 A target is specified simply by creating a procedure with the code to be
 executed inside it.
 
\layout Standard


\family typewriter 
smake
\family default 
 extends TCL with several commands that can be used in Smakefiles.
 These commands can be replaced to suite the user's needs in the normal
 TCL way.
 The list of commands is:
\layout Description

compile Compiles a file.
\layout Description

depend Specifies a list of targets that the current target depends on.
\layout Description

link Links several object files together.
\layout Subsection


\family typewriter 
compile
\family default 
 command
\layout Subsubsection

Synopsis
\layout Code

compile file1 file2 ...
\layout Subsubsection

Description
\layout Standard

Compiles specified files.
 
\layout Standard

The version provided by 
\family typewriter 
smake
\family default 
 executes the C compiler 
\family typewriter 
cc
\family default 
 and generates object files from the compiled files.
 The global variable 
\family typewriter 
c_options
\family default 
 can be used to specify options used by the C compiler.
 
\layout Standard

If the user wishes to compile other kinds of files then they must replace
 this command with their own routine.
\layout Subsection


\family typewriter 
depend
\family default 
 command
\layout Subsubsection

Synopsis
\layout Code

depend <target-list> <TCL-script>
\layout Subsubsection

Description
\layout Standard

Specifies that the target in wish it was used depends on the targets specified
 in 
\family typewriter 
target-list
\family default 
.
 If any of the targets in the list have been updated it will execute 
\family typewriter 
TCL-script
\family default 
.
\layout Subsection


\family typewriter 
link
\family default 
 command
\layout Subsubsection

Synopsis
\layout Code

link <target> <object-list> <library-list>
\layout Subsubsection

Description
\layout Standard

Links the specified objects to become 
\family typewriter 
target
\family default 
 using any possible libraries specied in 
\family typewriter 
library-list
\family default 
.
 
\layout Standard

The version provided by 
\family typewriter 
smake
\family default 
 calls 
\family typewriter 
cc
\family default 
 with the -o specified to 
\family typewriter 
target
\family default 
, followed by the list of objects.
 The list of libraries is specified with 
\family typewriter 
-l
\family default 
 before each filename.
 The global variable 
\family typewriter 
l_options
\family default 
 can be used to give a list of options used by the linker.
\layout Standard

If the user wishes to compile other kinds of files then they must replace
 this command with their own routine.
\layout Section

Example
\layout Standard

Here is an example Smakefile that can be used with 
\family typewriter 
smake
\family default 
.
 It assumes the C files 
\family typewriter 
hello.c
\family default 
 and 
\family typewriter 
hello.h
\family default 
 exist.
\layout Verbatim

proc hello.o {} { 
\newline 

\protected_separator 

\protected_separator 
depend {foo.h main.c} {
\newline 

\protected_separator 

\protected_separator 

\protected_separator 

\protected_separator 
compile main.c 
\newline 

\protected_separator 

\protected_separator 
}
\newline 
}
\layout Verbatim

proc .o {} {
\newline 

\protected_separator 

\protected_separator 
depend {foo.c foo.h} {
\newline 

\protected_separator 

\protected_separator 

\protected_separator 

\protected_separator 
compile foo.c
\newline 

\protected_separator 

\protected_separator 
}
\newline 
}
\layout Verbatim

proc testiprg {} {
\newline 

\protected_separator 

\protected_separator 
depend {foo.o main.o} {
\newline 

\protected_separator 

\protected_separator 

\protected_separator 

\protected_separator 
link testiprg {foo.o main.o} tcl8.0
\newline 

\protected_separator 

\protected_separator 
}
\newline 
}
\layout Verbatim

proc all {} {
\newline 

\protected_separator 

\protected_separator 
depend testiprg {}
\newline 
}
\the_end

Reply via email to