Chat-O-Matic/build/jam/BuildSettings
2010-05-07 09:47:10 +00:00

114 lines
2.7 KiB
Plaintext

# BuildSettings
#
# Setup global variables.
# C and C++ flags
if $(OSPLAT) = PPC {
# filter out -nosyspath
CFLAGS = [ FFilter $(CFLAGS) : -nosyspath ] ;
C++FLAGS = [ FFilter $(C++FLAGS) : -nosyspath ] ;
LINKFLAGS += -warn -export pragma ;
}
# Use copyattr for copying.
CP = copyattr --data ;
# Default paths for bison and flex:
BISON = bison ;
LEX = flex ;
# mkdir shall not fail, if the directory already exists.
MKDIR = mkdir -p ;
# by default we do not strip and do not build tests:
STRIP_APPS ?= 0 ;
BUILD_TESTS ?= 0 ;
# Enable debugging by default
DEBUG ?= 1 ;
rule SetUpSubDirBuildSettings
{
# SetUpSubDirBuildSettings <dir> ;
#
# Sets up the compiler flags and defines based on the WARNINGS, DEBUG, and
# OPTIMIZE variables. Also sets the locations for the targets (objects,
# libraries and executables).
#
# <dir>: Parameters as passed to the SubDir rule, i.e. the name of the
# TOP variable and the subdir tokens.
#
local dir = $(1) ;
# warnings settings
if $(WARNINGS) != 0 {
if $(OSPLAT) = X86 {
CCFLAGS += -Wall -Wno-multichar -Wpointer-arith
-Wmissing-prototypes -Wcast-align -Wsign-compare ;
C++FLAGS += -Wall -Wno-multichar -Wno-ctor-dtor-privacy -Woverloaded-virtual
-Wconversion -Wpointer-arith -Wcast-align
-Wsign-compare -Wno-reorder -Wno-unknown-pragmas ;
} else {
CCFLAGS += -w on -requireprotos ;
}
}
local gccString = ;
if $(IS_GCC4_PLATFORM) {
gccString += gcc4 ;
} else {
gccString += gcc2 ;
}
local binModeString = ;
if $(DEBUG) && $(DEBUG) != 0 {
binModeString += debug ;
} else {
binModeString += release ;
}
# debugging settings
if $(DEBUG) && $(DEBUG) != 0 {
OPTIMIZE = 0 ;
STRIP_APPS = 0 ;
DEFINES += DEBUG=$(DEBUG) BM_REF_DEBUGGING ;
CCFLAGS += -g ;
C++FLAGS += -g -fno-inline ;
LINKFLAGS += -g ;
}
DISTRO_DIR = [ FDirName $(TOP) generated distro-$(OS:L)-$(OSPLAT:L)-$(gccString)-$(binModeString) ] ;
OBJECTS_DIR = [ FDirName $(TOP) generated objects-$(OS:L)-$(OSPLAT:L)-$(gccString)-$(binModeString) ] ;
# optimization settings
if $(OPTIMIZE) = 0 {
if $(OSPLAT) = X86 {
OPTIM = -O0 ;
} else {
OPTIM = -O0 ;
}
} else {
if $(OSPLAT) = X86 {
OPTIM ?= -O3 -fstrict-aliasing ;
} else {
OPTIM ?= -O7 ;
}
}
# setup objects location
local objdir = [ FDirName $(OBJECTS_DIR) $(dir[2-]) ] ;
SEARCH_SOURCE += $(objdir) ;
LOCATE_SOURCE = $(objdir) ;
LOCATE_TARGET = $(objdir) ;
# setup main targets location
LOCATE_MAIN_TARGET ?= [ FDirName $(DISTRO_DIR) ] ;
}
# The LOCATE_MAIN_TARGET variable shall be reset for each subdirectory.
AUTO_SET_UP_CONFIG_VARIABLES += LOCATE_MAIN_TARGET ;
# Add the rules setting up the build settings for a subdirectory to the
# rules invoked by SubDir.
SUBDIRRULES += SetUpSubDirBuildSettings ;