# Makefile.am --
# Copyright 2009 Red Hat Inc., Durham, North Carolina.
# All Rights Reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# 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, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
# Authors:
#   Steve Grubb <sgrubb@redhat.com>
#

CONFIG_CLEAN_FILES = *.rej *.orig

EXTRA_DIST = $(man_MANS)

man_MANS = capng_clear.3 capng_fill.3 capng_setpid.3 \
	capng_get_caps_process.3 capng_update.3 capng_updatev.3 \
	capng_apply.3 capng_lock.3 capng_change_id.3 capng_get_caps_fd.3 \
	capng_set_caps_fd.3 capng_have_capabilities.3 capng_have_capability.3 \
	capng_print_caps_numeric.3 capng_print_caps_text.3 \
	capng_name_to_capability.3  capng_capability_to_name.3 \
	capng_save_state.3 capng_restore_state.3

