summaryrefslogtreecommitdiff
path: root/m4/appdata-xml.m4
blob: 765d95c94d903417a1bebb6658be244da4ba9394 (plain)
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
# appdata-xml.m4
#
# serial 5

dnl APPDATA_XML
dnl Installs and validates AppData XML files.
dnl
dnl Call APPDATA_XML in configure.ac to check for the appdata-validate tool.
dnl Add @APPDATA_XML_RULES@ to a Makefile.am to substitute the make rules. Add
dnl .appdata.xml files to appdata_XML in Makefile.am and they will be validated
dnl at make check time, if appdata-validate is installed, as well as installed
dnl to the correct location automatically. Add --enable-appdata-validate to
dnl DISTCHECK_CONFIGURE_FLAGS in Makefile.am to require valid AppData XML when
dnl doing a distcheck.
dnl
dnl Adding files to appdata_XML does not distribute them automatically.

AU_DEFUN([APPDATA_XML],
[
  m4_pattern_allow([AM_V_GEN])
  AC_ARG_ENABLE([appdata-validate],
                [AS_HELP_STRING([--disable-appdata-validate],
                                [Disable validating AppData XML files during check phase])])

  AS_IF([test "x$enable_appdata_validate" != "xno"],
        [AC_PATH_PROG([APPSTREAM_UTIL], [appstream-util])
         AS_IF([test "x$APPSTREAM_UTIL" = "x"],
               [have_appdata_validate=no],
               [have_appdata_validate=yes
                AC_SUBST([APPSTREAM_UTIL])])],
        [have_appdata_validate=no])

  AS_IF([test "x$have_appdata_validate" != "xno"],
        [appdata_validate=yes],
        [appdata_validate=no
         AS_IF([test "x$enable_appdata_validate" = "xyes"],
               [AC_MSG_ERROR([AppData validation was requested but appstream-util was not found])])])

  AC_SUBST([appdataxmldir], [${datadir}/appdata])

  APPDATA_XML_RULES='
.PHONY : uninstall-appdata-xml install-appdata-xml clean-appdata-xml

mostlyclean-am: clean-appdata-xml

%.appdata.valid: %.appdata.xml
	$(AM_V_GEN) if test -f "$<"; then d=; else d="$(srcdir)/"; fi; \
		if test -n "$(APPSTREAM_UTIL)"; \
			then $(APPSTREAM_UTIL) --nonet validate $${d}$<; fi \
		&& touch [$]@

check-am: $(appdata_XML:.appdata.xml=.appdata.valid)
uninstall-am: uninstall-appdata-xml
install-data-am: install-appdata-xml

.SECONDARY: $(appdata_XML)

install-appdata-xml: $(appdata_XML)
	@$(NORMAL_INSTALL)
	if test -n "$^"; then \
		test -z "$(appdataxmldir)" || $(MKDIR_P) "$(DESTDIR)$(appdataxmldir)"; \
		$(INSTALL_DATA) $^ "$(DESTDIR)$(appdataxmldir)"; \
	fi

uninstall-appdata-xml:
	@$(NORMAL_UNINSTALL)
	@list='\''$(appdata_XML)'\''; test -n "$(appdataxmldir)" || list=; \
	files=`for p in $$list; do echo $$p; done | sed -e '\''s|^.*/||'\''`; \
	test -n "$$files" || exit 0; \
	echo " ( cd '\''$(DESTDIR)$(appdataxmldir)'\'' && rm -f" $$files ")"; \
	cd "$(DESTDIR)$(appdataxmldir)" && rm -f $$files

clean-appdata-xml:
	rm -f $(appdata_XML:.appdata.xml=.appdata.valid)
'
  _APPDATA_XML_SUBST(APPDATA_XML_RULES)
],
[Use the new APPSTREAM_XML macro instead of APPDATA_XML in configure.ac, and
 replace @APPDATA_XML_RULES@ with @APPSTREAM_XML_RULES@, appdata_XML with
 appstream_XML and --enable-appdata-validate with --enable-appstream-validate
 in Makefile.am])

dnl _APPDATA_XML_SUBST(VARIABLE)
dnl Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST
AC_DEFUN([_APPDATA_XML_SUBST],
[
AC_SUBST([$1])
m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])])
]
)