1 #-----------------------------------------------------------------------------
2 # $Id: rules.mk,v 1.3 1997/01/21 10:55:01 sof Exp $
4 # This file defines the default suffix rules. It replaces suffixes.jm in the
7 .SUFFIXES: .xdvi .ps .dvi .tex .fig .tib .verb .itex .itxi .ihtml .lit \
8 .p_o .o .s .hi .hc .lhc .lhs .hs .prl .lprl .sh .lsh \
9 .c .lc .h .lh .flex .lflex .y
11 ifndef SuffixRules_WantStdOnes
12 SuffixRules_WantStdOnes = YES /* but you can turn it off */
15 #-----------------------------------------------------------------------------
16 # Doc processing suffix rules
18 ifdef DocProcessingSuffixRules
26 expand $*.verb | $(VERBATIM) > $*.tex
29 @$(RM) $*.tex $*.verb-t.tex
31 expand $*.tib-t.tex | $(VERBATIM) > $*.tex
40 fig2dev -L latex $< $@
44 #-----------------------------------------------------------------------------
45 # Literate suffix rules
47 # ToDo: somehow macroize this lot.
49 ifdef LiterateSuffixRules
53 $(LIT2PGM) $(LIT2PGMFLAGS) -o $@ $<
58 $(LIT2TEXI) -c $(LIT2TEXIFLAGS) -o $@ $<
63 $(LIT2HTML) -c $(LIT2HTMLFLAGS) -o $@ $<
68 $(LIT2LATEX) -c $(LIT2LATEXFLAGS) -o $@ $<
73 $(LIT2PGM) $(LIT2PGMFLAGS) -o $@ $<
78 $(LIT2TEXI) -c $(LIT2TEXIFLAGS) -o $@ $<
83 $(LIT2HTML) -c $(LIT2HTMLFLAGS) -o $@ $<
88 $(LIT2LATEX) -c $(LIT2LATEXFLAGS) -o $@ $<
93 $(LIT2PGM) $(LIT2PGMFLAGS) -o $@ $<
98 $(LIT2TEXI) -c $(LIT2TEXIFLAGS) -o $@ $<
103 $(LIT2HTML) -c $(LIT2HTMLFLAGS) -o $@ $<
108 $(LIT2LATEX) -c $(LIT2LATEXFLAGS) -o $@ $<
113 $(LIT2PGM) $(LIT2PGMFLAGS) -o $@ $<
118 $(LIT2TEXI) -c $(LIT2TEXIFLAGS) -o $@ $<
123 $(LIT2HTML) -c $(LIT2HTMLFLAGS) -o $@ $<
128 $(LIT2LATEX) -c $(LIT2LATEXFLAGS) -o $@ $<
133 $(LIT2PGM) $(LIT2PGMFLAGS) -o $@ $<
138 $(LIT2TEXI) -c $(LIT2TEXIFLAGS) -o $@ $<
143 $(LIT2HTML) -c $(LIT2HTMLFLAGS) -o $@ $<
148 $(LIT2LATEX) -c $(LIT2LATEXFLAGS) -o $@ $<
153 $(LIT2PGM) $(LIT2PGMFLAGS) -o $@ $<
158 $(LIT2TEXI) -c $(LIT2TEXIFLAGS) -o $@ $<
163 $(LIT2HTML) -c $(LIT2HTMLFLAGS) -o $@ $<
168 $(LIT2LATEX) -c $(LIT2LATEXFLAGS) -o $@ $<
173 $(LIT2PGM) $(LIT2PGMFLAGS) -o $@ $<
178 $(LIT2TEXI) -c $(LIT2TEXIFLAGS) -o $@ $<
183 $(LIT2HTML) -c $(LIT2HTMLFLAGS) -o $@ $<
188 $(LIT2LATEX) -c $(LIT2LATEXFLAGS) -o $@ $<
193 $(LIT2PGM) $(LIT2PGMFLAGS) -o $@ $<
198 $(LIT2TEXI) -c $(LIT2TEXIFLAGS) -o $@ $<
203 $(LIT2HTML) -c $(LIT2HTMLFLAGS) -o $@ $<
208 $(LIT2LATEX) -c $(LIT2LATEXFLAGS) -o $@ $<
213 #-----------------------------------------------------------------------------
214 # C-related suffix rules
220 $(AS) $(ASFLAGS) -o $@ $< || ( $(RM) $@ && exit 1 )
224 $(CC) $(CFLAGS) -c $< -o $@
228 $(CC) $(CFLAGS) -S $< -o $@
232 ifdef FlexSuffixRules
236 $(FLEX) -t $(LFLAGS) $< > $@ || ( $(RM) $@ && exit 1 )
240 #-----------------------------------------------------------------------------
243 ifdef YaccSuffixRules
245 %.tab.c %.tab.h : %.y
246 @$(RM) $*.tab.h $*.tab.c y.tab.c y.tab.h y.output
248 $(MV) y.tab.c $*.tab.c
250 $(MV) y.tab.h $*.tab.h
255 #-----------------------------------------------------------------------------
256 # Haskell Suffix Rules
258 # ToDo: these don't do the .hi-file games for hbc etc.
260 ifdef HaskellSuffixRules
261 SuffixRule_o_hi = YES
262 SuffixRule_lhs_o = YES
263 SuffixRule_hs_o = YES
266 ifdef SuffixRule_lhs_o
268 $(HC) $(HCFLAGS) $($*_flags) -c $< -o $@
271 ifdef SuffixRule_hs_o
273 $(HC) $(HCFLAGS) $($*_flags) -c $< -o $@
276 ifdef SuffixRule_lhs_hc
278 $(HC) $(HCFLAGS) $($*_flags) -C $< -o $@
281 ifdef SuffixRule_hc_o
283 $(HC) $(HCFLAGS) $($*_flags) -c $< -o $@
286 ifdef SuffixRule_o_hi
288 @if [ ! -f $@ ] ; then \
289 echo You need to create an initial $@ by hand ; \
293 %.$(suffix)_hi : %.$(suffix)_o
294 @if [ ! -f $@ ] ; then \
295 echo You need to create an initial $@ by hand ; \
301 ifdef SuffixRule_hc_hi
303 @if [ ! -f $@ ] ; then \
304 echo You need to create an initial $@ by hand ; \
310 #-----------------------------------------------------------------------------
311 # Runtest rules for calling $(GHC) on a single-file Haskell program
313 ifdef GhcRunTestRules
316 $(TIME) $(RUNSTDTEST) $(GHC) $(RUNSTDTEST_FLAGS) \
317 -o2 $*.stderr $($*_flags) $<