# Makefile for RSBAC tools. 

# Set this to your kernel directory
KERNELDIR = /usr/src/linux

# Set this to your binaries directory. Please do not use /rsbac/*.
BINDIR = /usr/local/bin/

# Set this to your man directory
MANDIR = /usr/man/mann/

# Please don't change for your own convenience
VERSION = \"v1.1.0\"

# compiler settings
# If using egcs and getting register errors, turn off optimization (remove -O2)
# Redefinition errors are caused by glibc include files and normally harmless
CC = gcc 
CFLAGS = -O2 -m486 -Wall -I $(KERNELDIR)/include -DVERSION=$(VERSION) -DCONFIG_RSBAC
LIBS = 

# Remove, if RSBAC kernel is not configured for default inheritance
CFLAGS += -DCONFIG_RSBAC_DEF_INHERIT

# ----- nothing should be changed below -----

CFILES = getname.c pm_getname.c rc_getname.c acl_getname.c helpers.c

ALLBIN = attr_get_fd attr_set_fd attr_get_up attr_set_up attr_rm_user \
         attr_rm_fd attr_rm_file_dir \
         pm_create pm_ct_exec rsbac_pm rsbac_stats rsbac_stats_pm \
         switch_adf_log switch_module get_attribute_name get_attribute_nr \
         attr_get_user attr_set_user attr_get_file_dir attr_set_file_dir \
         attr_get_process attr_set_process attr_get_ipc attr_set_ipc \
         attr_back_fd attr_back_user attr_back_dev \
         rsbac_write mac_wrap mac_wrap_cat rsbac_check \
         rc_copy_role rc_get_item rc_set_item rc_role_wrap \
         rc_get_eff_rights_fd auth_set_cap auth_back_cap \
         acl_rights acl_grant acl_tlist acl_mask acl_group acl_rm_user
SHBIN = rsbac_menu rsbac_user_menu rsbac_fd_menu rsbac_process_menu \
        rsbac_ipc_menu rsbac_dev_menu rsbac_rc_role_menu rsbac_rc_type_menu \
        rsbac_acl_menu rsbac_acl_group_menu examples/backup_all

HELPPATH = $(KERNELDIR)/rsbac/help

objects = getname.o helpers.o
pobjects = getname.o pm_getname.o helpers.o
rcobjects = getname.o rc_getname.o helpers.o
aclobjects = getname.o acl_getname.o helpers.o

all :
	set -e
	for i in $(ALLBIN) ; do $(MAKE) $$i ; done

install : $(ALLBIN) $(SHBIN)
	-bash -c "if test ! -d $(BINDIR) ; then mkdir $(BINDIR) ; fi"
	-sh -c "cp -a $(ALLBIN) $(SHBIN) $(BINDIR)"

uninstall :
	-bash -c "cd $(BINDIR) && rm $(ALLBIN) $(SHBIN)"

getname.o : getname.c
	$(CC) $(CFLAGS) -c -o getname.o getname.c

getname.c : $(HELPPATH)/getname.c
	cp -v $(HELPPATH)/getname.c getname.c

pm_getname.o : pm_getname.c
	$(CC) $(CFLAGS) -c -o pm_getname.o pm_getname.c

pm_getname.c : $(HELPPATH)/pm_getname.c
	cp -v $(HELPPATH)/pm_getname.c pm_getname.c

rc_getname.o : rc_getname.c
	$(CC) $(CFLAGS) -c -o rc_getname.o rc_getname.c

rc_getname.c : $(HELPPATH)/rc_getname.c
	cp -v $(HELPPATH)/rc_getname.c rc_getname.c

acl_getname.o : acl_getname.c
	$(CC) $(CFLAGS) -c -o acl_getname.o acl_getname.c

acl_getname.c : $(HELPPATH)/acl_getname.c
	cp -v $(HELPPATH)/acl_getname.c acl_getname.c

helpers.o : helpers.c
	$(CC) $(CFLAGS) -c -o helpers.o helpers.c

helpers.c : $(HELPPATH)/helpers.c
	cp -v $(HELPPATH)/helpers.c helpers.c

