Fix the Vala module for CMake
It failed to depend on local vapis. At least I understand it again.
This commit is contained in:
		@@ -6,28 +6,20 @@
 | 
			
		||||
#    VALA_VERSION
 | 
			
		||||
 | 
			
		||||
#=============================================================================
 | 
			
		||||
# Copyright Přemysl Janouch 2011
 | 
			
		||||
# Copyright (c) 2011, 2016, Přemysl Janouch <p.janouch@gmail.com>
 | 
			
		||||
# All rights reserved.
 | 
			
		||||
#
 | 
			
		||||
# Redistribution and use in source and binary forms, with or without
 | 
			
		||||
# modification, are permitted provided that the following conditions are met:
 | 
			
		||||
#     * Redistributions of source code must retain the above copyright
 | 
			
		||||
#       notice, this list of conditions and the following disclaimer.
 | 
			
		||||
#     * Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
#       notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
#       documentation and/or other materials provided with the distribution.
 | 
			
		||||
# Permission to use, copy, modify, and/or distribute this software for any
 | 
			
		||||
# purpose with or without fee is hereby granted, provided that the above
 | 
			
		||||
# copyright notice and this permission notice appear in all copies.
 | 
			
		||||
#
 | 
			
		||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
 | 
			
		||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 | 
			
		||||
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 | 
			
		||||
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE
 | 
			
		||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
 | 
			
		||||
# OF SUCH DAMAGE.
 | 
			
		||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 | 
			
		||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 | 
			
		||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 | 
			
		||||
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 | 
			
		||||
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
 | 
			
		||||
# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 | 
			
		||||
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | 
			
		||||
#=============================================================================
 | 
			
		||||
 | 
			
		||||
find_program (VALA_COMPILER "valac")
 | 
			
		||||
 
 | 
			
		||||
@@ -1,205 +1,175 @@
 | 
			
		||||
# - Precompilation of Vala/Genie source files into C sources
 | 
			
		||||
# Makes use of the parallel build ability introduced in Vala 0.11. Derived
 | 
			
		||||
# from a similar module by Jakob Westhoff and the original GNU Make rules.
 | 
			
		||||
# Might be a bit oversimplified.
 | 
			
		||||
# Makes use of the parallel build ability introduced in Vala 0.11.
 | 
			
		||||
# Might be a bit oversimplified and inefficient but at least it's short.
 | 
			
		||||
# Filenames must be unique within a single compilation unit and that's fine.
 | 
			
		||||
#
 | 
			
		||||
# This module defines three functions. The first one:
 | 
			
		||||
#
 | 
			
		||||
#   vala_init (id
 | 
			
		||||
#   vala_precompile (source... - .vala, .gs, .vapi
 | 
			
		||||
#     [DIRECTORY dir]          - Output directory (binary dir by default)
 | 
			
		||||
#     [PACKAGES package...]    - Package dependencies
 | 
			
		||||
#     [OPTIONS option...]      - Extra valac options
 | 
			
		||||
#     [CUSTOM_VAPIS file...])  - Custom vapi files to include in the build
 | 
			
		||||
#
 | 
			
		||||
# initializes a single precompilation unit using the given arguments.
 | 
			
		||||
# You can put files into it via the following function:
 | 
			
		||||
#
 | 
			
		||||
#   vala_add (id source.vala
 | 
			
		||||
#     [DEPENDS source...])     - Vala/Genie source or .vapi dependencies
 | 
			
		||||
#
 | 
			
		||||
# Finally retrieve paths for generated C files by calling:
 | 
			
		||||
#
 | 
			
		||||
#   vala_finish (id
 | 
			
		||||
#     [SOURCES sources_var]          - Input Vala/Genie sources
 | 
			
		||||
#     [OUTPUTS outputs_var]          - Output C sources
 | 
			
		||||
#     [GENERATE_HEADER id.h          - Generate id.h and id_internal.h
 | 
			
		||||
#       [GENERATE_VAPI id.vapi]      - Generate a vapi file
 | 
			
		||||
#       [GENERATE_SYMBOLS id.def]])  - Generate a list of public symbols
 | 
			
		||||
#     [OUTPUTS outputs_var]    - Output C sources
 | 
			
		||||
#     [HEADER id.h             - Generate id.h and id_internal.h
 | 
			
		||||
