summaryrefslogtreecommitdiff
path: root/mk/willora.mk
blob: 4199622eaba809d1602707d3252ddaaa64485589 (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
#
# willora.mk
# Charlotte Koch <dressupgeekout@gmail.com>
#

WILLORABASE?=	${.CURDIR}

NAME?=		mybook
PDF_OUT?=	${NAME}.pdf
PDF_ADOC_TOTAL=	${PDF_OUT}.adoc
EPUB_OUT?=	${NAME}.epub
EPUB_ADOC_TOTAL=${EPUB_OUT}.adoc

BUNDLE?=	bundle
THEME?=		poppy
THEMEDIR?=	${WILLORABASE}/themes
FONTDIR?=	${WILLORABASE}/fonts
MEDIA?=		prepress
PUBLISHER?=	WilloraPDF

COLOPHON_OUT?=		colophon.pdf
DEDICATION_OUT?=	dedication.pdf
ACKNOWLEDGMENTS_OUT?=	acknowledgments.pdf

CUSTOM_PDF_CONVERTER=	${WILLORABASE}/lib/willora_pdf_converter.rb

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

.PHONY: all
all: ${PDF_OUT} ${EPUB_OUT}

.PHONY: pdf
pdf: ${PDF_OUT}

.PHONY: epub
epub: ${EPUB_OUT}

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

# XXX: Figure out why I can't do this:
# 'asciidoctor-pdf -a optimize'
# > GPL Ghostscript 9.50: Can't find initialization file gs_init.ps.
# https://docs.asciidoctor.org/pdf-converter/latest/optimize-pdf/

CLEANFILES+=	${PDF_OUT}
${PDF_OUT}: ${THEMEDIR}/${THEME}-theme.yml ${CUSTOM_PDF_CONVERTER} ${PDF_ADOC_TOTAL} Gemfile.lock ${COLOPHON_OUT} ${DEDICATION_OUT} ${ACKNOWLEDGMENTS_OUT}
	${BUNDLE} exec asciidoctor-pdf \
		-v \
		-r ${CUSTOM_PDF_CONVERTER} \
		-d book \
		-o ${.TARGET} \
		-a pdf-fontsdir=${FONTDIR} \
		-a pdf-theme=${THEME} \
		-a pdf-themesdir=${THEMEDIR} \
		-a media=${MEDIA} \
		-a text-align=justify \
		${PDF_ADOC_TOTAL}

CLEANFILES+=	${PDF_ADOC_TOTAL}
${PDF_ADOC_TOTAL}: ${CHAPTERS}
	rm -f ${.TARGET}
.for chapter in ${CHAPTERS}
	dos2unix < ${chapter} | sed -E \
		-e 's,[[:space:]]--[[:space:]],\&\#8212;,g' \
		-e 's,\&iuml;,\&\#239;,g' \
		-e 's,\&eacute;,\&\#233;,g' >> ${.TARGET}
	printf '\n\n' >> ${.TARGET}
.endfor

CLEANFILES+=	${COLOPHON_OUT}
${COLOPHON_OUT}: ${THEMEDIR}/${THEME}-colophon-theme.yml ${COLOPHON_FILE} ${CUSTOM_PDF_CONVERTER} Gemfile.lock
	${BUNDLE} exec asciidoctor-pdf \
		-v \
		-r ${CUSTOM_PDF_CONVERTER} \
		-d book \
		-o ${.TARGET} \
		-a pdf-fontsdir=${FONTDIR} \
		-a pdf-theme=${THEME}-colophon \
		-a pdf-themesdir=${THEMEDIR} \
		-a media=print \
		-a text-align=justify \
		${COLOPHON_FILE}

CLEANFILES+=	${DEDICATION_OUT}
${DEDICATION_OUT}: ${THEMEDIR}/${THEME}-dedication-theme.yml ${DEDICATION_FILE} ${CUSTOM_PDF_CONVERTER} Gemfile.lock
	${BUNDLE} exec asciidoctor-pdf \
		-v \
		-r ${CUSTOM_PDF_CONVERTER} \
		-d book \
		-o ${.TARGET} \
		-a pdf-fontsdir=${FONTDIR} \
		-a pdf-theme=${THEME}-dedication \
		-a pdf-themesdir=${THEMEDIR} \
		-a media=print \
		${DEDICATION_FILE}

CLEANFILES+=	${ACKNOWLEDGMENTS_OUT}
${ACKNOWLEDGMENTS_OUT}: ${THEMEDIR}/${THEME}-acknowledgments-theme.yml ${ACKNOWLEDGMENTS_FILE} ${CUSTOM_PDF_CONVERTER} Gemfile.lock
	${BUNDLE} exec asciidoctor-pdf \
		-v \
		-r ${CUSTOM_PDF_CONVERTER} \
		-d book \
		-o ${.TARGET} \
		-a pdf-fontsdir=${FONTDIR} \
		-a pdf-theme=${THEME}-acknowledgments \
		-a pdf-themesdir=${THEMEDIR} \
		-a media=print \
		${ACKNOWLEDGMENTS_FILE}

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

# XXX: '-a ebook-validate' doesn't work because:
# > RUBYOPT=-d epubcheck
# Exception `LoadError' at /usr/pkg/lib/ruby/3.0.0/rubygems.rb:1339 - cannot
# 	load such file -- rubygems/defaults/ruby
# Exception `LoadError' at
# 	<internal:/usr/pkg/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85 -
# 	cannot load such file -- rubygems/defaults/operating_system
# Exception `LoadError' at
# 	<internal:/usr/pkg/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:162 -
# 	cannot load such file -- rubygems/defaults/operating_system
# Failed to execute epubcheck

CLEANFILES+=	${EPUB_OUT}
${EPUB_OUT}: Gemfile.lock ${EPUB_ADOC_TOTAL}
	${BUNDLE} exec asciidoctor-epub3 \
		-v \
		-d book \
		-o ${.TARGET} \
		-a producer="${PUBLISHER}" \
		-a front-cover-image=${EPUB_COVER_FILE} \
		-a ebook-format=epub3 \
		-a media=${MEDIA} \
		-a text-align=justify \
		${EPUB_ADOC_TOTAL}

# XXX Needs to be different from the PDF one
CLEANFILES+=	${EPUB_ADOC_TOTAL}
${EPUB_ADOC_TOTAL}: ${CHAPTERS}
	rm -f ${.TARGET}
.for chapter in ${CHAPTERS}
	dos2unix < ${chapter} | sed -E \
		-e 's,[[:space:]]--[[:space:]],\&\#8212;,g' \
		-e 's,\&iuml;,\&\#239;,g' \
		-e 's,\&eacute;,\&\#233;,g' >> ${.TARGET}
	printf '\n\n' >> ${.TARGET}
.endfor

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

Gemfile.lock:
	${BUNDLE} install

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

.PHONY: clean
clean:
	rm -f ${CLEANFILES}