diff --git a/src/sbbs3/GNUmakefile b/src/sbbs3/GNUmakefile index 1f2d96fe9e9b0d0db7d40e8ddc510131e8cee702..6587175f74129f9cce84aa7565c0f7f3610a7479 100644 --- a/src/sbbs3/GNUmakefile +++ b/src/sbbs3/GNUmakefile @@ -13,17 +13,6 @@ # $Id$ -# Macros -ifndef DEBUG - ifndef RELEASE - DEBUG := 1 - endif -endif - -ifndef VERBOSE - QUIET = @ -endif - #USE_DIALOG = 1 # Dialog vesrion of UIFC #USE_FLTK = 1 # Use Windowed version #USE_CURSES = 1 # Use *nix curses version @@ -31,66 +20,13 @@ ifndef NO_CURSES USE_UIFC32 = 1 # Curses version of UIFC endif -ifdef DEBUG - BUILD = debug -else - BUILD = release -endif -BUILDPATH := $(BUILD) - -ifeq ($(shell hostname),dmjunk.kingcole.local) - THREADS_ACTUALLY_WORK=1 - BUILDPATH := redhat -endif - -ifdef bcc - CC = bc++ -q - CCPRE := bcc - CXX = bc++ -q - LD = ilink -q - CFLAGS += -mm -md -D__unix__ -w-csu -w-pch -w-ccc -w-rch -w-par -w-aus -else - CFLAGS += -MMD -Wall - CCPRE ?= gcc - ifdef BUILD_DEPENDS - CC = ../build/mkdep -a - CXX = ../build/mkdep -a - LD = echo - COMPILE_MSG := Depending - else - CC ?= gcc - CXX ?= g++ - LD ?= ld - COMPILE_MSG := Compiling - endif -endif -SLASH = / -OFILE = o - UIFC = ../uifc/ XPDEV = ../xpdev/ -LIBPREFIX = lib -ifndef os - os := $(shell uname) -endif -ifeq ($(shell uname -m),ppc) - os := $(os)-ppc -endif -# this line wont work with solaris unless awk in path is actually gawk -os := $(shell echo $(os) | tr "[ A-Z]" "[\-a-z]") -# remove '/' from "os/2" -os := $(shell echo $(os) | tr -d "/") +NEED_JAVASCRIPT := 1 +NEED_THREADS := 1 -ifeq ($(os),openbsd) -LIBFILE = .so.0.0 -else - ifeq ($(os),darwin) - LIBFILE = .dylib - else - LIBFILE = .so - endif -endif +include $(XPDEV)/Common.gmake ifeq ($(os),freebsd) BSD = 1 @@ -100,70 +36,24 @@ else endif endif -LIBODIR := $(CCPRE).$(os).lib.$(BUILDPATH) -EXEODIR := $(CCPRE).$(os).exe.$(BUILDPATH) - -DELETE = rm -f - -CFLAGS += -I$(XPDEV) -I$(UIFC) -DJAVASCRIPT -D_THREAD_SAFE -D_REENTRANT -ifdef JSINCLUDE - CFLAGS += -I$(JSINCLUDE) -else - CFLAGS += -I../../include/mozilla/js -endif - -ifdef BSD # BSD - # Math libraries needed and uses pthread - LFLAGS := -lm -lutil - CFLAGS += -pthread -else # Linux / Other UNIX - # Math and pthread libraries needed - ifdef bcc - LFLAGS := libpthread.so - else - LFLAGS := -lm -lpthread -lutil - endif -endif +CFLAGS += -I$(XPDEV) -ifeq ($(os),linux) # Linux - ifndef THREADS_ACTUALLY_WORK - CFLAGS += -D_THREAD_SUID_BROKEN - endif +ifndef bcc + LDFLAGS += -lm -lutil endif ifeq ($(os),sunos) # Solaris - CFLAGS := -D__solaris__ -DNEEDS_DAEMON -D_POSIX_PTHREAD_SEMANTICS -DNEEDS_FORKPTY - LFLAGS := -lm -lpthread -lsocket -lnsl -lrt + LDFLAGS += -lsocket -lnsl -lrt endif ifeq ($(os),netbsd) - CFLAGS += -D__unix__ -I/usr/pkg/include -DNEEDS_FORKPTY - LFLAGS := -lm -lpthread -L/usr/pkg/lib -L/usr/pkg/pthreads/lib - UTIL_LFLAGS += -lpth -L/usr/pkg/lib -endif - -ifeq ($(os),darwin) - CFLAGS += -D__unix__ -fno-common -D__DARWIN__ - LFLAGS := -lm -lpthread + LDFLAGS += -L/usr/pkg/lib + UTIL_LDFLAGS += -lpth -L/usr/pkg/lib endif # So far, only QNX has sem_timedwait() ifeq ($(os),qnx) - LFLAGS := -lm -lsocket -else - CFLAGS += -DUSE_XP_SEMAPHORES - USE_XP_SEMAPHORES := 1 -endif - -ifdef DEBUG - ifdef bcc - CFLAGS += -y -v -Od - else - CFLAGS += -ggdb - endif - CFLAGS += -D_DEBUG -else - CFLAGS += -O3 + LDFLAGS += -lsocket endif ifdef PREFIX @@ -174,68 +64,11 @@ ifdef USE_DOSEMU CFLAGS += -DUSE_DOSEMU endif -ifndef JSLIBDIR - JSLIBDIR := ../../lib/mozilla/js/$(os).$(BUILD) -endif -ifndef JSLIB - JSLIB := js -endif -ifndef NSPRDIR - NSPRDIR := ../../lib/mozilla/nspr/$(os).$(BUILD) -endif - ifdef DONT_BLAME_SYNCHRONET - LFLAGS += -DDONT_BLAME_SYNCHRONET -endif - -LFLAGS += -L$(JSLIBDIR) -l$(JSLIB) - -# The following are needed for echocfg (uses UIFC) -UIFC_OBJS = $(LIBODIR)/uifcx.o -ifdef USE_FLTK - CFLAGS += -DUSE_FLTK -I../../include/fltk - UIFC_LFLAGS += -L../../lib/fltk/$(os) -L/usr/X11R6/lib -lm -lfltk -lX11 - UIFC_OBJS+= $(LIBODIR)/uifcfltk.o -endif -ifdef USE_CURSES - CFLAGS += -DUSE_CURSES - ifeq ($(os),qnx) - UIFC_LFLAGS += -lncurses - else - ifeq ($(os),netbsd) - UIFC_LFLAGS += -lncurses - else - UIFC_LFLAGS += -lcurses - endif - endif - UIFC_OBJS += $(LIBODIR)/uifcc.o + LDFLAGS += -DDONT_BLAME_SYNCHRONET endif -ifdef USE_UIFC32 - CFLAGS += -DUSE_UIFC32 - ifeq ($(os),qnx) - UIFC_LFLAGS += -lncurses - else - ifeq ($(os),netbsd) - UIFC_LFLAGS += -lncurses - else - UIFC_LFLAGS += -lcurses - endif - endif - UIFC_OBJS += $(LIBODIR)/uifc32.o - UIFC_OBJS += $(LIBODIR)/ciowrap.o -endif - -#The following is needed for nspr support on Linux -ifeq ($(os),linux) - LFLAGS += -ldl -endif - -include targets.mk # defines all targets -include objects.mk # defines $(OBJS) -include sbbsdefs.mk # defines $(SBBSDEFS) - -ifeq ($(USE_XP_SEMAPHORES),1) +ifeq ($(XP_SEM),1) OBJS += $(LIBODIR)$(SLASH)xpsem.$(OFILE) endif @@ -244,53 +77,22 @@ SBBSLIB = -lsbbs #dummy rule $(SBBSLIB) : $(SBBS) + $(QUIET)touch -- '$(SBBSLIB)' -vpath %.c $(XPDEV) $(UIFC) -vpath %.cpp $(UIFC) - -LFLAGS += -L./$(LIBODIR) -L$(NSPRDIR) ifneq ($(os),darwin) -SBBSLDFLAGS := $(LFLAGS) -rpath-link ./$(LIBODIR) -rpath ./ -#LFLAGS += -Wl,-rpath-link,./$(LIBODIR),-rpath,./ -LFLAGS += -Xlinker -rpath -LFLAGS += -Xlinker . +SBBSLDFLAGS := $(LDFLAGS) -rpath-link ./$(LIBODIR) -rpath ./ +#LDFLAGS += -Wl,-rpath-link,./$(LIBODIR),-rpath,./ +LDFLAGS += -Xlinker -rpath +LDFLAGS += -Xlinker . ifneq ($(os),openbsd) -LFLAGS += -Xlinker -rpath-link -LFLAGS += -Xlinker ./$(LIBODIR) -LFLAGS += -Xlinker -rpath-link -LFLAGS += -Xlinker $(JSLIBDIR) -LFLAGS += -Xlinker -rpath-link -LFLAGS += -Xlinker $(NSPRDIR) -else -LFLAGS += -l$(JSLIB) -lnspr4 +LDFLAGS += -Xlinker -rpath-link +LDFLAGS += -Xlinker ./$(LIBODIR) +LDFLAGS += -Xlinker -rpath-link +LDFLAGS += -Xlinker $(JSLIBDIR) +LDFLAGS += -Xlinker -rpath-link +LDFLAGS += -Xlinker $(NSPRDIR) endif endif -ifeq ($(os),freebsd) -LFLAGS += -pthread -endif -ifeq ($(os),openbsd) -LFLAGS += -pthread -endif - -# Implicit C Compile Rule for SBBS -$(LIBODIR)/%.o : %.c $(BUILD_DEPENDS) - ifndef bcc - @echo $(COMPILE_MSG) $< - endif - $(QUIET)$(CC) $(CFLAGS) $(SBBSDEFS) -o $@ -c $< - -# Implicit C++ Compile Rule for SBBS -$(LIBODIR)/%.o : %.cpp $(BUILD_DEPENDS) - ifndef bcc - @echo $(COMPILE_MSG) $< - endif - $(QUIET)$(CXX) $(CFLAGS) $(SBBSDEFS) -o $@ -c $< - -$(LIBODIR): - mkdir $(LIBODIR) - -$(EXEODIR): - mkdir $(EXEODIR) CON_OBJS = $(LIBODIR)/sbbscon.o $(LIBODIR)/conwrap.o \ $(LIBODIR)/sbbs_ini.o @@ -323,49 +125,49 @@ FORCE$(SBBSMONO): $(MONO_OBJS) $(OBJS) $(LIBS) $(SBBSMONO): $(MONO_OBJS) $(OBJS) $(LIBS) @echo Linking $@ - $(QUIET)$(CXX) -o $@ $(LFLAGS) $^ + $(QUIET)$(CXX) -o $@ $(LDFLAGS) $^ # Synchronet BBS library Link Rule FORCE$(SBBS): $(OBJS) $(LIBS) $(SBBS): $(OBJS) $(LIBS) @echo Linking $@ - $(QUIET)$(MKSHPPLIB) $(LFLAGS) -o $@ $^ $(SHLIBOPTS) + $(QUIET)$(MKSHPPLIB) $(LDFLAGS) -o $@ $^ $(SHLIBOPTS) # FTP Server Link Rule FORCE$(FTPSRVR): $(LIBODIR)/ftpsrvr.o $(SBBSLIB) $(FTPSRVR): $(LIBODIR)/ftpsrvr.o $(SBBSLIB) @echo Linking $@ - $(QUIET)$(MKSHLIB) $(LFLAGS) $^ $(SHLIBOPTS) -o $@ + $(QUIET)$(MKSHLIB) $(LDFLAGS) $^ $(SHLIBOPTS) -o $@ # Mail Server Link Rule FORCE$(MAILSRVR): $(MAIL_OBJS) $(LIBODIR)$(SLASH)$(SBBSLIB) $(MAILSRVR): $(MAIL_OBJS) $(SBBSLIB) @echo Linking $@ - $(QUIET)$(MKSHLIB) $(LFLAGS) $^ $(SHLIBOPTS) -o $@ + $(QUIET)$(MKSHLIB) $(LDFLAGS) $^ $(SHLIBOPTS) -o $@ # Mail Server Link Rule FORCE$(WEBSRVR): $(WEB_OBJS) $(SBBSLIB) $(WEBSRVR): $(WEB_OBJS) $(SBBSLIB) @echo Linking $@ - $(QUIET)$(MKSHLIB) $(LFLAGS) $^ $(SHLIBOPTS) -o $@ + $(QUIET)$(MKSHLIB) $(LDFLAGS) $^ $(SHLIBOPTS) -o $@ # Services Link Rule FORCE$(SERVICES): $(WEB_OBJS) $(SBBSLIB) $(SERVICES): $(SERVICE_OBJS) $(SBBSLIB) @echo Linking $@ - $(QUIET)$(MKSHLIB) $(LFLAGS) $^ $(SHLIBOPTS) -o $@ + $(QUIET)$(MKSHLIB) $(LDFLAGS) $^ $(SHLIBOPTS) -o $@ # Synchronet Console Build Rule FORCE$(SBBSCON): $(CON_OBJS) $(SBBSLIB) $(FTP_OBJS) $(MAIL_OBJS) $(WEB_OBJS) $(SERVICE_OBJS) $(SBBSCON): $(CON_OBJS) $(SBBSLIB) $(FTPSRVR) $(WEBSRVR) $(MAILSRVR) $(SERVICES) @echo Linking $@ - $(QUIET)$(CC) $(CFLAGS) $(LFLAGS) $(CON_LDFLAGS) -o $@ $(CON_OBJS) $(SBBSLIB) + $(QUIET)$(CC) $(CFLAGS) $(LDFLAGS) $(CON_LDFLAGS) -o $@ $(CON_OBJS) $(SBBSLIB) # Specifc Compile Rules $(LIBODIR)/ftpsrvr.o: ftpsrvr.c ftpsrvr.h $(BUILD_DEPENDS) @@ -408,7 +210,7 @@ FORCE$(BAJA): $(BAJA_OBJS) $(BAJA): $(BAJA_OBJS) @echo Linking $@ - $(QUIET)$(CC) $(UTIL_LFLAGS) -o $@ $^ + $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $^ # Node Utility NODE_OBJS = \ @@ -419,7 +221,7 @@ FORCE$(NODE): $(NODE_OBJS) $(NODE): $(NODE_OBJS) @echo Linking $@ - $(QUIET)$(CC) $(UTIL_LFLAGS) -o $@ $^ + $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $^ # FIXSMB Utility FIXSMB_OBJS = \ @@ -432,7 +234,7 @@ FORCE$(FIXSMB): $(FIXSMB_OBJS) $(FIXSMB): $(FIXSMB_OBJS) @echo Linking $@ - $(QUIET)$(CC) $(UTIL_LFLAGS) -o $@ $^ + $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $^ # CHKSMB Utility CHKSMB_OBJS = \ @@ -445,7 +247,7 @@ FORCE$(CHKSMB): $(CHKSMB_OBJS) $(CHKSMB): $(CHKSMB_OBJS) @echo Linking $@ - $(QUIET)$(CC) $(UTIL_LFLAGS) -o $@ $^ + $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $^ # SMB Utility SMBUTIL_OBJS = \ @@ -463,7 +265,7 @@ FORCE$(SMBUTIL): $(SMBUTIL_OBJS) $(SMBUTIL): $(SMBUTIL_OBJS) @echo Linking $@ - $(QUIET)$(CC) $(UTIL_LFLAGS) -o $@ $^ + $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $^ # SBBSecho (FidoNet Packet Tosser) SBBSECHO_OBJS = \ @@ -490,7 +292,7 @@ FORCE$(SBBSECHO): $(SBBSECHO_OBJS) $(SBBSECHO): $(SBBSECHO_OBJS) @echo Linking $@ - $(QUIET)$(CC) $(UTIL_LFLAGS) -o $@ $^ + $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $^ # SBBSecho Configuration Program ECHOCFG_OBJS = \ @@ -508,7 +310,7 @@ FORCE$(ECHOCFG): $(ECHOCFG_OBJS) $(ECHOCFG): $(ECHOCFG_OBJS) @echo Linking $@ - $(QUIET)$(CC) $(UTIL_LFLAGS) -o $@ $^ $(UIFC_LFLAGS) + $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $^ $(UIFC_LDFLAGS) # ADDFILES ADDFILES_OBJS = \ @@ -531,7 +333,7 @@ FORCE$(ADDFILES): $(ADDFILES_OBJS) $(ADDFILES): $(ADDFILES_OBJS) @echo Linking $@ - $(QUIET)$(CC) $(UTIL_LFLAGS) -o $@ $^ + $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $^ # FILELIST FILELIST_OBJS = \ @@ -553,7 +355,7 @@ FORCE$(FILELIST): $(FILELIST_OBJS) $(FILELIST): $(FILELIST_OBJS) @echo Linking $@ - $(QUIET)$(CC) $(UTIL_LFLAGS) -o $@ $^ + $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $^ # MAKEUSER MAKEUSER_OBJS = \ @@ -575,7 +377,7 @@ FORCE$(MAKEUSER): $(MAKEUSER_OBJS) $(MAKEUSER): $(MAKEUSER_OBJS) @echo Linking $@ - $(QUIET)$(CC) $(UTIL_LFLAGS) -o $@ $^ + $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $^ # JSEXEC JSEXEC_OBJS = \ @@ -586,30 +388,20 @@ FORCE$(JSEXEC): $(JSEXEC_OBJS) $(JSEXEC): $(JSEXEC_OBJS) @echo Linking $@ - $(QUIET)$(CXX) $(UTIL_LFLAGS) -o $@ $^ $(LFLAGS) + $(QUIET)$(CXX) $(UTIL_LDFLAGS) -o $@ $^ $(LDFLAGS) # ANS2ASC FORCE$(ANS2ASC): $(LIBODIR)/ans2asc.o $(ANS2ASC): $(LIBODIR)/ans2asc.o @echo Linking $@ - $(QUIET)$(CC) $(UTIL_LFLAGS) -o $@ $^ + $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $^ # ASC2ANS FORCE$(ASC2ANS): $(LIBODIR)/asc2ans.o $(ASC2ANS): $(LIBODIR)/asc2ans.o @echo Linking $@ - $(QUIET)$(CC) $(UTIL_LFLAGS) -o $@ $^ - -depend: - $(QUIET)$(DELETE) $(LIBODIR)/.depend - $(QUIET)$(DELETE) $(EXEODIR)/.depend - $(MAKE) BUILD_DEPENDS=FORCE + $(QUIET)$(CC) $(UTIL_LDFLAGS) -o $@ $^ FORCE: - --include $(LIBODIR)/.depend --include $(EXEODIR)/.depend --include $(LIBODIR)/*.d --include $(EXEODIR)/*.d diff --git a/src/sbbs3/install/GNUmakefile b/src/sbbs3/install/GNUmakefile index 39f48b70c0ec1eff7ba2ec079a1dd7d348ded535..9a038d7a6a8bac4f90fb0825c9ab17bf199777e3 100644 --- a/src/sbbs3/install/GNUmakefile +++ b/src/sbbs3/install/GNUmakefile @@ -14,91 +14,25 @@ # $Id$ #USE_DIALOG = 1 # Dialog vesrion of UIFC -USE_CURSES = 1 # Curses version of UIFC +#USE_CURSES = 1 # Curses version of UIFC #USE_FLTK = 1 # Windowed version of UIFC -CC = gcc -SLASH = / -OFILE = o -UIFC = ../../uifc -XPDEV = ../../xpdev +USE_UIFC32 := 1 # New 32-bit version of UIFC +UIFC = ../../uifc/ +XPDEV = ../../xpdev/ + +NEED_UIFC := 1 +include $(XPDEV)/Common.gmake ifdef STATIC LDFLAGS += -static endif -ifndef os - os = $(shell uname) -endif -os := $(shell echo $(os) | tr "[A-Z]" "[a-z]") -# remove '/' from "os/2" -os := $(shell echo $(os) | tr -d "/") - -ifeq ($(os),netbsd) - CFLAGS += -D__unix__ -I/usr/pkg/include -DUSE_XP_SEMAPHORES - LDFLAGS += -L/usr/pkg/lib -endif - -ODIR := gcc.$(os) - -LIBDIR := /usr/lib -DELETE = rm -f -v -OUTLIB = -o - -#CFLAGS += -g -CFLAGS += -O2 -CFLAGS += -MMD -Wall -I$(UIFC) -I$(XPDEV) -I.. - -LDFLAGS += -L/usr/local/lib - -ODIR := $(ODIR).release - -include targets.mk # defines all targets -include objects.mk # defines $(OBJS) - -ifdef USE_DIALOG - LDFLAGS += -L../../libdialog -ldialog -lncurses - CFLAGS += -I../../libdialog -DUSE_DIALOG - OBJS += $(ODIR)$(SLASH)uifcd.$(OFILE) -endif - -ifdef USE_CURSES - LDFLAGS += -lncurses - CFLAGS += -DUSE_CURSES - OBJS += $(ODIR)$(SLASH)uifc32.$(OFILE) -endif - -ifdef USE_FLTK - LDFLAGS += -L/usr/X11R6/lib -lfltk -lX11 -lm - CFLAGS += -I/usr/local/include -I/usr/X11R6/include -DUSE_FLTK - OBJS += $(ODIR)$(SLASH)uifcfltk.$(OFILE) -endif - -vpath %.c .. -vpath %.c $(UIFC) -vpath %.c $(XPDEV) - -# Implicit C Compile Rule for SBBSINST -$(ODIR)/%.o : %.c - @echo Compiling $< - @$(CC) $(CFLAGS) -c $(SBBSDEFS) $< -o $@ - -# Explicit C++ Compile Rule for SBBSINST -$(ODIR)/uifcfltk.o : $(UIFC)/uifcfltk.cpp - @echo Compiling uifcfltk.cpp - $(CC) $(CFLAGS) -c $(SBBSDEFS) $(UIFC)/uifcfltk.cpp -o $(ODIR)/uifcfltk.o - -# Create output directories -$(ODIR): - mkdir $(ODIR) - -# Monolithic Synchronet executable Build Rule $(SBBSINST): $(OBJS) ifdef USE_DIALOG - @$(MAKE) --no-print-directory -C ../../libdialog + $(QUIET)$(MAKE) --no-print-directory -C ../../libdialog endif - @echo Linking $@ - @$(CC) -o $@ $(OBJS) $(LDFLAGS) -# @strip $@ + $(QUIET)echo Linking $@ + $(QUIET)$(CC) -o $@ $(OBJS) $(LDFLAGS) # Auto-dependency files (should go in output dir, but gcc v2.9.5 puts in cwd) -include ./*.d diff --git a/src/sbbs3/install/objects.mk b/src/sbbs3/install/objects.mk index fa58cce9aeeba474d94af7f1abded64ac38ba4c8..2fe65f1377fd8ac5ca2851ab9674f87953cb362b 100644 --- a/src/sbbs3/install/objects.mk +++ b/src/sbbs3/install/objects.mk @@ -7,11 +7,9 @@ # LIBODIR, SBBSLIBODIR, SLASH, and OFILE must be pre-defined -OBJS = $(ODIR)$(SLASH)sbbsinst.$(OFILE)\ - $(ODIR)$(SLASH)sockwrap.$(OFILE)\ - $(ODIR)$(SLASH)genwrap.$(OFILE)\ - $(ODIR)$(SLASH)dirwrap.$(OFILE)\ - $(ODIR)$(SLASH)filewrap.$(OFILE)\ - $(ODIR)$(SLASH)ciowrap.$(OFILE)\ - $(ODIR)$(SLASH)httpio.$(OFILE)\ - $(ODIR)$(SLASH)uifcx.$(OFILE) +OBJS = $(LIBODIR)$(SLASH)sbbsinst.$(OFILE)\ + $(LIBODIR)$(SLASH)sockwrap.$(OFILE)\ + $(LIBODIR)$(SLASH)genwrap.$(OFILE)\ + $(LIBODIR)$(SLASH)dirwrap.$(OFILE)\ + $(LIBODIR)$(SLASH)filewrap.$(OFILE)\ + $(LIBODIR)$(SLASH)httpio.$(OFILE) diff --git a/src/sbbs3/install/targets.mk b/src/sbbs3/install/targets.mk index 2864b080570a66212034e92388f123c1a718997d..6448089e439b877e4461af3447f15a9ef1a0165c 100644 --- a/src/sbbs3/install/targets.mk +++ b/src/sbbs3/install/targets.mk @@ -6,10 +6,8 @@ # ODIR, SLASH, LIBFILE, EXEFILE, and DELETE must be pre-defined -SBBSINST = $(ODIR)$(SLASH)sbbsinst$(EXEFILE) +SBBSINST = $(EXEODIR)$(SLASH)sbbsinst$(EXEFILE) -all: $(ODIR) \ +all: $(EXEODIR) \ + $(LIBODIR) \ $(SBBSINST) - -clean: - @$(DELETE) $(ODIR)$(SLASH)* diff --git a/src/sbbs3/scfg/GNUmakefile b/src/sbbs3/scfg/GNUmakefile index f95a3276ccecdd61fd50b6d5c6f6d318fe41b648..df0f21b4ad35bc3be69d2ff5b2c8cba615914f9b 100644 --- a/src/sbbs3/scfg/GNUmakefile +++ b/src/sbbs3/scfg/GNUmakefile @@ -13,147 +13,29 @@ # $Id$ -# Macros -ifndef DEBUG - ifndef RELEASE - DEBUG := 1 - endif -endif - #USE_DIALOG = 1 # Dialog vesrion of UIFC #USE_FLTK = 1 # Use Windowed version ifndef NO_CURSES #USE_CURSES = 1 # Curses version of UIFC USE_UIFC32 = 1 # NEW curses version of uifc endif -CC = gcc -CCPP = g++ -SLASH = / -OFILE = o -UIFC = ../../uifc -XPDEV = ../../xpdev - -ifndef os - os = $(shell uname) -endif -os := $(shell echo $(os) | tr "[A-Z]" "[a-z]") -# remove '/' from "os/2" -os := $(shell echo $(os) | tr -d "/") - -ODIR := gcc.$(os) - -LIBDIR := /usr/lib -DELETE = rm -f -OUTLIB = -o - -CFLAGS += -MMD -CFLAGS += -Wall -I$(UIFC) -I$(XPDEV) -I../ - -LFLAGS := -L/usr/local/lib - -ifeq ($(os),qnx) -CURSESLIB := -lncurses -else -CURSESLIB := -lcurses -endif - -ifdef USE_DIALOG - LFLAGS += -L../../libdialog -ldialog $(CURSESLIB) - CFLAGS += -I../../libdialog -DUSE_DIALOG -endif - -ifdef USE_CURSES - LFLAGS += $(CURSESLIB) - CFLAGS += -DUSE_CURSES -endif - -ifdef USE_UIFC32 - LFLAGS += $(CURSESLIB) - CFLAGS += -DUSE_UIFC32 -endif - -ifdef USE_FLTK - LFLAGS += -L../../../lib/fltk/$(os) -L/usr/X11R6/lib -lfltk -lX11 - CFLAGS += -I../../../include/fltk -I/usr/X11R6/include -DUSE_FLTK -endif - -ifdef DEBUG - CFLAGS += -ggdb -O0 -D_DEBUG - ODIR := $(ODIR).debug -else # RELEASE - ODIR := $(ODIR).release -endif -include targets.mk # defines all targets -include objects.mk # defines $(OBJS) - -ifeq ($(os),netbsd) - CFLAGS += -D__unix__ -I/usr/pkg/include -endif - -ifeq ($(os),darwin) - CFLAGS += -D__unix__ -D__DARWIN__ -endif - -ifdef USE_DIALOG - OBJS += $(ODIR)$(SLASH)uifcd.$(OFILE) -endif - -ifdef USE_CURSES - OBJS += $(ODIR)$(SLASH)uifcc.$(OFILE) -endif - -ifdef USE_UIFC32 - OBJS += $(ODIR)$(SLASH)uifc32.$(OFILE) - OBJS += $(ODIR)$(SLASH)ciowrap.$(OFILE) -endif - -ifdef USE_FLTK - OBJS += $(ODIR)$(SLASH)uifcfltk.$(OFILE) -endif - -# So far, only QNX has sem_timedwait() -ifeq ($(os),qnx) - LFLAGS := -lm -lsocket -else - CFLAGS += -DUSE_XP_SEMAPHORES - USE_XP_SEMAPHORES := 1 -endif - - -vpath %.c .. -vpath %.c $(UIFC) -vpath %.cpp $(UIFC) -vpath %.c $(XPDEV) - -# Implicit C Compile Rule for SCFG -$(ODIR)/%.o : %.c - @echo Compiling $< - @$(CC) $(CFLAGS) -c $(SBBSDEFS) $< -o $@ - -# Implicit C++ Compile Rule for SCFG -$(ODIR)/%.o : %.cpp - @echo Compiling $< - @$(CC) $(CFLAGS) -c $(SBBSDEFS) $< -o $@ - -# Create output directories -$(ODIR): - mkdir $(ODIR) +UIFC = ../../uifc/ +XPDEV = ../../xpdev/ +NEED_UIFC := 1 +include $(XPDEV)Common.gmake +SCFG := $(EXEODIR)$(SLASH)scfg$(EXEFILE) $(MAKEHELP): makehelp.c - @$(CC) $(CFLAGS) makehelp.c -o $(MAKEHELP) + $(QUIET)$(CC) $(CFLAGS) makehelp.c -o $(MAKEHELP) $(SCFGHELP): $(OBJS) $(MAKEHELP) - @$(MAKEHELP) $(ODIR) + $(QUIET)$(MAKEHELP) $(EXEODIR) # Monolithic Synchronet executable Build Rule $(SCFG): $(OBJS) ifdef USE_DIALOG - @$(MAKE) --no-print-directory -C ../../libdialog + $(QUIET)$(MAKE) --no-print-directory -C ../../libdialog endif @echo Linking $@ - @$(CCPP) -o $@ $(OBJS) $(LFLAGS) - -# Auto-dependency files (should go in output dir, but gcc v2.9.5 puts in cwd) --include ./*.d --include $(ODIR)/*.d + $(QUIET)$(CXX) -o $@ $(OBJS) $(LDFLAGS) diff --git a/src/sbbs3/scfg/objects.mk b/src/sbbs3/scfg/objects.mk index 155f8fb604b26606491073351a9427a08398ef17..d633366ace6246eadc6674f64b497374785e2a01 100644 --- a/src/sbbs3/scfg/objects.mk +++ b/src/sbbs3/scfg/objects.mk @@ -7,31 +7,29 @@ # LIBODIR, SBBSLIBODIR, SLASH, and OFILE must be pre-defined -OBJS = $(ODIR)$(SLASH)scfg.$(OFILE)\ - $(ODIR)$(SLASH)scfgxtrn.$(OFILE)\ - $(ODIR)$(SLASH)scfgmsg.$(OFILE)\ - $(ODIR)$(SLASH)scfgnet.$(OFILE)\ - $(ODIR)$(SLASH)scfgnode.$(OFILE)\ - $(ODIR)$(SLASH)scfgsub.$(OFILE)\ - $(ODIR)$(SLASH)scfgsys.$(OFILE)\ - $(ODIR)$(SLASH)scfgxfr1.$(OFILE)\ - $(ODIR)$(SLASH)scfgxfr2.$(OFILE)\ - $(ODIR)$(SLASH)scfgchat.$(OFILE)\ - $(ODIR)$(SLASH)scfgsave.$(OFILE)\ - $(ODIR)$(SLASH)scfglib1.$(OFILE)\ - $(ODIR)$(SLASH)smblib.$(OFILE)\ - $(ODIR)$(SLASH)scfglib2.$(OFILE)\ - $(ODIR)$(SLASH)ars.$(OFILE)\ - $(ODIR)$(SLASH)load_cfg.$(OFILE)\ - $(ODIR)$(SLASH)nopen.$(OFILE)\ - $(ODIR)$(SLASH)crc16.$(OFILE)\ - $(ODIR)$(SLASH)crc32.$(OFILE)\ - $(ODIR)$(SLASH)dat_rec.$(OFILE)\ - $(ODIR)$(SLASH)userdat.$(OFILE)\ - $(ODIR)$(SLASH)date_str.$(OFILE)\ - $(ODIR)$(SLASH)str_util.$(OFILE)\ - $(ODIR)$(SLASH)genwrap.$(OFILE)\ - $(ODIR)$(SLASH)dirwrap.$(OFILE)\ - $(ODIR)$(SLASH)filewrap.$(OFILE)\ - $(ODIR)$(SLASH)uifcx.$(OFILE) - +OBJS = $(LIBODIR)$(SLASH)scfg.$(OFILE)\ + $(LIBODIR)$(SLASH)scfgxtrn.$(OFILE)\ + $(LIBODIR)$(SLASH)scfgmsg.$(OFILE)\ + $(LIBODIR)$(SLASH)scfgnet.$(OFILE)\ + $(LIBODIR)$(SLASH)scfgnode.$(OFILE)\ + $(LIBODIR)$(SLASH)scfgsub.$(OFILE)\ + $(LIBODIR)$(SLASH)scfgsys.$(OFILE)\ + $(LIBODIR)$(SLASH)scfgxfr1.$(OFILE)\ + $(LIBODIR)$(SLASH)scfgxfr2.$(OFILE)\ + $(LIBODIR)$(SLASH)scfgchat.$(OFILE)\ + $(LIBODIR)$(SLASH)scfgsave.$(OFILE)\ + $(LIBODIR)$(SLASH)scfglib1.$(OFILE)\ + $(LIBODIR)$(SLASH)smblib.$(OFILE)\ + $(LIBODIR)$(SLASH)scfglib2.$(OFILE)\ + $(LIBODIR)$(SLASH)ars.$(OFILE)\ + $(LIBODIR)$(SLASH)load_cfg.$(OFILE)\ + $(LIBODIR)$(SLASH)nopen.$(OFILE)\ + $(LIBODIR)$(SLASH)crc16.$(OFILE)\ + $(LIBODIR)$(SLASH)crc32.$(OFILE)\ + $(LIBODIR)$(SLASH)dat_rec.$(OFILE)\ + $(LIBODIR)$(SLASH)userdat.$(OFILE)\ + $(LIBODIR)$(SLASH)date_str.$(OFILE)\ + $(LIBODIR)$(SLASH)str_util.$(OFILE)\ + $(LIBODIR)$(SLASH)genwrap.$(OFILE)\ + $(LIBODIR)$(SLASH)dirwrap.$(OFILE)\ + $(LIBODIR)$(SLASH)filewrap.$(OFILE) diff --git a/src/sbbs3/scfg/targets.mk b/src/sbbs3/scfg/targets.mk index 4a39a948edc8290e2d56f8b1b09b7e22f17091f3..d3ef10013c976e6e4a6669aee18bd60f65e0fef0 100644 --- a/src/sbbs3/scfg/targets.mk +++ b/src/sbbs3/scfg/targets.mk @@ -4,14 +4,12 @@ # $Id$ -# ODIR, SLASH, LIBFILE, EXEFILE, and DELETE must be pre-defined +# LIBODIR, SLASH, LIBFILE, EXEFILE, and DELETE must be pre-defined -SCFG = $(ODIR)$(SLASH)scfg$(EXEFILE) -MAKEHELP= $(ODIR)$(SLASH)makehelp$(EXEFILE) -SCFGHELP= $(ODIR)$(SLASH)scfghelp.dat +SCFG = $(EXEODIR)$(SLASH)scfg$(EXEFILE) +MAKEHELP= $(EXEODIR)$(SLASH)makehelp$(EXEFILE) +SCFGHELP= $(EXEODIR)$(SLASH)scfghelp.dat -all: $(ODIR) \ +all: $(EXEODIR) \ + $(LIBODIR) \ $(SCFG) $(SCFGHELP) - -clean: - @$(DELETE) $(ODIR)$(SLASH)* diff --git a/src/sbbs3/targets.mk b/src/sbbs3/targets.mk index ce65011d8a69a6f704664b80eb29bd441379b769..083ea8f3b3e4cae05171a6d2ff4cb9a7cb310ce7 100644 --- a/src/sbbs3/targets.mk +++ b/src/sbbs3/targets.mk @@ -42,7 +42,3 @@ dlls: $(LIBODIR) \ $(SBBS) $(FTPSRVR) $(MAILSRVR) $(SERVICES) mono: $(LIBODIR) $(EXEODIR) $(SBBSMONO) - -clean: - @$(DELETE) $(LIBODIR)$(SLASH)* - @$(DELETE) $(EXEODIR)$(SLASH)* diff --git a/src/sbbs3/uedit/GNUmakefile b/src/sbbs3/uedit/GNUmakefile index 34cf9057e09f96616c50ed9314cd3f0ff6e3dcd7..44505ac0cd6b4c2827bc6cf82a74d95ddba21138 100644 --- a/src/sbbs3/uedit/GNUmakefile +++ b/src/sbbs3/uedit/GNUmakefile @@ -16,143 +16,13 @@ #USE_CURSES := 1 #Use old curses UIFC implementation USE_UIFC32 := 1 # Use new uifc32 implementation -# Macros -ifndef RELEASE - ifndef DEBUG - RELEASE := 1 - endif -endif - -ifdef DEBUG - BUILD = debug - CFLAGS += -g -else - BUILD = release -endif - -ifdef bcc - CC = bc++ -q - CCPRE := bcc - CXX = bc++ -q - LD = ilink -q - CFLAGS += -mm -md -D__unix__ -w-csu -w-pch -w-ccc -w-rch -w-par -w-aus -else - CFLAGS += -MMD -Wall - CCPRE ?= gcc - ifdef BUILD_DEPENDS - CC = ../../build/mkdep -a - CXX = ../../build/mkdep -a - LD = echo - COMPILE_MSG := Depending - else - CC ?= gcc - CXX ?= g++ - LD ?= ld - COMPILE_MSG := Compiling - endif -endif -OFILE = o - -LIBFILE = .a -UIFC = ../../uifc/ XPDEV = ../../xpdev/ SBBS3 = ../ - -ifndef os - os := $(shell uname) -endif -# this line wont work with solaris unless awk in path is actually gawk -os := $(shell echo $(os) | tr "[A-Z]" "[a-z]") -#os := $(shell echo $(os) | awk '/.*/ { print tolower($$1)}') -# remove '/' from "os/2" -os := $(shell echo $(os) | tr -d "/") - -LIBODIR := $(CCPRE).$(os).lib.$(BUILD) -EXEODIR := $(CCPRE).$(os).exe.$(BUILD) - -DELETE = rm -f - -CFLAGS += -I../../include/mozilla/js -I$(XPDEV) -I$(UIFC) -I$(SBBS3) -LFLAGS += -lcurses - -ifeq ($(os),netbsd) - CFLAGS += -D__unix__ -I/usr/pkg/include -endif - -# So far, only QNX has sem_timedwait() -ifeq ($(os),qnx) - LFLAGS := -lm -lsocket -else - CFLAGS += -DUSE_XP_SEMAPHORES - USE_XP_SEMAPHORES := 1 -endif - -vpath %.c $(UIFC) $(XPDEV) $(SBBS3) -vpath %.cpp $(SBBS3) - -OBJS := $(LIBODIR)/filewrap.o \ - $(LIBODIR)/sockwrap.o \ - $(LIBODIR)/dirwrap.o \ - $(LIBODIR)/genwrap.o \ - $(LIBODIR)/sbbs_ini.o \ - $(LIBODIR)/ini_file.o \ - $(LIBODIR)/scfglib1.o \ - $(LIBODIR)/scfglib2.o \ - $(LIBODIR)/nopen.o \ - $(LIBODIR)/userdat.o \ - $(LIBODIR)/ars.o \ - $(LIBODIR)/dat_rec.o \ - $(LIBODIR)/str_util.o \ - $(LIBODIR)/crc16.o \ - $(LIBODIR)/load_cfg.o \ - $(LIBODIR)/date_str.o \ - $(LIBODIR)/smblib.o \ - $(LIBODIR)/getstats.o \ - $(LIBODIR)/getmail.o \ - $(LIBODIR)/uedit.o - -ifdef USE_CURSES - OBJS += $(LIBODIR)/uifcc.o -endif - -ifdef USE_UIFC32 - OBJS += $(LIBODIR)/uifc32.o \ - $(LIBODIR)/ciowrap.o -endif - -all: $(LIBODIR) $(BUILD_DEPENDS)$(EXEODIR)/uedit +NEED_UIFC := 1 +include $(XPDEV)Common.gmake FORCE$(EXEODIR)/uedit: $(EXEODIR) $(OBJS) $(BUILD_DEPENDS) $(EXEODIR)/uedit: $(EXEODIR) $(OBJS) $(BUILD_DEPENDS) @echo Linking $@ - @$(CC) $(LFLAGS) $(OBJS) -o $@ - -# Implicit C Compile Rule for utils -$(LIBODIR)/%.o : %.c $(LIBODIR) $(BUILD_DEPENDS) - ifndef bcc - @echo $(COMPILE_MSG) $< - endif - @$(CC) $(CFLAGS) -o $@ -c $< - -$(LIBODIR): - mkdir $(LIBODIR) - -$(EXEODIR): - mkdir $(EXEODIR) - -clean: - @$(DELETE) $(LIBODIR)/* - @$(DELETE) $(EXEODIR)/* - -depend: - @$(DELETE) $(LIBODIR)/.depend - @$(DELETE) $(EXEODIR)/.depend - $(MAKE) BUILD_DEPENDS=FORCE - -FORCE: - --include $(LIBODIR)/.depend --include $(EXEODIR)/.depend --include $(LIBODIR)/*.d --include $(EXEODIR)/*.d + @$(CC) $(LDFLAGS) $(OBJS) -o $@ diff --git a/src/sbbs3/umonitor/GNUmakefile b/src/sbbs3/umonitor/GNUmakefile index 84d0cd2717083dbecf92cd673c3ecd7ce86ea176..c18f26ce885b39a0cb6f8e221f5050811c49f0d1 100644 --- a/src/sbbs3/umonitor/GNUmakefile +++ b/src/sbbs3/umonitor/GNUmakefile @@ -16,143 +16,18 @@ #USE_CURSES := 1 #Use old curses UIFC implementation USE_UIFC32 := 1 # Use new uifc32 implementation -# Macros -ifndef RELEASE - ifndef DEBUG - RELEASE := 1 - endif -endif - -ifdef DEBUG - BUILD = debug - CFLAGS += -g -else - BUILD = release -endif - -ifdef bcc - CC = bc++ -q - CCPRE := bcc - CXX = bc++ -q - LD = ilink -q - CFLAGS += -mm -md -D__unix__ -w-csu -w-pch -w-ccc -w-rch -w-par -w-aus -else - CFLAGS += -MMD -Wall - CCPRE ?= gcc - ifdef BUILD_DEPENDS - CC = ../../build/mkdep -a - CXX = ../../build/mkdep -a - LD = echo - COMPILE_MSG := Depending - else - CC ?= gcc - CXX ?= g++ - LD ?= ld - COMPILE_MSG := Compiling - endif -endif -OFILE = o - -LIBFILE = .a UIFC = ../../uifc/ XPDEV = ../../xpdev/ SBBS3 = ../ -ifndef os - os := $(shell uname) -endif -# this line wont work with solaris unless awk in path is actually gawk -os := $(shell echo $(os) | tr "[A-Z]" "[a-z]") -#os := $(shell echo $(os) | awk '/.*/ { print tolower($$1)}') -# remove '/' from "os/2" -os := $(shell echo $(os) | tr -d "/") - -LIBODIR := $(CCPRE).$(os).lib.$(BUILD) -EXEODIR := $(CCPRE).$(os).exe.$(BUILD) - -DELETE = rm -f - -CFLAGS += -I../../include/mozilla/js -I$(XPDEV) -I$(UIFC) -I$(SBBS3) -LFLAGS += -lcurses - -ifeq ($(os),netbsd) - CFLAGS += -D__unix__ -I/usr/pkg/include -endif - -# So far, only QNX has sem_timedwait() -ifeq ($(os),qnx) - LFLAGS := -lm -lsocket -else - CFLAGS += -DUSE_XP_SEMAPHORES - USE_XP_SEMAPHORES := 1 -endif - -vpath %.c $(UIFC) $(XPDEV) $(SBBS3) -vpath %.cpp $(SBBS3) - -OBJS := $(LIBODIR)/filewrap.o \ - $(LIBODIR)/chat.o \ - $(LIBODIR)/sockwrap.o \ - $(LIBODIR)/dirwrap.o \ - $(LIBODIR)/genwrap.o \ - $(LIBODIR)/sbbs_ini.o \ - $(LIBODIR)/ini_file.o \ - $(LIBODIR)/scfglib1.o \ - $(LIBODIR)/scfglib2.o \ - $(LIBODIR)/nopen.o \ - $(LIBODIR)/userdat.o \ - $(LIBODIR)/ars.o \ - $(LIBODIR)/dat_rec.o \ - $(LIBODIR)/str_util.o \ - $(LIBODIR)/crc16.o \ - $(LIBODIR)/load_cfg.o \ - $(LIBODIR)/date_str.o \ - $(LIBODIR)/spyon.o \ - $(LIBODIR)/smblib.o \ - $(LIBODIR)/getstats.o \ - $(LIBODIR)/getmail.o \ - $(LIBODIR)/umonitor.o - -ifdef USE_CURSES - OBJS += $(LIBODIR)/uifcc.o -endif - -ifdef USE_UIFC32 - OBJS += $(LIBODIR)/uifc32.o \ - $(LIBODIR)/ciowrap.o -endif - -all: $(LIBODIR) $(BUILD_DEPENDS)$(EXEODIR)/umonitor +NEED_UIFC := 1 +include $(XPDEV)Common.gmake FORCE$(EXEODIR)/umonitor: $(EXEODIR) $(OBJS) $(BUILD_DEPENDS) $(EXEODIR)/umonitor: $(EXEODIR) $(OBJS) $(BUILD_DEPENDS) @echo Linking $@ - @$(CC) $(LFLAGS) $(OBJS) -o $@ - -# Implicit C Compile Rule for utils -$(LIBODIR)/%.o : %.c $(LIBODIR) $(BUILD_DEPENDS) - ifndef bcc - @echo $(COMPILE_MSG) $< - endif - @$(CC) $(CFLAGS) -o $@ -c $< - -$(LIBODIR): - mkdir $(LIBODIR) - -$(EXEODIR): - mkdir $(EXEODIR) - -clean: - @$(DELETE) $(LIBODIR)/* - @$(DELETE) $(EXEODIR)/* - -depend: - @$(DELETE) $(LIBODIR)/.depend - @$(DELETE) $(EXEODIR)/.depend - $(MAKE) BUILD_DEPENDS=FORCE - -FORCE: + @$(CC) $(LDFLAGS) $(OBJS) -o $@ -include $(LIBODIR)/.depend -include $(EXEODIR)/.depend diff --git a/src/xpdev/Common.gmake b/src/xpdev/Common.gmake new file mode 100644 index 0000000000000000000000000000000000000000..cb76b1dfe119950a97fc172b01b1bf752aef2aaf --- /dev/null +++ b/src/xpdev/Common.gmake @@ -0,0 +1,288 @@ +# Available Options: +# NEED_THREADS = Set flags suitable for threaded programs +# NEED_CURSES = Set flags suitable for building with the curses lib +# NEED_JAVASCRIPT = Set flags for use with JS +# NEED_UIFC = Set flags for use with UIFC + +UIFC_DIR ?= $(XPDEV)../uifc/ +SBBS_SRC ?= $(XPDEV)../sbbs3/ + +# Set DEBUG +ifndef DEBUG + ifndef RELEASE + DEBUG := 1 + endif +endif + +# VERBOSE/QUITE +ifndef VERBOSE + QUIET = @ +endif + +CFLAGS += -I$(SBBS_SRC) + +# Compiler-specific options +ifdef bcc + CC := bc++ + CCPRE := bcc + CFLAGS += -mm -md -D__unix__ -w-csu -w-pch -w-ccc -w-rch -w-par -w-aus +# CFLAGS += -q -w -D__unix__ +else + CFLAGS += -MMD -Wall + CCPRE ?= gcc + ifdef BUILD_DEPENDS + CC = $(XPDEV)../build/mkdep -a + CXX = $(XPDEV)../build/mkdep -a + LD = echo + COMPILE_MSG := Depending + else + CC ?= gcc + CXX ?= g++ + LD ?= ld + COMPILE_MSG := Compiling + endif +endif + +SLASH = / +OFILE = o + +ifdef DEBUG + BUILD = debug +else + BUILD = release +endif +BUILDPATH := $(BUILD) + +# Get OS +ifndef os + os = $(shell uname) +endif +os := $(shell echo $(os) | tr "[A-Z]" "[a-z]") + +LIBODIR := $(CCPRE).$(os).lib.$(BUILDPATH) +EXEODIR := $(CCPRE).$(os).exe.$(BUILDPATH) +LDFLAGS += -L$(LIBODIR) + +DELETE = rm -fv +EXEFILE := + +ifeq ($(os),openbsd) +LIBFILE = .so.0.0 +else + ifeq ($(os),darwin) + LIBFILE = .dylib + else + LIBFILE = .so + endif +endif +LIBPREFIX = lib + +# OS Specific Flags +ifeq ($(os),sunos) # Solaris + CFLAGS += -D__solaris__ -DNEEDS_DAEMON -DNEEDS_FORKPTY +endif +ifeq ($(os),netbsd) # NetBSD + CFLAGS += -D__unix__ -I/usr/pkg/include -I/usr/pkg/pthreads/include -DNEEDS_FORKPTY +endif +ifeq ($(os),darwin) + CFLAGS += -D__unix__ -fno-common -D__DARWIN__ + LDFLAGS += -lm +endif + +# PThread-specific flags +ifeq ($(os),linux) # Linux + ifndef THREADS_ACTUALLY_WORK + PTHREAD_CFLAGS += -D_THREAD_SUID_BROKEN + endif +endif +PTHREAD_CFLAGS += -D_THREAD_SAFE -D_REENTRANT +ifeq ($(os),freebsd) # FreeBSD + PTHREAD_CFLAGS += -DUSE_XP_SEMAPHORES + PTHREAD_LDFLAGS += -pthread + XP_SEM := 1 +else + ifeq ($(os),openbsd) # OpenBSD + PTHREAD_CFLAGS += -DUSE_XP_SEMAPHORES + PTHREAD_LDFLAGS += -pthread + XP_SEM := 1 + else + ifeq ($(os),netbsd) # NetBSD + PTHREAD_CFLAGS += -D__unix__ -DUSE_XP_SEMAPHORES + PTHREAD_LDFLAGS += -L/usr/pkg/lib -L/usr/pkg/pthreads/lib -lpthread + XP_SEM := 1 + else + ifeq ($(os),qnx) # QNX + else + ifeq ($(os),darwin) # Darwin/Mac OS X + PTHREAD_CFLAGS += -D__unix__ -DUSE_XP_SEMAPHORES -D__DARWIN__ + PTHREAD_LDFLAGS += -lpthread + XP_SEM := 1 + else + ifeq ($(os),solaris) # Solaris + PTHREAD_CFLAGS += -D_POSIX_PTHREAD_SEMANTICS + else # Linux / Other UNIX + XP_SEM := 1 + PTHREAD_CFLAGS += -DUSE_XP_SEMAPHORES + ifdef bcc + PTHREAD_LDFLAGS += libpthread.a + else + PTHREAD_LDFLAGS += -lpthread + endif + endif + endif + endif + endif + endif +endif + +ifdef NEED_THREADS + CFLAGS += $(PTHREAD_CFLAGS) + LDFLAGS += $(PTHREAD_LDFLAGS) +endif + +ifdef DEBUG + ifdef bcc + CFLAGS += -v -y -0d + else + CFLAGS += -ggdb + endif + CFLAGS += -D_DEBUG + ODIR := $(ODIR).debug +else # RELEASE + CFLAGS += -O3 + ODIR := $(ODIR).release +endif + +# UIFC Related stuff +UIFC_CFLAGS += -I$(UIFC) +UIFC_OBJS = $(LIBODIR)/uifcx.o +ifdef USE_FLTK + UIFC_CFLAGS += -DUSE_FLTK -I$(XPDEV)/../../include/fltk + UIFC_LDFLAGS += -L$(XPDEV)../../lib/fltk/$(os) -L/usr/X11R6/lib -lm -lfltk -lX11 + UIFC_OBJS+= $(LIBODIR)/uifcfltk.o +endif +ifdef USE_DIALOG + LDFLAGS += -L$(XPDEV)../libdialog -ldialog $(CURSESLIB) + CFLAGS += -I$(XPDEV)../libdialog -DUSE_DIALOG + UIFC_NEED_CURSES := 1 +endif +ifdef USE_CURSES + UIFC_CFLAGS += -DUSE_CURSES + UIFC_LDFLAGS += $(CURSES_LDFLAGS) + UIFC_OBJS += $(LIBODIR)/uifcc.o + UIFC_NEED_CURSES := 1 +endif +ifdef USE_UIFC32 + UIFC_CFLAGS += -DUSE_UIFC32 + UIFC_LDFLAGS += $(CURSES_LDFLAGS) + UIFC_OBJS += $(LIBODIR)/uifc32.o + UIFC_OBJS += $(LIBODIR)/ciowrap.o + UIFC_NEED_CURSES := 1 +endif +ifdef NEED_UIFC + CFLAGS += $(UIFC_CFLAGS) + LDFLAGS += $(UIFC_LDFLAGS) +endif + +# Curses Stuff +ifeq ($(os),qnx) + CURSES_LDFLAGS += -lncurses +else + ifeq ($(os),netbsd) + CURSES_CFLAGS += -I/usr/pkg/include + CURSES_LDFLAGS += -lncurses + else + CURSES_LDFLAGS += -lcurses + endif +endif + +ifdef NEED_CURSES + CFLAGS += $(CURSES_CFLAGS) + LDFLAGS += $(CURSES_LDFLAGS) +endif +ifdef UIFC_NEED_CURSES + UIFC_CFLAGS += $(CURSES_CFLAGS) + UIFC_LDFLAGS += $(CURSES_LDFLAGS) +endif + +JS_CFLAGS += -DJAVASCRIPT +ifdef JSINCLUDE + JS_CFLAGS += -I$(JSINCLUDE) +else + JS_CFLAGS += -I$(XPDEV)../../include/mozilla/js +endif +ifndef JSLIBDIR + JSLIBDIR := $(XPDEV)../../lib/mozilla/js/$(os).$(BUILD) +endif +ifndef JSLIB + JSLIB := js +endif +ifndef NSPRDIR + NSPRDIR := $(XPDEV)../../lib/mozilla/nspr/$(os).$(BUILD) +endif +JS_LDFLAGS += -L$(JSLIBDIR) -l$(JSLIB) +#The following is needed for nspr support on Linux +ifeq ($(os),linux) + JS_LDFLAGS += -ldl +endif +JS_LDFLAGS += -lnspr4 -L$(NSPRDIR) + +ifdef NEED_JAVASCRIPT + CFLAGS += $(JS_CFLAGS) + LDFLAGS += $(JS_LDFLAGS) +endif + +vpath %.c $(XPDEV) +vpath %.c $(UIFC_DIR) +vpath %.c $(SBBS_SRC) +vpath %.cpp $(UIFC_DIR) +vpath %.cpp $(SBBS_SRC) + +CFLAGS += -I$(XPDEV) -I$(UIFC_DIR) -I$(SBBS_SRC) + +SBBSDEFS := +-include targets.mk +-include objects.mk # defines $(OBJS) +ifdef NEED_UIFC + OBJS += $(UIFC_OBJS) +endif +ifdef XP_SEM + OBJS += $(LIBODIR)$(SLASH)xpsem.$(OFILE) +endif +-include sbbsdefs.mk # defines $(SBBSDEFS) + +# Implicit C Compile Rule for SBBS +$(LIBODIR)/%.o : %.c $(BUILD_DEPENDS) + ifndef bcc + @echo $(COMPILE_MSG) $< + endif + $(QUIET)$(CC) $(CFLAGS) $(SBBSDEFS) -o $@ -c $< + +# Implicit C++ Compile Rule for SBBS +$(LIBODIR)/%.o : %.cpp $(BUILD_DEPENDS) + ifndef bcc + @echo $(COMPILE_MSG) $< + endif + $(QUIET)$(CXX) $(CFLAGS) $(SBBSDEFS) -o $@ -c $< + +$(LIBODIR): + $(QUIET)mkdir $(LIBODIR) + +$(EXEODIR): + $(QUIET)mkdir $(EXEODIR) + +clean: + $(QUIET)$(DELETE) $(LIBODIR)$(SLASH)* + $(QUIET)$(DELETE) $(EXEODIR)$(SLASH)* + +depend: + $(QUIET)$(DELETE) $(LIBODIR)/.depend + $(QUIET)$(DELETE) $(EXEODIR)/.depend + $(QUIET)$(MAKE) BUILD_DEPENDS=FORCE + +FORCE: + +-include $(LIBODIR)/.depend +-include $(EXEODIR)/.depend +-include $(LIBODIR)/*.d +-include $(EXEODIR)/*.d diff --git a/src/xpdev/GNUmakefile b/src/xpdev/GNUmakefile index d243e6d4f37aa8a1c99f7f43816f0612ae8210fc..e2a86bc82d656488d6fcc1a18241611a5cc8eb82 100644 --- a/src/xpdev/GNUmakefile +++ b/src/xpdev/GNUmakefile @@ -11,116 +11,23 @@ ######################################################################### # $Id$ +NEED_THREADS := 1 -# Macros -ifndef DEBUG -ifndef RELEASE -DEBUG := 1 -endif -endif - -ifdef bcc - CC := bc++ - CCPRE := bcc - CFLAGS += -q -w -D__unix__ -else - CC := gcc - CCPRE := gcc - CFLAGS += -Wall -O -endif - -SLASH = / -OFILE = o - -ifndef os - os = $(shell uname) -endif -os := $(shell echo $(os) | tr "[A-Z]" "[a-z]") -#os := $(shell echo $(os) | awk '/.*/ { print tolower($$1)}') - -ifdef bcc - ODIR := bcc.$(os) -else - ODIR := gcc.$(os) -endif - -DELETE = rm -fv - -CFLAGS += -D_THREAD_SAFE -ifeq ($(os),freebsd) # FreeBSD - CFLAGS += -DUSE_XP_SEMAPHORES - LFLAGS := -pthread - XP_SEM := 1 -else - ifeq ($(os),openbsd) # OpenBSD - CFLAGS += -DUSE_XP_SEMAPHORES - LFLAGS := -pthread - XP_SEM := 1 - else - ifeq ($(os),netbsd) # NetBSD - CFLAGS += -D__unix__ -DUSE_XP_SEMAPHORES -I/usr/pkg/include -I/usr/pkg/pthreads/include - LFLAGS := -L/usr/pkg/lib -L/usr/pkg/pthreads/lib -lpthread - XP_SEM := 1 - else - ifeq ($(os),qnx) # QNX - LFLAGS := - else - ifeq ($(os),darwin) # Darwin/Mac OS X - CFLAGS += -D__unix__ -DUSE_XP_SEMAPHORES -D__DARWIN__ - LFLAGS += -lpthread - XP_SEM := 1 - else # Linux / Other UNIX - XP_SEM := 1 - CFLAGS += -DUSE_XP_SEMAPHORES - ifdef bcc - LFLAGS := libpthread.a - else - LFLAGS := -lpthread - endif - endif - endif - endif - endif -endif - -ifdef DEBUG - ifdef bcc - CFLAGS += -v -y - else - CFLAGS += -g - endif - CFLAGS += -D_DEBUG - ODIR := $(ODIR).debug -else # RELEASE - ODIR := $(ODIR).release -endif - -include objects.mk # defines $(OBJS) -include targets.mk # defines all and clean targets - -ifdef XP_SEM - OBJS += $(ODIR)$(SLASH)xpsem.$(OFILE) -endif - -# Implicit C Compile Rule -$(ODIR)/%.o : %.c - @echo Compiling $< - @$(CC) $(CFLAGS) -o $@ -c $< - -# Create output directories -$(ODIR): - mkdir $(ODIR) +XPDEV := ./ +include $(XPDEV)Common.gmake # Executable Build Rule -$(WRAPTEST): $(ODIR)/wraptest.o $(OBJS) +$(WRAPTEST): $(LIBODIR)/wraptest.o $(OBJS) @echo Linking $@ - @$(CC) $(CFLAGS) -o $@ $(LFLAGS) $^ + $(QUIET)$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $^ -lib: $(ODIR)/libxpdev.so $(ODIR)/libxpdev.a +lib: $(EXEODIR)/libxpdev.so $(EXEODIR)/libxpdev.a -$(ODIR)/libxpdev.so: $(OBJS) - gcc -shared $(OBJS) -o $(ODIR)/libxpdev.so +$(EXEODIR)/libxpdev.so: $(OBJS) + @echo Linking $@ + $(QUIET)gcc -shared $(OBJS) -o $(EXEODIR)/libxpdev.so -$(ODIR)/libxpdev.a: $(OBJS) - ar -r $(ODIR)/libxpdev.a $(OBJS) - ranlib $(ODIR)/libxpdev.a +$(EXEODIR)/libxpdev.a: $(OBJS) + @echo Linking $@ + $(QUIET)ar -r $(EXEODIR)/libxpdev.a $(OBJS) + $(QUIET)ranlib $(EXEODIR)/libxpdev.a diff --git a/src/xpdev/objects.mk b/src/xpdev/objects.mk index 09286d9a4920db14766441fb7a87fa28150c09da..903e2556b24d6d8b2a9ed6a6ce1e958671b15126 100644 --- a/src/xpdev/objects.mk +++ b/src/xpdev/objects.mk @@ -4,12 +4,12 @@ # $Id$ -# ODIR, SLASH, and OFILE must be pre-defined +# LIBODIR, SLASH, and OFILE must be pre-defined OBJS = \ - $(ODIR)$(SLASH)genwrap.$(OFILE) \ - $(ODIR)$(SLASH)conwrap.$(OFILE) \ - $(ODIR)$(SLASH)dirwrap.$(OFILE) \ - $(ODIR)$(SLASH)filewrap.$(OFILE) \ - $(ODIR)$(SLASH)threadwrap.$(OFILE) \ - $(ODIR)$(SLASH)semwrap.$(OFILE) + $(LIBODIR)$(SLASH)genwrap.$(OFILE) \ + $(LIBODIR)$(SLASH)conwrap.$(OFILE) \ + $(LIBODIR)$(SLASH)dirwrap.$(OFILE) \ + $(LIBODIR)$(SLASH)filewrap.$(OFILE) \ + $(LIBODIR)$(SLASH)threadwrap.$(OFILE) \ + $(LIBODIR)$(SLASH)semwrap.$(OFILE) diff --git a/src/xpdev/targets.mk b/src/xpdev/targets.mk index 353e706fda4b03b01b5fda0bf4717c346f665072..b73e66eee5806eb9ae80a1fcd11fbaf629fdcf81 100644 --- a/src/xpdev/targets.mk +++ b/src/xpdev/targets.mk @@ -6,9 +6,6 @@ # ODIR, SLASH, LIBFILE, EXEFILE, and DELETE must be pre-defined -WRAPTEST = $(ODIR)$(SLASH)wraptest$(EXEFILE) +WRAPTEST = $(EXEODIR)$(SLASH)wraptest$(EXEFILE) -all: $(ODIR) $(WRAPTEST) - -clean: - @$(DELETE) $(ODIR)$(SLASH)* +all: $(EXEODIR) $(LIBODIR) $(WRAPTEST)