summaryrefslogtreecommitdiff
path: root/doc/introduction/Makefile
blob: 3bcb5d75cc1183a5488e6a2ea1a423edb9bde0b2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
############################################################-*-Makefile-*-####
# Scala Introduction
##############################################################################
# $Id$

##############################################################################
# Configuration

ROOT			 = ../..

include $(ROOT)/Makefile.import

##############################################################################
# Variables

WEBSITE_PROJECT_ROOT	?= $(ROOT)/../scala-website
WEBSITE_SOURCEDIR	?= $(WEBSITE_PROJECT_ROOT)/sources

# project
PROJECT_SOURCES		+= default.dtd
PROJECT_SOURCES		+= $(XML_SOURCES)

PROJECT_XSLFILE		 = ScalaIntro.xsl
PROJECT_BUILDDATE	 = $(shell date "+%B %d, %Y")

#XML_SOURCES		+= index.xml
#XML_SOURCES		+= $(shell cd $(WEBSITE_SOURCEDIR); ls intro/*.xml)

# We preserve section order of PDF document generated by Acrobat
XML_FILES		+= index
XML_FILES		+= intro/unifiedtypes
XML_FILES		+= intro/classes
XML_FILES		+= intro/traits
XML_FILES		+= intro/subclassing
XML_FILES		+= intro/mixin
XML_FILES		+= intro/funsyntax
XML_FILES		+= intro/hofuns
XML_FILES		+= intro/funnesting
XML_FILES		+= intro/currying
XML_FILES		+= intro/caseclasses
XML_FILES		+= intro/patmatch
XML_FILES		+= intro/xml
XML_FILES		+= intro/regexppat
XML_FILES		+= intro/comprehensions
XML_FILES		+= intro/generics
XML_FILES		+= intro/variances
XML_FILES		+= intro/upbounds
XML_FILES		+= intro/lowbounds
XML_FILES		+= intro/innerclasses
XML_FILES		+= intro/abstracttypes
XML_FILES		+= intro/compoundtypes
XML_FILES		+= intro/selfrefs
XML_FILES		+= intro/views
XML_FILES		+= intro/polymethods
XML_FILES		+= intro/inference
XML_FILES		+= intro/operators
XML_FILES		+= intro/targettyping
XML_FILES		+= intro/coercions
XML_SOURCES		+= $(XML_FILES:%=%.xml)

PNG_FILES		+= images/classhierarchy
PNG_FILES		+= images/colpoint2d
PNG_FILES		+= images/colpoint3d
PNG_FILES		+= images/scala_logo
PNG_SOURCES		+= $(PNG_FILES:%=%.png)

# latex
LATEX_FORMATS		+= dvi
LATEX_FORMATS		+= ps
LATEX_FORMATS		+= pdf

LATEX_TARGETS		+= $(LATEX_FORMATS:%=ScalaIntro.%)

LATEX_SOURCES		+= MainPart.tex
LATEX_SOURCES		+= ScalaIntro.tex

# latex
TEXINPUTS		:= $(PROJECT_SUPPORTDIR)/latex:$(TEXINPUTS):

##############################################################################
# Includes

include $(PROJECT_SUPPORTDIR)/make/latex.mk

AWK			?= awk
CYGWIN			?= $(filter CYGWIN%,$(shell uname))

##############################################################################
# XSLT processor

XSLTPROC		?= xsltproc
XSLTPROC_FLAGS		+=

##############################################################################
# convert

CONVERT			?= convert
CONVERT_FLAGS		+= -sharpen 0.1 -flatten -trim

##############################################################################
# PDF viewer

ACROREAD_WIN32		?= c:/Progra~1/Adobe/Acrobat\ 7.0/Reader/AcroRd32.exe
ACROREAD_UNIX		?= acroread

PDF_VIEWER		?= $(if $(CYGWIN),$(ACROREAD_WIN32),$(ACROREAD_UNIX))

##############################################################################
# PS viewer

GSVIEW_WIN32		?= gsview32
GSVIEW_UNIX		?= gv

PS_VIEWER		?= $(if $(CYGWIN),$(GSVIEW_WIN32),$(GSVIEW_UNIX))

##############################################################################
# Commands

clean:
	@$(RM) -r images intro MainPart.tex default.dtd index.xml ScalaIntro.out

view: viewpdf

viewpdf: ScalaIntro.pdf
	$(PDF_VIEWER) $< &

viewps: ScalaIntro.ps
	$(PS_VIEWER) $< &

.PHONY: clean
.PHONY: view
.PHONY: viewpdf
.PHONY: viewps

##############################################################################
# Rules

images		:
	@[ -d $@ ] || $(MKDIR) -p $@
	for file in $(PNG_SOURCES); do \
	  $(CONVERT) $(CONVERT_FLAGS) \
	    PNG:$(WEBSITE_SOURCEDIR)/$$file EPS:images/`$(BASENAME) $$file .png`.eps; \
	  $(CONVERT) $(CONVERT_FLAGS) \
	    PNG:$(WEBSITE_SOURCEDIR)/$$file PDF:images/`$(BASENAME) $$file .png`.pdf; \
	done

intro		:
	@[ -d $@ ] || $(MKDIR) -p $@
	@for file in $(PROJECT_SOURCES); do \
	  $(AWK) '/<src/{on=1};/<\/src>/{on=0};{if(on){gsub("{","\\{");gsub("}","\\}")};print $0}' \
	    $(WEBSITE_SOURCEDIR)/$$file > $$file; \
	done

MainPart.tex	: images intro $(PROJECT_XSLFILE)
	$(ECHO) "%% Generated file: $@" > $@
	$(ECHO) "%% Build date    : $(PROJECT_BUILDDATE)" >> $@
	$(XSLTPROC) $(XSLTPROC_FLAGS) $(PROJECT_XSLFILE) $(XML_SOURCES) | \
	  $(SED) -e 's/% 2/\\% 2/g' | \
	  $(SED) -e 's/<%/<\\%/g' | \
	  $(SED) -e 's/#Node/\\#Node/g' | \
	  $(SED) -e 's/{_/{\\_/g' >> $@

##############################################################################