File: makefile

package info (click to toggle)
highlight 4.10-1.1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 7,556 kB
  • sloc: cpp: 27,579; makefile: 411; sh: 341; ansic: 264; php: 236; python: 217; ruby: 132; perl: 61; tcl: 1
file content (221 lines) | stat: -rw-r--r-- 8,250 bytes parent folder | download | duplicates (3)
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
# Installation script for highlight.
# See INSTALL for details.

# Installation directories:

# Destination directory for installation (intended for packagers)
DESTDIR =

# Root directory for final installation
PREFIX = /usr

# Data file directory
data_dir = ${PREFIX}/share/

# Location of the highlight data files:
hl_data_dir = ${data_dir}highlight/

# Location of the highlight binary:
bin_dir = ${PREFIX}/bin/

# Location of the highlight library:
lib_dir = ${PREFIX}/lib/

# Location of the highlight man pages:
man_dir = ${data_dir}man/

# Documentation directory
doc_dir = ${data_dir}doc/

# Location of the highlight documentation:
hl_doc_dir = ${doc_dir}highlight/

# Location of the highlight extras:
examples_dir = ${hl_doc_dir}extras/

# Location of system-wide config files:
ifeq (${PREFIX},/usr)
	conf_dir = /etc/
else
	conf_dir = ${PREFIX}/etc/
endif

# Location of the highlight config files:
hl_conf_dir = ${conf_dir}highlight/

# Location of bash completions:
bash_comp_dir = ${data_dir}bash-completion/completions/

# Location of fish completions:
fish_comp_dir = ${data_dir}fish/vendor_completions.d/

# Location of zsh completions:
zsh_comp_dir = ${data_dir}zsh/site-functions/

# Location of additional gui files
desktop_apps = ${data_dir}applications/
desktop_icons = ${data_dir}icons/hicolor/256x256/apps/

# Commands:
GZIP=gzip -9f
INSTALL_DATA=install -m644
INSTALL_PROGRAM=install -m755
MKDIR=mkdir -p -m 755
RMDIR=rm -r -f

all cli:
	${MAKE} -C ./src -f ./makefile HL_DATA_DIR=${hl_data_dir} HL_CONFIG_DIR=${hl_conf_dir}

lib lib-static:
	${MAKE} -C ./src -f ./makefile HL_DATA_DIR=${hl_data_dir} HL_CONFIG_DIR=${hl_conf_dir} lib-static

lib-shared:
	${MAKE} -C ./src -f ./makefile HL_DATA_DIR=${hl_data_dir} HL_CONFIG_DIR=${hl_conf_dir} PIC=1 lib-shared

gui:
	${MAKE} -C ./src -f ./makefile HL_DATA_DIR=\"${hl_data_dir}\" HL_CONFIG_DIR=\"${hl_conf_dir}\" HL_DOC_DIR=\"${hl_doc_dir}\" gui-qt
	@echo
	@echo "You need to run 'make install' AND 'make install-gui' now!"

