diff --git a/src/build/Common.bmake b/src/build/Common.bmake new file mode 100644 index 0000000000000000000000000000000000000000..d10e29838e5f93d891a35502fc39a67b889c1601 --- /dev/null +++ b/src/build/Common.bmake @@ -0,0 +1,176 @@ +# build/Common.bmake +# +# Global build system setup file for Borland Make/BCC +# +# $Id$ +# +############################################################################# +# @format.tab-size 4 (Plain Text/Source Code File Header) # +# @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) # +# # +# Copyright 2004 Rob Swindell - http://www.synchro.net/copyright.html # +# # +# This program is free software; you can redistribute it and/or # +# modify it under the terms of the GNU General Public License # +# as published by the Free Software Foundation; either version 2 # +# of the License, or (at your option) any later version. # +# See the GNU General Public License for more details: gpl.txt or # +# http://www.fsf.org/copyleft/gpl.html # +# # +# Anonymous FTP access to the most recent released source is available at # +# ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net # +# # +# Anonymous CVS access to the development source and modification history # +# is available at cvs.synchro.net:/cvsroot/sbbs, example: # +# cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login # +# (just hit return, no password is necessary) # +# cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src # +# # +# For Synchronet coding style and modification guidelines, see # +# http://www.synchro.net/source.html # +# # +# You are encouraged to submit any modifications (preferably in Unix diff # +# format) via e-mail to mods@synchro.net # +# # +# Note: If this box doesn't appear square, then you need to fix your tabs. # +############################################################################# +# # +############################################################################# +# # +# Common macro setup for Borland make # +# # +# Common Build Macros REQUIRED: # +# SRC_ROOT - *MUST* be set to the src dir # +# # +# Common Build Macros Used: # +# DEBUG - Create a debug build # +# RELEASE - Create a release build # +# (Mutually exclusive, if both are set, RELEASE # +# is cleared) # +# DONT_CLOBBER_CC - Do not change the default setting of CC # +# OBJPATH_SUFFIX - Suffix appended to OBJPATH usefull for compiling # +# different options of the same source file # +# # +# Common Build Macros Defined: # +# DELETE - Delete files (Preferrably verbose) # +# OBJODIR - Object output dir # +# LIBODIR - Library output dir # +# EXEODIR - Executable output dir # +# DEBUG - Set for debug builds # +# RELEASE - Set for release builds # +# One of DEBUG or RELEASE is always set! # +# QUIET - Target command prefix to show/not show commands # +# (Toggled off by setting VERBOSE) # +# CFLAGS - Common C and C++ compiler flags # +# CCFLAGS - C specific compiler flags # +# CXXFLAGS - C++ specific compiler flags # +# LDFLAGS - Linker flags # +# CC - C compiler # +# CXX - C++ compiler # +# EXEFILE - Executable file extension (Includes .) # +# OFILE - Object file extension (Includes .) # +# SOFILE - Shared object (DLL) file extension (Includes .) # +# LIBFILE - Static library file extension (Include .) # +# LIBPREFIX - Prefix to library filename # +# LIBS - Library names (Appropriate for dependencies) # +# LIB_LDFLAGS - Libraries appropriate for link command-line usage # +# COMPILE_MSG - Message saying a target is being compiled # +# DIRSEP - The directory seperator this system likes most # +# VERSION - Synchronet version number in MAJOR.MINOR format # +# (Numeric ONLY) # +# # +# Common Targets Defined: # +# Implicit C and C++ targets # +# "clean" target # +# Output directory targets # +# # +############################################################################# + +# Macros +# Set VERSION +!ifndef VERSION + VERSION = 3.12 +!endif + +# Set DEBUG +!ifdef DEBUG + !ifdef RELEASE + !undef RELEASE + !endif +!endif + +!ifndef DEBUG + !ifndef RELEASE + DEBUG = 1 + !endif +!endif + +# VERBOSE/QUIET +!ifndef VERBOSE + QUIET = @ +!endif + +# OS-specific +DIRSEP = \ # This comment is necessary +EXEFILE = .exe +OFILE = .obj +SOFILE = .dll +LIBFILE = .lib +DELETE = echo y | del + +# Compiler-specific +!ifdef msc # Microsoft Visual C++ +CC = cl +LD = link +CCPRE = msvc.Win32 +OUTPUT = -Fo +LOUTPUT = -Fe +CFLAGS = -nologo -MTd +LDFLAGS = $(CFLAGS) +!ifdef DEBUG +CFLAGS = $(CFLAGS) -Yd +!endif + +!else # Borland C++ + +CC = bcc32 +CCPRE = bcc +LD = ilink32 +OUTPUT = -o +LOUTPUT = $(OUTPUT) +CFLAGS = -n$(LIBODIR) -WM -q +LDFLAGS = $(CFLAGS) +CFLAGS = $(CFLAGS) -M -WD -WM -X- +!ifdef DEBUG +CFLAGS = $(CFLAGS) -v +!endif +!endif + +# Common compiler flags +!ifdef DEBUG +CFLAGS = $(CFLAGS) -Od -D_DEBUG +!endif + +# Debug or release build? +!ifdef DEBUG +BUILDPATH = debug +!else +BUILDPATH = release +!endif + +LIBODIR := $(CCPRE).win32.lib.$(BUILDPATH) +OBJODIR := $(CCPRE).win32.obj.$(BUILDPATH)$(OBJPATH_SUFFIX) +EXEODIR := $(CCPRE).win32.$(machine).exe.$(BUILDPATH) + +!include targets.mk +!include $(SRC_ROOT)/build/rules.mk +!include objects.mk # defines $(OBJS) +!include libobjs.mk # defines $(LIB_OBJS) + +# Implicit C Compile Rule +{.}.c$(OFILE): + @$(CC) $(CFLAGS) $(CCFLAGS) -c $< $(OUTPUT)$@ + +# Implicit C++ Compile Rule +{.}.cpp$(OFILE): + @$(CC) $(CFLAGS) $(CXXFLAGS) -c $< $(OUTPUT)$@ diff --git a/src/build/Common.gmake b/src/build/Common.gmake index 86d5ec0ebcb2b8cda706339723f305aa9f3cefc0..8753e2a2368456faa99356ee973391387e7ec553 100644 --- a/src/build/Common.gmake +++ b/src/build/Common.gmake @@ -78,6 +78,13 @@ # DIRSEP - The directory seperator this system likes most # # VERSION - Synchronet version number in MAJOR.MINOR format # # (Numeric ONLY) # +# OUTPUT - Compiler flag specifying output filename # +# LOUTPUT - Linker flag specifying output filename # +# # +# Common Targets Defined: # +# Implicit C and C++ targets # +# "clean" target # +# Output directory targets # # # ############################################################################# @@ -178,6 +185,9 @@ EXEFILE := SOFILE := .so LIBFILE := .a +OUTPUT := -o +LOUTPUT := -o + ifeq ($(os),openbsd) SOFILE := $(SOFILE)$(VERSION) else