Blame Jamrules.in

Packit 3259d1
#
Packit 3259d1
# Jamrules file to build CUnit - Root Directory
Packit 3259d1
# (see http://www.freetype.org/jam/index.html)
Packit 3259d1
#
Packit 3259d1
# Copyright (C) 2004-2006  Jerry St.Clair
Packit 3259d1
#
Packit 3259d1
# This library is free software; you can redistribute it and/or
Packit 3259d1
# modify it under the terms of the GNU Library General Public
Packit 3259d1
# License as published by the Free Software Foundation; either
Packit 3259d1
# version 2 of the License, or (at your option) any later version.
Packit 3259d1
#
Packit 3259d1
# This library is distributed in the hope that it will be useful,
Packit 3259d1
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 3259d1
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 3259d1
# Library General Public License for more details.
Packit 3259d1
#
Packit 3259d1
# You should have received a copy of the GNU Library General Public
Packit 3259d1
# License along with this library; if not, write to the Free Software
Packit 3259d1
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
Packit 3259d1
#---------------------------------------------------------------------------
Packit 3259d1
Packit 3259d1
# On Linux, basic build options are set by configure.  
Packit 3259d1
# See else clause below for other platforms.
Packit 3259d1
if $(OS) = LINUX || $(UNIX)
Packit 3259d1
{
Packit 3259d1
  SLASH = / ;
Packit 3259d1
  VERSION = @VERSION@ ;
Packit 3259d1
  RELEASE = @RELEASE@ ;
Packit 3259d1
  VERSION_MAJOR = @VERSION_MAJOR@ ;
Packit 3259d1
  VERSION_MINOR = @VERSION_MINOR@ ;
Packit 3259d1
  
Packit 3259d1
  # root of install path
Packit 3259d1
  prefix = @prefix@ ;
Packit 3259d1
Packit 3259d1
  # choice of interfaces to build into library
Packit 3259d1
  if @BUILD_AUTOMATED@ = TRUE
Packit 3259d1
    { BUILD_AUTOMATED = 1 ; }
Packit 3259d1
  if @BUILD_BASIC@ = TRUE
Packit 3259d1
    { BUILD_BASIC = 1 ; }
Packit 3259d1
  if @BUILD_CONSOLE@ = TRUE
Packit 3259d1
    { BUILD_CONSOLE = 1 ; }
Packit 3259d1
  if @BUILD_CURSES@ != FALSE
Packit 3259d1
  { 
Packit 3259d1
    BUILD_CURSES = 1 ; 
Packit 3259d1
    SYS_LIBS = -l@CURSES_LIB@ ;
Packit 3259d1
  }
Packit 3259d1
#  BUILD_WINDOWS = 1 ;
Packit 3259d1
  
Packit 3259d1
  # choice of whether to build examples
Packit 3259d1
  if @BUILD_EXAMPLES@ = TRUE
Packit 3259d1
    { BUILD_EXAMPLES = 1 ; }
Packit 3259d1
  
Packit 3259d1
  # choice of whether to build test program
Packit 3259d1
  if @BUILD_TEST@ = TRUE
Packit 3259d1
    { BUILD_TEST = 1 ; }
Packit 3259d1
  
Packit 3259d1
  # choice of whether to build shared library
Packit 3259d1
  if @ENABLE_SHARED@ = TRUE
Packit 3259d1
    { BUILD_SHARED_LIB = 1 ; }
Packit 3259d1
Packit 3259d1
  # choice of whether to build static library
Packit 3259d1
  if @ENABLE_STATIC@ = TRUE
Packit 3259d1
    { BUILD_STATIC_LIB = 1 ; }
Packit 3259d1
Packit 3259d1
  # debug compilation mode
Packit 3259d1
  if @ENABLE_DEBUG@ = FALSE
Packit 3259d1
    { NODEBUG = 1 ; }
Packit 3259d1
Packit 3259d1
  # Use memory tracing
Packit 3259d1
  if @ENABLE_MEMTRACE@ = TRUE
Packit 3259d1
    { USE_MEMTRACE = -DMEMTRACE ; }
Packit 3259d1
Packit 3259d1
  # Recognize deprecated version 1.1 function names and build V1.1 examples
Packit 3259d1
  if @ENABLE_DEPRECATED@ = TRUE
Packit 3259d1
    { USE_DEPRECATED_NAMES = -DUSE_DEPRECATED_CUNIT_NAMES ; }
Packit 3259d1
}
Packit 3259d1
Packit 3259d1
# On other platforms, comment out the option to disable it
Packit 3259d1
else
Packit 3259d1
{
Packit 3259d1
  SLASH = \\ ;
Packit 3259d1
  
Packit 3259d1
  # Version number set manually so may be out-of-date
Packit 3259d1
  VERSION = 2.1 ;
Packit 3259d1
  RELEASE = 0 ;
Packit 3259d1
  VERSION_MAJOR = 2 ;
Packit 3259d1
  VERSION_MINOR = 1 ;
Packit 3259d1
Packit 3259d1
  # Set the root of install path
Packit 3259d1
  prefix = c:\\dev\\CUnit_install ;
Packit 3259d1
Packit 3259d1
  # Comment to not include interface in library
Packit 3259d1
  BUILD_AUTOMATED = 1 ; 
Packit 3259d1
  BUILD_BASIC = 1 ; 
Packit 3259d1
  BUILD_CONSOLE = 1 ; 
Packit 3259d1
#  BUILD_CURSES = 1 ; 
Packit 3259d1
  BUILD_WINDOWS = 1 ;
Packit 3259d1
    
Packit 3259d1
  # Comment to not build examples
Packit 3259d1
  BUILD_EXAMPLES = 1 ; 
Packit 3259d1
  
Packit 3259d1
  # Comment to not build test program
Packit 3259d1
  BUILD_TEST = 1 ; 
Packit 3259d1
  
Packit 3259d1
  # Comment to not build CUnit shared library
Packit 3259d1
  BUILD_SHARED_LIB = 1 ; 
Packit 3259d1
Packit 3259d1
  # Comment to not build CUnit static library
Packit 3259d1
  BUILD_STATIC_LIB = 1 ; 
Packit 3259d1
  
Packit 3259d1
  # Comment to compile with debugging & assertions enabled
Packit 3259d1
  NODEBUG = 1 ;
Packit 3259d1
Packit 3259d1
  # Uncomment to perform memory tracing
Packit 3259d1
  #USE_MEMTRACE = -DMEMTRACE ;
Packit 3259d1
Packit 3259d1
  # Uncomment to recognize deprecated version 1.1 function names
Packit 3259d1
  # and build V1.1 examples
Packit 3259d1
  #USE_DEPRECATED_NAMES = -DUSE_DEPRECATED_CUNIT_NAMES ;
Packit 3259d1
}
Packit 3259d1
Packit 3259d1
#---------------------------------------------------------------------------
Packit 3259d1
# Options from here on should not require routine tweaking
Packit 3259d1
Packit 3259d1
PACKAGE = CUnit ;
Packit 3259d1
Packit 3259d1
# Install locations - comment out to not install that class of file
Packit 3259d1
INSTALL_BIN_DIR   = $(prefix)$(SLASH)bin ;
Packit 3259d1
INSTALL_LIB_DIR   = $(prefix)$(SLASH)lib ;
Packit 3259d1
INSTALL_INC_DIR   = $(prefix)$(SLASH)include$(SLASH)CUnit ;
Packit 3259d1
INSTALL_DOC_DIR   = $(prefix)$(SLASH)doc$(SLASH)CUnit ;
Packit 3259d1
INSTALL_MAN_DIR   = $(prefix)$(SLASH)man ;
Packit 3259d1
INSTALL_SHARE_DIR = $(prefix)$(SLASH)share$(SLASH)CUnit ;
Packit 3259d1
#INSTALL_EXAM_DIR  = $(prefix)$(SLASH)share$(SLASH)CUnit$(SLASH)Examples ;
Packit 3259d1
#INSTALL_TEST_DIR  = $(prefix)$(SLASH)share$(SLASH)CUnit$(SLASH)Test ;
Packit 3259d1
Packit 3259d1
# Build directory - - will be qualified for compiler & build type
Packit 3259d1
BUILD_DIR_ROOT = $(TOP) ;
Packit 3259d1
Packit 3259d1
EXAMPLES_DIR   = $(TOP)$(SLASH)Examples ;
Packit 3259d1
Packit 3259d1
CUNIT_HDR_DIR  = $(TOP)$(SLASH)CUnit$(SLASH)Headers ;
Packit 3259d1
CUNIT_LIB_NAME = libcunit ;
Packit 3259d1
Packit 3259d1
# Comment for normal jam deletion of object files after building targets
Packit 3259d1
KEEPOBJS = true ;
Packit 3259d1
Packit 3259d1
if $(NODEBUG)
Packit 3259d1
{
Packit 3259d1
  CCFLAGS += -DNDEBUG ;
Packit 3259d1
  BUILD_SUBDIR = $(SLASH)Release ;
Packit 3259d1
}
Packit 3259d1
else
Packit 3259d1
{
Packit 3259d1
  BUILD_SUBDIR = $(SLASH)Debug ;
Packit 3259d1
}
Packit 3259d1
Packit 3259d1
if $(NT)
Packit 3259d1
{
Packit 3259d1
  # variables not set properly for Windows/Win9x in Jambase 2.3
Packit 3259d1
  RM = del ;
Packit 3259d1
  MV = move /Y ;
Packit 3259d1
Packit 3259d1
  SUFSHR = .dll ;
Packit 3259d1
Packit 3259d1
  # Windows-specific defines
Packit 3259d1
  CCFLAGS = -DWIN32 -D_LIB -D_MBCS -D_DELAYTEST ;
Packit 3259d1
  CUNIT_WIN_DIR = $(TOP)$(SLASH)CUnit$(SLASH)Sources$(SLASH)Win ;
Packit 3259d1
Packit 3259d1
  if $(BCCROOT) || ( $(TOOLSET) = BORLANDC )
Packit 3259d1
  {
Packit 3259d1
    CCFLAGS   += -q -d -g0 -j0 ;
Packit 3259d1
    CCWARN    = -w -w-8004 ;
Packit 3259d1
    if $(NODEBUG)
Packit 3259d1
    {
Packit 3259d1
      CCDEBUG = -v- -O2 ;
Packit 3259d1
    }
Packit 3259d1
    else
Packit 3259d1
    {
Packit 3259d1
      CCDEBUG = -v -y -Od ;
Packit 3259d1
    }
Packit 3259d1
    BUILD_SUBDIR = $(BUILD_SUBDIR)$(SLASH)bcc ;
Packit 3259d1
  }
Packit 3259d1
Packit 3259d1
  else if $(MSVCNT) || ( $(TOOLSET) = VISUALC )
Packit 3259d1
  {
Packit 3259d1
    CCFLAGS   += /Ze ;
Packit 3259d1
    CCWARN    = /W4 ;
Packit 3259d1
    if $(NODEBUG)
Packit 3259d1
    {
Packit 3259d1
      CCDEBUG = /O2 ;
Packit 3259d1
    }
Packit 3259d1
    else
Packit 3259d1
    {
Packit 3259d1
      CCDEBUG = /Zi /Od ;
Packit 3259d1
    }
Packit 3259d1
    # Libraries are in different paths depending on VC version
Packit 3259d1
    LINKFLAGS += /LIBPATH:$(VISUALC)\\lib /LIBPATH:$(VISUALC)\\PlatformSDK\\lib\\ ;
Packit 3259d1
    LINKLIBS = advapi32.lib
Packit 3259d1
               libc.lib
Packit 3259d1
               oldnames.lib
Packit 3259d1
               gdi32.lib
Packit 3259d1
               user32.lib
Packit 3259d1
               kernel32.lib ;
Packit 3259d1
    BUILD_SUBDIR = $(BUILD_SUBDIR)$(SLASH)msvc ;
Packit 3259d1
  }
Packit 3259d1
Packit 3259d1
Packit 3259d1
  else if $(MINGW) || ( $(TOOLSET) = MINGW )
Packit 3259d1
  {
Packit 3259d1
    # uncomment to select desired warning level and ansi-strictness
Packit 3259d1
    CCWARN += -Wall ;
Packit 3259d1
    CCWARN += -W ;
Packit 3259d1
    CCWARN += -pedantic ;
Packit 3259d1
    CCWARN += -Wshadow ;
Packit 3259d1
    CCWARN += -ansi ;
Packit 3259d1
Packit 3259d1
    if $(NODEBUG)
Packit 3259d1
    {
Packit 3259d1
      CCDEBUG = -O3 ;
Packit 3259d1
    }
Packit 3259d1
    else
Packit 3259d1
    {
Packit 3259d1
      CCDEBUG = -g -O0 ;
Packit 3259d1
    }
Packit 3259d1
    BUILD_SUBDIR = $(BUILD_SUBDIR)$(SLASH)mingw ;
Packit 3259d1
  }
Packit 3259d1
Packit 3259d1
  else if $(WATCOM) || ( $(TOOLSET) = WATCOM )
Packit 3259d1
  {
Packit 3259d1
    CCFLAGS += /fr ;
Packit 3259d1
    CCWARN    = /wx ;
Packit 3259d1
    if $(NODEBUG)
Packit 3259d1
    {
Packit 3259d1
      CCDEBUG = /ox ;
Packit 3259d1
    }
Packit 3259d1
    else
Packit 3259d1
    {
Packit 3259d1
      CCDEBUG = /od /d2 ;
Packit 3259d1
    }
Packit 3259d1
    BUILD_SUBDIR = $(BUILD_SUBDIR)$(SLASH)watcom ;
Packit 3259d1
  }
Packit 3259d1
}
Packit 3259d1
Packit 3259d1
else if $(OS) = LINUX
Packit 3259d1
{
Packit 3259d1
  SUFSHR = .so ;
Packit 3259d1
Packit 3259d1
  # uncomment to select desired warning level and ansi-strictness
Packit 3259d1
  CCWARN += -Wall ;
Packit 3259d1
  CCWARN += -W ;
Packit 3259d1
  CCWARN += -pedantic ;
Packit 3259d1
  CCWARN += -Wshadow ;
Packit 3259d1
  CCWARN += -ansi ;
Packit 3259d1
Packit 3259d1
  if $(NODEBUG)
Packit 3259d1
  {
Packit 3259d1
    CCDEBUG = -O3 ;
Packit 3259d1
  }
Packit 3259d1
  else
Packit 3259d1
  {
Packit 3259d1
    CCDEBUG = -g -O0 ;
Packit 3259d1
  }
Packit 3259d1
  BUILD_SUBDIR = $(BUILD_SUBDIR)$(SLASH)linux ;
Packit 3259d1
}
Packit 3259d1
Packit 3259d1
CCFLAGS  += $(USE_MEMTRACE) $(CCWARN) $(CCDEBUG) ;
Packit 3259d1
C++FLAGS += $(CCFLAGS) ;
Packit 3259d1
BUILD_DIR = $(BUILD_DIR_ROOT)$(BUILD_SUBDIR) ;
Packit 3259d1
Packit 3259d1
#----------------------------------------------------------------------
Packit 3259d1
# CUnit-specific rules & actions
Packit 3259d1
#----------------------------------------------------------------------
Packit 3259d1
# If anyone can figure out a better way, good for you
Packit 3259d1
# (and let me (jds) know)!  Here's the problem...
Packit 3259d1
# The built-in Jam install rules all convert the grist of
Packit 3259d1
# the source file to (:G=installed).  As a result, they
Packit 3259d1
# seem unable to handle files having the same name in
Packit 3259d1
# different directories.  If we want to install such files
Packit 3259d1
# as the Jamfile's or Makefile.am's or README's, the built-ins
Packit 3259d1
# can't handle it (in my hands, anyway).  As a workaround,
Packit 3259d1
# we define a new rule which does not monkey with the grist
Packit 3259d1
# in this way.  Duplicate file names will need to explicitly
Packit 3259d1
# use grist so Jam knows the difference, but the standard
Packit 3259d1
# <$(SOURCE_GRIST)> works in most cases.
Packit 3259d1
#
Packit 3259d1
rule DoInstallCUnitFile
Packit 3259d1
{
Packit 3259d1
    local i t ;
Packit 3259d1
Packit 3259d1
    t = $(>:D=$(<)) ;
Packit 3259d1
Packit 3259d1
    DEPENDS install : $(t) ;
Packit 3259d1
    DEPENDS $(t) : $(>) ;
Packit 3259d1
    SEARCH on $(>) = $(SEARCH_SOURCE) ;
Packit 3259d1
    MakeLocate $(t) : $(<) ;
Packit 3259d1
Packit 3259d1
    # Arrange for jam uninstall
Packit 3259d1
Packit 3259d1
    Clean uninstall : $(t) ;
Packit 3259d1
Packit 3259d1
    for i in $(>)
Packit 3259d1
    {
Packit 3259d1
        Install $(i:D=$(<)) : $(i) ;
Packit 3259d1
        Chmod $(i:D=$(<)) ;
Packit 3259d1
    }
Packit 3259d1
Packit 3259d1
    if $(UNIX)
Packit 3259d1
    {
Packit 3259d1
        if $(OWNER) { Chown $(t) ; OWNER on $(t) = $(OWNER) ; }
Packit 3259d1
        if $(GROUP) { Chgrp $(t) ; GROUP on $(t) = $(GROUP) ; }
Packit 3259d1
    }
Packit 3259d1
}
Packit 3259d1
Packit 3259d1
rule InstallCUnitBin
Packit 3259d1
{
Packit 3259d1
    DoInstallCUnitFile $(<) : $(>) ;
Packit 3259d1
    MODE on $(>:D=$(<)) = $(EXEMODE) ;
Packit 3259d1
}
Packit 3259d1
Packit 3259d1
rule InstallCUnitFile
Packit 3259d1
{
Packit 3259d1
    DoInstallCUnitFile $(<) : $(>) ;
Packit 3259d1
    MODE on $(>:D=$(<)) = $(FILEMODE) ;
Packit 3259d1
}
Packit 3259d1
Packit 3259d1
#----------------------------------------------------------
Packit 3259d1
# MakeImportLibrary
Packit 3259d1
#
Packit 3259d1
# This is a dummy rule.  Import libraries are built in
Packit 3259d1
# the dll linking directive.  However, jam doesn't know
Packit 3259d1
# that, so we provide a rule which does nothing more
Packit 3259d1
# than define a dependency.
Packit 3259d1
#
Packit 3259d1
# Parameters:
Packit 3259d1
#
Packit 3259d1
# 1 - name of the dll
Packit 3259d1
# 2 - name of the import library
Packit 3259d1
#----------------------------------------------------------
Packit 3259d1
rule MakeImportLibrary
Packit 3259d1
{
Packit 3259d1
  DEPENDS $(>) : $(<) ;
Packit 3259d1
  LOCATE on $(>) = $(BUILD_DIR) ;
Packit 3259d1
}
Packit 3259d1