# $Id: Makefile,v 1.16 2002/03/02 21:08:51 sverrehu Exp $
PROG		= sol
DIST		= $(PROG)
VERMAJ		= 1
VERMIN		= 0
VERPAT		= 7
VERSION		= $(VERMAJ).$(VERMIN).$(VERPAT)
COMPILED_DATE	= `date '+%Y-%m-%d %H:%M:%S'`
COMPILED_BY	= `whoami`

###########################################################################

# Where are shhmsg, shhopt, xalloc, shhcards, Xpm and X11?

# GNU/Linux at home
INCDIR		= -I/usr/local/include -I/usr/X11R6/include \
		  -I/usr/local/include/X11
LIBDIR		= -L/usr/local/lib -L/usr/X11R6/lib -L/usr/local/lib/X11
EXTRA_LIBS	= -lSM -lICE

# Irix at Ifi
ifeq ($(HOSTTYPE),sgi)
INCDIR		= -I$$HOME/include -I/usr/local/hacks/include \
		  -I/usr/include/X11
LIBDIR		= -L$$HOME/lib/$$HOSTTYPE -L/usr/local/hacks/lib/$$HOSTTYPE \
		  -L/usr/lib/X11
endif

# Solaris at Ifi
ifeq ($(HOSTTYPE),sol)
INCDIR		= -I$$HOME/include -I/usr/local/hacks/include \
		  -I/usr/openwin/include -I/usr/local/X11R5/include
LIBDIR		= -L$$HOME/lib/$$HOSTTYPE -L/usr/local/hacks/lib/$$HOSTTYPE \
		  -L/usr/openwin/lib -L/usr/local/X11R5/lib
EXTRA_LD_OPT	= -R$(LD_RUN_PATH):/usr/openwin/lib
endif

# SunOS at Ifi
ifeq ($(HOSTTYPE),sun4)
INCDIR		= -I$$HOME/include -I/usr/local/hacks/include \
		  -I/usr/include/X11 -I/usr/local/X11R5/include
LIBDIR		= -L$$HOME/lib/$$HOSTTYPE -L/usr/local/hacks/lib/$$HOSTTYPE \
		  -L/usr/lib/X11 -L/usr/local/X11R5/lib
EXTRA_LIBS	= -liberty
endif

# Ultrix at Ifi
ifeq ($(HOSTTYPE),ds)
INCDIR		= -I$$HOME/include -I/usr/local/hacks/include \
		  -I/usr/include/X11 -I/usr/local/X11R5/include
LIBDIR		= -L$$HOME/lib/$$HOSTTYPE -L/usr/local/hacks/lib/$$HOSTTYPE \
		  -L/usr/lib/X11 -L/usr/local/X11R5/lib
EXTRA_LIBS	= -liberty
endif

# DEC Alpha at USIT
ifeq ($(HOSTTYPE),alpha)
INCDIR		= -I$$HOME/include -I/usr/include/X11 \
		  -I/usr/local/X11R5/include
LIBDIR		= -L$$HOME/lib/$$HOSTTYPE -L/usr/lib/X11 -L/usr/local/X11R5/lib
endif

###########################################################################

# Where do you want to install the program and the highscore file?
INSTLIBDIR	= /var/local/lib/games
INSTBINDIR	= /usr/local/games
INSTMANDIR	= /usr/local/man/man6
#INSTLIBDIR	= /hom/sverrehu/lib
#INSTBINDIR	= /hom/sverrehu/bin/$$HOSTTYPE
#INSTMANDIR	= /hom/sverrehu/man/man6

# Game user. Program runs suid, so this must not be root.
OWNER		= games
GROUP		= games
#OWNER		= sverrehu
#GROUP		= sverrehu

SCOREBASEFILE	= $(PROG).score
SCOREFILE	= $(INSTLIBDIR)/$(SCOREBASEFILE)
DEFINES		= -DVERSION=\"$(VERSION)\" \
		  "-DCOMPILED_DATE=\"$(COMPILED_DATE)\"" \
		  "-DCOMPILED_BY=\"$(COMPILED_BY)\"" \
		  -DSCOREFILE=\"$(SCOREFILE)\"

###########################################################################

CC		= gcc

OPTIM		= -s -O2
CCOPT		= -Wall $(OPTIM) $(INCDIR) $(DEFINES) $(CFLAGS)
LDOPT		= -s $(LIBDIR) $(LDFLAGS) $(EXTRA_LD_OPT)

LIBS		= -lshhopt -lshhmsg -lxalloc -lshhcards \
		  -lXaw -lXt -lXpm -lXext -lXmu -lX11 $(EXTRA_LIBS)

OBJS		= about.o board.o card.o envvar.o game.o \
		  highscores.o options.o parsefile.o pile.o \
		  rcfile.o readme.o score.o sol.o suid.o win.o