attr_get_fd : $(objects) attr_get_fd.c
	$(CC) $(CFLAGS) -o attr_get_fd attr_get_fd.c $(objects)
	-strip attr_get_fd

attr_set_fd : $(objects) attr_set_fd.c
	$(CC) $(CFLAGS) -o attr_set_fd attr_set_fd.c $(objects)
	-strip attr_set_fd

attr_rm_fd : $(objects) attr_rm_fd.c
	$(CC) $(CFLAGS) -o attr_rm_fd attr_rm_fd.c $(objects)
	-strip attr_rm_fd

attr_get_up : $(objects) attr_get_up.c
	$(CC) $(CFLAGS) -o attr_get_up attr_get_up.c $(objects)
	-strip attr_get_up

attr_set_up : $(objects) attr_set_up.c
	$(CC) $(CFLAGS) -o attr_set_up attr_set_up.c $(objects)
	-strip attr_set_up

attr_rm_user : $(objects) attr_rm_user.c
	$(CC) $(CFLAGS) -o attr_rm_user attr_rm_user.c $(objects)
	-strip attr_rm_user

pm_create : $(objects) pm_create.c
	$(CC) $(CFLAGS) -o pm_create pm_create.c $(objects)
	-strip pm_create

pm_ct_exec : $(pobjects) pm_ct_exec.c
	$(CC) $(CFLAGS) -o pm_ct_exec pm_ct_exec.c $(pobjects)
	-strip pm_ct_exec

rsbac_pm : $(pobjects) rsbac_pm.c
	$(CC) $(CFLAGS) -o rsbac_pm rsbac_pm.c $(pobjects)
	-strip rsbac_pm

rsbac_stats : $(objects) rsbac_stats.c
	$(CC) $(CFLAGS) -o rsbac_stats rsbac_stats.c $(objects)
	-strip rsbac_stats

rsbac_stats_pm : $(objects) rsbac_stats_pm.c
	$(CC) $(CFLAGS) -o rsbac_stats_pm rsbac_stats_pm.c $(objects)
	-strip rsbac_stats_pm

switch_adf_log : $(objects) switch_adf_log.c
	$(CC) $(CFLAGS) -o switch_adf_log switch_adf_log.c $(objects)
	-strip switch_adf_log

switch_module : $(objects) switch_module.c
	$(CC) $(CFLAGS) -o switch_module switch_module.c $(objects)
	-strip switch_module

get_attribute_name : $(objects) get_attribute_name.c
	$(CC) $(CFLAGS) -o get_attribute_name get_attribute_name.c $(objects)
	-strip get_attribute_name

get_attribute_nr : $(objects) get_attribute_nr.c
	$(CC) $(CFLAGS) -o get_attribute_nr get_attribute_nr.c $(objects)
	-strip get_attribute_nr

attr_get_user : $(objects) attr_get_user.c
	$(CC) $(CFLAGS) -o attr_get_user attr_get_user.c $(objects)
	-strip attr_get_user

attr_set_user : $(objects) attr_set_user.c
	$(CC) $(CFLAGS) -o attr_set_user attr_set_user.c $(objects)
	-strip attr_set_user

attr_get_file_dir : $(objects) attr_get_file_dir.c
	$(CC) $(CFLAGS) -o attr_get_file_dir attr_get_file_dir.c $(objects)
	-strip attr_get_file_dir

attr_set_file_dir : $(objects) attr_set_file_dir.c
	$(CC) $(CFLAGS) -o attr_set_file_dir attr_set_file_dir.c $(objects)
	-strip attr_set_file_dir

attr_rm_file_dir : $(objects) attr_rm_file_dir.c
	$(CC) $(CFLAGS) -o attr_rm_file_dir attr_rm_file_dir.c $(objects)
	-strip attr_rm_file_dir

attr_get_process : $(objects) attr_get_process.c
	$(CC) $(CFLAGS) -o attr_get_process attr_get_process.c $(objects)
	-strip attr_get_process

attr_set_process : $(objects) attr_set_process.c
	$(CC) $(CFLAGS) -o attr_set_process attr_set_process.c $(objects)
	-strip attr_set_process

attr_get_ipc : $(objects) attr_get_ipc.c
	$(CC) $(CFLAGS) -o attr_get_ipc attr_get_ipc.c $(objects)
	-strip attr_get_ipc

