# Makefile.in for kernel module

SHELL = /bin/sh
INSTALL = /usr/bin/install -c
mkdir_p = mkdir -p
majver = kernsrcver=UTS_RELEASE
VERSION = 1.0.0

KVERSION=$(shell uname -r)

DISTFILES = Makefile.in configure.ac configure config.h.in ../install-sh \
	cloop.c cloop.h
DISTDIR = /usr/local

CC = gcc
LD = ld

INCLUDES += -I/UNIONFS/usr/src/linux-2.6.19.1/arch/um/include/ \
	-I/UNIONFS/usr/src/linux-2.6.19.1/arch/um/kernel/tt/include/ \
	-I/UNIONFS/usr/src/linux-2.6.19.1/arch/um/kernel/skas/include \
        -I/UNIONFS/usr/src/linux-2.6.19.1/include/asm-i386/mach-default

CFLAGS:=-Wall -Wstrict-prototypes -Wno-trigraphs -O2 -s -I. -fno-strict-aliasing -fno-common -fomit-frame-pointer $(INCLUDES)
# CFLAGS:=-Wall -Wstrict-prototypes -Wno-trigraphs -O2 -s -I. -fno-strict-aliasing -fno-common -fomit-frame-pointer

ifeq ($(PATCHLEVEL),6)
MODULE:=cloop.ko
else
MODULE:=cloop.o
endif

all: utils module
install: install-utils install-module
uninstall: clean
module: $(MODULE)

clean:
	rm -f $(cloopmodule) *.o .*.cmd *.mod.c *.ko *.s */*.o create_compressed_fs extract_compressed_fs *~
	$(MAKE) -C advancecomp-1.14 clean
	rm -f */config.status */config.log tmp

distclean: clean
	rm -f Makefile
	rm -f config.h config.log config.status config.cache
	rm -rf .tmp_versions

maintainer-clean: distclean

distdir: $(DISTFILES) $(COMPATDISTFILES)
	cp -p $(DISTFILES) $(distdir)
	mkdir $(DISTDIR)/compat
	cp -p $(COMPATDISTFILES) $(DISTDIR)/compat

obj-m := cloop.o
cloop-objs := compressed_loop.o

ifeq ($(shell grep 'UTS.*"2\.6' /UNIONFS/usr/src/linux-2.6.19.1/include/linux/version.h),)
 -include /UNIONFS/usr/src/linux-2.6.19.1/.config
 -include /UNIONFS/usr/src/linux-2.6.19.1/config.vars

# CKERNOPS:=-D__KERNEL__ -DMODULE -O3 -fno-builtin -nostdlib -DKBUILD_MODNAME="cloop" -DKBUILD_BASENAME="cloop"

 CKERNOPS:=-DMODULE -O3 -fno-builtin -DKBUILD_MODNAME="cloop" -DKBUILD_BASENAME="cloop"

 MODVERSIONS:= -DMODVERSIONS -include /UNIONFS/usr/src/linux-2.6.19.1/include/config/modversions.h
 CKERNOPS += $(MODVERSIONS)

 ifdef CONFIG_SMP
  CKERNOPS += -D__SMP__
  endif

 $(MODULE):
#	$(CC) $(CFLAGS) $(CKERNOPS) $(CFLAGS_$@) -o cloop.o -c compressed_loop.c
	$(MAKE) modules -C /UNIONFS/usr/src/linux-2.6.19.1 M=$(CURDIR)
# install-module: module
#	cp cloop.o $(INSTALL_MOD_PATH)/lib/modules/$(KVERSION)/kernel/drivers/extra


 compressed_loop.o create_compressed_fs.o: compressed_loop.h

else

 EXTRA_CFLAGS := -I /UNIONFS/usr/src/linux-2.6.19.1/include/asm/mach-default 

 module: compressed_loop.h compressed_loop.c
	$(MAKE) modules -C /UNIONFS/usr/src/linux-2.6.19.1 M=$(CURDIR) KERNELRELEASE=$(KVERSION)

 install-module: module
	$(MAKE) modules_install -C /UNIONFS/usr/src/linux-2.6.19.1 M=$(CURDIR) KERNELRELEASE=$(KVERSION)

endif

utils: create_compressed_fs_chk extract_compressed_fs_chk

install-utils: utils
	mkdir -p $(DESTDIR)/bin
	install -m0755 create_compressed_fs $(DESTDIR)/bin

create_compressed_fs_chk:
	if test -d ./advancecomp-1.14; then \
	  $(MAKE) create_compressed_fs; \
	fi

create_compressed_fs: advancecomp-1.14/advfs
	ln -f $< $@

advancecomp-1.14/advfs: advancecomp-1.14/config.status
	$(MAKE) -C advancecomp-1.14 advfs

advancecomp-1.14/config.status: advancecomp-1.14
	cd advancecomp-1.14 && ./configure

extract_compressed_fs_chk:
	if test -f ./extract_compressed_fs.c; then \
	  $(MAKE) extract_compressed_fs; \
	fi

extract_compressed_fs: extract_compressed_fs.o
	$(CC) -o $@ $< -lz

# to build packages for Knoppix
packages:
	fakeroot debian/rules binary
	cp -a . ../tmp-cloop-modbuild
	cd ../tmp-cloop-modbuild && fakeroot debian/rules binary-modules && rm -rf ../tmp-cloop-modbuild
