1# $Id: Makefile,v 1.16 2002/03/02 21:08:51 sverrehu Exp $
2PROG		= sol
3DIST		= $(PROG)
4VERMAJ		= 1
5VERMIN		= 0
6VERPAT		= 8
7VERSION		= $(VERMAJ).$(VERMIN).$(VERPAT)
8COMPILED_DATE	= `date '+%Y-%m-%d %H:%M:%S'`
9COMPILED_BY	= `whoami`
10
11###########################################################################
12
13# Where are shhmsg, shhopt, xalloc, shhcards, Xpm and X11?
14
15# GNU/Linux at home
16INCDIR		= -I${LOCALBASE}/include
17LIBDIR		= -L${LOCALBASE}/lib
18EXTRA_LIBS	= -lSM -lICE
19
20# Irix at Ifi
21ifeq ($(HOSTTYPE),sgi)
22INCDIR		= -I$$HOME/include -I/usr/local/hacks/include \
23		  -I/usr/include/X11
24LIBDIR		= -L$$HOME/lib/$$HOSTTYPE -L/usr/local/hacks/lib/$$HOSTTYPE \
25		  -L/usr/lib/X11
26endif
27
28# Solaris at Ifi
29ifeq ($(HOSTTYPE),sol)
30INCDIR		= -I$$HOME/include -I/usr/local/hacks/include \
31		  -I/usr/openwin/include -I/usr/local/X11R5/include
32LIBDIR		= -L$$HOME/lib/$$HOSTTYPE -L/usr/local/hacks/lib/$$HOSTTYPE \
33		  -L/usr/openwin/lib -L/usr/local/X11R5/lib
34EXTRA_LD_OPT	= -R$(LD_RUN_PATH):/usr/openwin/lib
35endif
36
37# SunOS at Ifi
38ifeq ($(HOSTTYPE),sun4)
39INCDIR		= -I$$HOME/include -I/usr/local/hacks/include \
40		  -I/usr/include/X11 -I/usr/local/X11R5/include
41LIBDIR		= -L$$HOME/lib/$$HOSTTYPE -L/usr/local/hacks/lib/$$HOSTTYPE \
42		  -L/usr/lib/X11 -L/usr/local/X11R5/lib
43EXTRA_LIBS	= -liberty
44endif
45
46# Ultrix at Ifi
47ifeq ($(HOSTTYPE),ds)
48INCDIR		= -I$$HOME/include -I/usr/local/hacks/include \
49		  -I/usr/include/X11 -I/usr/local/X11R5/include
50LIBDIR		= -L$$HOME/lib/$$HOSTTYPE -L/usr/local/hacks/lib/$$HOSTTYPE \
51		  -L/usr/lib/X11 -L/usr/local/X11R5/lib
52EXTRA_LIBS	= -liberty
53endif
54
55# DEC Alpha at USIT
56#ifeq ($(HOSTTYPE),alpha)
57#INCDIR		= -I$$HOME/include -I/usr/include/X11 \
58#		  -I/usr/local/X11R5/include
59#LIBDIR		= -L$$HOME/lib/$$HOSTTYPE -L/usr/lib/X11 -L/usr/local/X11R5/lib
60#endif
61
62###########################################################################
63
64# Where do you want to install the program and the highscore file?
65INSTLIBDIR	= ${PREFIX}/lib/games
66INSTBINDIR	= ${PREFIX}/games
67INSTMANDIR	= ${PREFIX}/man/man6
68#INSTLIBDIR	= /hom/sverrehu/lib
69#INSTBINDIR	= /hom/sverrehu/bin/$$HOSTTYPE
70#INSTMANDIR	= /hom/sverrehu/man/man6
71
72# Game user. Program runs suid, so this must not be root.
73OWNER		= games
74GROUP		= games
75#OWNER		= sverrehu
76#GROUP		= sverrehu
77
78SCOREBASEFILE	= $(PROG).score
79SCOREFILE	= $(INSTLIBDIR)/$(SCOREBASEFILE)
80DEFINES		= -DVERSION=\"$(VERSION)\" \
81		  "-DCOMPILED_DATE=\"$(COMPILED_DATE)\"" \
82		  "-DCOMPILED_BY=\"$(COMPILED_BY)\"" \
83		  -DSCOREFILE=\"$(SCOREFILE)\"
84
85###########################################################################
86
87#CC		= gcc
88
89OPTIM		= -s -O2
90CCOPT		= $(INCDIR) $(DEFINES) $(CFLAGS)
91LDOPT		= $(LIBDIR) $(LDFLAGS) $(EXTRA_LD_OPT)
92
93LIBS		= -lshhopt -lshhmsg -lxalloc -lshhcards \
94		  -lXaw -lXt -lXpm -lXext -lXmu -lX11 $(EXTRA_LIBS)
95
96OBJS		= about.o board.o card.o envvar.o game.o \
97		  highscores.o options.o parsefile.o pile.o \
98		  rcfile.o readme.o score.o sol.o suid.o win.o
99
100###########################################################################
101
102all: $(PROG)
103
104$(PROG): $(OBJS)
105
106.o: $(OBJS)
107	$(CC) $(CCOPT) -o $@ $(OBJS) $(LDOPT) $(LIBS)
108
109.c.o:
110	$(CC) -o $@ -c $(CCOPT) $<
111
112readme.var: README
113	echo "static char *readmeText =" > readme.var
114	sed -e 's/"/\\"/g' < README | \
115		awk '{ print "\"" $$0 "\\n\"" }' >> readme.var
116	echo ";" >> readme.var
117
118clean:
119	rm -f *.o core depend readme.var *~
120
121install: $(PROG)
122	install -d -m 755 $(INSTBINDIR) $(INSTLIBDIR) $(INSTMANDIR)
123	install -s -m 4755 -o $(OWNER) -g $(GROUP) $(PROG) $(INSTBINDIR)
124	ln -sf $(PROG) $(INSTBINDIR)/$(PROG)scores
125	install -m 644 $(PROG).6 $(INSTMANDIR)
126	if test ! -f $(SCOREFILE); then \
127	  install -m 644 -o $(OWNER) -g $(GROUP) \
128	          $(SCOREBASEFILE) $(INSTLIBDIR); fi
129
130depend dep: readme.var
131	$(CC) $(INCDIR) -MM *.c >depend
132
133###########################################################################
134
135# To let the author make a distribution. The rest of the Makefile
136# should be used by the author only.
137LSMFILE		= $(DIST)-$(VERSION).lsm
138DISTDIR		= $(DIST)-$(VERSION)
139DISTFILE	= $(DIST)-$(VERSION).tar.gz
140DISTFILES	= README INSTALL CREDITS TODO $(LSMFILE) $(PROG).6 \
141		  $(DIST).lsm.in ChangeLog Makefile $(SCOREBASEFILE) \
142		  about.c board.c card.c envvar.c game.c \
143		  highscores.c options.c parsefile.c pile.c \
144		  rcfile.c readme.c score.c sol.c suid.c win.c \
145		  about.h board.h card.h envvar.h game.h \
146		  highscores.h options.h parsefile.h pile.h \
147		  rcfile.h readme.h score.h suid.h win.h \
148		  readme.var shapes.xpm
149BINDISTDIR	= $(DIST)-$(VERSION)-bin
150BINDISTFILE	= $(DIST)-$(VERSION)-bin.tar.gz
151BINDISTFILES	= README.static $(PROG).static $(PROG).6 \
152		  Makefile.static $(SCOREBASEFILE)
153
154# Linux executable with my libraries and Xpm statically linked.
155static $(PROG).static: $(OBJS)
156	$(CC) $(CCOPT) -o $(PROG).static $(OBJS) $(LDOPT) \
157	/local/lib/libshhopt.a /local/lib/libshhmsg.a \
158	/local/lib/libxalloc.a /local/lib/libshhcards.a \
159	/local/lib/X11/libXpm.a \
160	-lXaw -lXt -lXext -lXmu -lX11 $(EXTRA_LIBS)
161
162$(LSMFILE): $(DIST).lsm.in
163	VER=$(VERSION); \
164	DATE=`date "+%d%b%y"|tr '[a-z]' '[A-Z]'`; \
165	sed -e "s/VER/$$VER/g;s/DATE/$$DATE/g" $(DIST).lsm.in > $(LSMFILE)
166
167$(SCOREBASEFILE): $(SCOREBASEFILE).ifi
168	echo "1" > $(SCOREBASEFILE)
169	grep "^sverrehu," $(SCOREBASEFILE).ifi >> $(SCOREBASEFILE)
170
171chmod:
172	chmod -R a+rX *
173
174veryclean: clean
175	rm -f $(PROG) $(PROG).static $(DISTFILE) $(BINDISTFILE) $(LSMFILE)
176
177dist: $(LSMFILE) $(SCOREBASEFILE) chmod
178	mkdir $(DISTDIR)
179	chmod a+rx $(DISTDIR)
180	for q in $(DISTFILES); do \
181	  if test -r $$q; then \
182	    ln -s ../$$q $(DISTDIR); \
183	  else echo "warning: no file $$q"; fi; \
184	  done
185	tar -cvhzf $(DISTFILE) --exclude \*/CVS $(DISTDIR)
186	chmod a+r $(DISTFILE)
187	rm -rf $(DISTDIR)
188
189bindist: $(PROG).static $(SCOREBASEFILE) chmod
190	mkdir $(BINDISTDIR)
191	chmod a+rx $(BINDISTDIR)
192	for q in $(BINDISTFILES); do \
193	  if test -r $$q; then \
194	    ln -s ../$$q $(BINDISTDIR)/`basename $$q .static`; \
195	  else echo "warning: no file $$q"; fi; \
196	  done
197	tar -cvhzf $(BINDISTFILE) --exclude \*/CVS $(BINDISTDIR)
198	chmod a+r $(BINDISTFILE)
199	rm -rf $(BINDISTDIR)
200
201ifeq (depend,$(wildcard depend))
202include depend
203endif
204