# Authorization/Polkit/Makefile.  Generated from Makefile.in by configure.
###############################################################################
# BRLTTY - A background process providing access to the console screen (when in
#          text mode) for a blind person using a refreshable braille display.
#
# Copyright (C) 1995-2023 by The BRLTTY Developers.
#
# BRLTTY comes with ABSOLUTELY NO WARRANTY.
#
# This is free software, placed under the terms of the
# GNU Lesser General Public License, as published by the Free Software
# Foundation; either version 2.1 of the License, or (at your option) any
# later version. Please see the file LICENSE-LGPL for details.
#
# Web Page: http://brltty.app/
#
# This software is maintained by Dave Mielke <dave@mielke.cc>.
###############################################################################

POLKIT_PACKAGE_NAME = org.a11y.brlapi
POLKIT_POLICIES_EXTENSION = policy
POLKIT_RULES_EXTENSION = rules

POLKIT_POLICIES_DIRECTORY = $(INSTALL_ROOT)$(POLKIT_POLICY_DIR)
POLKIT_RULES_DIRECTORY = $(INSTALL_ROOT)$(POLKIT_RULE_DIR)

install: install-policies install-rules

install-policies-directory:
	$(INSTALL_DIRECTORY) $(POLKIT_POLICIES_DIRECTORY)

install-policies: install-policies-directory
	$(INSTALL_DATA) $(SRC_DIR)/policies $(POLKIT_POLICIES_DIRECTORY)/$(POLKIT_PACKAGE_NAME).$(POLKIT_POLICIES_EXTENSION)

install-rules-directory:
	$(INSTALL_DIRECTORY) $(POLKIT_RULES_DIRECTORY)

install-rules: install-rules-directory
	$(INSTALL_DATA) $(SRC_DIR)/rules $(POLKIT_RULES_DIRECTORY)/$(POLKIT_PACKAGE_NAME).$(POLKIT_RULES_EXTENSION)

uninstall::
	-rm $(POLKIT_POLICIES_DIRECTORY)/$(POLKIT_PACKAGE_NAME).*
	-rm $(POLKIT_RULES_DIRECTORY)/$(POLKIT_PACKAGE_NAME).*

