Skip to content
Snippets Groups Projects
Commit beb672cf authored by deuce's avatar deuce
Browse files

Add OUTPUT and LOUTPUT macros

Add comments for common targets
Add untested Borland makefile
parent a9bfb583
Branches
Tags
No related merge requests found
# 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)$@
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment