1
|
1 #!/bin/sh
|
|
2 #
|
|
3 # NETREK II -- Paradise server setup script
|
|
4 #
|
|
5 # Permission to use, copy, modify, and distribute this software and its
|
|
6 # documentation for any NON-COMMERCIAL purpose
|
|
7 # (read the files 'src/copyright*.h')) and without
|
|
8 # fee is hereby granted, provided that this copyright notice appear in all
|
|
9 # copies. No representations are made about the suitability of this
|
|
10 # software for any purpose. This software is provided "as is" without
|
|
11 # express or implied warranty.
|
|
12 #
|
|
13 # Xtrek Copyright 1986 Chris Guthrie
|
|
14 # Netrek (Xtrek II) Copyright 1989 Kevin P. Smith
|
|
15 # Scott Silvey
|
|
16 # Paradise (Netrek II) Copyright 1993 Larry Denys
|
|
17 # Kurt Olsen
|
|
18 # Brandon Gillespie
|
|
19 # Rob Forsman
|
|
20 #
|
|
21 # Comprehensive Credits available in the file docs/CREDITS
|
|
22 #
|
|
23 # Note: this is just a quick hack I made, we can probably improve it later
|
|
24 # -Brandon
|
|
25
|
|
26 trap "rm -f test.c a.out core $0.tmp; exit" 2 3
|
|
27
|
|
28 t=" "
|
|
29 i="- "
|
|
30
|
|
31 echo "-- Netrek II (Paradise) --
|
|
32
|
|
33 ${t}Setup script for the Netrek II (Paradise) Server.
|
|
34
|
|
35 ${t}To rebuild the Makefile using previous options (in the instance that
|
|
36 ${t}Makefile.in was changed), use the \"-p\" (previous) flag, \"make
|
|
37 ${t}makefile\" will also execute \"setup -p\".
|
|
38 "
|
|
39
|
|
40 # figure out what to do with echo -- from perl's Configure
|
|
41 # This blows chunks on Linux; fixed line from echotmp to $0.tmp.
|
|
42
|
|
43 (echo "hi there \c" ; echo " ") > $0.tmp
|
|
44 if grep c $0.tmp >/dev/null 2>&1 ; then
|
|
45 echo "${i}Supressing newlines with -n..."
|
|
46 n='-n'
|
|
47 c=''
|
|
48 else
|
|
49 echo "${i}Supressing newlines with \\\c..."
|
|
50 n=''
|
|
51 c='\c'
|
|
52 fi
|
|
53
|
|
54 echo ''
|
|
55 echo $n "${i}The asterisk should be here => $c"
|
|
56 echo '*'
|
|
57 echo ''
|
|
58
|
|
59 if [ X$1 != X -a X$1 = X"-p" ]; then
|
|
60 echo "${i}Reading previous setup configuration..."
|
|
61 if [ ! -f etc/$0.conf ]; then
|
|
62 echo
|
|
63 echo "${t}previous configuration file (etc/$0.conf) not found!"
|
|
64 exit 1
|
|
65 fi
|
|
66 else
|
|
67
|
|
68 ###########################################################################
|
|
69 # Global vars
|
|
70 LIBS="-lm"
|
|
71
|
|
72 ###########################################################################
|
|
73 SYS=`(/bin/uname || /usr/bin/uname) 2>/dev/null`
|
|
74
|
|
75 case $SYS in
|
|
76 SunOS)
|
|
77 # check for Solaris the hard way
|
|
78 if [ "`/bin/uname -rs | cut -c0-9`" != "SunOS 4.1" ]; then
|
|
79 SYS="SOLARIS"
|
|
80 CCOPTIONS="-DSYSV -DSVR4 ${CCOPTIONS}"
|
|
81 LIBS="-lnsl -lsocket ${LIBS}"
|
|
82 fi
|
|
83 ;;
|
|
84 HP-UX)
|
|
85 CCOPTIONS="-Ae -DSYSV ${CCOPTIONS}"
|
|
86 ;;
|
|
87 IRIX)
|
|
88 CCOPTIONS="-mips2 -DSYSV -DSVR4 -DBAD_SVR4_HACKS ${CCOPTIONS}"
|
|
89 LIBS="-lsun ${LIBS}"
|
|
90 ;;
|
|
91 OSF1)
|
|
92 CCOPTIONS="-DSYSV ${CCOPTIONS}"
|
|
93 ;;
|
|
94 *)
|
|
95 # this is a hack because Unixware returns odd things with /bin/uname
|
|
96 echo $n "Are you running Unixware? [yn] (default: n) $c"
|
|
97 read ANSWER
|
|
98 if [ X$ANSWER = X"y" ]; then
|
|
99 SYS="UNIXWARE"
|
|
100 CCOPTIONS="-DSYSV -DSVR4 -DBAD_SVR4_HACKS ${CCOPTIONS}"
|
|
101 LIBS="-lnsl -lsocket -lresolv ${LIBS}"
|
|
102 fi
|
|
103 ;;
|
|
104 esac
|
|
105
|
|
106 echo ""
|
|
107 echo "${i}Looks like you are running ${SYS}..."
|
|
108 # Should probably check for RAND48, will add later if anybody complains
|
|
109 CCOPTIONS="-D${SYS} -DHAVE_RAND48 ${CCOPTIONS}"
|
|
110
|
|
111
|
|
112 ############################################################################
|
|
113 ## compiler
|
|
114 echo ""
|
|
115 echo $n "${i}Checking for cc or gcc...$c"
|
|
116
|
|
117 cat > test.c <<EOF
|
|
118 int main() { exit(0); }
|
|
119 EOF
|
|
120 err=`eval "(gcc test.c >/dev/null) 2>&1"`
|
|
121 rm -f test.c a.out
|
|
122
|
|
123 if [ X"$err" != X ]; then
|
|
124 echo "using cc"
|
|
125 CC=cc
|
|
126 else
|
|
127 echo "using gcc"
|
|
128 CC=gcc
|
|
129 fi
|
|
130
|
|
131 echo $n "
|
|
132 1 -- Basic optimization (-O -s)
|
|
133 2 -- Full optimization (-O2 -s)
|
|
134 3 -- Debug, no optimization (-g)
|
|
135
|
|
136 Specify optimization/debug state. [123] (default: 1) $c"
|
|
137
|
|
138 read DEBUG
|
|
139
|
|
140 if [ X${DEBUG} = X ]; then
|
|
141 DEBUG="1"
|
|
142 fi
|
|
143
|
|
144 if [ ${DEBUG} = "1" ]; then
|
|
145 DEBUG="Basic optimization."
|
|
146 CDEBUGFLAGS="-O -s"
|
|
147 elif [ ${DEBUG} = "2" ]; then
|
|
148 DEBUG="Full optimization."
|
|
149 CDEBUGFLAGS="-O2 -s"
|
|
150 elif [ ${DEBUG} = "3" ]; then
|
|
151 while [ "${DEBUG}" = "3" ]; do
|
|
152 echo $n "
|
|
153 gdb -- GNU Debugger
|
|
154 dbx -- source level debugger
|
|
155 none -- no debugger
|
|
156 <other> -- other debugger
|
|
157
|
|
158 Use which debugger? (default: none) $c"
|
|
159 read DEBUGGER
|
|
160 if [ X${DEBUGGER} = X ]; then
|
|
161 DEBUGGER="none"
|
|
162 fi
|
|
163
|
|
164 if [ ${DEBUGGER} = "none" ]; then
|
|
165 DEBUG="Debug (No debugger), no optimization"
|
|
166 CDEBUGFLAGS="-g"
|
|
167 elif [ ${DEBUGGER} = "gdb" ]; then
|
|
168 DEBUG="Debug (GNU debugger), no optimization"
|
|
169 CDEBUGFLAGS="-ggdb"
|
|
170 elif [ ${DEBUGGER} = "dbx" ]; then
|
|
171 DEBUG="Debug, no optimization"
|
|
172 CDEBUGFLAGS="-gdbx"
|
|
173 else
|
|
174 echo $n "${t}\"${DEBUGGER}\" is an unknown debugger, use anyway? [yn] (default: y) $c"
|
|
175 read ANSWER
|
|
176 if [ X${ANSWER} = X"y" ]; then
|
|
177 DEBUG="Debug (Other: ${DEBUGGER}), no optimization"
|
|
178 CDEBUGFLAGS="-g${DEBUGGER}"
|
|
179 fi
|
|
180 fi
|
|
181 done
|
|
182 else
|
|
183 echo "$0: unknown option \"${DEBUG}\", exiting."
|
|
184 exit 1
|
|
185 fi
|
|
186
|
|
187 #########################################################################
|
|
188
|
|
189 if [ -f "rsa/Makefile" ]; then
|
|
190 echo $n "
|
|
191 You seem to have the RSA files. RSA verification is NOT required
|
|
192 for the server to function, and is usually enabled only on high
|
|
193 profile public servers.
|
|
194
|
|
195 Do you wish to enable RSA verification? [yn] (default: n) $c"
|
|
196
|
|
197 read ANSWER
|
|
198 if [ X${ANSWER} = X"y" ]; then
|
|
199 RSA="-DAUTHORIZE"
|
|
200 AUTHOBJS="rsa-server.o rsa_util.o reserved.o"
|
|
201 else
|
|
202 RSA=""
|
|
203 AUTHOBJS=""
|
|
204 fi
|
|
205 else
|
|
206 echo "
|
|
207 RSA files do not exist, RSA verification is not enabled (RSA
|
|
208 verification is not required for the server to run, and is
|
|
209 usually only enabled on high profile public servers)."
|
|
210 fi
|
|
211
|
|
212 ###########################################################################
|
|
213 echo ""
|
|
214 echo $n "${i}Does the mp library exist...$c"
|
|
215
|
|
216 cat > test.c <<EOF
|
|
217 int main() { exit(0); }
|
|
218 int t() { main(); }
|
|
219 EOF
|
|
220
|
|
221 err=`eval "($CC test.c -lmp >/dev/null) 2>&1"`
|
|
222 rm -f test.c a.out
|
|
223
|
|
224 if [ -z "$err" ]; then
|
|
225 echo "yes."
|
|
226 LIBS="-lmp ${LIBS}"
|
|
227 if [ ! -z "$RSA" ]; then
|
|
228 echo ""
|
|
229 echo "${i}Using appropriate mp RSA files."
|
|
230 echo ""
|
|
231 AUTHOBJS="rsa-server.o rsa_utilmp.o reserved.o"
|
|
232 fi
|
|
233 else
|
|
234 echo "no."
|
|
235 fi
|
|
236
|
|
237 ###########################################################################
|
|
238 # strdup()
|
|
239
|
|
240 echo $n "${i}Does strdup() exist...$c"
|
|
241
|
|
242 cat > test.c <<EOF
|
|
243 #include <string.h>
|
|
244 main () { char *str, *str2 = "test\n"; str = strdup(str2); }
|
|
245 EOF
|
|
246
|
|
247 err=`eval "($CC test.c >/dev/null) 2>&1"`
|
|
248 if [ ! -z "$err" ]; then
|
|
249 CCOPTIONS="${CCOPTIONS} -DNO_STRDUP "
|
|
250 echo "no."
|
|
251 else
|
|
252 echo "yes."
|
|
253 fi
|
|
254
|
|
255 rm -f test.c a.out
|
|
256
|
|
257 ##########################################################################
|
|
258 # qsort()
|
|
259
|
|
260 echo $n "${i}Does qsort() exist...$c"
|
|
261
|
|
262 cat > test.c <<EOF
|
|
263 #include <string.h>
|
|
264 main () { qsort(); }
|
|
265 EOF
|
|
266
|
|
267 err=`eval "($CC test.c >/dev/null) 2>&1"`
|
|
268 rm -f test.c a.out
|
|
269
|
|
270 if [ ! -z "$err" ]; then
|
|
271 CCOPTIONS="${CCOPTIONS} -DNO_QSORT"
|
|
272 echo "no."
|
|
273 else
|
|
274 echo "yes."
|
|
275 fi
|
|
276
|
|
277 ##########################################################################
|
|
278
|
|
279 # This is inefficient to do it seperately for each option, but it is
|
|
280 # the cleanest way.
|
|
281
|
|
282 echo "sed \"s:^#@@LIBS@:LIBS=${LIBS}:g\" src/Makefile.in > /tmp/a\$\$.setup" > etc/$0.conf
|
|
283 echo "sed \"s:^#@@CC@:CC=${CC}:g\" /tmp/a\$\$.setup > /tmp/\$\$.setup" >> etc/$0.conf
|
|
284 echo "sed \"s:^#@@CDEBUGFLAGS@:CDEBUGFLAGS=${CDEBUGFLAGS}:g\" /tmp/\$\$.setup > /tmp/a\$\$.setup" >> etc/$0.conf
|
|
285 echo "sed \"s:^#@@RSA@:RSA=${RSA}:g\" /tmp/a\$\$.setup > /tmp/\$\$.setup" >> etc/$0.conf
|
|
286 echo "sed \"s:^#@@AUTHOBJS@:AUTHOBJS=${AUTHOBJS}:g\" /tmp/\$\$.setup > /tmp/a\$\$.setup" >> etc/$0.conf
|
|
287 echo "sed \"s:^#@@CCOPTIONS@:CCOPTIONS=${CCOPTIONS}:g\" /tmp/a\$\$.setup > /tmp/\$\$.setup" >> etc/$0.conf
|
|
288 echo "echo \$\$" >> etc/$0.conf
|
|
289
|
|
290 # This 'fi' is from the first if (checking "-d")
|
|
291 fi
|
|
292
|
|
293 echo ""
|
|
294 echo $n "${i}Generating \"src/Makefile\" from \"src/Makefile.in\"...$c"
|
|
295
|
|
296 SPID=`sh etc/$0.conf`
|
|
297
|
|
298 echo "# This file generated by \"$0\" on `date`." > /tmp/${SPID}.Makefile
|
|
299 echo "# Make changes to \"Makefile.in\" and run the setup script" >> /tmp/${SPID}.Makefile
|
|
300 echo "#" >> /tmp/${SPID}.Makefile
|
|
301
|
|
302 cat /tmp/${SPID}.Makefile > src/Makefile
|
|
303 cat /tmp/${SPID}.setup >> src/Makefile
|
|
304
|
|
305 rm -f /tmp/${SPID}.setup
|
|
306 rm -f /tmp/a${SPID}.setup
|
|
307 rm -f /tmp/${SPID}.Makefile
|
|
308
|
|
309 echo "Done."
|
|
310 echo ""
|
|
311 echo " use 'make <option>' to compile the server."
|
|
312 echo ""
|
|
313 echo " To change the server game configuration check the file \"src/config.h\"."
|
|
314 echo ""
|
|
315
|
|
316 exit
|