# Makefile for lockstat

# LINUX_INC_ROOT is the root of the include directory of the Linux tree
# for which you want to compile.  If you want to compile for a Linux version
# other than the one currently installed on your machine, define it in
# your environment or on the make command line.
ifndef LINUX_INC_ROOT
LINUX_INC_ROOT = /lib/modules/$$(uname -r)/build/include
endif

#INSTALLROOT=
BINDIR=/usr/local/bin

PROJ	= lockstat

PROGS	= lockstat lockstat.sh
CC	= gcc
DEFS    = -UDEBUGBUG -UTIMER -DCONFIG_LOCKMETER
#CFLAGS	= -O2 $(DEFS) -fomit-frame-pointer -I$(LINUX_INC_ROOT)
CFLAGS	= -O2 $(DEFS) -I$(LINUX_INC_ROOT)

default all: $(PROGS)

OBJS = lockstat.o symbols.o getsetdata.o

.o:
	$(CC) $(CFLAGS) -c $*.c

lockstat: $(OBJS)
	$(CC) $(LDFLAGS) -o lockstat $(OBJS) $(LDOPT)

lockstat.sh: lockstat.sh.src Makefile
	sed 's,@BINDIR@,$(BINDIR),' lockstat.sh.src >lockstat.sh

install: $(PROGS)
	install -m 0755 lockstat $(INSTALLROOT)$(BINDIR)/lockstat-$$(uname -r)
	install -m 0755 lockstat.sh $(INSTALLROOT)$(BINDIR)/lockstat

cscope:
	cscope -I$(LINUX_INC_ROOT) *.[ch]

clean:
	$(RM) *.o Log cscope.*

clobber: clean
	$(RM) $(PROGS)

# ==========================================================================
# N.B., renames current directory to new version name!
VERSION=$$(cat $$_WD/version.h|grep '_VERSION[^_]'|sed 's/^.* "\([0-9.a-z+]*\)".*$$/\1/')
tarball:  clobber
	@_WD=`pwd`; _WD=`basename $$_WD`; cd ..;\
	_version=$(VERSION); _tarball=$(PROJ)-$${_version}.tar.gz; \
	_newWD=`echo $$_WD | sed  s:-.*:-$$_version:`; \
	if [ "$$_WD" != "$$_newWD" ] ; then \
	echo "Renaming '.' [$$_WD/] to $$_newWD/"; mv $$_WD $$_newWD; fi ; \
	find $$_newWD -type f -perm 00 -exec chmod u+r {} \; ; \
	tar czf - $$_newWD  >$$_tarball; \
	if [ $$? -eq 0 ]; then echo "tarball at ../$$_tarball"; \
	else echo "Error making tarball"; fi
