tomoyo: ccs-auditd ccs-queryd ccstree checkpolicy editpolicy editpolicy_offline findtemp ld-watch loadpolicy pathmatch patternize savepolicy setlevel setprofile sortpolicy

syaoran: makesyaoranconf

cerberus: candy chaplet checktoken falsh gettoken groovy honey mailauth proxy timeauth

#
# If you want to suppress "warning: pointer targets in passing argument ... differ in signedness" warning messages,
# you can add "-Wno-pointer-sign" options to CFLAGS.
#
#CFLAGS=-Wall -Wno-pointer-sign -O3
#
CFLAGS=-Wall -O3


all: tomoyo syaoran cerberus

#
# Header files dependency.
#
/usr/include/curses.h:
	@echo "/usr/include/curses.h is missing."
	@echo "Run 'yum install ncurses-devel' or 'apt-get install libncurses5-dev'"

/usr/include/openssl/md5.h:
	@echo "/usr/include/openssl/md5.h is missing."
	@echo "Run 'yum install openssl-devel' or 'apt-get install libssl-dev'"

/usr/include/readline/readline.h:
	@echo "/usr/include/readline/readline.h is missing."
	@echo "Run 'yum install readline-devel' or 'apt-get install libreadline5-dev'"

#
# Tools for SAKURA and TOMOYO.
#

ccs-auditd: ccs-auditd.c
	gcc $(CFLAGS) -o ccs-auditd ccs-auditd.c
	chmod 700 ccs-auditd

ccs-queryd: ccs-queryd.c
	gcc $(CFLAGS) -o ccs-queryd ccs-queryd.c
	chmod 700 ccs-queryd

ccstree: ccstree.c
	gcc $(CFLAGS) -o ccstree ccstree.c
	chmod 700 ccstree

checkpolicy: checkpolicy.c
	gcc $(CFLAGS) -o checkpolicy checkpolicy.c
	chmod 700 checkpolicy

editpolicy: editpolicy.c /usr/include/curses.h
	gcc $(CFLAGS) -o editpolicy editpolicy.c -lncurses
	chmod 700 editpolicy

editpolicy_offline: editpolicy
	ln -s editpolicy editpolicy_offline

findtemp: findtemp.c
	gcc $(CFLAGS) -o findtemp findtemp.c
	chmod 700 findtemp

ld-watch: ld-watch.c
	gcc $(CFLAGS) -o ld-watch ld-watch.c
	chmod 700 ld-watch

loadpolicy: loadpolicy.c policy.h
	gcc $(CFLAGS) -o loadpolicy loadpolicy.c
	chmod 700 loadpolicy

pathmatch: pathmatch.c
	gcc $(CFLAGS) -o pathmatch pathmatch.c

patternize: patternize.c
	gcc $(CFLAGS) -o patternize patternize.c

savepolicy: savepolicy.c policy.h
	gcc $(CFLAGS) -o savepolicy savepolicy.c
	chmod 700 savepolicy

setlevel: setlevel.c
	gcc $(CFLAGS) -o setlevel setlevel.c
	chmod 700 setlevel

setprofile: setprofile.c
	gcc $(CFLAGS) -o setprofile setprofile.c
	chmod 700 setprofile

sortpolicy: sortpolicy.c policy.h
	gcc $(CFLAGS) -o sortpolicy sortpolicy.c
	chmod 700 sortpolicy

# Busybox version

ccstools: ccstools.c /usr/include/curses.h 
	gcc $(CFLAGS) -o ccstools ccstools.c -lncurses
	ln -f ccstools ccs-auditd
	ln -f ccstools ccs-queryd
	ln -f ccstools ccstree
	ln -f ccstools checkpolicy
	ln -f ccstools editpolicy
	ln -f ccstools editpolicy_offline
	ln -f ccstools findtemp
	ln -f ccstools ld-watch
	ln -f ccstools loadpolicy
	ln -f ccstools pathmatch
	ln -f ccstools patternize
	ln -f ccstools savepolicy
	ln -f ccstools setlevel
	ln -f ccstools setprofile
	ln -f ccstools sortpolicy

#
# Tools for SYAORAN.
#

makesyaoranconf: makesyaoranconf.c
	gcc $(CFLAGS) -o makesyaoranconf makesyaoranconf.c
	chmod 700 makesyaoranconf

#
# Tools for CERBERUS.
#
# http://sourceforge.jp/projects/tomoyo/document/winf2005-en.pdf
#
# This package contains only programs prepared for
# Workshop on Informatics 2005 held in Japan.
#

candy: candy.c
	gcc $(CFLAGS) -o candy candy.c
	chmod 755 candy

chaplet: chaplet.c
	gcc $(CFLAGS) -o chaplet chaplet.c
	chmod 755 chaplet

checktoken: checktoken.c
	gcc $(CFLAGS) -o checktoken checktoken.c
	chmod 755 checktoken

falsh: falsh.c /usr/include/curses.h /usr/include/readline/readline.h
	gcc $(CFLAGS) -o falsh falsh.c -lncurses -lreadline
	chmod 755 falsh

gettoken: gettoken.c
	gcc $(CFLAGS) -o gettoken gettoken.c
	chmod 755 gettoken

groovy: groovy.c
	gcc $(CFLAGS) -o groovy groovy.c
	chmod 755 groovy
 
honey: honey.c
	gcc $(CFLAGS) -o honey honey.c
	chmod 755 honey

# Programs developed after Workshop on Informatics 2005.

mailauth: mailauth.c /usr/include/openssl/md5.h
	gcc $(CFLAGS) -o mailauth mailauth.c -lssl

proxy: proxy.c
	gcc $(CFLAGS) -o proxy proxy.c
	chown root:root proxy
	chmod 4755 proxy

timeauth: timeauth.c
	gcc $(CFLAGS) -o timeauth timeauth.c

#
# Delete all tools in this package.
#

clean:
	rm -f ccs-auditd ccs-queryd ccstree checkpolicy editpolicy editpolicy_offline findtemp ld-watch loadpolicy pathmatch patternize savepolicy setlevel setprofile sortpolicy ccstools
	rm -f makesyaoranconf
	rm -f candy chaplet checktoken falsh gettoken groovy honey mailauth proxy timeauth