#       [VAPI id.vapi]         - Generate a vapi file
 | 
			
		||||
#       [SYMBOLS id.def]])     - Generate a list of public symbols
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
#=============================================================================
 | 
			
		||||
# Copyright Přemysl Janouch 2011
 | 
			
		||||
# Copyright (c) 2011, 2016, Přemysl Janouch <p.janouch@gmail.com>
 | 
			
		||||
# All rights reserved.
 | 
			
		||||
#
 | 
			
		||||
# Redistribution and use in source and binary forms, with or without
 | 
			
		||||
# modification, are permitted provided that the following conditions are met:
 | 
			
		||||
#     * Redistributions of source code must retain the above copyright
 | 
			
		||||
#       notice, this list of conditions and the following disclaimer.
 | 
			
		||||
#     * Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
#       notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
#       documentation and/or other materials provided with the distribution.
 | 
			
		||||
# Permission to use, copy, modify, and/or distribute this software for any
 | 
			
		||||
# purpose with or without fee is hereby granted, provided that the above
 | 
			
		||||
# copyright notice and this permission notice appear in all copies.
 | 
			
		||||
#
 | 
			
		||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
 | 
			
		||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 | 
			
		||||
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 | 
			
		||||
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE
 | 
			
		||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
 | 
			
		||||
# OF SUCH DAMAGE.
 | 
			
		||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 | 
			
		||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 | 
			
		||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 | 
			
		||||
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 | 
			
		||||
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
 | 
			
		||||
# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 | 
			
		||||
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | 
			
		||||
#=============================================================================
 | 
			
		||||
 | 
			
		||||
find_package (Vala 0.11 REQUIRED)
 | 
			
		||||
include (CMakeParseArguments)
 | 
			
		||||
 | 
			
		||||
function (vala_init id)
 | 
			
		||||
	set (_multi_value PACKAGES OPTIONS CUSTOM_VAPIS)
 | 
			
		||||
	cmake_parse_arguments (arg "" "DIRECTORY" "${_multi_value}" ${ARGN})
 | 
			
		||||
macro (_vala_parse_source_path)
 | 
			
		||||
	get_filename_component (basename          "${file}" NAME)
 | 
			
		||||
	get_filename_component (without_extension "${file}" NAME_WE)
 | 
			
		||||
	set (output_vapi "${directory}/${without_extension}.vapi")
 | 
			
		||||
	set (output_c    "${directory}/${without_extension}.c")
 | 
			
		||||
endmacro ()
 | 
			
		||||
 | 
			
		||||
# XXX: it would be best to have it working without touching the vapi (which
 | 
			
		||||
#   forces rebuilds even if the API doesn't change) but it appears this cannot
 | 
			
		||||
#   be done in CMake (at least with make, with ninja it seems to be possible
 | 
			
		||||
#   via stamps and BYPRODUCTS)
 | 
			
		||||
# TODO: check ${CMAKE_GENERATOR} and try to do better -> OUTPUT and "touch"
 | 
			
		||||
#   a stamp, use BYPRODUCTS instead, ... maybe make a target for all stamps,
 | 
			
		||||
#   then DEPEND on that target when precompiling.  This should be enough.
 | 
			
		||||
function (_vala_make_fast file)
 | 
			
		||||
	_vala_parse_source_path ()
 | 
			
		||||
	add_custom_command (OUTPUT "${output_vapi}"
 | 
			
		||||
		COMMAND ${VALA_COMPILER} "${file}" "--fast-vapi=${output_vapi}"
 | 
			
		||||
		COMMAND ${CMAKE_COMMAND} -E touch "${output_vapi}"
 | 
			
		||||
		DEPENDS "${file}"
 | 
			
		||||
		COMMENT "Generating a fast vapi for ${basename}" VERBATIM)
 | 
			
		||||
	set (fast_vapi_deps ${fast_vapi_deps} "${output_vapi}" PARENT_SCOPE)
 | 
			
		||||
	set (fast_vapi_args ${fast_vapi_args}
 | 
			
		||||
		"--use-fast-vapi=${output_vapi}" PARENT_SCOPE)
 | 
			
		||||
endfunction ()
 | 
			
		||||
 | 
			
		||||