install:
	@echo "This script will install highlight in the following directories:"
	@echo "Data directory:             ${DESTDIR}${hl_data_dir}"
	@echo "Documentation directory:    ${DESTDIR}${hl_doc_dir}"
	@echo "Plugin directory:           ${DESTDIR}${hl_data_dir}plugins/"
	@echo "Examples directory:         ${DESTDIR}${examples_dir}"
	@echo "Manual directory:           ${DESTDIR}${man_dir}"
	@echo "Binary directory:           ${DESTDIR}${bin_dir}"
	@echo "Configuration directory:    ${DESTDIR}${hl_conf_dir}"
	@echo "Bash completions directory: ${DESTDIR}${bash_comp_dir}"
	@echo "Fish completions directory: ${DESTDIR}${fish_comp_dir}"
	@echo "Zsh completions directory:  ${DESTDIR}${zsh_comp_dir}"
	@echo

	${MKDIR} ${DESTDIR}${hl_doc_dir}
	${MKDIR} ${DESTDIR}${hl_conf_dir}
	${MKDIR} ${DESTDIR}${examples_dir} \
		${DESTDIR}${examples_dir}swig \
		${DESTDIR}${examples_dir}tcl \
		${DESTDIR}${examples_dir}pandoc \
		${DESTDIR}${examples_dir}json \
		${DESTDIR}${examples_dir}pywal \
		${DESTDIR}${examples_dir}langDefs-resources \
		${DESTDIR}${examples_dir}themes-resources \
		${DESTDIR}${examples_dir}themes-resources/base16 \
		${DESTDIR}${examples_dir}themes-resources/css-themes

	${MKDIR} ${DESTDIR}${hl_data_dir} \
		${DESTDIR}${hl_data_dir}themes \
		${DESTDIR}${hl_data_dir}themes/base16 \
		${DESTDIR}${hl_data_dir}langDefs \
		${DESTDIR}${hl_data_dir}plugins
	${MKDIR} ${DESTDIR}${man_dir}man1/
	${MKDIR} ${DESTDIR}${man_dir}man5/
	${MKDIR} ${DESTDIR}${bash_comp_dir}
	${MKDIR} ${DESTDIR}${fish_comp_dir}
	${MKDIR} ${DESTDIR}${zsh_comp_dir}
	${MKDIR} ${DESTDIR}${bin_dir}

	${INSTALL_DATA} ./langDefs/*.lang ${DESTDIR}${hl_data_dir}langDefs/
	${INSTALL_DATA} ./*.conf ${DESTDIR}${hl_conf_dir}
	${INSTALL_DATA} ./themes/*.theme ${DESTDIR}${hl_data_dir}themes/
	${INSTALL_DATA} ./themes/base16/*.theme ${DESTDIR}${hl_data_dir}themes/base16/
	${INSTALL_DATA} ./plugins/*.lua ${DESTDIR}${hl_data_dir}plugins/
	${INSTALL_DATA} ./man/highlight.1 ${DESTDIR}${man_dir}man1/
	${GZIP} ${DESTDIR}${man_dir}man1/highlight.1
	${INSTALL_DATA} ./man/filetypes.conf.5 ${DESTDIR}${man_dir}man5/
	${GZIP} ${DESTDIR}${man_dir}man5/filetypes.conf.5

	${INSTALL_DATA} ./sh-completion/highlight.bash ${DESTDIR}${bash_comp_dir}highlight
	${INSTALL_DATA} ./sh-completion/highlight.fish ${DESTDIR}${fish_comp_dir}
	${INSTALL_DATA} ./sh-completion/highlight.zsh ${DESTDIR}${zsh_comp_dir}_highlight

	${INSTALL_DATA} ./AUTHORS ${DESTDIR}${hl_doc_dir}
	${INSTALL_DATA} ./README* ${DESTDIR}${hl_doc_dir}
	${INSTALL_DATA} ./ChangeLog.adoc ${DESTDIR}${hl_doc_dir}
	${INSTALL_DATA} ./COPYING ${DESTDIR}${hl_doc_dir}
	${INSTALL_DATA} ./INSTALL ${DESTDIR}${hl_doc_dir}
	${INSTALL_DATA} ./extras/swig/* ${DESTDIR}${examples_dir}swig
	${INSTALL_DATA} ./extras/tcl/* ${DESTDIR}${examples_dir}tcl
	${INSTALL_DATA} ./extras/pandoc/* ${DESTDIR}${examples_dir}pandoc
	${INSTALL_DATA} ./extras/pywal/* ${DESTDIR}${examples_dir}pywal
	${INSTALL_DATA} ./extras/json/* ${DESTDIR}${examples_dir}json
	${INSTALL_DATA} ./extras/langDefs-resources/* ${DESTDIR}${examples_dir}langDefs-resources
	${INSTALL_DATA} ./extras/themes-resources/base16/* ${DESTDIR}${examples_dir}themes-resources/base16
	${INSTALL_DATA} ./extras/themes-resources/css-themes/* ${DESTDIR}${examples_dir}themes-resources/css-themes
	${INSTALL_DATA} ./extras/highlight_pipe.* ${DESTDIR}${examples_dir}
	${INSTALL_DATA} ./extras/*.py ${DESTDIR}${examples_dir}
	${INSTALL_PROGRAM} ./src/highlight ${DESTDIR}${bin_dir}

	@echo
	@echo "Done."
	@echo "Type highlight --help or man highlight for instructions."
	@echo "Take a look at ${DESTDIR}${examples_dir} for scripts, SWIG and TCL bindings."
	@echo "Execute 'make install-gui' to install the highlight GUI ('make gui')."
	@echo "Do not hesitate to report problems. Unknown bugs are hard to fix."

install-gui:
	@echo "Installing files for the GUI..."
	${MKDIR} ${DESTDIR}${hl_data_dir} \
		${DESTDIR}${hl_data_dir}gui_files \
		${DESTDIR}${hl_data_dir}gui_files/ext \
		${DESTDIR}${hl_data_dir}gui_files/l10n \
		${DESTDIR}${desktop_apps} \
		${DESTDIR}${desktop_icons}

	${INSTALL_DATA} ./gui_files/l10n/* ${DESTDIR}${hl_data_dir}gui_files/l10n/
	${INSTALL_DATA} ./gui_files/ext/* ${DESTDIR}${hl_data_dir}gui_files/ext/
	${INSTALL_DATA} ./highlight.desktop ${DESTDIR}${desktop_apps}
	${INSTALL_DATA} ./src/gui-qt/highlight.png ${DESTDIR}${desktop_icons}
	${INSTALL_PROGRAM} ./src/highlight-gui ${DESTDIR}${bin_dir}

install-lib-shared:
	${INSTALL_DATA} ./src/libhighlight.so.4.0 ${DESTDIR}${lib_dir}

uninstall:
	@echo "Removing highlight files from system..."
	${RMDIR} ${DESTDIR}${hl_data_dir}
	${RMDIR} ${DESTDIR}${hl_doc_dir}
	${RMDIR} ${DESTDIR}${hl_conf_dir}
	${RMDIR} ${DESTDIR}${examples_dir}
	rm -rf ${DESTDIR}${man_dir}man1/highlight.1.gz
	rm -rf ${DESTDIR}${man_dir}man5/filetypes.conf.5.gz
	rm -rf ${DESTDIR}${bash_comp_dir}highlight
	rm -rf ${DESTDIR}${fish_comp_dir}highlight.fish
	rm -rf ${DESTDIR}${zsh_comp_dir}_highlight
	rm -rf ${DESTDIR}${bin_dir}highlight
	rm -rf ${DESTDIR}${bin_dir}highlight-gui
	rm -rf ${DESTDIR}${desktop_apps}highlight.desktop
	rm -rf ${DESTDIR}${desktop_icons}highlight.png
	@echo "Done."

clean cleanall:
	$(MAKE) -C ./src -f ./makefile clean

clean-obj:
	$(MAKE) -C ./src -f ./makefile clean-obj

completions:
	sh-completion/gen-completions bash >sh-completion/highlight.bash
	sh-completion/gen-completions fish >sh-completion/highlight.fish
	sh-completion/gen-completions zsh >sh-completion/highlight.zsh

help:
	@echo "This makefile offers the following options:"
	@echo
	@echo "(all)            Compile the command line interface."
	@echo "lib-static       Compile only the static library."
	@echo "lib-shared       Compile only the shared library."
	@echo "gui              Compile the Qt (5.x) GUI."
	@echo "install          Copy all data files to ${hl_data_dir}."
	@echo "install-gui      Copy GUI data files to ${hl_data_dir}."
	@echo "clean            Remove object files and binaries."
	@echo "completions      Generate shell completion scripts."
	@echo "uninstall        Remove highlight files from system."
	@echo
	@echo "See src/makefile for compilation and linking options."

# Target needed for redhat 9.0 rpmbuild
install-strip:

.PHONY: clean all install help uninstall install-strip clean-obj