diff --git a/src/sbbs3/GNUmakefile b/src/sbbs3/GNUmakefile index e8c4bf93a18bb0db0646461f8124142e9a4ab8a7..bd3eece61b3ca1db9ef71d600f607df14cc67717 100644 --- a/src/sbbs3/GNUmakefile +++ b/src/sbbs3/GNUmakefile @@ -54,9 +54,10 @@ endif SLASH = / OFILE = o -LIBFILE = .a +LIBFILE = .so UIFC = ../uifc/ XPDEV = ../xpdev/ +LIBPREFIX = lib ifndef os os := $(shell uname) @@ -86,7 +87,8 @@ CFLAGS += -DJAVASCRIPT -I../../include/mozilla/js -I$(XPDEV) -I$(UIFC) ifdef BSD # BSD # Math libraries needed and uses pthread - LFLAGS := -lm -pthread -lutil + LFLAGS := -lm -lutil -lc_r + CFLAGS += -pthread else # Linux / Other UNIX # Math and pthread libraries needed ifdef bcc @@ -102,12 +104,12 @@ endif ifeq ($(os),sunos) # Solaris CFLAGS += -D_REENTRANT -D__solaris__ -DNEEDS_DAEMON -D_POSIX_PTHREAD_SEMANTICS -DNEEDS_FORKPTY - LFLAGS := -lm -lpthread -lsocket -lnsl -lrt + LFLAGS += -lm -lpthread -lsocket -lnsl -lrt endif ifeq ($(os),netbsd) CFLAGS += -D_REENTRANT -D__unix__ -I/usr/pkg/include -DNEEDS_FORKPTY - LFLAGS := -lm -lpthread -L/usr/pkg/lib -L/usr/pkg/pthreads/lib + LFLAGS += -lm -lpthread -L/usr/pkg/lib -L/usr/pkg/pthreads/lib endif # So far, only QNX has sem_timedwait() @@ -165,11 +167,19 @@ ifeq ($(USE_XP_SEMAPHORES),1) OBJS += $(LIBODIR)$(SLASH)xpsem.$(OFILE) endif -SBBSLIB = $(LIBODIR)/sbbs.a +#SBBSLIB = $(LIBODIR)$(SLASH)libsbbs.so +SBBSLIB = -lsbbs + +#dummy rule +$(SBBSLIB) : $(SBBS) vpath %.c $(XPDEV) $(UIFC) vpath %.cpp $(UIFC) +LFLAGS += -L./$(LIBODIR) +LDFLAGS := $(LFLAGS) -rpath-link ./$(LIBODIR) -rpath ./ +LFLAGS += -Wl,-rpath-link,./$(LIBODIR),-rpath,./ + # Implicit C Compile Rule for utils $(EXEODIR)/%.o : %.c $(BUILD_DEPENDS) ifndef bcc @@ -206,11 +216,12 @@ $(EXEODIR): CON_OBJS = $(EXEODIR)/sbbscon.o $(EXEODIR)/conwrap.o \ $(EXEODIR)/sbbs_ini.o +CON_LDFLAGS = -lftpsrvr -lwebsrvr -lmailsrvr -lservices FTP_OBJS = $(LIBODIR)/ftpsrvr.o MAIL_OBJS = $(LIBODIR)/mailsrvr.o $(LIBODIR)/mxlookup.o \ $(LIBODIR)/mime.o $(LIBODIR)/base64.o WEB_OBJS = $(LIBODIR)/websrvr.o $(LIBODIR)/sockwrap.o $(LIBODIR)/base64.o -SERVICE_OBJS= $(LIBODIR)/services.o +SERVICE_OBJS = $(LIBODIR)/services.o MONO_OBJS = $(CON_OBJS) $(FTP_OBJS) $(WEB_OBJS) \ $(MAIL_OBJS) $(SERVICE_OBJS) @@ -231,25 +242,43 @@ $(SBBSMONO): $(MONO_OBJS) $(OBJS) $(LIBS) FORCE$(SBBS): $(OBJS) $(LIBS) $(SBBS): $(OBJS) $(LIBS) - $(LD) $(LFLAGS) -S -o $(SBBS) $^ $(LIBS) -o $@ + @echo Linking $@ + @$(LD) $(LDFLAGS) -S -o $(SBBS) $^ -shared -o $@ # FTP Server Link Rule FORCE$(FTPSRVR): $(LIBODIR)/ftpsrvr.o $(SBBSLIB) $(FTPSRVR): $(LIBODIR)/ftpsrvr.o $(SBBSLIB) - $(LD) $(LFLAGS) -S $^ $(LIBS) -o $@ + @echo Linking $@ + $(LD) $(LDFLAGS) -S $^ $(LIBS) -shared -o $@ # Mail Server Link Rule -FORCE$(MAILSRVR): $(MAIL_OBJS) $(SBBSLIB) +FORCE$(MAILSRVR): $(MAIL_OBJS) $(LIBODIR)$(SLASH)$(SBBSLIB) $(MAILSRVR): $(MAIL_OBJS) $(SBBSLIB) - $(LD) $(LFLAGS) -S $^ $(LIBS) -o $@ + @echo Linking $@ + @$(LD) $(LDFLAGS) -S $^ $(LIBS) -shared -o $@ + +# Mail Server Link Rule +FORCE$(WEBSRVR): $(WEB_OBJS) $(SBBSLIB) + +$(WEBSRVR): $(WEB_OBJS) $(SBBSLIB) + @echo Linking $@ + @$(LD) $(LDFLAGS) -S $^ $(LIBS) -shared -o $@ + +# Services Link Rule +FORCE$(SERVICES): $(WEB_OBJS) $(SBBSLIB) + +$(SERVICES): $(SERVICE_OBJS) $(SBBSLIB) + @echo Linking $@ + @$(LD) $(LDFLAGS) -S $^ $(LIBS) -shared -o $@ # Synchronet Console Build Rule -FORCE$(SBBSCON): $(CON_OBJS) $(SBBSLIB) +FORCE$(SBBSCON): $(CON_OBJS) $(SBBSLIB) $(FTP_OBJS) $(MAIL_OBJS) $(WEB_OBJS) $(SERVICE_OBJS) -$(SBBSCON): $(CON_OBJS) $(SBBSLIB) - @$(CC) $(CFLAGS) -o $@ $^ +$(SBBSCON): $(CON_OBJS) $(SBBSLIB) $(FTPSRVR) $(WEBSRVR) $(MAILSRVR) $(SERVICES) + @echo Linking $@ + @$(CC) $(CFLAGS) $(LFLAGS) $(CON_LDFLAGS) -o $@ $(CON_OBJS) $(SBBSLIB) # Specifc Compile Rules $(LIBODIR)/ftpsrvr.o: ftpsrvr.c ftpsrvr.h $(BUILD_DEPENDS) @@ -465,7 +494,7 @@ $(MAKEUSER): $(MAKEUSER_OBJS) # JSEXEC JSEXEC_OBJS = \ $(EXEODIR)/jsexec.o \ - $(OBJS) + $(SBBSLIB) FORCE$(JSEXEC): $(JSEXEC_OBJS) diff --git a/src/sbbs3/targets.mk b/src/sbbs3/targets.mk index 50385f277a6dff6c4c05b6f958d80541d927d3df..f321381519a269ca3b72f6405b24dca6944381a3 100644 --- a/src/sbbs3/targets.mk +++ b/src/sbbs3/targets.mk @@ -6,13 +6,13 @@ # LIBODIR, EXEODIR, SLASH, LIBFILE, EXEFILE, and DELETE must be pre-defined -SBBS = $(LIBODIR)$(SLASH)sbbs$(LIBFILE) -FTPSRVR = $(LIBODIR)$(SLASH)ftpsrvr$(LIBFILE) -WEBSRVR = $(LIBODIR)$(SLASH)websrvr$(LIBFILE) -MAILSRVR = $(LIBODIR)$(SLASH)mailsrvr$(LIBFILE) -SERVICES = $(LIBODIR)$(SLASH)services$(LIBFILE) -SBBSCON = $(EXEODIR)$(SLASH)sbbscon$(EXEFILE) -SBBSMONO = $(EXEODIR)$(SLASH)sbbs$(EXEFILE) +SBBS = $(LIBODIR)$(SLASH)$(LIBPREFIX)sbbs$(LIBFILE) +FTPSRVR = $(LIBODIR)$(SLASH)$(LIBPREFIX)ftpsrvr$(LIBFILE) +WEBSRVR = $(LIBODIR)$(SLASH)$(LIBPREFIX)websrvr$(LIBFILE) +MAILSRVR = $(LIBODIR)$(SLASH)$(LIBPREFIX)mailsrvr$(LIBFILE) +SERVICES = $(LIBODIR)$(SLASH)$(LIBPREFIX)services$(LIBFILE) +SBBSCON = $(EXEODIR)$(SLASH)sbbs$(EXEFILE) +SBBSMONO = $(EXEODIR)$(SLASH)sbbsmono$(EXEFILE) JSEXEC = $(EXEODIR)$(SLASH)jsexec$(EXEFILE) NODE = $(EXEODIR)$(SLASH)node$(EXEFILE) BAJA = $(EXEODIR)$(SLASH)baja$(EXEFILE) @@ -34,7 +34,7 @@ UTILS = $(BUILD_DEPENDS)$(FIXSMB) $(BUILD_DEPENDS)$(CHKSMB) \ $(BUILD_DEPENDS)$(ANS2MSG) $(BUILD_DEPENDS)$(MSG2ANS) \ $(BUILD_DEPENDS)$(JSEXEC) -all: $(LIBODIR) $(EXEODIR) $(SBBSMONO) $(UTILS) +all: $(LIBODIR) $(EXEODIR) $(SBBSMONO) $(UTILS) $(SBBSCON) utils: $(EXEODIR) $(UTILS)