File: Makefile

package info (click to toggle)
snake4 1.0.12-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 660 kB
  • ctags: 396
  • sloc: ansic: 2,705; makefile: 171; sh: 3
file content (178 lines) | stat: -rw-r--r-- 5,246 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# $Id: Makefile,v 1.18 2002/03/02 21:17:51 sverrehu Exp $
PROG		= snake4
DIST		= $(PROG)
VERMAJ		= 1
VERMIN		= 0
VERPAT		= 12
VERSION		= $(VERMAJ).$(VERMIN).$(VERPAT)
COMPILED_DATE	= `date '+%Y-%m-%d %H:%M:%S'`
COMPILED_BY	= `whoami`

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

# Where are shhmsg, shhopt, Xpm and X11?

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

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

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

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

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

# Where do you want to install the program and the highscore file?
INSTLIBDIR	= $(DESTDIR)/var/games
INSTBINDIR	= $(DESTDIR)/usr/games
INSTMANDIR	= $(DESTDIR)/usr/share/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		= root
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)\" \
		  -DXK_MISCELLANY -DXK_LATIN1 

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

CC		= gcc

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

# I wonder why -lshhopt and -lshhmsg fail?
LIBS		= /usr/lib/libshhopt.so.1 /usr/lib/libshhmsg.so.1 \
		  -lXaw -lXt -lXpm -lX11 $(EXTRA_LIBS)

OBJS		= board.o fruit.o game.o gameobject.o headbanger.o \
		  mushroom.o score.o scull.o slimpill.o snake.o \
		  snake4.o suid.o win.o

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

all: $(PROG)

$(PROG): $(OBJS)

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

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

clean:
	rm -f *.o core depend *~ $(PROG)

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

depend dep:
	$(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) $(DIST).6 \
		  $(DIST).lsm.in ChangeLog Makefile $(SCOREBASEFILE) \
		  $(SCOREBASEFILE).ifi \
		  board.c fruit.c game.c gameobject.c headbanger.c \
		  mushroom.c score.c scull.c slimpill.c snake.c \
		  snake4.c suid.c win.c \
		  board.h fruit.h game.h gameobject.h headbanger.h \
		  mushroom.h score.h scull.h slimpill.h snake.h \
		  suid.h win.h \
		  pixmaps
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/X11/libXpm.a \
	-lXaw -lXt -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