function (_vala_make_c file)
 | 
			
		||||
	_vala_parse_source_path ()
 | 
			
		||||
 | 
			
		||||
	# We need to filter the current file back out or else it creates conflicts
 | 
			
		||||
	set (fast_vapis ${fast_vapi_args})
 | 
			
		||||
	list (REMOVE_ITEM fast_vapis "--use-fast-vapi=${output_vapi}")
 | 
			
		||||
 | 
			
		||||
	add_custom_command (OUTPUT "${output_c}"
 | 
			
		||||
		COMMAND ${VALA_COMPILER} "${file}" -C ${compiler_args} ${fast_vapis}
 | 
			
		||||
		COMMAND ${CMAKE_COMMAND} -E touch "${output_c}"
 | 
			
		||||
		DEPENDS "${file}" ${fast_vapi_deps} ${vapis}
 | 
			
		||||
		WORKING_DIRECTORY "${directory}"
 | 
			
		||||
		COMMENT "Precompiling ${basename}" VERBATIM)
 | 
			
		||||
	set (c_outputs ${c_outputs} "${output_c}" PARENT_SCOPE)
 | 
			
		||||
endfunction ()
 | 
			
		||||
 | 
			
		||||
function (vala_precompile)
 | 
			
		||||
	set (_single_value DIRECTORY OUTPUTS HEADER VAPI SYMBOLS)
 | 
			
		||||
	set (_multi_value PACKAGES OPTIONS)
 | 
			
		||||
	cmake_parse_arguments (arg "" "${_single_value}" "${_multi_value}" ${ARGN})
 | 
			
		||||
 | 
			
		||||
	set (directory ${CMAKE_CURRENT_BINARY_DIR})
 | 
			
		||||
	if (arg_DIRECTORY)
 | 
			
		||||
		set (directory ${arg_DIRECTORY})
 | 
			
		||||
		if (NOT IS_DIRECTORY ${directory})
 | 
			
		||||
			file (MAKE_DIRECTORY ${directory})
 | 
			
		||||
		endif (NOT IS_DIRECTORY ${directory})
 | 
			
		||||
	else (arg_DIRECTORY)
 | 
			
		||||
		set (directory ${CMAKE_CURRENT_BINARY_DIR})
 | 
			
		||||
	endif (arg_DIRECTORY)
 | 
			
		||||
	endif ()
 | 
			
		||||
 | 
			
		||||
	set (pkg_opts)
 | 
			
		||||
	foreach (pkg ${arg_PACKAGES})
 | 
			
		||||
		list (APPEND pkg_opts "--pkg=${pkg}")
 | 
			
		||||
	endforeach (pkg)
 | 
			
		||||
	set (sources)
 | 
			
		||||
	set (vapis)
 | 
			
		||||
	foreach (_source ${arg_UNPARSED_ARGUMENTS})
 | 
			
		||||
		if (NOT IS_ABSOLUTE "${_source}")
 | 
			
		||||
			set (_source "${CMAKE_CURRENT_SOURCE_DIR}/${_source}")
 | 
			
		||||
		endif ()
 | 
			
		||||
		if (${_source} MATCHES "\\.vapi$")
 | 
			
		||||
			list (APPEND vapis "${_source}")
 | 
			
		||||
		else ()
 | 
			
		||||
			list (APPEND sources "${_source}")
 | 
			
		||||
		endif ()
 | 
			
		||||
	endforeach ()
 | 
			
		||||
 | 
			
		||||
	set (VALA_${id}_DIR "${directory}" PARENT_SCOPE)
 | 
			
		||||
	set (VALA_${id}_ARGS ${pkg_opts} ${arg_OPTIONS}
 | 
			
		||||
		${arg_CUSTOM_VAPIS} PARENT_SCOPE)
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
 | 
			
		||||
	set (VALA_${id}_SOURCES "" PARENT_SCOPE)
 | 
			
		||||
	set (VALA_${id}_OUTPUTS "" PARENT_SCOPE)
 | 
			
		||||
	set (VALA_${id}_FAST_VAPI_FILES "" PARENT_SCOPE)
 | 
			
		||||
	set (VALA_${id}_FAST_VAPI_ARGS "" PARENT_SCOPE)
 | 
			
		||||
