1SUBDIRS=po
2
3EXPORT_MODULES=					\
4	cupshelpers/__init__.py			\
5	cupshelpers/cupshelpers.py		\
6	cupshelpers/installdriver.py		\
7	cupshelpers/ppds.py			\
8	cupshelpers/openprinting.py		\
9	cupshelpers/xmldriverprefs.py
10
11EXPORT_MODULES_GEN=				\
12	cupshelpers/config.py
13
14### Automake hooks for Distutils.
15# The distutils module doesn't understand srcdir != builddir,
16# so we copy in, along with the cupshelpers modules, into
17# the builddir for 'all', 'install-exec', and 'clean' hooks.
18.stamp-distutils-in-builddir:	setup.py $(EXPORT_MODULES)
19	if [ "$(top_srcdir)" != "$(top_builddir)" ]; then	\
20		cp $(top_srcdir)/setup.py .;			\
21		$(mkdir_p) cupshelpers;				\
22		for file in $(EXPORT_MODULES); do		\
23			cp $(top_srcdir)/$$file $$file;		\
24		done;						\
25	fi
26	touch .stamp-distutils-in-builddir
27
28dist-hook: mk-ChangeLog
29.PHONE: mk-ChangeLog
30mk-ChangeLog:
31	if test -d .git; then				\
32	  $(top_srcdir)/gitlog-to-changelog		\
33	    --since=2009-05-01 -- --no-merges		\
34	    > $(distdir)/cl ;				\
35	  mv -f $(distdir)/cl $(distdir)/ChangeLog ;	\
36	fi
37
38config.py: config.py.in Makefile
39	sed \
40	  -e "s|\@prefix\@|$(prefix)|" \
41	  -e "s|\@datadir\@|$(datadir)|" \
42	  -e "s|\@localedir\@|$(localedir)|" \
43	  -e "s|\@VERSION\@|$(VERSION)|" \
44	  -e "s|\@PACKAGE\@|$(PACKAGE)|" \
45	  $< > $@
46
47cupshelpers/config.py: cupshelpers/config.py.in Makefile
48	$(mkdir_p) cupshelpers
49	sed \
50	  -e "s|\@prefix\@|$(prefix)|" \
51	  -e "s|\@sysconfdir\@|$(sysconfdir)|" \
52	  -e "s|\@cupsserverbindir\@|$(cupsserverbindir)|" \
53	  $< > $@
54
55dbus/org.fedoraproject.Config.Printing.service: dbus/org.fedoraproject.Config.Printing.service.in $(top_builddir)/config.status Makefile
56	sed \
57	-e "s|\@bindir\@|$(bindir)|" \
58	$< >$@
59
60# Use distutils to build the module.
61all-local: .stamp-distutils-in-builddir config.py cupshelpers/config.py
62	$(PYTHON) setup.py build
63
64# Use distutils to install the module.
65install-exec-local: .stamp-distutils-in-builddir
66	$(PYTHON) setup.py install -c -O1 --prefix=/usr/local --root=/opengrok/src/dports/print/system-config-printer/stage
67
68# Uninstall the module, crossing our fingers that we know enough
69# about how distutils works to do this.  Unfortunately, distutils
70# doesn't provide a way to do this itself.
71uninstall-local:
72	rm -f $(DESTDIR)/$(pythondir)/cupshelpers*.egg-info
73	rm -rf $(DESTDIR)/$(pythondir)/cupshelpers/__pycache__
74	for file in $(EXPORT_MODULES) $(EXPORT_MODULES_GEN); do	\
75		rm -f $(DESTDIR)/$(pythondir)/$$file*;		\
76	done
77
78# Tell distutils to clean up.
79clean-local:
80	-$(PYTHON) setup.py clean --all
81	if [ "$(top_srcdir)" != "$(top_builddir)" ]; then	\
82		rm -f setup.py;					\
83		for file in $(EXPORT_MODULES)			\
84			$(EXPORT_MODULES_GEN); do		\
85			rm -f $$file*;				\
86		done;						\
87	fi
88	rm -f .stamp-distutils-in-builddir
89	rm -f .stamp-man-pages-built
90
91nobase_pkgdata_SCRIPTS=				\
92	check-device-ids.py			\
93	pysmb.py				\
94	scp-dbus-service.py			\
95	system-config-printer.py		\
96	install-printerdriver.py		\
97	troubleshoot/__init__.py		\
98	applet.py
99
100nobase_pkgdata_DATA=					\
101	asyncconn.py					\
102	asyncipp.py					\
103	asyncpk1.py					\
104	authconn.py					\
105	config.py					\
106	cupspk.py					\
107	debug.py					\
108	dnssdresolve.py					\
109	errordialogs.py					\
110	HIG.py						\
111	firewallsettings.py					\
112	gui.py						\
113	gtkinklevel.py					\
114	installpackage.py				\
115	jobviewer.py					\
116	killtimer.py					\
117	monitor.py					\
118	newprinter.py					\
119	OpenPrintingRequest.py				\
120	options.py					\
121	optionwidgets.py				\
122	PhysicalDevice.py				\
123	ppdcache.py					\
124	ppdippstr.py					\
125	ppdsloader.py					\
126	printerproperties.py				\
127	probe_printer.py				\
128	SearchCriterion.py				\
129	serversettings.py				\
130	smburi.py					\
131	statereason.py					\
132	timedops.py					\
133	ToolbarSearchEntry.py				\
134	userdefault.py					\
135	ui/AboutDialog.ui				\
136	ui/ConnectDialog.ui				\
137	ui/ConnectingDialog.ui				\
138	ui/InstallDialog.ui				\
139	ui/JobsWindow.ui				\
140	ui/NewPrinterName.ui				\
141	ui/NewPrinterWindow.ui				\
142	ui/PrinterPropertiesDialog.ui			\
143	ui/PrintersWindow.ui				\
144	ui/ServerSettingsDialog.ui			\
145	ui/SMBBrowseDialog.ui				\
146	ui/statusicon_popupmenu.ui			\
147	ui/WaitWindow.ui				\
148	icons/i-network-printer.png			\
149	troubleshoot/base.py				\
150	troubleshoot/CheckLocalServerPublishing.py	\
151	troubleshoot/CheckNetworkServerSanity.py	\
152	troubleshoot/CheckPPDSanity.py			\
153	troubleshoot/CheckPrinterSanity.py		\
154	troubleshoot/CheckSELinux.py			\
155	troubleshoot/CheckUSBPermissions.py		\
156	troubleshoot/ChooseNetworkPrinter.py		\
157	troubleshoot/ChoosePrinter.py			\
158	troubleshoot/DeviceListed.py			\
159	troubleshoot/ErrorLogCheckpoint.py		\
160	troubleshoot/ErrorLogFetch.py			\
161	troubleshoot/ErrorLogParse.py			\
162	troubleshoot/Locale.py				\
163	troubleshoot/LocalOrRemote.py			\
164	troubleshoot/NetworkCUPSPrinterShared.py	\
165	troubleshoot/PrinterStateReasons.py		\
166	troubleshoot/PrintTestPage.py			\
167	troubleshoot/QueueNotEnabled.py			\
168	troubleshoot/QueueRejectingJobs.py		\
169	troubleshoot/RemoteAddress.py			\
170	troubleshoot/SchedulerNotRunning.py		\
171	troubleshoot/ServerFirewalled.py		\
172	troubleshoot/Shrug.py				\
173	troubleshoot/VerifyPackages.py			\
174	troubleshoot/Welcome.py				\
175	xml/preferreddrivers.rng			\
176	xml/validate.py
177
178cupshelpersdir=$(sysconfdir)/cupshelpers
179cupshelpers_DATA=\
180	xml/preferreddrivers.xml
181
182nodist_bin_SCRIPTS=					\
183	system-config-printer			\
184	install-printerdriver			\
185	system-config-printer-applet		\
186	dbus/scp-dbus-service
187
188if UDEV_RULES
189udevrules_DATA=udev/70-printers.rules
190udev_udev_configure_printer_SOURCES=\
191	udev/udev-configure-printer.c
192udev_udev_configure_printer_LDADD= -lcups -ludev $(libusb_LIBS) $(GLIB_LIBS)
193udev_udev_configure_printer_CFLAGS= $(AM_CFLAGS) $(libusb_CFLAGS) $(GLIB_CFLAGS)
194udev_PROGRAMS=\
195	udev/udev-configure-printer
196udev_SCRIPTS=\
197	udev/udev-add-printer
198
199if HAVE_SYSTEMD
200systemdsystemunit_DATA = \
201	udev/configure-printer@.service
202systemd_CLEANFILES = \
203	$(systemdsystemunit_DATA)
204else
205systemd_CLEANFILES=
206endif
207
208else
209systemd_CLEANFILES=
210endif
211
212man_MANS=					\
213	man/system-config-printer.1		\
214	man/system-config-printer-applet.1
215
216dbus_DATA =					\
217	dbus/com.redhat.NewPrinterNotification.conf		\
218	dbus/com.redhat.PrinterDriversInstaller.conf
219dbusdir = $(sysconfdir)/dbus-1/system.d/
220
221dbusinterfaces_DATA =				\
222	dbus/org.fedoraproject.Config.Printing.xml
223dbusinterfacesdir = $(datadir)/dbus-1/interfaces/
224
225nodist_dbusservices_DATA =				\
226	dbus/org.fedoraproject.Config.Printing.service
227dbusservicesdir = $(datadir)/dbus-1/services/
228
229@INTLTOOL_DESKTOP_RULE@
230
231desktop_DATA =\
232	system-config-printer.desktop \
233	print-applet.desktop
234desktopdir = $(datadir)/applications/
235autostartdir = $(sysconfdir)/xdg/autostart/
236
237DESKTOP_VENDOR=@DESKTOPVENDOR@
238DESKTOP_PREFIX=@DESKTOPPREFIX@
239
240install-desktopDATA: $(desktop_DATA)
241	mkdir -p $(DESTDIR)$(desktopdir)
242	mkdir -p $(DESTDIR)$(desktopdir)
243	desktop-file-install $(DESKTOP_VENDOR)	\
244	  --dir $(DESTDIR)$(desktopdir)		\
245	  --add-category System			\
246	  --add-category Settings		\
247	  --add-category HardwareSettings	\
248	  --add-category Printing		\
249	  --add-category GTK			\
250	  system-config-printer.desktop
251	desktop-file-install $(DESKTOP_VENDOR)	\
252	  --dir $(DESTDIR)$(autostartdir)	\
253	  --add-category System			\
254	  --add-category Monitor		\
255	  --add-category GTK			\
256	  print-applet.desktop
257
258uninstall-desktopDATA:
259	rm -f $(DESTDIR)$(desktopdir)/$(DESKTOP_PREFIX)system-config-printer.desktop
260	rm -f $(DESTDIR)$(autostartdir)/$(DESKTOP_PREFIX)print-applet.desktop
261
262desktop_in_files = $(desktop_DATA:.desktop=.desktop.in)
263
264@INTLTOOL_XML_RULE@
265
266appdatadir = $(datadir)/metainfo
267appdata_in_files = system-config-printer.appdata.xml.in
268appdata_DATA = $(appdata_in_files:.xml.in=.xml)
269
270EXTRA_DIST=\
271	$(nobase_pkgdata_SCRIPTS) \
272	$(nobase_pkgdata_DATA) \
273	$(nobase_sbin_SCRIPTS) \
274	$(bin_SCRIPTS) \
275	setup.py \
276	$(EXPORT_MODULES) \
277	man/system-config-printer.xml \
278	$(dbus_DATA) \
279	$(dbusinterfaces_DATA) \
280	$(dbusservices_DATA) \
281	bootstrap \
282	mkinstalldirs \
283	ChangeLog-OLD \
284	$(desktop_in_files) \
285	intltool-extract.in \
286	intltool-merge.in \
287	intltool-update.in \
288	config.py.in \
289	cupshelpers/config.py.in \
290	profile-ppds.py \
291	udev/udev-add-printer \
292	udev/70-printers.rules \
293	udev/configure-printer@.service.in \
294	dbus/org.fedoraproject.Config.Printing.service.in \
295	xml/preferreddrivers.xml \
296	test_PhysicalDevice.py \
297	$(appdata_in_files)
298
299# The man pages are generated from DocBook XML.
300.stamp-man-pages-built: $(top_srcdir)/man/system-config-printer.xml
301	xmlto man -o man $<
302	touch .stamp-man-pages-built
303
304$(man_MANS): .stamp-man-pages-built
305
306html:	$(EXPORT_MODULES) $(EXPORT_MODULES_GEN)
307	rm -rf html
308	epydoc -o html --html $(EXPORT_MODULES)
309
310distcheck-hook: update-po missing-imports
311
312# Generate Zanata locales list from ALL_LINGUAS
313zanata.xml:	zanata.xml.in
314	LOCALES=$$(echo $(ALL_LINGUAS) | sed -e 's, ,\n,g' | \
315	(NL="\\\\\n"; printf "/\@LOCALES\@/i"; while read ll; do \
316	  nomap="$${ll##*_*}"; \
317	  if [ -z "$$nomap" ]; then \
318	    printf "$$NL    <locale map-from=\"$$ll\">$${ll%_*}-$${ll#*_}</locale>";\
319	  else \
320	    printf "$$NL    <locale>$$ll</locale>"; \
321	  fi; \
322	 done; \
323	 printf "\n") \
324	); \
325	sed -e 's,\@PACKAGE\@,$(PACKAGE),g' \
326	    -e "$$LOCALES" -e '/\@LOCALES\@/d' $< > $@
327
328update-po: missing-languages
329	$(MAKE) -C po update-po
330
331pull-translations: zanata.xml
332	zanata-cli -B pull --src-dir=$(top_srcdir)/po --trans-dir=$(top_srcdir)/po
333
334push-translations: zanata.xml
335	zanata-cli -B push --src-dir=$(top_srcdir)/po --trans-dir=$(top_srcdir)/po
336
337missing-languages:
338	bash -c '\
339	eval $$(grep ALL_LINGUAS configure.ac); \
340	diff -u <(echo $$ALL_LINGUAS | xargs -rn1 echo) \
341		<(cd po; ls -1 *.po | sed -e "s,\.po$$,,")'
342
343missing-imports:
344	s=0; \
345	for a in $(top_srcdir)/*.py; do \
346		modules=$$(sed -ne 's,^.*except \([a-z]\+\)\..*$$,\1,p' \
347				"$$a" | sort -u); \
348		for module in $$modules; do \
349			if ! grep -q "import \(.*, *\)\?$$module" "$$a"; then \
350				echo "$$a should import $$module"; \
351				s=1; \
352			fi; \
353		done; \
354	done; \
355	exit $$s
356
357run:	config.py cupshelpers/config.py
358	SYSTEM_CONFIG_PRINTER_UI=$(top_srcdir)/ui \
359	CUPSHELPERS_XMLDIR=$(top_srcdir)/xml \
360	$(PYTHON) $(top_srcdir)/system-config-printer.py --debug
361
362run-applet:	config.py cupshelpers/config.py
363	$(PYTHON) $(top_srcdir)/applet.py --debug
364
365run-dbus-service:	config.py cupshelpers/config.py
366	SYSTEM_CONFIG_PRINTER_UI=$(top_srcdir)/ui \
367	CUPSHELPERS_XMLDIR=$(top_srcdir)/xml \
368	$(PYTHON) $(top_srcdir)/scp-dbus-service.py --debug
369
370test-xmldriverprefs:	cupshelpers/xmldriverprefs.py xml/preferreddrivers.xml
371	$(PYTHON) -c 'from cupshelpers.xmldriverprefs import test; test()' \
372		2>&1 | less
373
374help:
375	@echo "Usage: make <target>"
376	@echo "Available targets:"
377	@echo " help               Show this help message"
378	@echo " update-po          Update the translations"
379	@echo " missing-languages  Show which po files are not shipped"
380	@echo " run                Run system-config-printer with local UI files"
381	@echo " run-applet         Run system-config-printer-applet"
382	@echo " run-dbus-service   Run scp-dbus-service with local UI files"
383	@echo " test-xmldriverprefs  Show preferred driver order for all models"
384
385test-xml-validity.sh:	FORCE
386	echo "#!/bin/bash" > "$@"
387	echo "set -e" >> "$@"
388	echo "xmllint --relaxng \\" >> "$@"
389	echo "    $(top_srcdir)/xml/preferreddrivers.rng \\" >> "$@"
390	echo "    $(top_srcdir)/xml/preferreddrivers.xml >/dev/null" >> "$@"
391	echo "$(PYTHON) $(top_srcdir)/xml/validate.py \\" >> "$@"
392	echo "    $(top_srcdir)/xml/preferreddrivers.xml" >> "$@"
393	chmod 755 "$@"
394
395py.test.sh:	FORCE
396	echo "#!/bin/bash" > "$@"
397	echo "exec ${PYTEST-py.test}" >> "$@"
398	chmod 755 "$@"
399
400TESTS = test-xml-validity.sh py.test.sh
401
402CLEANFILES=			\
403	$(systemd_CLEANFILES)	\
404	$(appdata_DATA)
405
406DISTCLEANFILES=*.pyc *.pyo *~ *.bak \
407	troubleshoot/*.pyc troubleshoot/*.pyo troubleshoot/*~ \
408	intltool-extract intltool-merge intltool-update \
409	*.desktop man/*.1 \
410	test-ppd-module.sh test-xml-validity.sh py.test.sh pickled-ppds \
411	config.py cupshelpers/config.py zanata.xml \
412	dbus/org.fedoraproject.Config.Printing.service
413
414distclean-local:
415	rm -rf html
416	rm -rf cupshelpers/__pycache__
417
418.PHONY: update-po missing-languages run help FORCE
419