1ACLOCAL_AMFLAGS = -I m4
2
3AM_DISTCHECK_CONFIGURE_FLAGS = \
4	--enable-appdata-check \
5	--enable-flac \
6	--enable-id3v23 \
7	--enable-ogg \
8	--enable-opus \
9	--enable-man \
10	--enable-mp3 \
11	--enable-mp4 \
12	--enable-nautilus-actions \
13	--enable-speex \
14	--enable-tests \
15	--enable-wavpack
16
17SUBDIRS = help po
18
19bin_PROGRAMS = easytag
20
21easytag_CPPFLAGS = \
22	-I$(top_srcdir) \
23	-I$(top_srcdir)/src \
24	-I$(top_srcdir)/src/tags \
25	-I$(top_builddir) \
26	-I$(top_builddir)/src \
27	-DLOCALEDIR=\"$(localedir)\" \
28	$(GLIB_DEPRECATION_FLAGS) \
29	$(GTK_DEPRECATION_FLAGS)
30
31easytag_CFLAGS = \
32	$(WARN_CFLAGS) \
33	$(EASYTAG_CFLAGS)
34
35easytag_CXXFLAGS = \
36	$(WARN_CXXFLAGS) \
37	$(EASYTAG_CFLAGS)
38
39easytag_SOURCES = \
40	src/about.c \
41	src/application.c \
42	src/application_window.c \
43	src/browser.c \
44	src/browser.h \
45	src/cddb_dialog.c \
46	src/charset.c \
47	src/crc32.c \
48	src/dlm.c \
49	src/easytag.c \
50	src/enums.c \
51	src/et_core.c \
52	src/file.c \
53	src/file_area.c \
54	src/file_description.c \
55	src/file_info.c \
56	src/file_list.c \
57	src/file_name.c \
58	src/file_tag.c \
59	src/load_files_dialog.c \
60	src/log.c \
61	src/main.c \
62	src/misc.c \
63	src/picture.c \
64	src/playlist_dialog.c \
65	src/preferences_dialog.c \
66	src/progress_bar.c \
67	src/scan.c \
68	src/scan_dialog.c \
69	src/search_dialog.c \
70	src/setting.c \
71	src/status_bar.c \
72	src/tag_area.c \
73	src/tags/id3lib/c_wrapper.cpp \
74	src/tags/libapetag/apetaglib.c \
75	src/tags/libapetag/is_tag.c \
76	src/tags/libapetag/info_mac.c \
77	src/tags/libapetag/info_mpc.c \
78	src/tags/ape_tag.c \
79	src/tags/flac_header.c \
80	src/tags/flac_private.c \
81	src/tags/flac_tag.c \
82	src/tags/gio_wrapper.cc \
83	src/tags/id3_tag.c \
84	src/tags/id3v24_tag.c \
85	src/tags/monkeyaudio_header.c \
86	src/tags/mpeg_header.c \
87	src/tags/mp4_tag.cc \
88	src/tags/musepack_header.c \
89	src/tags/ogg_header.c \
90	src/tags/ogg_tag.c \
91	src/tags/opus_header.c \
92	src/tags/opus_tag.c \
93	src/tags/vcedit.c \
94	src/tags/wavpack_header.c \
95	src/tags/wavpack_private.c \
96	src/tags/wavpack_tag.c \
97	src/win32/win32dep.c
98
99nodist_easytag_SOURCES = \
100	src/resource.c
101
102easytag_headers = \
103	src/about.h \
104	src/application.h \
105	src/application_window.h \
106	src/cddb_dialog.h \
107	src/charset.h \
108	src/crc32.h \
109	src/core_types.h \
110	src/dlm.h \
111	src/easytag.h \
112	src/et_core.h \
113	src/file.h \
114	src/file_area.h \
115	src/file_description.h \
116	src/file_info.h \
117	src/file_list.h \
118	src/file_name.h \
119	src/file_tag.h \
120	src/genres.h \
121	src/load_files_dialog.h \
122	src/log.h \
123	src/misc.h \
124	src/picture.h \
125	src/playlist_dialog.h \
126	src/preferences_dialog.h \
127	src/progress_bar.h \
128	src/scan.h \
129	src/scan_dialog.h \
130	src/search_dialog.h \
131	src/setting.h \
132	src/status_bar.h \
133	src/tag_area.h \
134	src/tags/id3lib/id3_bugfix.h \
135	src/tags/libapetag/apetaglib.h \
136	src/tags/libapetag/is_tag.h \
137	src/tags/libapetag/info_mac.h \
138	src/tags/libapetag/info_mpc.h \
139	src/tags/ape_tag.h \
140	src/tags/flac_header.h \
141	src/tags/flac_private.h \
142	src/tags/flac_tag.h \
143	src/tags/gio_wrapper.h \
144	src/tags/id3_tag.h \
145	src/tags/monkeyaudio_header.h \
146	src/tags/mpeg_header.h \
147	src/tags/mp4_header.h \
148	src/tags/mp4_tag.h \
149	src/tags/musepack_header.h \
150	src/tags/ogg_header.h \
151	src/tags/ogg_tag.h \
152	src/tags/opus_header.h \
153	src/tags/opus_tag.h \
154	src/tags/vcedit.h \
155	src/tags/wavpack_header.h \
156	src/tags/wavpack_private.h \
157	src/tags/wavpack_tag.h \
158	src/win32/win32dep.h
159
160nodist_easytag_headers = \
161	src/resource.h
162
163easytag_LDADD = \
164	$(EASYTAG_LIBS) \
165	$(ID3LIB_LIBS) \
166	$(easytag_rc)
167
168easytag_LDFLAGS = \
169	$(WARN_LDFLAGS)
170
171noinst_resource_files = \
172	$(shell $(GLIB_COMPILE_RESOURCES) --generate-dependencies --sourcedir=$(srcdir)/data $(srcdir)/data/org.gnome.EasyTAG.gresource.xml)
173
174src/resource.c src/resource.h: data/org.gnome.EasyTAG.gresource.xml Makefile $(noinst_resource_files)
175	$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/data --generate $<
176
177if WINDOWS_HOST
178ICONDIR = $(srcdir)/data/icons/win32
179MANIFESTDIR = $(srcdir)/src/win32
180
181easytag_rc.$(OBJEXT): src/win32/easytag.rc src/win32/easytag.manifest data/icons/win32/easytag.ico
182	$(AM_V_GEN)$(WINDRES) -DICONDIR='\"$(ICONDIR)\"' \
183		-DMANIFESTDIR='\"$(MANIFESTDIR)\"' -i $< -o $@
184
185easytag_rc = easytag_rc.$(OBJEXT)
186
187easytag_LDFLAGS += \
188	-Wl,--subsystem,windows
189
190easytag-$(PACKAGE_VERSION)-setup.exe: easytag-win32-installer.nsi easytag.exe Makefile
191	$(AM_V_GEN) DESTDIR=`mktemp -d` && \
192		make -C $(top_builddir) install DESTDIR=$$DESTDIR >/dev/null && \
193		makensis -NOCD -DDESTDIR=$$DESTDIR $< >/dev/null && \
194		rm -rf $$DESTDIR
195endif
196
197BUILT_SOURCES = \
198	$(nodist_easytag_SOURCES) \
199	src/enums.h
200
201enum_data = \
202	src/enums.c \
203	src/enums.h
204
205easytag_enum_headers = \
206	$(srcdir)/src/setting.h
207
208src/enums.c: $(easytag_enum_headers) src/enums.h Makefile
209	$(AM_V_GEN)$(GLIB_MKENUMS) \
210		--fhead "#include \"enums.h\"\n\n" \
211		--fprod "/* enumerations from \"@filename@\" */\n" \
212		--fprod "#include \"@filename@\"\n" \
213		--vhead "GType\n@enum_name@_get_type (void)\n{\n" \
214		--vhead "    static GType type = 0;\n\n" \
215		--vhead "    if (!type)\n    {\n" \
216		--vhead "        static const G@Type@Value _@enum_name@_values[] = {" \
217		--vprod "            { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
218		--vtail "            { 0, NULL, NULL }\n        };\n\n" \
219		--vtail "        type = g_@type@_register_static (\"@EnumName@\", _@enum_name@_values);\n    }\n\n" \
220		--vtail "  return type;\n}\n\n" \
221		$(easytag_enum_headers) > $@
222
223src/enums.h: $(easytag_enum_headers) Makefile
224	$(AM_V_GEN)$(GLIB_MKENUMS) \
225		--fhead "#ifndef ET_ENUMS_H_\n" \
226		--fhead "#define ET_ENUMS_H_\n\n" \
227		--fhead "#include <glib-object.h>\n\n" \
228		--fhead "G_BEGIN_DECLS\n\n" \
229		--fprod "/* enumerations from @filename@ */\n" \
230		--vhead "GType @enum_name@_get_type (void);\n" \
231		--vhead "#define ET_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
232		--ftail "G_END_DECLS\n\n" \
233		--ftail "#endif /* ET_ENUMS_H_ */" \
234		$(easytag_enum_headers) > $@
235
236# NSIS installer script.
237# TODO: Run script from dist dir.
238easytag-win32-installer.nsi: easytag-win32-installer.nsi.in Makefile
239	$(AM_V_GEN)$(SED) -e "s|\@PACKAGE_NAME\@|$(PACKAGE_NAME)|" \
240		-e "s|\@PACKAGE_TARNAME\@|$(PACKAGE_TARNAME)|" \
241		-e "s|\@PACKAGE_URL\@|$(PACKAGE_URL)|" \
242		-e "s|\@PACKAGE_VERSION\@|$(PACKAGE_VERSION)|" \
243		-e "s|\@PREFIX\@|$(prefix)|" $< > $@
244
245if ENABLE_NAUTILUS_ACTIONS
246nautilus_extensiondir = $(NAUTILUS_EXTENSION_DIR)
247
248nautilus_extension_LTLIBRARIES = \
249	libnautilus-easytag.la
250
251libnautilus_easytag_la_SOURCES = \
252	nautilus-extension/nautilus-easytag.c
253
254libnautilus_easytag_la_CPPFLAGS = \
255	-I$(top_srcdir) \
256	-I$(top_builddir) \
257	-DLOCALEDIR=\"$(localedir)\" \
258	$(NAUTILUS_CFLAGS) \
259	$(GLIB_DEPRECATION_FLAGS) \
260	$(GTK_DEPRECATION_FLAGS)
261
262libnautilus_easytag_la_CFLAGS = \
263	$(WARN_CFLAGS)
264
265libnautilus_easytag_la_LDFLAGS = \
266	-module -avoid-version -no-undefined \
267	$(WARN_LDFLAGS)
268
269libnautilus_easytag_la_LIBADD = \
270	$(NAUTILUS_LIBS)
271
272nautilus_appdata_in_file = data/easytag-nautilus.metainfo.xml.in
273endif
274
275# Create a directory stamp in the build dir. Used to workaround the case where
276# a pattern rule is used for a target with a path that does not ordinarily
277# exist in the build dir.
278%/.dstamp:
279	$(AM_V_at)$(MKDIR_P) $(@D)
280	$(AM_V_at)touch $@
281
282@APPDATA_XML_RULES@
283@INTLTOOL_XML_RULE@
284appdata_in_files = data/easytag.appdata.xml.in $(nautilus_appdata_in_file)
285appdata_XML = $(appdata_in_files:.xml.in=.xml)
286
287@INTLTOOL_DESKTOP_RULE@
288desktopdir = $(datadir)/applications
289desktop_in_files = data/easytag.desktop.in
290$(desktop_in_files:.desktop.in=.desktop): data/.dstamp
291desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
292
293gsettings_ENUM_FILES = src/setting.h
294gsettings_ENUM_NAMESPACE = org.gnome.EasyTAG
295gsettings_SCHEMAS = data/org.gnome.EasyTAG.gschema.xml
296data/org.gnome.EasyTAG.gschema.valid: data/.dstamp
297@GSETTINGS_RULES@
298
299if ENABLE_MAN
300doc/easytag.1: doc/easytag.xml Makefile
301	$(AM_V_GEN)$(XSLTPROC) --nonet --param man.charmap.use.subset 0 \
302		--path $(builddir)/doc --output $(builddir)/doc/ \
303		http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
304
305nodist_man_MANS = doc/easytag.1
306endif
307
308images = \
309	data/images/all-lowercase.png \
310	data/images/all-uppercase.png \
311	data/images/artist.png \
312	data/images/artist-album.png \
313	data/images/first-letter-uppercase.png \
314	data/images/first-letter-uppercase-word.png \
315	data/images/freedb.png \
316	data/images/gnudb.png \
317	data/images/invert-selection.png \
318	data/images/mask.png \
319	data/images/musicbrainz.png \
320	data/images/red-lines.png \
321	data/images/sequence-track.png \
322	data/images/unselect-all.png
323
324iconthemedir = $(datadir)/icons/hicolor
325
326appicon16dir = $(iconthemedir)/16x16/apps
327appicon22dir = $(iconthemedir)/22x22/apps
328appicon24dir = $(iconthemedir)/24x24/apps
329appicon32dir = $(iconthemedir)/32x32/apps
330appicon48dir = $(iconthemedir)/48x48/apps
331appicon64dir = $(iconthemedir)/64x64/apps
332appicon128dir = $(iconthemedir)/128x128/apps
333appicon256dir = $(iconthemedir)/256x256/apps
334appiconscalabledir = $(iconthemedir)/scalable/apps
335appiconsymbolicdir = $(iconthemedir)/symbolic/apps
336
337dist_appicon16_DATA = \
338	data/icons/16x16/easytag.png
339dist_appicon22_DATA = \
340	data/icons/22x22/easytag.png
341dist_appicon24_DATA = \
342	data/icons/24x24/easytag.png
343dist_appicon32_DATA = \
344	data/icons/32x32/easytag.png
345dist_appicon48_DATA = \
346	data/icons/48x48/easytag.png
347dist_appicon64_DATA = \
348	data/icons/64x64/easytag.png
349dist_appicon128_DATA = \
350	data/icons/128x128/easytag.png
351dist_appicon256_DATA = \
352	data/icons/256x256/easytag.png
353dist_appiconscalable_DATA = \
354	data/icons/scalable/easytag.svg
355dist_appiconsymbolic_DATA = \
356	data/icons/symbolic/easytag-symbolic.svg
357
358UPDATE_ICON_CACHE = gtk-update-icon-cache --ignore-theme-index --force
359
360install-data-hook: install-update-icon-cache
361uninstall-hook: uninstall-update-icon-cache
362
363install-update-icon-cache:
364	$(AM_V_at)$(POST_INSTALL)
365	test -n "$(DESTDIR)" || $(UPDATE_ICON_CACHE) "$(iconthemedir)"
366
367uninstall-update-icon-cache:
368	$(AM_V_at)$(POST_UNINSTALL)
369	test -n "$(DESTDIR)" || $(UPDATE_ICON_CACHE) "$(iconthemedir)"
370
371dist_noinst_DATA = \
372	$(appdata_in_files) \
373	$(desktop_in_files) \
374	$(gsettings_SCHEMAS) \
375	$(easytag_headers) \
376	data/org.gnome.EasyTAG.gresource.xml \
377	$(noinst_resource_files) \
378	src/tags/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff \
379	src/tags/libapetag/README.apetag \
380	src/tags/libapetag/id3v2_read.c \
381	src/tags/libapetag/id3v2_read.h \
382	src/tags/mp4_header.cc \
383	src/win32/easytag.manifest \
384	src/win32/resource.h \
385	data/icons/win32/easytag.ico \
386	data/nsis/easytag-header.bmp \
387	data/nsis/easytag-sidebar.bmp \
388	$(images) \
389	doc/easytag.xml \
390	COPYING.GPL3 \
391	easytag-win32-installer.nsi.in \
392	HACKING
393
394dist_noinst_SCRIPTS = \
395	autogen.sh
396
397if EASYTAG_ENABLE_TESTS
398tests/test-desktop-file-validate.sh: Makefile tests/.dstamp
399	$(AM_V_GEN)echo "#!/bin/sh -e" > $@; \
400		echo "$(DESKTOP_FILE_VALIDATE) $(top_builddir)/$(desktop_DATA) || exit 1" >> $@; \
401		chmod +x $@
402
403# Not automake built-in TESTS_ENVIRONMENT!
404TEST_ENVIRONMENT = \
405	MALLOC_CHECK_=2 \
406	MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) \
407	G_SLICE=debug-blocks
408
409# test: run all tests.
410test: $(check_PROGRAMS)
411	$(AM_V_at)$(TEST_ENVIRONMENT) $(GTESTER) --verbose $(check_PROGRAMS)
412
413# test-report: run tests and generate report.
414# perf-report: run tests with -m perf and generate report.
415# full-report: like test-report: with -m perf and -m slow.
416test-report perf-report full-report: $(check_PROGRAMS)
417	$(AM_V_at)test -z "$(check_PROGRAMS)" || { \
418	  case $@ in \
419	  test-report) test_options="-k";; \
420	  perf-report) test_options="-k -m=perf";; \
421	  full-report) test_options="-k -m=perf -m=slow";; \
422	  esac ; \
423	  $(TEST_ENVIRONMENT) $(GTESTER) --verbose $$test_options -o test-log.xml $(check_PROGRAMS) ; \
424	  if test -d "$(top_srcdir)/.git" ; then \
425	    REVISION=`git describe` ; \
426	  else \
427	    REVISION=$(PACKAGE_VERSION) ; \
428	  fi ; \
429	  echo '<?xml version="1.0"?>' > $@.xml ; \
430	  echo '<report-collection>' >> $@.xml ; \
431	  echo '<info>' >> $@.xml ; \
432	  echo '  <package>$(PACKAGE_NAME)</package>' >> $@.xml ; \
433	  echo '  <version>$(PACKAGE_VERSION)</version>' >> $@.xml ; \
434	  echo "  <revision>$$REVISION</revision>" >> $@.xml ; \
435	  echo '</info>' >> $@.xml ; \
436	  sed '1,1s/^<?xml\b[^>?]*?>//' < test-log.xml >> $@.xml ; \
437	  rm test-log.xml ; \
438	  echo >> $@.xml ; \
439	  echo '</report-collection>' >> $@.xml ; \
440	  $(GTESTER_REPORT) --version 2>/dev/null 1>&2 ; test "$$?" != 0 || $(GTESTER_REPORT) $@.xml >$@.html ; \
441	}
442
443check_PROGRAMS = \
444	tests/test-dlm \
445	tests/test-genres \
446	tests/test-file_description \
447	tests/test-file_info \
448	tests/test-file_tag \
449	tests/test-misc \
450	tests/test-picture \
451	tests/test-scan
452
453common_test_cppflags = \
454	-I$(top_srcdir)/src \
455	-I$(top_builddir) \
456	$(GLIB_DEPRECATION_FLAGS) \
457	$(GTK_DEPRECATION_FLAGS)
458
459common_test_cflags = \
460	$(EASYTAG_CFLAGS) \
461	$(WARN_CFLAGS)
462
463tests_test_dlm_CPPFLAGS = \
464	$(common_test_cppflags)
465
466tests_test_dlm_CFLAGS = \
467	$(common_test_cflags)
468
469tests_test_dlm_SOURCES = \
470	tests/test-dlm.c \
471	src/dlm.c
472
473tests_test_dlm_LDADD = \
474	$(EASYTAG_LIBS)
475
476tests_test_file_description_CPPFLAGS = \
477	$(common_test_cppflags)
478
479tests_test_file_description_CFLAGS = \
480	$(common_test_cflags)
481
482tests_test_file_description_SOURCES = \
483	tests/test-file_description.c \
484	src/file_description.c
485
486tests_test_file_description_LDADD = \
487	$(EASYTAG_LIBS)
488
489tests_test_file_info_CPPFLAGS = \
490	$(common_test_cppflags)
491
492tests_test_file_info_CFLAGS = \
493	$(common_test_cflags)
494
495tests_test_file_info_SOURCES = \
496	tests/test-file_info.c \
497	src/file_info.c
498
499tests_test_file_info_LDADD = \
500	$(EASYTAG_LIBS)
501
502tests_test_file_tag_CPPFLAGS = \
503	$(common_test_cppflags) \
504	-I$(top_srcdir)/src/tags
505
506tests_test_file_tag_CFLAGS = \
507	$(common_test_cflags)
508
509tests_test_file_tag_SOURCES = \
510	tests/test-file_tag.c \
511	src/file_tag.c \
512	src/misc.c \
513	src/picture.c
514
515tests_test_file_tag_LDADD = \
516	$(EASYTAG_LIBS)
517
518tests_test_genres_CPPFLAGS = \
519	$(common_test_cppflags)
520
521tests_test_genres_CFLAGS = \
522	$(common_test_cflags)
523
524tests_test_genres_SOURCES = \
525	tests/test-genres.c
526
527tests_test_genres_LDADD = \
528	$(EASYTAG_LIBS)
529
530tests_test_misc_CPPFLAGS = \
531	$(common_test_cppflags) \
532	-I$(top_srcdir)/src/tags
533
534tests_test_misc_CFLAGS = \
535	$(common_test_cflags)
536
537tests_test_misc_SOURCES = \
538	tests/test-misc.c \
539	src/misc.c
540
541tests_test_misc_LDADD = \
542	$(EASYTAG_LIBS)
543
544tests_test_picture_CPPFLAGS = \
545	$(common_test_cppflags) \
546	-I$(top_srcdir)/src/tags
547
548tests_test_picture_CFLAGS = \
549	$(common_test_cflags)
550
551tests_test_picture_SOURCES = \
552	tests/test-picture.c \
553	src/misc.c \
554	src/picture.c
555
556tests_test_picture_LDADD = \
557	$(EASYTAG_LIBS)
558
559tests_test_scan_CPPFLAGS = \
560	$(common_test_cppflags)
561
562tests_test_scan_CFLAGS = \
563	$(common_test_cflags)
564
565tests_test_scan_SOURCES = \
566	tests/test-scan.c \
567	src/scan.c
568
569tests_test_scan_LDADD = \
570	$(EASYTAG_LIBS)
571
572check_SCRIPTS = \
573	tests/test-desktop-file-validate.sh
574
575TESTS = \
576	$(check_PROGRAMS) \
577	$(check_SCRIPTS)
578endif
579
580CLEANFILES = \
581	$(appdata_XML) \
582	$(check_SCRIPTS) \
583	$(desktop_DATA) \
584	$(easytag_rc) \
585	$(enum_data) \
586	$(nodist_man_MANS) \
587	*.log \
588	easytag-$(PACKAGE_VERSION)-setup.exe \
589	easytag-win32-installer.nsi \
590	src/resource.c \
591	src/resource.h
592
593DISTCLEANFILES = \
594	po/.intltool-merge-cache
595
596check-local: test
597clean-local: clean-local-dstamp
598clean-local-dstamp:
599	-rm -f data/.dstamp
600	-rm -f tests/.dstamp
601
602@GENERATE_CHANGELOG_RULES@
603dist-hook: dist-ChangeLog
604
605.PHONY: clean-local-dstamp
606.PHONY: test test-report perf-report full-report
607