endfunction (vala_init)
 | 
			
		||||
	set (fast_vapi_deps)
 | 
			
		||||
	set (fast_vapi_args)
 | 
			
		||||
	foreach (_source ${sources})
 | 
			
		||||
		_vala_make_fast ("${_source}")
 | 
			
		||||
	endforeach ()
 | 
			
		||||
 | 
			
		||||
function (vala_add id file)
 | 
			
		||||
	cmake_parse_arguments (arg "" "" "DEPENDS" ${ARGN})
 | 
			
		||||
 | 
			
		||||
	if (NOT IS_ABSOLUTE "${file}")
 | 
			
		||||
		set (file "${CMAKE_CURRENT_SOURCE_DIR}/${file}")
 | 
			
		||||
	endif (NOT IS_ABSOLUTE "${file}")
 | 
			
		||||
 | 
			
		||||
	get_filename_component (output_name "${file}" NAME)
 | 
			
		||||
	get_filename_component (output_base "${file}" NAME_WE)
 | 
			
		||||
	set (output_base "${VALA_${id}_DIR}/${output_base}")
 | 
			
		||||
 | 
			
		||||
	# XXX: It would be best to have it working without touching the vapi
 | 
			
		||||
	#      but it appears this cannot be done in CMake.
 | 
			
		||||
	add_custom_command (OUTPUT "${output_base}.vapi"
 | 
			
		||||
		COMMAND ${VALA_COMPILER} "${file}" "--fast-vapi=${output_base}.vapi"
 | 
			
		||||
		COMMAND ${CMAKE_COMMAND} -E touch "${output_base}.vapi"
 | 
			
		||||
		DEPENDS "${file}"
 | 
			
		||||
		COMMENT "Generating a fast vapi for ${output_name}" VERBATIM)
 | 
			
		||||
 | 
			
		||||
	set (vapi_opts)
 | 
			
		||||
	set (vapi_depends)
 | 
			
		||||
	foreach (vapi ${arg_DEPENDS})
 | 
			
		||||
		if (NOT IS_ABSOLUTE "${vapi}")
 | 
			
		||||
			set (vapi "${VALA_${id}_DIR}/${vapi}.vapi")
 | 
			
		||||
		endif (NOT IS_ABSOLUTE "${vapi}")
 | 
			
		||||
 | 
			
		||||
		list (APPEND vapi_opts "--use-fast-vapi=${vapi}")
 | 
			
		||||
		list (APPEND vapi_depends "${vapi}")
 | 
			
		||||
	endforeach (vapi)
 | 
			
		||||
 | 
			
		||||
	add_custom_command (OUTPUT "${output_base}.c"
 | 
			
		||||
		COMMAND ${VALA_COMPILER} "${file}" -C ${vapi_opts} ${VALA_${id}_ARGS}
 | 
			
		||||
		COMMAND ${CMAKE_COMMAND} -E touch "${output_base}.c"
 | 
			
		||||
		DEPENDS "${file}" ${vapi_depends}
 | 
			
		||||
		WORKING_DIRECTORY "${VALA_${id}_DIR}"
 | 
			
		||||
		COMMENT "Precompiling ${output_name}" VERBATIM)
 | 
			
		||||
 | 
			
		||||
	set (VALA_${id}_SOURCES ${VALA_${id}_SOURCES}
 | 
			
		||||
		"${file}" PARENT_SCOPE)
 | 
			
		||||
	set (VALA_${id}_OUTPUTS ${VALA_${id}_OUTPUTS}
 | 
			
		||||
		"${output_base}.c" PARENT_SCOPE)
 | 
			
		||||
	set (VALA_${id}_FAST_VAPI_FILES ${VALA_${id}_FAST_VAPI_FILES}
 | 
			
		||||
		"${output_base}.vapi" PARENT_SCOPE)
 | 
			
		||||
	set (VALA_${id}_FAST_VAPI_ARGS ${VALA_${id}_FAST_VAPI_ARGS}
 | 
			
		||||
		"--use-fast-vapi=${output_base}.vapi" PARENT_SCOPE)
 | 
			
		||||
endfunction (vala_add)
 | 
			
		||||
 | 
			
		||||
