Commit 086180bc authored by deuce's avatar deuce
Browse files

New Build System... move common stuff to xpdev/Common.gmake

parent 35d6376f
......@@ -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
......@@ -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
......
......@@ -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)
......@@ -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)*
......@@ -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 "/")