Browse code

build-system

fenris authored on10/03/2016 18:07:41
Showing13 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,4 @@
1
+#!/bin/bash
2
+
3
+python genmake.py > makefile && make $@
4
+
0 5
new file mode 100644
... ...
@@ -0,0 +1,171 @@
1
+import os
2
+import sys
3
+
4
+
5
+class class_rule(object):
6
+	
7
+	def __init__(self, name, dependencies, commands, phony = False):
8
+		self.name = name
9
+		self.dependencies = dependencies
10
+		self.commands = commands
11
+		self.phony = phony
12
+		
13
+	
14
+	def __str__(self):
15
+		output = ""
16
+		output += "%s: %s\n" % (self.name, " ".join(self.dependencies))
17
+		for command in self.commands:
18
+			output += ("\t@ %s\n" % (command.compile_unix()))
19
+		if (self.phony): output += (".PHONY: %s\n" % self.name)
20
+		return output
21
+		
22
+	
23
+
24
+class class_command(object):
25
+	def __init__(self, parameters): self.parameters = parameters
26
+	def compile_unix(self): raise NotImplementedError
27
+	def compile_ant(self): raise NotImplementedError
28
+
29
+class class_command_log(class_command):
30
+	def __init__(self, parameters): class_command.__init__(self, parameters)
31
+	def compile_unix(self): return ("echo -e '-- %s'" % (self.parameters["message"]))
32
+
33
+class class_command_directory_create(class_command):
34
+	def __init__(self, parameters): class_command.__init__(self, parameters)
35
+	def compile_unix(self): return ("mkdir --parents %s" % (self.parameters["path"]))
36
+
37
+class class_command_file_copy(class_command):
38
+	def __init__(self, parameters): class_command.__init__(self, parameters)
39
+	def compile_unix(self): return ("cp --recursive %s %s" % (self.parameters["path-from"], self.parameters["path-to"]))
40
+
41
+class class_command_directory_remove(class_command):
42
+	def __init__(self, parameters): class_command.__init__(self, parameters)
43
+	def compile_unix(self): return ("rm --recursive --force %s" % (self.parameters["path"]))
44
+
45
+class class_command_image_convert(class_command):
46
+	def __init__(self, parameters): class_command.__init__(self, parameters)
47
+	def compile_unix(self): return ("convert %s %s" % (self.parameters["path-from"], self.parameters["path-to"]))
48
+
49
+class class_command_latex_compile(class_command):
50
+	def __init__(self, parameters): class_command.__init__(self, parameters)
51
+	def compile_unix(self): return ("xelatex -output-directory=%s %s > /dev/null" % (self.parameters["output"], self.parameters["path"]))
52
+
53
+
54
+
55
+def main():
56
+	
57
+	dirs = {
58
+		"source": "source",
59
+		"temp": "temp",
60
+		"build": "build",
61
+	}
62
+	
63
+	texs = [
64
+		os.path.join(dirs["source"],"tex","folksprak.tex"),
65
+		os.path.join(dirs["source"],"tex","packages.tex"),
66
+		os.path.join(dirs["source"],"tex","settings.tex"),
67
+		os.path.join(dirs["source"],"tex","meta.tex"),
68
+		os.path.join(dirs["source"],"tex","commands.tex"),
69
+		os.path.join(dirs["source"],"tex","preface.tex"),
70
+		os.path.join(dirs["source"],"tex","grammar.tex"),
71
+		os.path.join(dirs["source"],"tex","phonology_and_orthography.tex"),
72
+		os.path.join(dirs["source"],"tex","conjugation.tex"),
73
+		os.path.join(dirs["source"],"tex","declension.tex"),
74
+		os.path.join(dirs["source"],"tex","attributes.tex"),
75
+	]
76
+	
77
+	rules = []
78
+	rules.append(
79
+		class_rule(
80
+			"all",
81
+			[os.path.join(dirs["build"],"folksprak.pdf")],
82
+			[],
83
+			True
84
+		)
85
+	)
86
+	rules.append(
87
+		class_rule(
88
+			"clean",
89
+			[],
90
+			[
91
+				class_command_directory_remove({
92
+					"path": dirs["temp"],
93
+				}),
94
+			],
95
+			True
96
+		)
97
+	)
98
+	rules.append(
99
+		class_rule(
100
+			"clear",
101
+			["clean"],
102
+			[
103
+				class_command_directory_remove({
104
+					"path": dirs["build"],
105
+				}),
106
+			],
107
+			True
108
+		)
109
+	)
110
+	rules.append(
111
+		class_rule(
112
+			os.path.join(dirs["temp"],"media","logo.pdf"),
113
+			[os.path.join(dirs["source"],"media","logo.svg")],
114
+			[
115
+				class_command_log({
116
+					"message": "converting logo ..."
117
+				}),
118
+				class_command_directory_create({
119
+					"path": os.path.join(dirs["temp"],"media"),
120
+				}),
121
+				class_command_image_convert({
122
+					"path-from": os.path.join(dirs["source"],"media","logo.svg"),
123
+					"path-to": os.path.join(dirs["temp"],"media","logo.pdf"),
124
+				}),
125
+			]
126
+		)
127
+	)
128
+	rules.append(
129
+		class_rule(
130
+			os.path.join(dirs["temp"],"folksprak.pdf"),
131
+			texs + [os.path.join(dirs["temp"],"media","logo.pdf")],
132
+			[
133
+				class_command_log({
134
+					"message": "compiling document ..."
135
+				}),
136
+				class_command_directory_create({
137
+					"path": dirs["temp"],
138
+				}),
139
+				class_command_latex_compile({
140
+					"path": os.path.join(dirs["source"],"tex","folksprak.tex"),
141
+					"output": os.path.join(dirs["temp"]),
142
+				}),
143
+				class_command_latex_compile({
144
+					"path": os.path.join(dirs["source"],"tex","folksprak.tex"),
145
+					"output": os.path.join(dirs["temp"]),
146
+				}),
147
+			]
148
+		)
149
+	)
150
+	rules.append(
151
+		class_rule(
152
+			os.path.join(dirs["build"],"folksprak.pdf"),
153
+			[os.path.join(dirs["temp"],"folksprak.pdf")],
154
+			[
155
+				class_command_directory_create({
156
+					"path": os.path.join(dirs["build"]),
157
+				}),
158
+				class_command_file_copy({
159
+					"path-from": os.path.join(dirs["temp"],"folksprak.pdf"),
160
+					"path-to": os.path.join(dirs["build"],"folksprak.pdf"),
161
+				}),
162
+			]
163
+		)
164
+	)
165
+	
166
+	for rule in rules: print(rule)
167
+	sys.stderr.write("\n[information]\tThe output of this script is meant to be redirected into a GNU-makefile\n")
168
+	
169
+
170
+main()
171
+
... ...
@@ -1,16 +1,26 @@
1
-default: build/folksprak.pdf
2
-.PHONY: default
1
+all: build/folksprak.pdf
2
+.PHONY: all
3 3
 
