#!/usr/bin/make

KERNEL_DIR=/usr/src/linux

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_loop.o

all: zcode cloop.o create_compressed_fs extract_compressed_fs

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

cloop.o: compressed_loop.o
	$(LD) -r -o $@ $^ zlib-1.1.3/libz.a

create_compressed_fs: create_compressed_fs.o
	$(CC) -o $@ $< zlib-1.1.3/libz.a

extract_compressed_fs: extract_compressed_fs.o
	$(CC) -o $@ $< zlib-1.1.3/libz.a

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

clean:
	rm -f cloop.o $(KERNOBJ) create_compressed_fs extract_compressed_fs zoom *.o
	$(MAKE) -C zlib-1.1.3/ clean

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

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

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

compressed_loop.o create_compressed_fs.o: compressed_loop.h
