# cryptoapi-asm Makefile
# $Id$

KERNELRELEASE  := $(shell uname -r)

MODLIB  := $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
MOD_DESTDIR := crypto/ciphers/

INSTALLDIR := $(MODLIB)/kernel/$(MOD_DESTDIR)
INCLUDEDIR := $(MODLIB)/build/include/

#

ALL_MOBJS := cipher-aes.o

CC     := gcc
AWK    := gawk
AS     := as
CPP    := $(CC) -E
LD     := ld
LFLAGS := -r
SED    := sed

CPPFLAGS := -D__KERNEL__ -I$(INCLUDEDIR) -DMODULE 
CFLAGS   := -O2 -Wall -Wstrict-prototypes -Wno-trigraphs \
		-fno-strict-aliasing -fno-common -fomit-frame-pointer \
		-pipe -mpreferred-stack-boundary=2 -march=i586

default:
	@echo "detected kernel release" $(KERNELRELEASE)
	@echo "kernel header dir      " $(INCLUDEDIR)
	@echo "module destination dir " $(INSTALLDIR)
	@echo ""
	@echo "...read the README file!"

all: modules

modules: $(ALL_MOBJS)
	@echo "finished... now you might want to use 'make modules_install'!"

modules_install: modules
	mkdir -v -p $(MODLIB)/kernel/$(MOD_DESTDIR)
	cp -v $(sort $(ALL_MOBJS)) $(MODLIB)/kernel/$(MOD_DESTDIR)
	@echo "finished... you might want to use modinfo(8) to verify installation."

cipher-aes.o: cipher-aes.c cipher-aes-i586.c

clean:
	-rm -v *.o *.s cipher-aes-i586.c

# dist related stuff
PACKAGE := cipher-aes-i586
VERSION := 0.3
PKGDIR := $(PACKAGE)-$(VERSION)

distclean: clean
	-rm -rf $(PKGDIR)
	-rm -v *~ *.orig *.rej .\#* *.tar*

dist: distclean
	-cp -r . $(PKGDIR)
	tar cvf $(PKGDIR).tar $(PKGDIR)
	gzip -9v $(PKGDIR).tar	
	-rm -rf $(PKGDIR)

# asm to gnu-c code wrapping
%.c: %.S
	($(CPP) $< | $(SED) 's/\"/\\"/g' | $(AWK) 'BEGIN { print "__asm__ ( \\" } { print " \"" $$0 "\\n\" \\" } END { print ");" }') > $@

# module compile rule
comma := ,

$(ALL_MOBJS): %.o: %.c
	echo '['$(*F)']'
	$(CC) $(CFLAGS) $(CPPFLAGS) \
	-DKBUILD_BASENAME=$(subst $(comma),_,$(subst -,_,$(*F))) $(CFLAGS_$@) \
	-c $< -o $@

#EOF
