|
|
1.1 root 1: # GNUmakefile
2:
3: #########################################################################
4: # Makefile for Synchronet BBS for Unix #
5: # For use with GNU make and GNU C Compiler or Borland Kylix C++ #
6: # @format.tab-size 4, @format.use-tabs true #
7: # #
8: # gcc: gmake #
9: # Borland (still in testing/debuging stage): gmake bcc=1 #
10: # #
11: # Optional build targets: dlls, utils, mono, all (default) #
12: #########################################################################
13:
14: # $Id: GNUmakefile,v 1.200 2006/12/31 00:14:04 deuce Exp $
15:
16: SRC_ROOT = ..
17: include $(SRC_ROOT)/build/Common.gmake
18:
19: UTIL_LDFLAGS := $(LDFLAGS)
20: UTIL_LDFLAGS += $(SMBLIB_LDFLAGS) $(UIFC-MT_LDFLAGS) $(CIOLIB-MT_LDFLAGS) $(XPDEV_LDFLAGS)
21: UTIL_LIBS += $(SMBLIB_LIBS)
22:
23: ifndef bcc
24: ifneq ($(os),sunos)
25: LDFLAGS += -lutil
26: endif
27: endif
28:
29: ifeq ($(os),sunos) # Solaris
30: LDFLAGS += -lnsl -lrt
31: endif
32:
33: # So far, only QNX has sem_timedwait()
34: ifeq ($(os),qnx)
35: LDFLAGS += -lsocket
36: endif
37:
38: SBBS_LIBS += -lcl
39:
40: ifdef PREFIX
41: CFLAGS += -DPREFIX=$(PREFIX)
42: endif
43:
44: ifdef USE_DOSEMU
45: CFLAGS += -DUSE_DOSEMU
46: endif
47:
48: ifdef DONT_BLAME_SYNCHRONET
49: CFLAGS += -DDONT_BLAME_SYNCHRONET
50: endif
51:
52: # JS and NSPR setup stuff...
53:
54: ifeq ($(os),sunos)
55: ifeq ($(shell test -f /usr/sfw/lib/mozilla/libmozjs.so && echo "yes"),yes)
56: JSLIBDIR ?= /usr/sfw/lib/mozilla
57: JSLIB ?= mozjs
58: endif
59: ifeq ($(shell test -f /usr/sfw/lib/mozilla/libnspr4.so && echo "yes"),yes)
60: NSPRDIR ?= /usr/sfw/lib/mozilla
61: ifeq ($(shell test -d /usr/sfw/include/mozilla/nspr && echo "yes"),yes)
62: NSPRINCLUDE ?= /usr/sfw/include/mozilla/nspr
63: endif
64: endif
65: endif
66:
67: CFLAGS += -DJAVASCRIPT
68: ifdef JSINCLUDE
69: CFLAGS += -I$(JSINCLUDE)
70: else
71: CFLAGS += -I$(SRC_ROOT)$(DIRSEP)..$(DIRSEP)include$(DIRSEP)mozilla$(DIRSEP)js
72: endif
73: ifdef NSPRINCLUDE
74: CFLAGS += -I$(NSPRINCLUDE)
75: else
76: # Use local NSPR first...
77: CFLAGS += -I/usr/local/include -I$(SRC_ROOT)$(DIRSEP)..$(DIRSEP)include$(DIRSEP)mozilla$(DIRSEP)nspr
78: endif
79: ifdef CRYPTLIBINCLUDE
80: CFLAGS += -I$(CRYPTLIBINCLUDE)
81: else
82: CFLAGS += -I$(SRC_ROOT)/../include/cryptlib
83: endif
84: ifndef JSLIBDIR
85: JSLIBDIR := $(SRC_ROOT)$(DIRSEP)..$(DIRSEP)lib$(DIRSEP)mozilla$(DIRSEP)js$(DIRSEP)$(machine).$(BUILD)
86: endif
87: ifndef JSLIB
88: JSLIB := js
89: endif
90: ifndef NSPRDIR
91: NSPRDIR := $(SRC_ROOT)$(DIRSEP)..$(DIRSEP)lib$(DIRSEP)mozilla$(DIRSEP)nspr$(DIRSEP)$(machine).$(BUILD)
92: endif
93: JS_LDFLAGS += -L$(JSLIBDIR) -l$(JSLIB)
94: #The following is needed for nspr support on Linux
95: ifeq ($(os),linux)
96: JS_LDFLAGS += -ldl
97: endif
98: JS_LDFLAGS += -L/usr/local/lib -L$(NSPRDIR) -lnspr4
99: CFLAGS += $(JS_CFLAGS)
100: LDFLAGS += $(JS_LDFLAGS)
101:
102: ifndef CRYPTLIBDIR
103: CRYPTLIBDIR := $(SRC_ROOT)/../lib/cryptlib/$(os).release
104: endif
105: LDFLAGS += -L$(CRYPTLIBDIR)
106:
107: include sbbsdefs.mk
108: MT_CFLAGS += $(SBBSDEFS)
109:
110: # Set up LD_RUN_PATH for run-time locating of the .so files
111: PWD := $(shell pwd)
112: ifdef SBBSDIR
113: ifeq ($(os),sunos)
114: LD_RUN_PATH := $(SBBSDIR)/exec:$(PWD)/$(LIBODIR):$(PWD)/$(JSLIBDIR):$(PWD)/$(NSPRDIR):$(PWD)/$(CRYPTLIBDIR):/opt/sfw/gcc-3/lib
115: else
116: LD_RUN_PATH := $(SBBSDIR)/exec:$(PWD)/$(LIBODIR):$(PWD)/$(JSLIBDIR):$(PWD)/$(NSPRDIR):$(PWD)/$(CRYPTLIBDIR)
117: endif
118: else
119: ifeq ($(os),sunos)
120: LD_RUN_PATH := $(PWD)/$(LIBODIR):$(PWD)/$(JSLIBDIR):$(PWD)/$(NSPRDIR):$(PWD)/$(CRYPTLIBDIR):/opt/sfw/gcc-3/lib
121: else
122: LD_RUN_PATH := $(PWD)/$(LIBODIR):$(PWD)/$(JSLIBDIR):$(PWD)/$(NSPRDIR):$(PWD)/$(CRYPTLIBDIR)
123: endif
124: endif
125: export LD_RUN_PATH
126:
127: CON_LIBS := -lsbbs -lftpsrvr -lwebsrvr -lmailsrvr -lservices
128: SHLIBOPTS := -shared
129: ifeq ($(os),darwin)
130: MKSHLIB := libtool -dynamic -framework System -lcc_dynamic
131: MKSHPPLIB := libtool -dynamic -framework System -lcc_dynamic -lstdc++
132: SHLIBOPTS :=
133: else
134: ifeq ($(os),sunos)
135: MKSHLIB := /usr/ccs/bin/ld -G
136: MKSHPPLIB := /usr/ccs/bin/ld -G
137: SHLIBOPTS :=
138: else
139: MKSHLIB := $(CC)
140: MKSHPPLIB := $(CXX)
141: endif
142: endif
143:
144: CFLAGS += $(UIFC-MT_CFLAGS) $(XPDEV-MT_CFLAGS) $(SMBLIB_CFLAGS) $(CIOLIB-MT_CFLAGS)
145: LDFLAGS += $(UIFC-MT_LDFLAGS) $(XPDEV-MT_LDFLAGS) $(SMBLIB_LDFLAGS) $(CIOLIB-MT_LDFLAGS)
146:
147: # Monolithic Synchronet executable Build Rule
148: $(SBBSMONO): $(MONO_OBJS) $(OBJS)
149: @echo Linking $@
150: $(QUIET)$(CXX) -o $@ $(LDFLAGS) $(MT_LDFLAGS) $(MONO_OBJS) $(OBJS) $(SBBS_LIBS) $(SMBLIB_LIBS) $(XPDEV-MT_LIBS)
151:
152: # Synchronet BBS library Link Rule
153: $(SBBS): $(OBJS) $(LIBS)
154: @echo Linking $@
155: $(QUIET)$(MKSHPPLIB) $(LDFLAGS) -o $@ $(OBJS) $(SBBS_LIBS) $(LIBS) $(SHLIBOPTS)
156:
157: # FTP Server Link Rule
158: $(FTPSRVR): $(MTOBJODIR)/ftpsrvr.o
159: @echo Linking $@
160: $(QUIET)$(MKSHLIB) $(LDFLAGS) $(MTOBJODIR)/ftpsrvr.o $(SHLIBOPTS) -o $@
161:
162: # Mail Server Link Rule
163: $(MAILSRVR): $(MAIL_OBJS)
164: @echo Linking $@
165: $(QUIET)$(MKSHLIB) $(LDFLAGS) $(MAIL_OBJS) $(SHLIBOPTS) -o $@
166:
167: # Web Server Link Rule
168: $(WEBSRVR): $(WEB_OBJS)
169: @echo Linking $@
170: $(QUIET)$(MKSHLIB) $(LDFLAGS) $(WEB_OBJS) $(SHLIBOPTS) -o $@
171:
172: # Services Link Rule
173: $(SERVICES): $(SERVICE_OBJS)
174: @echo Linking $@
175: $(QUIET)$(MKSHLIB) $(LDFLAGS) $(SERVICE_OBJS) $(SHLIBOPTS) -o $@
176:
177: # Synchronet Console Build Rule
178: $(SBBSCON): $(CON_OBJS) $(SBBS) $(FTPSRVR) $(WEBSRVR) $(MAILSRVR) $(SERVICES)
179: @echo Linking $@
180: $(QUIET)$(CXX) $(LDFLAGS) $(MT_LDFLAGS) -o $@ $(CON_OBJS) $(CON_LIBS) $(SMBLIB_LIBS) $(XPDEV-MT_LIBS)
181:
182: # Baja Utility
183: $(BAJA): $(BAJA_OBJS)
184: @echo Linking $@
185: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(BAJA_OBJS) $(SMBLIB_LIBS) $(XPDEV_LIBS)
186:
187: # UnBaja Utility
188: $(UNBAJA): $(OBJODIR) $(EXEODIR) $(UNBAJA_OBJS)
189: @echo Linking $@
190: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(UNBAJA_OBJS) $(XPDEV_LIBS) $(UTIL_LIBS)
191:
192: # Node Utility
193: $(NODE): $(NODE_OBJS)
194: @echo Linking $@
195: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(NODE_OBJS) $(XPDEV_LIBS)
196:
197: # FIXSMB Utility
198: $(FIXSMB): $(FIXSMB_OBJS)
199: @echo Linking $@
200: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(FIXSMB_OBJS) $(SMBLIB_LIBS) $(XPDEV_LIBS)
201:
202: # CHKSMB Utility
203: $(CHKSMB): $(CHKSMB_OBJS)
204: @echo Linking $@
205: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(CHKSMB_OBJS) $(SMBLIB_LIBS) $(XPDEV_LIBS)
206:
207: # SMB Utility
208: $(SMBUTIL): $(SMBUTIL_OBJS)
209: @echo Linking $@
210: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(SMBUTIL_OBJS) $(SMBLIB_LIBS) $(XPDEV_LIBS)
211:
212: # SBBSecho (FidoNet Packet Tosser)
213: $(SBBSECHO): $(SBBSECHO_OBJS)
214: @echo Linking $@
215: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(SBBSECHO_OBJS) $(SMBLIB_LIBS) $(XPDEV_LIBS)
216:
217: # SBBSecho Configuration Program
218: $(ECHOCFG): $(ECHOCFG_OBJS)
219: @echo Linking $@
220: $(QUIET)$(CC) $(UTIL_LDFLAGS) $(MT_LDFLAGS) -o $@ $(ECHOCFG_OBJS) $(UIFC-MT_LDFLAGS) $(SMBLIB_LIBS) $(UIFC-MT_LIBS) $(CIOLIB-MT_LIBS) $(XPDEV-MT_LIBS)
221:
222: # ADDFILES
223: $(ADDFILES): $(ADDFILES_OBJS)
224: @echo Linking $@
225: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(ADDFILES_OBJS) $(XPDEV_LIBS)
226:
227: # FILELIST
228: $(FILELIST): $(FILELIST_OBJS)
229: @echo Linking $@
230: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(FILELIST_OBJS) $(XPDEV_LIBS)
231:
232: # MAKEUSER
233: $(MAKEUSER): $(MAKEUSER_OBJS)
234: @echo Linking $@
235: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(MAKEUSER_OBJS) $(XPDEV_LIBS)
236:
237: # JSEXEC
238: $(JSEXEC): $(JSEXEC_OBJS) $(SBBS)
239: @echo Linking $@
240: $(QUIET)$(CXX) $(LDFLAGS) $(MT_LDFLAGS) -o $@ $(JSEXEC_OBJS) -lsbbs $(SMBLIB_LIBS) $(UIFC-MT_LIBS) $(CIOLIB-MT_LIBS) $(XPDEV-MT_LIBS)
241:
242: # ANS2ASC
243: $(ANS2ASC): $(OBJODIR)/ans2asc.o
244: @echo Linking $@
245: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(OBJODIR)/ans2asc.o
246:
247: # ASC2ANS
248: $(ASC2ANS): $(OBJODIR)/asc2ans.o
249: @echo Linking $@
250: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(OBJODIR)/asc2ans.o
251:
252: # SEXYZ
253: $(SEXYZ): $(SEXYZ_OBJS)
254: @echo Linking $@
255: $(QUIET)$(CC) $(UTIL_LDFLAGS) $(MT_LDFLAGS) -o $@ $(SEXYZ_OBJS) $(SMBLIB_LIBS) $(XPDEV-MT_LIBS)
256:
257: # QWKNODES
258: $(QWKNODES): $(QWKNODES_OBJS)
259: @echo Linking $@
260: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(QWKNODES_OBJS) $(SMBLIB_LIBS) $(XPDEV_LIBS)
261:
262: # SLOG
263: $(SLOG): $(SLOG_OBJS)
264: @echo Linking $@
265: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(SLOG_OBJS) $(XPDEV_LIBS)
266:
267: # ALLUSERS
268: $(ALLUSERS): $(ALLUSERS_OBJS)
269: @echo Linking $@
270: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(ALLUSERS_OBJS) $(XPDEV_LIBS)
271:
272: # DELFILES
273: $(DELFILES): $(DELFILES_OBJS)
274: @echo Linking $@
275: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(DELFILES_OBJS) $(XPDEV_LIBS)
276:
277: # DUPEFIND
278: $(DUPEFIND): $(DUPEFIND_OBJS)
279: @echo Linking $@
280: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(DUPEFIND_OBJS) $(SMBLIB_LIBS) $(XPDEV_LIBS)
281:
282: # SMBACTIV
283: $(SMBACTIV): $(SMBACTIV_OBJS)
284: @echo Linking $@
285: $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $(SMBACTIV_OBJS) $(SMBLIB_LIBS) $(XPDEV_LIBS)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.