#
# (C) COPYRIGHT 2010-2011, 2013 ARM Limited. All rights reserved.
#
# This program is free software and is provided to you under the terms of the
# GNU General Public License version 2 as published by the Free Software
# Foundation, and any use by you of this program is subject to the terms
# of such GNU licence.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, you can access it online at
# http://www.gnu.org/licenses/gpl-2.0.html.
#
# SPDX-License-Identifier: GPL-2.0
#
#


Import('env')

doxygen_sources = [
	'Doxyfile',
	Glob('*.png'),
	Glob('../*.h'),
	Glob('../src/*.h') ]

if env['doc'] == '1':
        doxygen_target = env.Command('doxygen/html/index.html', doxygen_sources,
                                     ['cd ${SOURCE.dir} && doxygen'])
        env.Clean(doxygen_target, './doxygen')

        Alias('doxygen', doxygen_target)