4
-temp/media/folksprak.pdf: source/media/folksprak.svg
5
-	mkdir --parents temp/media
6
-	convert source/media/folksprak.svg temp/media/folksprak.pdf
4
+clean: 
5
+	@ rm --recursive --force temp
6
+.PHONY: clean
7 7
 
8
-temp/folksprak.pdf: source/tex/folksprak.tex temp/media/folksprak.pdf
9
-	mkdir --parents temp
10
-	xelatex -output-directory=temp source/tex/folksprak.tex
8
+clear: clean
9
+	@ rm --recursive --force build
10
+.PHONY: clear
11
+
12
+temp/media/logo.pdf: source/media/logo.svg
13
+	@ echo -e '-- converting logo ...'
14
+	@ mkdir --parents temp/media
15
+	@ convert source/media/logo.svg temp/media/logo.pdf
16
+
17
+temp/folksprak.pdf: source/tex/folksprak.tex source/tex/packages.tex source/tex/settings.tex source/tex/meta.tex source/tex/commands.tex source/tex/preface.tex source/tex/grammar.tex source/tex/phonology_and_orthography.tex source/tex/conjugation.tex source/tex/declension.tex source/tex/attributes.tex temp/media/logo.pdf
18
+	@ echo -e '-- compiling document ...'
19
+	@ mkdir --parents temp
20
+	@ xelatex -output-directory=temp source/tex/folksprak.tex > /dev/null
21
+	@ xelatex -output-directory=temp source/tex/folksprak.tex > /dev/null
11 22
 
