1#
2# Copyright (C) 2002  Erik Latoshek [forester] (laterk@inbox.lv)
3# Copyright (C) 2001  _type_in_
4#
5# This program is free software; you can redistribute it and/or
6# modify it under the terms of the GNU General Public License
7# as published by the Free Software Foundation; either version 2
8# of the License, or (at your option) any later version.
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program; if not, write to the Free Software
17# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18#
19
20# Makefile.BORLAND -
21#   Makefile for Borland's/Inprise's free command-line win32 tools
22#   Tested with Version 5.5
23
24# attention!
25#  on some win95 systems even if there are valid ilink32.cfg file,
26#  ilink32 does not find objects in lib dir! notice, that on NT all works fine
27#  so if you get a error that c0x32.obj cannot be found uncomment this macro
28#LINK_LIBS_PATH = "c:\program files\bcc55\lib"
29#  -> ofcourse set path to your path
30#  -> this was detected in 5.5
31
32srcdir      = .
33
34# prefix is the directory where the bnetd binary
35# distribution will be installed
36prefix      = .
37exec_prefix = .\bnetd
38
39bindir      = ${exec_prefix}\bin
40sbindir     = ${exec_prefix}\sbin
41mandir      = ${prefix}\man
42confdir     = ${prefix}\conf
43sharedir    = ${prefix}\var
44filesdir    = ${sharedir}\files
45usersdir    = ${sharedir}\users
46clandir	    = ${sharedir}\clans
47teamdir     = ${sharedir}\teams
48reportsdir  = ${sharedir}\reports
49chanlogsdir = ${sharedir}\chanlogs
50
51TOPDIR      = ${srcdir}\..
52INSTALLDIR  = ${prefix}
53
54OBJDIR      = ${srcdir}\..\obj\bcc\
55
56SRC_SRCDIR      = ${srcdir}
57SRC_BINDIR      = ${srcdir}\..\bin
58SRC_SBINDIR     = ${srcdir}\..\sbin
59SRC_MANDIR      = ${srcdir}\..\man
60SRC_CONFDIR     = ${SRCDIR}\..\conf
61SRC_SHAREDIR    = ${SRCDIR}\..\files
62
63SRC_ACDIR       = ${SRC_SRCDIR}\autoconf
64SRC_BNETDDIR    = ${SRC_SRCDIR}\bnetd
65SRC_D2CSDIR	= ${SRC_SRCDIR}\d2cs
66SRC_D2DBSDIR	= ${SRC_SRCDIR}\d2dbs
67SRC_BNIUTILSDIR = ${SRC_SRCDIR}\bniutils
68SRC_BNPASSDIR   = ${SRC_SRCDIR}\bnpass
69SRC_BNPROXYDIR  = ${SRC_SRCDIR}\bnproxy
70SRC_BNTRACKDDIR = ${SRC_SRCDIR}\bntrackd
71SRC_CLIENTDIR   = ${SRC_SRCDIR}\client
72SRC_COMMONDIR   = ${SRC_SRCDIR}\common
73SRC_COMPATDIR   = ${SRC_SRCDIR}\compat
74SRC_DEBUGDIR    = ${SRC_SRCDIR}\debug
75SRC_WIN32DIR	= ${SRC_SRCDIR}\win32
76SRC_CDBDIR      = ${SRC_SRCDIR}\tinycdb
77SRC_ZLIBDIR     = ${SRC_SRCDIR}\zlib
78
79MKDIR           = md
80
81RMF             = del
82
83#del /q is better if available, as it works on a non-english OS
84!if ${OS}==Windows_NT
85RMFALL = del /Q
86!else
87RMFALL = echo y|del
88!endif
89
90RMDIR           = rmdir
91
92ECHO            = echo
93
94SED             = notavailable
95
96INSTALL         = notavailable
97INSTALL_PROGRAM = notavailable
98INSTALL_DATA    = notavailable
99INSTALL_SCRIPT  = notavailable
100INSTALL_DIRS    = mkdir
101
102CC      = bcc32
103RC      = brc32
104# Grr... warning 8060 complains about if (!(var = create())) and the compiler stops
105# working correctly after 20 or 30 warnings so we have to disable it.
106# Warning 8057 is that a function parameter is unused... this is probably intentional so
107# this only makes the compile noisy.
108
109#Note on MYSQL support:
110#libmySQL.lib has to be converted to work with borland, use this borland tool:
111#COFF2OMF libmySQL.lib libmySQL_bc.lib
112#Or create it from the dll file:
113#IMPLIB libmysql_bc.lib libmysql.dll
114#However the data alignment has to be set to "quad word", thus the -a8 in SQLFLAGS
115#This might not work flawless, MYSQL suggests to use their static libs from http://www.mysql.com/downloads/os-win32.html
116
117!ifdef WITH_GUI
118bnetd_RESOURCES	= ${SRC_WIN32DIR}\resource.res
119d2cs_RESOURCES	= ${SRC_WIN32DIR}\d2cs_resource.res
120d2dbs_RESOURCES	= ${SRC_WIN32DIR}\d2dbs_resource.res
121GUIBCCFLAGS	= -tWM -DWIN32_GUI
122LINKPREFIX	=  /aa c0w32
123LINKPOSTFIX 	= cw32mt import32 , ,
124!else
125LINKPREFIX	=  /ap c0x32
126LINKPOSTFIX 	= cw32 import32
127!endif
128
129!ifdef WITH_SQL_MYSQL
130SQLFLAGS = -DWITH_SQL_MYSQL -a8
131!endif
132
133!ifdef WITH_SQL_ODBC
134SQLFLAGS = -DWITH_SQL_ODBC
135!endif
136
137!ifdef WITH_CDB
138CDBFLAGS = -DWITH_CDB
139!endif
140
141CFLAGS      = -v -y -O2 -d -j2 -w-8060 -w-8057
142CPPFLAGS    = -DWIN32 -I${SRC_SRCDIR} \
143                -DBNETD_DEFAULT_CONF_FILE=\"${bnetd_DEFCONFFILE:\=\\}\" \
144		-DD2CS_DEFAULT_CONF_FILE=\"${d2cs_DEFCONFFILE:\=\\}\" \
145		-DD2DBS_DEFAULT_CONF_FILE=\"${d2dbs_DEFCONFFILE:\=\\}\" \
146		${SQLFLAGS} ${CDBFLAGS} ${GUIBCCFLAGS}
147COMPILE     = ${CC} ${CFLAGS} ${CPPFLAGS} -c
148LINK        = ilink32 -v -L${LINK_LIBS_PATH} -I${OBJDIR}
149!ifdef WITH_SQL_MYSQL
150!ifdef WITH_SQL_ODBC
151LINK_LIBS   = libmySQL_bc.lib odbc32.lib
152!else
153LINK_LIBS   = libmySQL_bc.lib
154!endif
155!else
156!ifdef WITH_SQL_ODBC
157LINK_LIBS   = odbc32.lib
158!else
159LINK_LIBS   =
160!endif
161!endif
162
163bnetd_DEFCONFFILE   = ${confdir}\bnetd.conf
164bnetd_SBIN          = ${SRC_SBINDIR}\bnetd.exe
165bnetd_OBJECTS       = \
166    ${SRC_BNETDDIR}\main.obj \
167    ${SRC_BNETDDIR}\server.obj \
168    ${SRC_BNETDDIR}\connection.obj \
169    ${SRC_BNETDDIR}\message.obj \
170    ${SRC_BNETDDIR}\handle_init.obj \
171    ${SRC_BNETDDIR}\handle_bnet.obj \
172    ${SRC_BNETDDIR}\handle_file.obj \
173    ${SRC_BNETDDIR}\handle_bot.obj \
174    ${SRC_BNETDDIR}\handle_telnet.obj \
175    ${SRC_BNETDDIR}\handle_irc.obj \
176    ${SRC_BNETDDIR}\handle_udp.obj \
177    ${SRC_BNETDDIR}\handle_anongame.obj \
178    ${SRC_BNETDDIR}\channel.obj \
179    ${SRC_BNETDDIR}\channel_conv.obj \
180    ${SRC_BNETDDIR}\game.obj \
181    ${SRC_BNETDDIR}\anongame.obj \
182    ${SRC_BNETDDIR}\friends.obj \
183    ${SRC_BNETDDIR}\command.obj \
184    ${SRC_BNETDDIR}\account.obj \
185    ${SRC_BNETDDIR}\account_wrap.obj \
186    ${SRC_BNETDDIR}\prefs.obj \
187    ${SRC_BNETDDIR}\tick.obj \
188    ${SRC_BNETDDIR}\file.obj \
189    ${SRC_BNETDDIR}\watch.obj \
190    ${SRC_BNETDDIR}\ladder.obj \
191    ${SRC_BNETDDIR}\ladder_calc.obj \
192    ${SRC_BNETDDIR}\adbanner.obj \
193    ${SRC_BNETDDIR}\timer.obj \
194    ${SRC_BNETDDIR}\tracker.obj \
195    ${SRC_BNETDDIR}\ipban.obj \
196    ${SRC_BNETDDIR}\game_conv.obj \
197    ${SRC_BNETDDIR}\autoupdate.obj \
198    ${SRC_BNETDDIR}\helpfile.obj \
199    ${SRC_BNETDDIR}\mail.obj \
200    ${SRC_BNETDDIR}\anongame_infos.obj \
201    ${SRC_BNETDDIR}\anongame_gameresult.obj \
202    ${SRC_BNETDDIR}\storage.obj \
203    ${SRC_BNETDDIR}\runprog.obj \
204    ${SRC_BNETDDIR}\realm.obj \
205    ${SRC_BNETDDIR}\character.obj \
206    ${SRC_BNETDDIR}\udptest_send.obj \
207    ${SRC_BNETDDIR}\versioncheck.obj \
208    ${SRC_BNETDDIR}\handle_d2cs.obj \
209    ${SRC_BNETDDIR}\news.obj \
210    ${SRC_BNETDDIR}\irc.obj \
211    ${SRC_BNETDDIR}\alias_command.obj \
212    ${SRC_BNETDDIR}\storage_file.obj \
213    ${SRC_BNETDDIR}\file_plain.obj \
214    ${SRC_BNETDDIR}\file_cdb.obj \
215    ${SRC_BNETDDIR}\storage_sql.obj \
216    ${SRC_BNETDDIR}\sql_mysql.obj \
217    ${SRC_BNETDDIR}\sql_odbc.obj \
218    ${SRC_BNETDDIR}\sql_dbcreator.obj \
219    ${SRC_BNETDDIR}\command_groups.obj \
220    ${SRC_BNETDDIR}\output.obj \
221    ${SRC_BNETDDIR}\tournament.obj \
222    ${SRC_BNETDDIR}\anongame_maplists.obj \
223    ${SRC_BNETDDIR}\clan.obj \
224    ${SRC_BNETDDIR}\topic.obj \
225    ${SRC_BNETDDIR}\ladder_binary.obj \
226    ${SRC_BNETDDIR}\support.obj \
227    ${SRC_BNETDDIR}\team.obj \
228    ${SRC_BNETDDIR}\attrgroup.obj \
229    ${SRC_BNETDDIR}\attrlayer.obj \
230    ${SRC_BNETDDIR}\cmdline.obj \
231    ${SRC_WIN32DIR}\service.obj \
232    ${SRC_COMMONDIR}\hexdump.obj \
233    ${SRC_COMMONDIR}\bn_type.obj \
234    ${SRC_COMMONDIR}\packet.obj \
235    ${SRC_COMMONDIR}\queue.obj \
236    ${SRC_COMMONDIR}\util.obj \
237    ${SRC_COMMONDIR}\network.obj \
238    ${SRC_COMMONDIR}\list.obj \
239    ${SRC_COMMONDIR}\eventlog.obj \
240    ${SRC_COMMONDIR}\bnettime.obj \
241    ${SRC_COMMONDIR}\bnethash.obj \
242    ${SRC_COMMONDIR}\bnethashconv.obj \
243    ${SRC_COMMONDIR}\addr.obj \
244    ${SRC_COMMONDIR}\hashtable.obj \
245    ${SRC_COMMONDIR}\give_up_root_privileges.obj \
246    ${SRC_COMMONDIR}\token.obj \
247    ${SRC_COMMONDIR}\proginfo.obj \
248    ${SRC_COMMONDIR}\rlimit.obj \
249    ${SRC_COMMONDIR}\tag.obj \
250    ${SRC_COMMONDIR}\trans.obj \
251    ${SRC_COMMONDIR}\fdwatch.obj \
252    ${SRC_COMMONDIR}\fdwatch_poll.obj \
253    ${SRC_COMMONDIR}\fdwatch_select.obj \
254    ${SRC_COMMONDIR}\xalloc.obj \
255    ${SRC_COMMONDIR}\rcm.obj \
256    ${SRC_COMMONDIR}\conf.obj \
257    ${SRC_COMPATDIR}\pdir.obj \
258    ${SRC_COMPATDIR}\inet_aton.obj \
259    ${SRC_COMPATDIR}\inet_ntoa.obj \
260    ${SRC_COMPATDIR}\strdup.obj \
261    ${SRC_COMPATDIR}\strerror.obj \
262    ${SRC_COMPATDIR}\strtoul.obj \
263    ${SRC_COMPATDIR}\strftime.obj \
264    ${SRC_COMPATDIR}\strcasecmp.obj \
265    ${SRC_COMPATDIR}\strncasecmp.obj \
266    ${SRC_COMPATDIR}\strsep.obj \
267    ${SRC_COMPATDIR}\psock.obj \
268    ${SRC_COMPATDIR}\uname.obj \
269    ${SRC_COMPATDIR}\gettimeofday.obj \
270    ${SRC_COMPATDIR}\difftime.obj \
271    ${SRC_COMPATDIR}\memset.obj \
272    ${SRC_COMPATDIR}\memcpy.obj \
273    ${SRC_COMPATDIR}\mmap.obj \
274    ${SRC_COMPATDIR}\getopt.obj \
275    ${SRC_CDBDIR}\cdb_init.obj \
276    ${SRC_CDBDIR}\cdb_find.obj \
277    ${SRC_CDBDIR}\cdb_findnext.obj \
278    ${SRC_CDBDIR}\cdb_seek.obj \
279    ${SRC_CDBDIR}\cdb_seq.obj \
280    ${SRC_CDBDIR}\cdb_unpack.obj \
281    ${SRC_CDBDIR}\cdb_make_add.obj \
282    ${SRC_CDBDIR}\cdb_make_put.obj \
283    ${SRC_CDBDIR}\cdb_make_find.obj \
284    ${SRC_CDBDIR}\cdb_make.obj \
285    ${SRC_CDBDIR}\cdb_hash.obj \
286    $(SRC_ZLIBDIR)\pvpgn_adler32.obj \
287    $(SRC_ZLIBDIR)\pvpgn_deflate.obj \
288    $(SRC_ZLIBDIR)\pvpgn_trees.obj \
289    $(SRC_ZLIBDIR)\pvpgn_zutil.obj \
290    ${SRC_WIN32DIR}\winmain.obj
291
292
293sbnetd_SBIN	= ${SRC_SBINDIR}\sbnetd.exe
294sbnetd_OBJECTS	= ${SRC_DEBUGDIR}\sbnetd.obj \
295     ${SRC_COMPATDIR}\strerror.obj
296
297d2cs_DEFCONFFILE = ${confdir}\d2cs.conf
298d2cs_SBIN = ${SRC_SBINDIR}\d2cs.exe
299d2cs_OBJECTS    = \
300    ${SRC_D2CSDIR}\main.obj \
301    ${SRC_D2CSDIR}\d2gs.obj \
302    ${SRC_D2CSDIR}\handle_d2gs.obj \
303    ${SRC_D2CSDIR}\serverqueue.obj \
304    ${SRC_D2CSDIR}\connection.obj \
305    ${SRC_D2CSDIR}\game.obj \
306    ${SRC_D2CSDIR}\server.obj \
307    ${SRC_D2CSDIR}\handle_init.obj \
308    ${SRC_D2CSDIR}\handle_d2cs.obj \
309    ${SRC_D2CSDIR}\d2charfile.obj \
310    ${SRC_D2CSDIR}\d2charlist.obj \
311    ${SRC_D2CSDIR}\gamequeue.obj \
312    ${SRC_D2CSDIR}\prefs.obj \
313    ${SRC_D2CSDIR}\cmdline.obj \
314    ${SRC_D2CSDIR}\bnetd.obj \
315    ${SRC_D2CSDIR}\handle_bnetd.obj \
316    ${SRC_D2CSDIR}\handle_signal.obj \
317    ${SRC_D2CSDIR}\s2s.obj \
318    ${SRC_D2CSDIR}\net.obj \
319    ${SRC_D2CSDIR}\d2ladder.obj \
320    ${SRC_COMMONDIR}\conf.obj \
321    ${SRC_COMMONDIR}\hashtable.obj \
322    ${SRC_COMMONDIR}\hexdump.obj \
323    ${SRC_COMMONDIR}\eventlog.obj \
324    ${SRC_COMMONDIR}\fdwatch.obj \
325    ${SRC_COMMONDIR}\fdwatch_poll.obj \
326    ${SRC_COMMONDIR}\fdwatch_select.obj \
327    ${SRC_COMMONDIR}\list.obj \
328    ${SRC_COMMONDIR}\packet.obj \
329    ${SRC_COMMONDIR}\bn_type.obj \
330    ${SRC_COMMONDIR}\addr.obj \
331    ${SRC_COMMONDIR}\util.obj \
332    ${SRC_COMMONDIR}\queue.obj \
333    ${SRC_COMMONDIR}\network.obj \
334    ${SRC_COMMONDIR}\rlimit.obj \
335    ${SRC_COMMONDIR}\trans.obj \
336    ${SRC_COMMONDIR}\d2char_checksum.obj \
337    ${SRC_COMMONDIR}\fdwatch_select.obj \
338    ${SRC_COMMONDIR}\xalloc.obj \
339    ${SRC_COMMONDIR}\xstring.obj \
340    ${SRC_COMPATDIR}\inet_aton.obj \
341    ${SRC_COMPATDIR}\inet_ntoa.obj \
342    ${SRC_COMPATDIR}\strdup.obj \
343    ${SRC_COMPATDIR}\strerror.obj \
344    ${SRC_COMPATDIR}\strtoul.obj \
345    ${SRC_COMPATDIR}\strftime.obj \
346    ${SRC_COMPATDIR}\strcasecmp.obj \
347    ${SRC_COMPATDIR}\strncasecmp.obj \
348    ${SRC_COMPATDIR}\psock.obj \
349    ${SRC_COMPATDIR}\uname.obj \
350    ${SRC_COMPATDIR}\gettimeofday.obj \
351    ${SRC_COMPATDIR}\difftime.obj \
352    ${SRC_COMPATDIR}\pdir.obj \
353    ${SRC_COMPATDIR}\strsep.obj \
354    ${SRC_WIN32DIR}\service.obj \
355    ${SRC_WIN32DIR}\d2cs_winmain.obj
356
357d2dbs_DEFCONFFILE = ${confdir}\d2dbs.conf
358d2dbs_SBIN = ${SRC_SBINDIR}\d2dbs.exe
359d2dbs_OBJECTS = \
360    ${SRC_D2DBSDIR}\main.obj \
361    ${SRC_D2DBSDIR}\charlock.obj \
362    ${SRC_D2DBSDIR}\d2ladder.obj \
363    ${SRC_D2DBSDIR}\dbserver.obj \
364    ${SRC_D2DBSDIR}\dbspacket.obj \
365    ${SRC_D2DBSDIR}\cmdline.obj \
366    ${SRC_D2DBSDIR}\prefs.obj \
367    ${SRC_D2DBSDIR}\dbsdupecheck.obj \
368    ${SRC_D2DBSDIR}\handle_signal.obj \
369    ${SRC_COMMONDIR}\conf.obj \
370    ${SRC_COMMONDIR}\list.obj \
371    ${SRC_COMMONDIR}\eventlog.obj \
372    ${SRC_COMMONDIR}\hexdump.obj \
373    ${SRC_COMMONDIR}\bn_type.obj \
374    ${SRC_COMMONDIR}\util.obj \
375    ${SRC_COMMONDIR}\addr.obj \
376    ${SRC_COMMONDIR}\d2char_checksum.obj \
377    ${SRC_COMMONDIR}\xalloc.obj \
378    ${SRC_COMMONDIR}\packet.obj \
379    ${SRC_COMMONDIR}\network.obj \
380    ${SRC_COMMONDIR}\xstring.obj \
381    ${SRC_COMPATDIR}\inet_aton.obj \
382    ${SRC_COMPATDIR}\psock.obj \
383    ${SRC_COMPATDIR}\strerror.obj \
384    ${SRC_COMPATDIR}\strsep.obj \
385    ${SRC_WIN32DIR}\service.obj \
386    ${SRC_WIN32DIR}\d2dbs_winmain.obj
387
388bnproxy_SBIN    = ${SRC_SBINDIR}\bnproxy.exe
389bnproxy_OBJECTS = ${SRC_BNPROXYDIR}\bnproxy.obj \
390${SRC_BNPROXYDIR}\virtconn.obj \
391${SRC_COMMONDIR}\hexdump.obj \
392${SRC_COMMONDIR}\packet.obj \
393${SRC_COMMONDIR}\queue.obj \
394${SRC_COMMONDIR}\list.obj \
395${SRC_COMMONDIR}\bn_type.obj \
396${SRC_COMMONDIR}\network.obj \
397${SRC_COMMONDIR}\eventlog.obj \
398${SRC_COMMONDIR}\util.obj \
399${SRC_COMMONDIR}\xalloc.obj \
400${SRC_COMPATDIR}\inet_ntoa.obj \
401${SRC_COMPATDIR}\strerror.obj \
402${SRC_COMPATDIR}\psock.obj
403
404bntrackd_SBIN   = ${SRC_SBINDIR}\bntrackd.exe
405bntrackd_OBJECTS= ${SRC_BNTRACKDDIR}\bntrackd.obj \
406${SRC_COMMONDIR}\util.obj \
407${SRC_COMMONDIR}\list.obj \
408${SRC_COMMONDIR}\eventlog.obj \
409${SRC_COMMONDIR}\hexdump.obj \
410${SRC_COMMONDIR}\xalloc.obj \
411${SRC_COMPATDIR}\inet_ntoa.obj \
412${SRC_COMPATDIR}\strerror.obj \
413${SRC_COMPATDIR}\psock.obj
414
415bnchat_BIN  = ${SRC_BINDIR}\bnchat.exe
416bnchat_OBJECTS  = ${SRC_CLIENTDIR}\bnchat.obj \
417${SRC_CLIENTDIR}\client.obj \
418${SRC_CLIENTDIR}\client_connect.obj \
419${SRC_CLIENTDIR}\udptest.obj \
420${SRC_COMMONDIR}\packet.obj \
421${SRC_COMMONDIR}\queue.obj \
422${SRC_COMMONDIR}\bn_type.obj \
423${SRC_COMMONDIR}\network.obj \
424${SRC_COMMONDIR}\eventlog.obj \
425${SRC_COMMONDIR}\hexdump.obj \
426${SRC_COMMONDIR}\bnethash.obj \
427${SRC_COMMONDIR}\bnethashconv.obj \
428${SRC_COMMONDIR}\util.obj \
429${SRC_COMMONDIR}\bnettime.obj \
430${SRC_COMMONDIR}\proginfo.obj \
431${SRC_COMMONDIR}\xalloc.obj \
432${SRC_COMPATDIR}\inet_ntoa.obj \
433${SRC_COMPATDIR}\strerror.obj \
434${SRC_COMPATDIR}\psock.obj \
435${SRC_COMPATDIR}\vsnprintf.obj \
436${SRC_COMPATDIR}\gettimeofday.obj
437
438bnpass_BIN  = ${SRC_BINDIR}\bnpass.exe
439bnpass_OBJECTS  = ${SRC_BNPASSDIR}\bnpass.obj \
440${SRC_COMMONDIR}\bnethash.obj \
441${SRC_COMMONDIR}\eventlog.obj \
442${SRC_COMMONDIR}\hexdump.obj \
443${SRC_COMPATDIR}\strerror.obj
444
445bnftp_BIN   = ${SRC_BINDIR}\bnftp.exe
446bnftp_OBJECTS   = ${SRC_CLIENTDIR}\bnftp.obj \
447${SRC_CLIENTDIR}\client.obj \
448${SRC_COMMONDIR}\hexdump.obj \
449${SRC_COMMONDIR}\packet.obj \
450${SRC_COMMONDIR}\queue.obj \
451${SRC_COMMONDIR}\bn_type.obj \
452${SRC_COMMONDIR}\network.obj \
453${SRC_COMMONDIR}\eventlog.obj \
454${SRC_COMMONDIR}\bnettime.obj \
455${SRC_COMMONDIR}\util.obj \
456${SRC_COMMONDIR}\xalloc.obj \
457${SRC_COMPATDIR}\inet_ntoa.obj \
458${SRC_COMPATDIR}\strerror.obj \
459${SRC_COMPATDIR}\strftime.obj \
460${SRC_COMPATDIR}\psock.obj \
461${SRC_COMPATDIR}\gettimeofday.obj
462
463bnbot_BIN   = ${SRC_BINDIR}\bnbot.exe
464bnbot_OBJECTS   = ${SRC_CLIENTDIR}\bnbot.obj \
465${SRC_CLIENTDIR}\client.obj \
466${SRC_COMMONDIR}\packet.obj \
467${SRC_COMMONDIR}\bn_type.obj \
468${SRC_COMMONDIR}\network.obj \
469${SRC_COMMONDIR}\eventlog.obj \
470${SRC_COMMONDIR}\hexdump.obj \
471${SRC_COMMONDIR}\util.obj \
472${SRC_COMMONDIR}\xalloc.obj \
473${SRC_COMPATDIR}\inet_ntoa.obj \
474${SRC_COMPATDIR}\strerror.obj \
475${SRC_COMPATDIR}\psock.obj
476
477bnstat_BIN  = ${SRC_BINDIR}\bnstat.exe
478bnstat_OBJECTS  = ${SRC_CLIENTDIR}\bnstat.obj \
479${SRC_CLIENTDIR}\client.obj \
480${SRC_CLIENTDIR}\client_connect.obj \
481${SRC_CLIENTDIR}\udptest.obj \
482${SRC_COMMONDIR}\packet.obj \
483${SRC_COMMONDIR}\queue.obj \
484${SRC_COMMONDIR}\bn_type.obj \
485${SRC_COMMONDIR}\network.obj \
486${SRC_COMMONDIR}\eventlog.obj \
487${SRC_COMMONDIR}\hexdump.obj \
488${SRC_COMMONDIR}\bnethash.obj \
489${SRC_COMMONDIR}\bnethashconv.obj \
490${SRC_COMMONDIR}\util.obj \
491${SRC_COMMONDIR}\bnettime.obj \
492${SRC_COMMONDIR}\proginfo.obj \
493${SRC_COMMONDIR}\xalloc.obj \
494${SRC_COMPATDIR}\inet_ntoa.obj \
495${SRC_COMPATDIR}\strerror.obj \
496${SRC_COMPATDIR}\strftime.obj \
497${SRC_COMPATDIR}\psock.obj \
498${SRC_COMPATDIR}\gettimeofday.obj
499
500bnilist_BIN = ${SRC_BINDIR}\bnilist.exe
501bnilist_OBJECTS = ${SRC_BNIUTILSDIR}\bnilist.obj \
502${SRC_BNIUTILSDIR}\fileio.obj \
503${SRC_BNIUTILSDIR}\tga.obj \
504${SRC_COMPATDIR}\strerror.obj
505
506bni2tga_BIN = ${SRC_BINDIR}\bni2tga.exe
507bni2tga_OBJECTS = ${SRC_BNIUTILSDIR}\bni2tga.obj \
508${SRC_BNIUTILSDIR}\fileio.obj \
509${SRC_COMPATDIR}\strerror.obj
510
511bniextract_BIN  = ${SRC_BINDIR}\bniextract.exe
512bniextract_OBJECTS= ${SRC_BNIUTILSDIR}\bniextract.obj \
513${SRC_BNIUTILSDIR}\fileio.obj \
514${SRC_BNIUTILSDIR}\tga.obj \
515${SRC_BNIUTILSDIR}\bni.obj \
516${SRC_COMPATDIR}\strerror.obj
517
518bnibuild_BIN    = ${SRC_BINDIR}\bnibuild.exe
519bnibuild_OBJECTS= ${SRC_BNIUTILSDIR}\bnibuild.obj \
520${SRC_BNIUTILSDIR}\fileio.obj \
521${SRC_BNIUTILSDIR}\tga.obj \
522${SRC_BNIUTILSDIR}\bni.obj \
523${SRC_COMPATDIR}\strerror.obj
524
525tgainfo_BIN = ${SRC_BINDIR}\tgainfo.exe
526tgainfo_OBJECTS = ${SRC_BNIUTILSDIR}\tgainfo.obj \
527${SRC_BNIUTILSDIR}\fileio.obj \
528${SRC_BNIUTILSDIR}\tga.obj \
529${SRC_COMPATDIR}\strerror.obj
530
531timetest_BIN 		= ${SRC_BINDIR}\timetest.exe
532timetest_OBJECTS 	= ${SRC_DEBUGDIR}\timetest.obj \
533${SRC_COMMONDIR}\bn_type.obj \
534${SRC_COMMONDIR}\eventlog.obj \
535${SRC_COMMONDIR}\hexdump.obj \
536${SRC_COMMONDIR}\bnettime.obj \
537${SRC_COMPATDIR}\strerror.obj \
538${SRC_COMPATDIR}\gettimeofday.obj
539
540listtest_BIN 		= ${SRC_BINDIR}\listtest.exe
541listtest_OBJECTS	= ${SRC_DEBUGDIR}\listtest.obj \
542${SRC_COMMONDIR}\list.obj \
543${SRC_COMMONDIR}\eventlog.obj \
544${SRC_COMMONDIR}\hexdump.obj \
545${SRC_COMPATDIR}\strerror.obj \
546${SRC_COMPATDIR}\strdup.obj
547
548hashtabletest_BIN	= ${SRC_BINDIR}\hashtabletest.exe
549hashtabletest_OBJECTS	= ${SRC_DEBUGDIR}\hashtabletest.obj \
550${SRC_COMMONDIR}\hashtable.obj \
551${SRC_COMMONDIR}\eventlog.obj \
552${SRC_COMMONDIR}\hexdump.obj \
553${SRC_COMPATDIR}\strerror.obj \
554${SRC_COMPATDIR}\strdup.obj
555
556addrtest_BIN		= ${SRC_BINDIR}\addrtest.exe
557addrtest_OBJECTS	= ${SRC_DEBUGDIR}\addrtest.obj \
558${SRC_COMMONDIR}\addr.obj \
559${SRC_COMMONDIR}\util.obj \
560${SRC_COMMONDIR}\list.obj \
561${SRC_COMMONDIR}\eventlog.obj \
562${SRC_COMMONDIR}\hexdump.obj \
563${SRC_COMPATDIR}\inet_aton.obj \
564${SRC_COMPATDIR}\inet_ntoa.obj \
565${SRC_COMPATDIR}\strerror.obj \
566${SRC_COMPATDIR}\psock.obj \
567${SRC_COMPATDIR}\memset.obj \
568${SRC_COMPATDIR}\memcpy.obj \
569${SRC_COMPATDIR}\strdup.obj
570
571cdb_BIN			= ${SRC_BINDIR}\bncdb.exe
572cdb_OBJECTS		= ${SRC_CDBDIR}\cdb.obj \
573${SRC_CDBDIR}\cdb_init.obj \
574${SRC_CDBDIR}\cdb_seek.obj \
575${SRC_CDBDIR}\cdb_seq.obj \
576${SRC_CDBDIR}\cdb_find.obj \
577${SRC_CDBDIR}\cdb_findnext.obj \
578${SRC_CDBDIR}\cdb_unpack.obj \
579${SRC_CDBDIR}\cdb_make_add.obj \
580${SRC_CDBDIR}\cdb_make_put.obj \
581${SRC_CDBDIR}\cdb_make_find.obj \
582${SRC_CDBDIR}\cdb_make.obj \
583${SRC_CDBDIR}\cdb_hash.obj \
584${SRC_COMMONDIR}\eventlog.obj \
585${SRC_COMMONDIR}\hexdump.obj \
586${SRC_COMMONDIR}\xalloc.obj \
587${SRC_COMPATDIR}\mmap.obj \
588${SRC_COMPATDIR}\getopt.obj \
589${SRC_COMPATDIR}\strerror.obj
590
591OBJECTS		= ${bnetd_OBJECTS} ${d2cs_OBJECTS} ${d2dbs_OBJECTS} ${bntrackd_OBJECTS} ${bnchat_OBJECTS} ${bnpass_OBJECTS} ${bnbot_OBJECTS} ${bnftp_OBJECTS} ${bnstat_OBJECTS} ${bnilist_OBJECTS} ${bni2tga_OBJECTS} ${bniextract_OBJECTS} ${bnibuild_OBJECTS} ${tgainfo_OBJECTS} ${timetest_OBJECTS} ${listtest_OBJECTS} ${hashtabletest_OBJECTS} ${addrtest_OBJECTS} ${cdb_OBJECTS}
592GUISBINS	= ${bnetd_SBIN} ${d2cs_SBIN} ${d2dbs_SBIN}
593SBINS		= ${bnproxy_SBIN} ${bntrackd_SBIN}
594BINS		= ${bnchat_BIN} ${bnpass_BIN} ${bnftp_BIN} ${bnbot_BIN} ${bnstat_BIN} ${bnilist_BIN} ${bni2tga_BIN} ${bniextract_BIN} ${bnibuild_BIN} ${tgainfo_BIN} ${cdb_BIN}
595CONFS		= ad.conf bnetd.conf bnetd_default_user.plain bnetd_default_user.cdb bnmotd.txt channel.conf news.txt bnban.conf bnhelp.conf autoupdate.conf realm.conf bnmaps.conf bnxplevel.conf bnxpcalc.conf news.txt command_groups.conf bnban.conf bnhelp.conf bnalias.conf anongame_infos.conf tournament.conf topics.conf sql_DB_layout.conf address_translation.conf supportfile.conf
596SHARES		= ad000001.smk tos.txt
597OTHERBINS	= ${sbnetd_OBJECTS} ${sbnetd_SBIN}
598DIRS		= ${SRC_BINDIR} ${SRC_SBINDIR}
599
600!ifdef WITH_GUI
601all:	config objdir ${GUISBINS}
602
603 @echo ===================================================================
604 @echo Build GUI versions of bnetd, d2cs and d2dbs.
605 @echo Now building non GUI stuff.
606 @-${RMF} ${SRC_COMMONDIR}\eventlog.obj
607 @make_borland console
608!else
609all:	config objdir ${GUISBINS} ${SBINS} ${BINS}
610 -${RMF} ${SRC_COMMONDIR}\eventlog.obj
611 @echo ===================================================================
612 @echo All applications build.
613 @echo ===================================================================
614!endif
615
616!ifndef WITH_GUI
617console: config objdir ${SBINS} ${BINS}
618 -${RMF} ${SRC_COMMONDIR}\eventlog.obj
619 @echo ===================================================================
620 @echo remaining sbin and bin applications build.
621 @echo ===================================================================
622!endif
623
624
625objdir:
626	if not exist ${OBJDIR} ${INSTALL_DIRS} ${OBJDIR}
627
628clean:
629# win95 supports only 1 parameter to 'del' & 'rmdir'
630# and wants 'y' for *.*
631    -${RMF} ${SRC_BNTRACKDDIR}\*.obj
632    -${RMF} ${SRC_CLIENTDIR}\*.obj
633    -${RMF} ${SRC_BNIUTILSDIR}\*.obj
634    -${RMF} ${SRC_BNPASSDIR}\*.obj
635    -${RMF} ${SRC_BNPROXYDIR}\*.obj
636    -${RMF} ${SRC_COMPATDIR}\*.obj
637    -${RMF} ${SRC_COMMONDIR}\*.obj
638    -${RMF} ${SRC_WIN32DIR}\*.obj
639    -${RMF} ${SRC_BNETDDIR}\*.obj
640    -${RMF} ${SRC_D2DBSDIR}\*.obj
641    -${RMF} ${SRC_D2CSDIR}\*.obj
642    -${RMF} ${SRC_CDBDIR}\*.obj
643    -${RMF} ${SRC_ZLIBDIR}\*.obj
644    -${RMF} ${SRC_BNETDDIR}\*.res
645    -${RMF} ${SRC_COMPATDIR}\*.g_obj
646    -${RMF} ${SRC_COMMONDIR}\*.g_obj
647    -${RMF} ${SRC_WIN32DIR}\*.g_obj
648    -${RMF} ${SRC_BNETDDIR}\*.g_obj
649    -${RMF} ${SRC_CDBDIR}\*.g_obj
650    -${RMF} ${SRC_ZLIBDIR}\*.g_obj
651    -${RMFALL} ${SRC_BINDIR}\*.*
652    -${RMFALL} ${SRC_SBINDIR}\*.*
653    -${RMFALL} ${OBJDIR}\*.*
654    -${RMDIR} ${SRC_BINDIR}
655    -${RMDIR} ${SRC_SBINDIR}
656    -${RMDIR} ${OBJDIR}
657
658distclean: clean
659    -${RMF} ${SRC_CONFDIR}\bnetd.conf
660    -${RMF} ${SRC_CONFDIR}\d2dbs.conf
661    -${RMF} ${SRC_SRCDIR}\config.cache
662    -${RMF} ${SRC_SRCDIR}\config.log
663    -${RMF} ${SRC_SRCDIR}\config.status
664    -${RMF} ${SRC_SRCDIR}\Makefile
665    -${RMF} ${SRC_SRCDIR}\config.h
666    -${RMDIR} ${SRC_BINDIR}
667    -${RMDIR} ${SRC_SBINDIR}
668
669clean-compile: clean all
670
671config: ${SRC_SRCDIR}\Makefile
672
673${SRC_SRCDIR}\Makefile: Makefile.BORLAND
674    copy Makefile.BORLAND ${SRC_SRCDIR}\Makefile
675
676${SRC_BINDIR}:
677    if not exist $@ ${INSTALL_DIRS} $@
678
679${SRC_SBINDIR}:
680    if not exist $@ ${INSTALL_DIRS} $@
681
682install: config all
683    -${INSTALL_DIRS} ${INSTALLDIR}
684    -${INSTALL_DIRS} ${INSTALLDIR}\bin
685    -${INSTALL_DIRS} ${INSTALLDIR}\sbin
686    -${INSTALL_DIRS} ${INSTALLDIR}\var
687    -${INSTALL_DIRS} ${INSTALLDIR}\var\files
688    -${INSTALL_DIRS} ${INSTALLDIR}\var\users
689    -${INSTALL_DIRS} ${INSTALLDIR}\var\reports
690    -${INSTALL_DIRS} ${INSTALLDIR}\var\chanlogs
691    -${INSTALL_DIRS} ${INSTALLDIR}\etc
692    copy ${TOPDIR}\files\*.* ${INSTALLDIR}\var\files
693    copy ${TOPDIR}\conf\*.* ${INSTALLDIR}\etc
694    copy ${INSTALLDIR}\etc\bnetd.conf.win32 ${INSTALLDIR}\etc\bnetd.conf
695    copy ${INSTALLDIR}\etc\d2cs.conf.win32 ${INSTALLDIR}\etc\d2cs.conf
696    copy ${INSTALLDIR}\etc\d2dbs.conf.win32 ${INSTALLDIR}\etc\d2dbs.conf
697    copy ${TOPDIR}\sbin\*.exe ${INSTALLDIR}\sbin
698    copy ${TOPDIR}\bin\*.exe ${INSTALLDIR}\bin
699    copy ${TOPDIR}\*.* ${INSTALLDIR}
700    echo @cd ${INSTALLDIR} > ${INSTALLDIR}\bnetd.bat
701    echo @.\sbin\bnetd.exe -c .\etc\bnetd.conf >> ${INSTALLDIR}\bnetd.bat
702
703# The Borland compiler silently ignores -ofilename if it is after the source file
704# The Borland compiler silently ignores -efilename if it is after the object file
705
706.rc.res:
707    ${RC} -r -i${srcdir} -fo$@ $<
708
709.c.obj:
710    ${COMPILE} -o$@ $<
711
712${bnetd_SBIN}: ${bnetd_OBJECTS} ${bnetd_RESOURCES} ${SRC_SBINDIR}
713    ${LINK} ${LINKPREFIX} ${bnetd_OBJECTS}, $@, , ${LINK_LIBS} ${LINKPOSTFIX} ${bnetd_RESOURCES}
714
715${d2cs_SBIN}: ${d2cs_OBJECTS} ${d2cs_RESOURCES} ${SRC_SBINDIR}
716    ${LINK} ${LINKPREFIX} ${d2cs_OBJECTS}, $@, , ${LINK_LIBS} ${LINKPOSTFIX} ${d2cs_RESOURCES}
717
718${d2dbs_SBIN}: ${d2dbs_OBJECTS} ${d2dbs_RESOURCES} ${SRC_SBINDIR}
719    ${LINK} ${LINKPREFIX} ${d2dbs_OBJECTS}, $@, , ${LINK_LIBS} ${LINKPOSTFIX} ${d2dbs_RESOURCES}
720
721${bnproxy_SBIN}: ${bnproxy_OBJECTS} ${SRC_SBINDIR}
722    ${LINK} /ap c0x32 ${bnproxy_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
723
724${bntrackd_SBIN}: ${bntrackd_OBJECTS}  ${SRC_SBINDIR}
725    ${LINK} /ap c0x32 ${bntrackd_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
726
727${bnchat_BIN}: ${bnchat_OBJECTS} ${SRC_BINDIR}
728    ${LINK} /ap c0x32 ${bnchat_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
729
730${bnpass_BIN}: ${bnpass_OBJECTS} ${SRC_BINDIR}
731    ${LINK} /ap c0x32 ${bnpass_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
732
733${bnftp_BIN}: ${bnftp_OBJECTS} ${SRC_BINDIR}
734    ${LINK} /ap c0x32 ${bnftp_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
735
736${bnbot_BIN}: ${bnbot_OBJECTS} ${SRC_BINDIR}
737    ${LINK} /ap c0x32 ${bnbot_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
738
739${bnstat_BIN}: ${bnstat_OBJECTS} ${SRC_BINDIR}
740    ${LINK} /ap c0x32 ${bnstat_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
741
742${bnilist_BIN}: ${bnilist_OBJECTS}
743    ${LINK} /ap c0x32 ${bnilist_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
744
745${bni2tga_BIN}: ${bni2tga_OBJECTS} ${SRC_BINDIR}
746    ${LINK} /ap c0x32 ${bni2tga_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
747
748${bniextract_BIN}: ${bniextract_OBJECTS} ${SRC_BINDIR}
749    ${LINK} /ap c0x32 ${bniextract_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
750
751${bnibuild_BIN}: ${bnibuild_OBJECTS} ${SRC_BINDIR}
752    ${LINK} /ap c0x32 ${bnibuild_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
753
754${tgainfo_BIN}: ${tgainfo_OBJECTS} ${SRC_BINDIR}
755    ${LINK} /ap c0x32 ${tgainfo_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
756
757${timetest_BIN}: ${timetest_OBJECTS} ${SRC_BINDIR}
758    ${LINK} /ap c0x32 ${timetest_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
759
760${listtest_BIN}: ${listtest_OBJECTS} ${SRC_BINDIR}
761    ${LINK} /ap c0x32 ${listtest_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
762
763${hashtabletest_BIN}: ${hashtabletest_OBJECTS} ${SRC_BINDIR}
764    ${LINK} /ap c0x32 ${hashtabletest_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
765
766${addrtest_BIN}: ${addrtest_OBJECTS} ${SRC_BINDIR}
767    ${LINK} /ap c0x32 ${addrtest_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
768
769${cdb_BIN}: ${cdb_OBJECTS} ${SRC_BINDIR}
770    ${LINK} /ap c0x32 ${cdb_OBJECTS}, $@, , ${LINK_LIBS} cw32 import32
771