1# EvolutionMacros.cmake
2#
3# Utility macros for evolution-related files
4#
5# add_error_files(_part _file0)
6#    Adds build and install rules to create .error files from .error.xml
7#    files in the current source directory. The _file0 is expected to be
8#    without the .xml extension. The macro can receive one or more error
9#    files. There is created a custom "${_part}-error-files" target.
10#
11# add_eplug_file(_part _eplug_filename)
12#    Adds build and install rules to create .eplug files from .eplug.xml
13#    files in the current source directory. The _eplug_filename is expected
14#    to be without the .xml extension. The macro can receive exactly one
15#    eplug file. There is created a custom "${_part}-eplug-file" target.
16
17include(FindIntltool)
18
19macro(add_custom_xml_files _part _destination _targetsuffix _ext _mergeparam _file0)
20	set(filedeps)
21
22	foreach(file ${_file0} ${ARGN})
23		intltool_merge(${file}${_ext} ${file} --xml-style --utf8 ${_mergeparam})
24
25		get_filename_component(_path ${file} DIRECTORY)
26		if(_path STREQUAL "")
27			set(builtfile ${CMAKE_CURRENT_BINARY_DIR}/${file})
28		else(_path STREQUAL "")
29			set(builtfile ${file})
30		endif(_path STREQUAL "")
31
32		install(FILES ${builtfile}
33			DESTINATION ${_destination}
34		)
35
36		list(APPEND filedeps ${builtfile})
37	endforeach(file)
38
39	add_custom_target(${_part}-${_targetsuffix}-files ALL
40		DEPENDS ${filedeps}
41	)
42endmacro(add_custom_xml_files)
43
44macro(add_error_files _part _file0)
45	add_custom_xml_files(${_part} ${errordir} error .xml --no-translations ${_file0} ${ARGN})
46endmacro(add_error_files)
47
48macro(add_eplug_file _part _eplug_filename)
49	set(PLUGINDIR "${plugindir}")
50	set(SOEXT "${CMAKE_SHARED_MODULE_SUFFIX}")
51	set(LOCALEDIR "${LOCALE_INSTALL_DIR}")
52
53	configure_file(${_eplug_filename}.xml
54		${CMAKE_CURRENT_BINARY_DIR}/${_eplug_filename}.in
55		@ONLY
56	)
57
58	unset(PLUGINDIR)
59	unset(SOEXT)
60	unset(LOCALEDIR)
61
62	add_custom_xml_files(${_part} ${plugindir} plugin .in --no-translations ${CMAKE_CURRENT_BINARY_DIR}/${_eplug_filename})
63endmacro(add_eplug_file)
64