attr_set_ipc : $(objects) attr_set_ipc.c
	$(CC) $(CFLAGS) -o attr_set_ipc attr_set_ipc.c $(objects)
	-strip attr_set_ipc

attr_back_fd : $(objects) attr_back_fd.c
	$(CC) $(CFLAGS) -o attr_back_fd attr_back_fd.c $(objects)
	-strip attr_back_fd

attr_back_user : $(objects) attr_back_user.c
	$(CC) $(CFLAGS) -o attr_back_user attr_back_user.c $(objects)
	-strip attr_back_user

attr_back_dev : $(objects) attr_back_dev.c
	$(CC) $(CFLAGS) -o attr_back_dev attr_back_dev.c $(objects)
	-strip attr_back_dev

rsbac_write : $(objects) rsbac_write.c
	$(CC) $(CFLAGS) -o rsbac_write rsbac_write.c $(objects)
	-strip rsbac_write

mac_wrap : $(objects) mac_wrap.c
	$(CC) $(CFLAGS) -o mac_wrap mac_wrap.c $(objects)
	-strip mac_wrap

mac_wrap_cat : $(objects) mac_wrap_cat.c
	$(CC) $(CFLAGS) -o mac_wrap_cat mac_wrap_cat.c $(objects)
	-strip mac_wrap_cat

rsbac_check : $(objects) rsbac_check.c
	$(CC) $(CFLAGS) -o rsbac_check rsbac_check.c $(objects)
	-strip rsbac_check

rc_copy_role : $(objects) rc_copy_role.c
	$(CC) $(CFLAGS) -o rc_copy_role rc_copy_role.c $(objects)
	-strip rc_copy_role

rc_get_item : $(rcobjects) rc_get_item.c
	$(CC) $(CFLAGS) -o rc_get_item rc_get_item.c $(rcobjects)
	-strip rc_get_item

rc_set_item : $(rcobjects) rc_set_item.c
	$(CC) $(CFLAGS) -o rc_set_item rc_set_item.c $(rcobjects)
	-strip rc_set_item

rc_role_wrap : $(objects) rc_role_wrap.c
	$(CC) $(CFLAGS) -o rc_role_wrap rc_role_wrap.c $(objects)
	-strip rc_role_wrap

rc_get_eff_rights_fd : $(objects) rc_get_eff_rights_fd.c
	$(CC) $(CFLAGS) -o rc_get_eff_rights_fd rc_get_eff_rights_fd.c $(objects)
	-strip rc_get_eff_rights_fd

auth_set_cap : $(objects) auth_set_cap.c
	$(CC) $(CFLAGS) -o auth_set_cap auth_set_cap.c $(objects)
	-strip auth_set_cap

auth_back_cap : $(objects) auth_back_cap.c
	$(CC) $(CFLAGS) -o auth_back_cap auth_back_cap.c $(objects)
	-strip auth_back_cap

acl_rights : $(aclobjects) acl_rights.c
	$(CC) $(CFLAGS) -o acl_rights acl_rights.c $(aclobjects)
	-strip acl_rights

acl_grant : $(aclobjects) acl_grant.c
	$(CC) $(CFLAGS) -o acl_grant acl_grant.c $(aclobjects)
	-strip acl_grant

acl_tlist : $(aclobjects) acl_tlist.c
	$(CC) $(CFLAGS) -o acl_tlist acl_tlist.c $(aclobjects)
	-strip acl_tlist

acl_mask : $(aclobjects) acl_mask.c
	$(CC) $(CFLAGS) -o acl_mask acl_mask.c $(aclobjects)
	-strip acl_mask

acl_group : $(aclobjects) acl_group.c
	$(CC) $(CFLAGS) -o acl_group acl_group.c $(aclobjects)
	-strip acl_group

acl_rm_user : $(aclobjects) acl_rm_user.c
	$(CC) $(CFLAGS) -o acl_rm_user acl_rm_user.c $(aclobjects)
	-strip acl_rm_user

clean :
	rm -f *.o

allclean :
	rm -f *.o $(ALLBIN) $(CFILES)