###########################################################################

all: $(PROG)

$(PROG): $(OBJS)

.o: $(OBJS)
	$(CC) $(CCOPT) -o $@ $(OBJS) $(LDOPT) $(LIBS)

.c.o:
	$(CC) -o $@ -c $(CCOPT) $<

readme.var: README
	echo "static char *readmeText =" > readme.var
	sed -e 's/"/\\"/g' < README | \
		awk '{ print "\"" $$0 "\\n\"" }' >> readme.var
	echo ";" >> readme.var

clean:
	rm -f *.o core depend readme.var *~

install: $(PROG)
	install -d -m 755 $(INSTBINDIR) $(INSTLIBDIR) $(INSTMANDIR)
	install -s -m 4755 -o $(OWNER) -g $(GROUP) $(PROG) $(INSTBINDIR)
	ln -sf $(PROG) $(INSTBINDIR)/$(PROG)scores
	install -m 644 $(PROG).6 $(INSTMANDIR)
	if test ! -f $(SCOREFILE); then \
	  install -m 644 -o $(OWNER) -g $(GROUP) \
	          $(SCOREBASEFILE) $(INSTLIBDIR); fi

depend dep: readme.var
	$(CC) $(INCDIR) -MM *.c >depend

###########################################################################

# To let the author make a distribution. The rest of the Makefile
# should be used by the author only.
LSMFILE		= $(DIST)-$(VERSION).lsm
DISTDIR		= $(DIST)-$(VERSION)
DISTFILE	= $(DIST)-$(VERSION).tar.gz
DISTFILES	= README INSTALL CREDITS TODO $(LSMFILE) $(PROG).6 \
		  $(DIST).lsm.in ChangeLog Makefile $(SCOREBASEFILE) \
		  about.c board.c card.c envvar.c game.c \
		  highscores.c options.c parsefile.c pile.c \
		  rcfile.c readme.c score.c sol.c suid.c win.c \
		  about.h board.h card.h envvar.h game.h \
		  highscores.h options.h parsefile.h pile.h \
		  rcfile.h readme.h score.h suid.h win.h \
		  readme.var shapes.xpm
BINDISTDIR	= $(DIST)-$(VERSION)-bin
BINDISTFILE	= $(DIST)-$(VERSION)-bin.tar.gz
BINDISTFILES	= README.static $(PROG).static $(PROG).6 \
		  Makefile.static $(SCOREBASEFILE)

# Linux executable with my libraries and Xpm statically linked.
static $(PROG).static: $(OBJS)
	$(CC) $(CCOPT) -o $(PROG).static $(OBJS) $(LDOPT) \
	/local/lib/libshhopt.a /local/lib/libshhmsg.a \
	/local/lib/libxalloc.a /local/lib/libshhcards.a \
	/local/lib/X11/libXpm.a \
	-lXaw -lXt -lXext -lXmu -lX11 $(EXTRA_LIBS)

$(LSMFILE): $(DIST).lsm.in
	VER=$(VERSION); \
	DATE=`date "+%d%b%y"|tr '[a-z]' '[A-Z]'`; \
	sed -e "s/VER/$$VER/g;s/DATE/$$DATE/g" $(DIST).lsm.in > $(LSMFILE)

$(SCOREBASEFILE): $(SCOREBASEFILE).ifi
	echo "1" > $(SCOREBASEFILE)
	grep "^sverrehu," $(SCOREBASEFILE).ifi >> $(SCOREBASEFILE)

chmod:
	chmod -R a+rX *

veryclean: clean
	rm -f $(PROG) $(PROG).static $(DISTFILE) $(BINDISTFILE) $(LSMFILE)

dist: $(LSMFILE) $(SCOREBASEFILE) chmod
	mkdir $(DISTDIR)
	chmod a+rx $(DISTDIR)
	for q in $(DISTFILES); do \
	  if test -r $$q; then \
	    ln -s ../$$q $(DISTDIR); \
	  else echo "warning: no file $$q"; fi; \
	  done
	tar -cvhzf $(DISTFILE) --exclude \*/CVS $(DISTDIR)
	chmod a+r $(DISTFILE)
	rm -rf $(DISTDIR)

bindist: $(PROG).static $(SCOREBASEFILE) chmod
	mkdir $(BINDISTDIR)
	chmod a+rx $(BINDISTDIR)
	for q in $(BINDISTFILES); do \
	  if test -r $$q; then \
	    ln -s ../$$q $(BINDISTDIR)/`basename $$q .static`; \
	  else echo "warning: no file $$q"; fi; \
	  done
	tar -cvhzf $(BINDISTFILE) --exclude \*/CVS $(BINDISTDIR)
	chmod a+r $(BINDISTFILE)
	rm -rf $(BINDISTDIR)

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