function (vala_finish id)
 | 
			
		||||
	set (_one_value SOURCES OUTPUTS
 | 
			
		||||
		GENERATE_VAPI GENERATE_HEADER GENERATE_SYMBOLS)
 | 
			
		||||
	cmake_parse_arguments (arg "" "${_one_value}" "" ${ARGN})
 | 
			
		||||
 | 
			
		||||
	if (arg_SOURCES)
 | 
			
		||||
		set (${arg_SOURCES} ${VALA_${id}_SOURCES} PARENT_SCOPE)
 | 
			
		||||
	endif (arg_SOURCES)
 | 
			
		||||
	set (compiler_args)
 | 
			
		||||
	foreach (_pkg ${arg_PACKAGES})
 | 
			
		||||
		list (APPEND compiler_args "--pkg=${_pkg}")
 | 
			
		||||
	endforeach ()
 | 
			
		||||
	list (APPEND compiler_args ${arg_OPTIONS} ${vapis})
 | 
			
		||||
 | 
			
		||||
	set (c_outputs)
 | 
			
		||||
	foreach (_source ${sources})
 | 
			
		||||
		_vala_make_c ("${_source}")
 | 
			
		||||
	endforeach ()
 | 
			
		||||
	if (arg_OUTPUTS)
 | 
			
		||||
		set (${arg_OUTPUTS} ${VALA_${id}_OUTPUTS} PARENT_SCOPE)
 | 
			
		||||
		set (${arg_OUTPUTS} ${c_outputs} PARENT_SCOPE)
 | 
			
		||||
	endif (arg_OUTPUTS)
 | 
			
		||||
 | 
			
		||||
	set (outputs)
 | 
			
		||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
 | 
			
		||||
	set (extra_outputs)
 | 
			
		||||
	set (export_args)
 | 
			
		||||
 | 
			
		||||
	if (arg_GENERATE_VAPI)
 | 
			
		||||
		if (NOT IS_ABSOLUTE "${arg_GENERATE_VAPI}")
 | 
			
		||||
			set (arg_GENERATE_VAPI
 | 
			
		||||
				"${VALA_${id}_DIR}/${arg_GENERATE_VAPI}")
 | 
			
		||||
		endif (NOT IS_ABSOLUTE "${arg_GENERATE_VAPI}")
 | 
			
		||||
 | 
			
		||||
		list (APPEND outputs "${arg_GENERATE_VAPI}")
 | 
			
		||||
		list (APPEND export_args "--internal-vapi=${arg_GENERATE_VAPI}")
 | 
			
		||||
 | 
			
		||||
		if (NOT arg_GENERATE_HEADER)
 | 
			
		||||
			message (FATAL_ERROR "Header generation required for vapi")
 | 
			
		||||
		endif (NOT arg_GENERATE_HEADER)
 | 
			
		||||
	endif (arg_GENERATE_VAPI)
 | 
			
		||||
 | 
			
		||||
	if (arg_GENERATE_SYMBOLS)
 | 
			
		||||
		if (NOT IS_ABSOLUTE "${arg_GENERATE_SYMBOLS}")
 | 
			
		||||
			set (arg_GENERATE_SYMBOLS
 | 
			
		||||
				"${VALA_${id}_DIR}/${arg_GENERATE_SYMBOLS}")
 | 
			
		||||
		endif (NOT IS_ABSOLUTE "${arg_GENERATE_SYMBOLS}")
 | 
			
		||||
 | 
			
		||||
		list (APPEND outputs "${arg_GENERATE_SYMBOLS}")
 | 
			
		||||
		list (APPEND export_args "--symbols=${arg_GENERATE_SYMBOLS}")
 | 
			
		||||
 | 
			
		||||
		if (NOT arg_GENERATE_HEADER)
 | 
			
		||||
			message (FATAL_ERROR "Header generation required for symbols")
 | 
			
		||||
		endif (NOT arg_GENERATE_HEADER)
 | 
			
		||||
	endif (arg_GENERATE_SYMBOLS)
 | 
			
		||||
 | 
			
		||||
	if (arg_GENERATE_HEADER)
 | 
			
		||||
		if (NOT IS_ABSOLUTE "${arg_GENERATE_HEADER}")
 | 
			
		||||
			set (arg_GENERATE_HEADER
 | 
			
		||||
				"${VALA_${id}_DIR}/${arg_GENERATE_HEADER}")
 | 
			
		||||
		endif (NOT IS_ABSOLUTE "${arg_GENERATE_HEADER}")
 | 
			
		||||
 | 
			
		||||
		get_filename_component (header_path "${arg_GENERATE_HEADER}" PATH)
 | 
			
		||||
		get_filename_component (header_name "${arg_GENERATE_HEADER}" NAME_WE)
 | 
			
		||||
	if (arg_VAPI)
 | 
			
		||||
		if (NOT IS_ABSOLUTE "${arg_VAPI}")
 | 
			
		||||
			set (arg_VAPI "${directory}/${arg_VAPI}")
 | 
			
		||||
		endif ()
 | 
			
		||||
		list (APPEND extra_outputs "${arg_VAPI}")
 | 
			
		||||
		list (APPEND export_args "--internal-vapi=${arg_VAPI}")
 | 
			
		||||
		if (NOT arg_HEADER)
 | 
			
		||||
			message (FATAL_ERROR "HEADER generation required for vapi")
 | 
			
		||||
		endif ()
 | 
			
		||||
	endif ()
 | 
			
		||||
	if (arg_SYMBOLS)
 | 
			
		||||
		if (NOT IS_ABSOLUTE "${arg_SYMBOLS}")
 | 
			
		||||
			set (arg_SYMBOLS "${directory}/${arg_SYMBOLS}")
 | 
			
		||||
		endif ()
 | 
			
		||||
		list (APPEND extra_outputs "${arg_SYMBOLS}")
 | 
			
		||||
		list (APPEND export_args "--symbols=${arg_SYMBOLS}")
 | 
			
		||||
		if (NOT arg_HEADER)
 | 
			
		||||
			message (FATAL_ERROR "HEADER generation required for symbols")
 | 
			
		||||
		endif ()
 | 
			
		||||
	endif ()
 | 
			
		||||
	if (arg_HEADER)
 | 
			
		||||
		if (NOT IS_ABSOLUTE "${arg_HEADER}")
 | 
			
		||||
			set (arg_HEADER "${directory}/${arg_HEADER}")
 | 
			
		||||
		endif ()
 | 
			
		||||
		get_filename_component (header_path "${arg_HEADER}" PATH)
 | 
			
		||||
		get_filename_component (header_name "${arg_HEADER}" NAME_WE)
 | 
			
		||||
		set (header_base "${header_path}/${header_name}")
 | 
			
		||||
		get_filename_component (header_ext "${arg_GENERATE_HEADER}" EXT)
 | 
			
		||||
		get_filename_component (header_ext "${arg_HEADER}" EXT)
 | 
			
		||||
 | 
			
		||||
		list (APPEND outputs
 | 
			
		||||
		list (APPEND extra_outputs
 | 
			
		||||
			"${header_base}${header_ext}"
 | 
			
		||||
			"${header_base}_internal${header_ext}")
 | 
			
		||||
		list (APPEND export_args
 | 
			
		||||
			"--header=${header_base}${header_ext}"
 | 
			
		||||
			"--internal-header=${header_base}_internal${header_ext}")
 | 
			
		||||
	endif (arg_GENERATE_HEADER)
 | 
			
		||||
 | 
			
		||||
	if (outputs)
 | 
			
		||||
		add_custom_command (OUTPUT ${outputs}
 | 
			
		||||
			COMMAND ${VALA_COMPILER} -C ${VALA_${id}_ARGS}
 | 
			
		||||
				${export_args} ${VALA_${id}_FAST_VAPI_ARGS}
 | 
			
		||||
			DEPENDS ${VALA_${id}_FAST_VAPI_FILES}
 | 
			
		||||
	endif ()
 | 
			
		||||
	if (extra_outputs)
 | 
			
		||||
		add_custom_command (OUTPUT ${extra_outputs}
 | 
			
		||||
			COMMAND ${VALA_COMPILER}
 | 
			
		||||
				-C ${compiler_args} ${export_args} ${fast_vapi_args}
 | 
			
		||||
			DEPENDS ${fast_vapi_deps} ${vapis}
 | 
			
		||||
			COMMENT "Generating vapi/headers/symbols" VERBATIM)
 | 
			
		||||
	endif (outputs)
 | 
			
		||||
endfunction (vala_finish id)
 | 
			
		||||
 | 
			
		||||
	endif ()
 | 
			
		||||
endfunction ()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user