# cryptoloop Makefile

PACKAGE := cryptoloop
VERSION := 0.0.1-pre1

KDIR := /usr/src/linux
CDIR := cryptoapi
LOOP := iv

CC := cc
CFLAGS := -O2 -D__KERNEL__ -DMODULE -Wall -fno-common -DMODVERSIONS \
	-include $(KDIR)/include/linux/modversions.h -I $(KDIR)/include \
	-I $(CDIR)/kernel/include -pipe
COMPILE := $(MAKE) -f Makefile.modules KDIR=$(KDIR)
TARGETS :=

DISTDIR := $(PACKAGE)-$(VERSION)

DISTFILES := README ChangeLog \
	Makefile.modules Makefile \
	Makefile.drivers Config.in \
	cryptoloop.c

.PHONY: all default modules patch-kernel

all: default

default:
	@echo \
	"$ make [patch-kernel | modules CDIR=cryptoapi KDIR=kernel] LOOP=[iv|jari|none]"
	@echo " - your kernel must support the Linux CryptoAPI"

arch: $(KDIR)/arch
	rm -f arch/
	ln -s $(KDIR)/arch .

include: $(KDIR)/include
	rm -f include/
	ln -s $(KDIR)/include .

Rules.make: $(KDIR)/Rules.make
	cp -pf $(KDIR)/Rules.make .

version Makefile.version: Rules.make arch include $(KDIR)/Makefile
	$(COMPILE) $@

patch-kernel: version
	cd patches && ./findpatch.pl $(KDIR) $(LOOP)
	@if [ -e $(KDIR)/crypto ]; then \
		cp $(KDIR)/crypto/drivers/Config.in .Config.in; \
		cat Config.in >>$(KDIR)/crypto/drivers/Config.in; \
		cp -v cryptoloop.c $(KDIR)/crypto/drivers; \
		cp -v Makefile.drivers $(KDIR)/crypto/drivers/Makefile; \
	else \
		echo "your kernel does not have support for the CryptoAPI,"; \
		echo " please patch it, and then try again."; \
	fi

unpatch-kernel: version
	rm -f $(KDIR)/crypto/drivers/Config.in
	rm -f $(KDIR)/crypto/drivers/cryptoloop.c
	mv .Config.in $(KDIR)/crypto/drivers/Config.in
	cd patches && ./findpatch.pl $(KDIR) $(LOOP) -R

KLOCALVERSION = $(shell uname -r)
KVERSION = $(shell if [ -f version ]; then cat version; fi)
ifeq ($shell echo $(KVERSION) | cut -f -2 -d '.'), 2.4)
MODPATH := /lib/modules/$(KVERSION)/kernel/drivers
else
MODPATH := /lib/modules/$(KVERSION)
endif

modules: version
ifneq ($(KVERSION),$(KLOCALVERSION))
	@echo "Warning: $KVERSION and uname -r differ:"
	@echo "modules are being installed in /lib/modules/$(KVERSION)"
endif
	cd patches && ./findpatch.pl $(KDIR) $(LOOP)
	$(CC) -c $(PACKAGE).c -o $(PACKAGE).o $(CFLAGS)

modules_install: $(KDIR)/Makefile modules
	@mkdir -p --verbose $(INSTALL_MOD_PATH)$(MODPATH)/cryptoapi
	@cp -v cryptoloop.o $(INSTALL_MOD_PATH)$(MODPATH)/cryptoapi/

clean:
	@rm -vf *.o *~ Makefile.version Rules.make arch include version

dist:
	-rm -f $(DISTDIR).tar.gz
	-rm -rf $(DISTDIR)
	mkdir $(DISTDIR)
	cp -v $(DISTFILES) $(DISTDIR)
	cp -Rv utils patches $(DISTDIR)
	find $(DISTDIR)/ -type d -name 'CVS' | xargs rm -rfv 
	find $(DISTDIR)/ -type f -name '*~' -exec rm -fv {} \;
	find $(DISTDIR)/ -type f -name '.#*' -exec rm -fv {} \;
	tar cvf $(DISTDIR).tar $(DISTDIR)
	gzip -9v $(DISTDIR).tar
	-rm -rf $(DISTDIR)
