HARDMETER_VERSION = 030225
PACKAGE_NAME = hardmeter-$(HARDMETER_VERSION)
KERNEL_VERSION_FILE = .kernel_version

all: pre_build build

pre_build: check_kernel_version check_perfctr_header

check_kernel_version:
	@if test ! -f $(KERNEL_VERSION_FILE); then \
	  uname -r > $(KERNEL_VERSION_FILE); \
	elif test `uname -r` != `cat $(KERNEL_VERSION_FILE)`; then \
	  uname -r > $(KERNEL_VERSION_FILE); \
	fi
	@echo "kernel version: `cat $(KERNEL_VERSION_FILE)`"

check_perfctr_header:
	@if test ! -f /lib/modules/`cat $(KERNEL_VERSION_FILE)`/build/include/asm/perfctr.h; then \
	  echo 'cannot found header files of perfctr'; \
	  echo 'Did you run "make modules_install"?'; \
	  false; \
	fi

build: src/Makefile
	@cd src && $(MAKE)

src/Makefile: src/Makefile.in $(KERNEL_VERSION_FILE)
	sed -e "s,@@INCLDIR@@,/lib/modules/`cat $(KERNEL_VERSION_FILE)`/build/include,g" $< > $@

clean:
	@cd src && $(MAKE) clean

distclean:
	@$(RM) $(KERNEL_VERSION_FILE)
	@cd src && $(MAKE) distclean

postgres: build
	cp src/libhardmeter.o $(POSTGRES_DIRECTORY)/src/backend/postmaster/libhardmeter.o
	PWD=`pwd`; cd $(POSTGRES_DIRECTORY); patch -p1 < $$PWD/patch/postgres-7.3.dif

dist: MANIFEST
	rm -rf $(PACKAGE_NAME)
	mkdir $(PACKAGE_NAME)
	tar cf - `cat MANIFEST` | (cd $(PACKAGE_NAME); tar xf -)
	@for f in INSTALL; do \
	  echo "making $$f"; \
	  sed -e 's,@@HARDMETER_VERSION@@,$(HARDMETER_VERSION),g' $$f > $(PACKAGE_NAME)/$$f; \
	done
	tar cfz $(PACKAGE_NAME).tar.gz $(PACKAGE_NAME)

tar: MANIFEST
	rm -rf $(PACKAGE_NAME)
	mkdir $(PACKAGE_NAME)
	tar cf - `cat MANIFEST` | (cd $(PACKAGE_NAME); tar xf -)
	tar cfz $(PACKAGE_NAME).tar.gz $(PACKAGE_NAME)
