#!/usr/bin/make

KERNEL_DIR=/usr/src/linux-beta

CFLAGS:=-Wall -O2 -s -I.
CKERNOPS:=-fomit-frame-pointer -D__KERNEL__ -DMODULE -I$(KERNEL_DIR)/include

ifndef APPSONLY
include $(KERNEL_DIR)/.config
endif

ifdef CONFIG_MODVERSIONS
MODVERSIONS:= -DMODVERSIONS -include $(KERNEL_DIR)/include/linux/modversions.h
CKERNOPS += $(MODVERSIONS)
endif

# Check for SMP in config and #define __SMP__ if necessary.
# This is ESSENTIAL when compiling a SMP version of cloop.o
# Otherwise, the module will block the entire block buffer management on read.

ifdef CONFIG_SMP
CKERNOPS += -D__SMP__
endif

KERNOBJ:=compressed_zlib_loop.o compressed_lzo_loop.o compressed_ucl_loop.o

all: lzoall zall uclall
	@echo "*** using ucl ***" 
	cp cloop_ucl.o cloop.o
	cp create_compressed_ucl_fs  create_compressed_fs 
	cp extract_compressed_ucl_fs extract_compressed_fs

#ucl hacked
uclall: cloop_ucl.o create_compressed_ucl_fs extract_compressed_ucl_fs
#lzo hacked
lzoall: cloop_lzo.o create_compressed_lzo_fs extract_compressed_lzo_fs
#zlib original ones
zall: zcode cloop_zlib.o create_compressed_zlib_fs extract_compressed_zlib_fs

zcode: zlib-1.1.4/adler32.o zlib-1.1.4/uncompr.o zlib-1.1.4/trees.o zlib-1.1.4/zutil.o zlib-1.1.4/inflate.o zlib-1.1.4/infblock.o zlib-1.1.4/inftrees.o zlib-1.1.4/infcodes.o zlib-1.1.4/infutil.o zlib-1.1.4/inffast.o

cloop_zlib.o: compressed_zlib_loop.o
	$(LD) -r -o $@ $^ zlib-1.1.4/libz.a

create_compressed_zlib_fs: create_compressed_zlib_fs.o
	$(CC) -o $@ $< zlib-1.1.4/libz.a

extract_compressed_zlib_fs: extract_compressed_zlib_fs.o
	$(CC) -o $@ $< zlib-1.1.4/libz.a

zlib-1.1.4/%.o:
	$(MAKE) -C zlib-1.1.4/ CFLAGS="-O2 -DNO_MEMCPY"
# using the liblzo.a and the compatibility include for tests,
# the mini ones will be used if everything is ok
cloop_lzo.o: compressed_lzo_loop.o
	$(LD) -r -o $@ $^ -static -L /usr/lib -llzo

create_compressed_lzo_fs: create_compressed_lzo_fs.o
	$(CC) -o $@ $< -static -llzo

extract_compressed_lzo_fs: extract_compressed_lzo_fs.o
	$(CC) -o $@ $< -static -llzo

cloop_ucl.o: compressed_ucl_loop.o
	$(LD) -r -o $@ $^ -static -L /usr/lib -lucl

create_compressed_ucl_fs: create_compressed_ucl_fs.o
	$(CC) -o $@ $< -static -lucl

extract_compressed_ucl_fs: extract_compressed_ucl_fs.o
	$(CC) -o $@ $< -static -lucl





clean:
	rm -f cloop*.o $(KERNOBJ) create_compressed_*fs extract_compressed_*fs \
	create_compressed_lzo_fs extract_compressed_lzo_fs zoom *.o
	$(MAKE) -C zlib-1.1.4/ clean

dist: clean
	cd .. ; \
	tar -cf - cloop/{Makefile,*.[ch],zlib-1.1.4,CHANGELOG,README} | \
	bzip2 -9 > $(HOME)/redhat/SOURCES/cloop.tar.bz2

zlib-1.1.4/%.o:
	$(MAKE) -C zlib-1.1.4/ CFLAGS="-O2 -DNO_MEMCPY"

$(KERNOBJ): %.o : %.c
	$(CC) $(CFLAGS) $(CKERNOPS) $< -c -o $@

compressed_*loop.o create_compressed_*fs.o: compressed_loop.h
