#
# Makefile for Atari fdisk
#
# $Id: Makefile,v 1.11 1998/02/09 12:59:48 rnhodek Exp $
#
# $Log: Makefile,v $
# Revision 1.11  1998/02/09 12:59:48  rnhodek
# Remove 'diff' again from 'dist' target; doesn't work because needs
# OLDVER=
#
# Revision 1.10  1998/02/07 21:18:57  rnhodek
# Fix TAGS target, remove TAGS file on 'distclean'
# Target 'dist' also makes diff
#
# Revision 1.9  1997/08/22 16:01:56  rnhodek
# Added release target
#
# Revision 1.8  1997/08/22 12:59:35  rnhodek
# Added header and RCS keywords
#

CC = gcc
CFLAGS = -O2 -g -Wall
LD = gcc
LDFLAGS =
LIBS =

# test for cross compiling
# If not on a m68k machine, this selects a cross compiler, because
# atari-fdisk is ment to run usually on an Atari.
# It is possible to build a cross fdisk (i.e., running on a non-Atari
# machine), but you have to explicitly set COMPILE_ARCH to m68k (with
# "make COMPILE_ARCH=m68k") to avoid cross-compiling. I admit this is
# counter-intuitive...
COMPILE_ARCH = $(shell uname -m)
ifneq ($(COMPILE_ARCH),m68k)
	CROSSPREFIX=m68k-linux-
	CC := $(CROSSPREFIX)$(CC)
	LD := $(CROSSPREFIX)$(LD)
endif

BINDIR = /sbin

CSRC = atari-fdisk.c menufuncs.c partable.c readpart.c writepart.c savetab.c \
       input.c disk.c util.c
OBJS = $(subst .c,.o,$(CSRC))

.PHONY: clean reallyclean distclean install depend TAGS dist tar \
        binary binary-sub diff

atari-fdisk: $(OBJS)
	$(LD) $(LDFLAGS) -o $@ $^ $(LIBS)
	ln -f $@ fdisk

clean:
	rm -f *.o core #*#

reallyclean: clean
	rm -f atari-fdisk fdisk .depend

distclean: reallyclean
	rm -f *~ *# *.orig *.rej TAGS

install:
	install -s -m 755 -o root -g root atari-fdisk $(BINDIR)
	ln -s atari-fdisk $(BINDIR)/fdisk.atari
	[ -f $(BINDIR)/fdisk ] || ln -s atari-fdisk $(BINDIR)/fdisk

depend:
	gcc -MM $(CSRC) >.depend

TAGS:
	etags -d -T `find . -name '*.[ch]'`

dist: binary tar

tar: distclean
	cd ..; \
	name="$(notdir $(shell pwd))"; \
	namev="$$name-$(shell perl -ne 'print "$$1\n" if /VERSION.*"(\S+)"/;' version.h)"; \
	mv $$name $$namev; \
	tar cf $$namev.src.tar `find $$namev -path $$namev/CVS -prune -o -type f -print`; \
	gzip -9f $$namev.src.tar; \
	mv $$namev $$name

binary: atari-fdisk
	doit=""; [ root = "`whoami`" ] || doit=sudo; $$doit $(MAKE) binary-sub
	cd tmp; \
	name="$(notdir $(shell pwd))"; \
	namev="$$name-$(shell perl -ne 'print "$$1\n" if /VERSION.*"(\S+)"/;' version.h)"; \
	tar cf ../../$$namev.bin.tar * ; \
	gzip -9f ../../$$namev.bin.tar
	doit=""; [ root = "`whoami`" ] || doit=sudo; $$doit rm -rf tmp

binary-sub:
	@[ root = "`whoami`" ] || (echo "Must be root for this!"; exit 1)
	mkdir -p tmp/$(BINDIR)
	$(MAKE) install BINDIR=tmp$(BINDIR)

# usage: make diff OLDVER=<last-release-number>
diff:
	@if [ "x$(OLDVER)" = "x" ]; then \
		echo "Usage: make diff OLDVER=<last-release-number>"; \
		exit 1; \
	fi; \
	name="$(notdir $(shell pwd))"; \
	namev="$$name-$(shell perl -ne 'print "$$1\n" if /VERSION.*"(\S+)"/;' version.h)"; \
	cvs diff -u -rRELEASE-$(OLDVER) >../$$namev.diff; \
	gzip -9f ../$$namev.diff


# usage: make release VER=<release-number>
release:
	@if [ "x$(VER)" = "x" ]; then \
		echo "Usage: make release VER=<release-number>"; \
		exit 1; \
	fi
	modified=`cvs status 2>/dev/null | awk '/Status:/ { if ($$4 != "Up-to-date") print $$2 }'`; \
	if [ "x$$modified" != "x" ]; then \
		echo "There are modified files: $$modified"; \
		echo "Commit first"; \
		exit 1; \
	fi
	sed "/VERSION/s/\".*\"/\"$(VER)\"/" <version.h >version.h.new
	mv version.h.new version.h
	cvs commit -m"Raised version to $(VER)" version.h
	cvs tag RELEASE-`echo $(VER) | sed 's/\./-/g'`


ifeq ($(wildcard .depend),.depend)
include .depend
endif