12 23
 build/folksprak.pdf: temp/folksprak.pdf
13
-	mkdir --parents build
14
-	cp --recursive temp/folksprak.pdf build/folksprak.pdf
15
-	
24
+	@ mkdir --parents build
25
+	@ cp --recursive temp/folksprak.pdf build/folksprak.pdf
16 26
 
17 27
similarity index 100%
18 28
rename from source/media/folksprak.svg
19 29
rename to source/media/logo.svg
20 30
new file mode 100644
... ...
@@ -0,0 +1,6 @@
1
+\begin{section}{Attributes}
2
+	
3
+	\todo{all}
4
+	
5
+\end{section}
6
+
0 7
new file mode 100644
... ...
@@ -0,0 +1,35 @@
1
+\newcommand{\ipa}[1]
2
+{
3
+	[#1]
4
+}
5
+
6
+\newcommand{\wordfs}[1]
7
+{
8
+	\textbf{#1}
9
+}
10
+
11
+\newcommand{\url}[1]
12
+{
13
+	\texttt{#1}
14
+}
15
+
16
+\newcommand{\email}[1]
17
+{
18
+	\textbf{\texttt{#1}}
19
+}
20
+
21
+\newcommand{\pseudosection}[1]
22
+{
23
+	\section*{#1}
24
+}
25
+
26
+\newcommand{\pseudosubsection}[1]
27
+{
28
+	\subsection*{#1}
29
+}
30
+
31
+\newcommand{\todo}[1]
32
+{
33
+	\colorbox{red}{[ToDo] #1}
34
+}
35
+
0 36
new file mode 100644
... ...
@@ -0,0 +1,6 @@
1
+\begin{section}{Conjugation}
2
+	
3
+	\todo{all}
4
+	
5
+\end{section}
6
+
0 7
new file mode 100644
... ...
@@ -0,0 +1,6 @@
1
+\begin{section}{Declension}
2
+	
3
+	\todo{all}
4
+	
5
+\end{section}
6
+
... ...
@@ -1,17 +1,23 @@
1
-\documentclass{article}
1
+\documentclass{report}
2 2
 
3 3
 \input{source/tex/packages}
4 4
 \input{source/tex/settings}
5 5
 \input{source/tex/meta}
6
+\input{source/tex/commands}
6 7
 
7 8
 \begin{document}
8 9
 	
9 10
 	\newpage \maketitle
10
-	\includegraphics[width=1.0\textwidth]{temp/media/folksprak}
11
+	% \vspace{20mm}
12
+	\begin{center}
13
+		\includegraphics[width=0.6\textwidth]{temp/media/logo}
14
+	\end{center}
15
+	
16
+	\newpage \input{source/tex/preface}
11 17
 	
12 18
 	\newpage \tableofcontents
13 19
 	
14
-	\newpage \input{source/tex/phonology_and_orthography}
20
+	\newpage \input{source/tex/grammar}
15 21
 	
16 22
 \end{document}
17 23
 
18 24
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+\begin{chapter}{Grammar}
2
+	
3
+	\input{source/tex/phonology_and_orthography}
4
+	\input{source/tex/conjugation}
5
+	\input{source/tex/declension}
6
+	\input{source/tex/attributes}
7
+	
8
+\end{chapter}
9
+
... ...
@@ -1,4 +1,6 @@
1 1
 \usepackage{polyglossia}
2
+\usepackage{verbatim}
2 3
 \usepackage{fontspec}
4
+\usepackage{color}
3 5
 \usepackage{graphicx}
4 6
 
... ...
@@ -1,16 +1,41 @@
1 1
 \begin{section}{Phonology and Orthography}
2 2
 	
3
-	Folksprak uses the following characters as letters:
3
+	Folksprak uses the following characters as letters: \\
4 4
 	
5 5
 	\begin{tabular}{|l|l|l|}
6 6
 		\hline
7
-		Latin letter & Rune & Canonic Sound Mapping \\
7
+		IPA-sound & Latin letter Representation & Runic Representation \\
8 8
 		\hline
9 9
 		\hline
10
-		L/l & \- & [l] \\
10
+		\ipa{l} & \wordfs{L}/\wordfs{l} & \wordfs{ᛚ} \\
11 11
 		\hline
12
-		M/m & \- & [m] \\
13
-		N/n & \- & [n] \\
12
+		\ipa{m} & \wordfs{M}/\wordfs{m} & \wordfs{ᛗ} \\
13
+		\ipa{n} & \wordfs{N}/\wordfs{n} & \wordfs{ᚾ} \\
14
+		\ipa{ŋ} & \wordfs{Ng}/\wordfs{ng} & \wordfs{ᛜ} \\
15
+		\hline
16
+		\ipa{g} & \wordfs{G}/\wordfs{g} & \wordfs{ᚷ} \\
17
+		\ipa{k} & \wordfs{K}/\wordfs{k} & \wordfs{ᚲ} \\
18
+		\ipa{b} & \wordfs{B}/\wordfs{b} & \wordfs{ᛒ} \\
19
+		\ipa{p} & \wordfs{P}/\wordfs{p} & \wordfs{ᛈ} \\
20
+		\ipa{d} & \wordfs{D}/\wordfs{d} & \wordfs{ᛞ} \\
21
+		\ipa{t} & \wordfs{T}/\wordfs{t} & \wordfs{ᛏ} \\
22
+		\hline
23
+		\ipa{v} & \wordfs{V}/\wordfs{v} & \wordfs{ᚹ} \\
24
+		\ipa{f} & \wordfs{F}/\wordfs{f} & \wordfs{ᚠ} \\
25
+		\ipa{s} & \wordfs{S}/\wordfs{s} & \wordfs{ᛋ} \\
26
+		\hline
27
+		\ipa{h} & \wordfs{H}/\wordfs{h} & \wordfs{ᚺ} \\
28
+		\ipa{ɾ} & \wordfs{R}/\wordfs{r} & \wordfs{ᚱ} \\
29
+		\hline
30
+		\ipa{j} & \wordfs{J}/\wordfs{j} & \wordfs{ᛃ} \\
31
+		\hline
32
+		\ipa{i} & \wordfs{I}/\wordfs{i} & \wordfs{ᛁ} \\
33
+		\ipa{e} & \wordfs{E}/\wordfs{e} & \wordfs{ᛖ} \\
34
+		\ipa{a} & \wordfs{A}/\wordfs{a} & \wordfs{ᚨ} \\
35
+		\ipa{o} & \wordfs{O}/\wordfs{o} & \wordfs{ᛟ} \\
36
+		\ipa{u} & \wordfs{U}/\wordfs{u} & \wordfs{ᚢ} \\
37
+		\ipa{ø} & \wordfs{Oy}/\wordfs{oy} & \wordfs{ᛟᛇ} \\
38
+		\ipa{y} & \wordfs{Uy}/\wordfs{uy} & \wordfs{ᚢᛇ} \\
14 39
 		\hline
15 40
 	\end{tabular}
16 41
 	
17 42
new file mode 100644
... ...
@@ -0,0 +1,14 @@
1
+\begin{pseudosection}{Preface}
2
+	
3
+	\begin{pseudosubsection}{What is it about?}
4
+	
5
+		Folksprak is the name of a project that aims to construct an inter-Germanic zonal auxiliary language, which means a language that can be easily understood by any speaker of a Germanic language (a group numbering over 465 million native speakers with an additional 300 to 900 million speaking English as a second language) without ever having learned it. \\
6
+		
7
+		Folksprak is not meant to be designed by any one individual, but rather a collective work created by all interested parties; so you're welcome to participate. \\
8
+		
9
+		The content of this document is the result of a collaboration between people from different parts on earth, connected by the internet. Its not a final specification for Folksprak, but a draft as a base to work on. Please let us know what you think about it and how you would improve it! You can find us in the IRC-Channel \texttt{\#\#folksprak} on \url{irc.freenode.net}. You can also write an E-Mail to \email{admin@folksprak.org}. \\
10
+		
11
+	\end{pseudosubsection}
12
+	
13
+\end{pseudosection}
14
+