blob: 24b2aedf2e594c5e2e392abbe70aeb3baf02e2af [file] [log] [blame]
# Boost serialization Library utility test Jamfile
# (C) Copyright Robert Ramey 2002-2004.
# Use, modification, and distribution are subject to the
# Boost Software License, Version 1.0. (See accompanying file
# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#
# the file contains Jam rules which are used in both the normal
# boost test, as well as the performance test and comprehensive
# tests.
BOOST_ARCHIVE_LIST = [ modules.peek : BOOST_ARCHIVE_LIST ] ;
# these are used to shorten testing while in development. It permits
# testing to be applied to just a particular type of archive
if ! $(BOOST_ARCHIVE_LIST) {
BOOST_ARCHIVE_LIST =
"text_archive.hpp"
"text_warchive.hpp"
"binary_archive.hpp"
"xml_archive.hpp"
"xml_warchive.hpp"
;
# enable the tests which don't depend on a particular archive
BOOST_SERIALIZATION_TEST = true ;
}
rule run-template ( test-name : sources * : requirements * ) {
return [
run
$(sources)
: # command
: # input files
: # requirements
# toolset warnings
# <toolset>gcc:<cxxflags>"-Wno-non-virtual-dtor -Wno-ctor-dtor-privacy"
<toolset>borland:<cxxflags>"-w-8080 -w-8071 -w-8057 -w-8062 -w-8008 -w-0018 -w-8066"
<toolset>gcc:<warnings>all # ?
<toolset>gcc:<cxxflags>"-Wno-long-long"
<toolset>msvc:<warnings>all # == /W4
<toolset>msvc:<define>_SCL_SECURE_NO_WARNINGS
<toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE
<toolset>msvc:<define>_CRT_SECURE_NO_WARNINGS
<toolset>msvc:<define>_CRT_SECURE_NO_DEPRECATE
<toolset>msvc:<cxxflags>"-wd4996"
# toolset optimizations
<toolset>gcc:<cxxflags>"-ftemplate-depth-255"
<toolset>msvc:<cxxflags>"-Gy"
$(requirements)
: # test name
$(test-name)
] ;
}
# Given a name of test, return the 'save' test that must be run
# before the named test, or empty string if there's no such test.
rule dependency-save-test ( test )
{
local m = [ MATCH (.*)load(.*) : $(test) ] ;
if $(m)
{
return $(m[1])save$(m[2]) ;
}
}
# each of the following tests is run with each type of archive
rule run-invoke ( test-name : sources * : requirements * )
{
local save-test = [ dependency-save-test $(test-name) ] ;
local tests ;
tests += [
run-template $(test-name)
: # sources
$(sources)
../build//boost_serialization
: # requirements
$(requirements)
<define>BOOST_LIB_DIAGNOSTIC=1
<dependency>$(save-test)
] ;
return $(tests) ;
}
# each of the following tests is run with each type of archive
rule run-winvoke ( test-name : sources * : requirements * )
{
local save-test = [ dependency-save-test $(test-name) ] ;
local tests ;
tests += [
run-template $(test-name)
: # sources
$(sources)
../build//boost_serialization
../build//boost_wserialization
: # requirements
$(requirements)
<define>BOOST_LIB_DIAGNOSTIC=1
# both stlport and msvc6 define iswspace
<toolset>msvc,<stdlib>stlport:<linkflags>"-force:multiple"
<dependency>$(save-test)
<dependency>../../config/test/all//BOOST_NO_STD_WSTREAMBUF
] ;
return $(tests) ;
}
# for tests which don't use library code - usually just headers
rule test-bsl-run-no-lib ( test-name : sources * : requirements * )
{
local tests ;
tests += [
run-template $(test-name)
: # sources
$(test-name).cpp $(sources).cpp
:
$(requirements)
] ;
return $(tests) ;
}
# for tests which are run just once rather than for every archive
rule test-bsl-run ( test-name : sources * : libs * : requirements * )
{
local tests ;
tests += [
run-invoke $(test-name)
: # sources
$(test-name).cpp $(sources).cpp $(libs)
:
$(requirements)
] ;
return $(tests) ;
}
rule test-bsl-run_archive ( test-name : archive-name : sources * : libs * : requirements * ) {
local tests ;
switch $(archive-name) {
case "*_warchive" :
tests += [
run-winvoke $(test-name)_$(archive-name)
:
$(sources).cpp $(libs)
:
<define>BOOST_ARCHIVE_TEST=$(archive-name).hpp
$(requirements)
] ;
case "*" :
tests += [
run-invoke $(test-name)_$(archive-name)
:
$(sources).cpp $(libs)
:
<define>BOOST_ARCHIVE_TEST=$(archive-name).hpp
$(requirements)
] ;
}
return $(tests) ;
}
rule test-bsl-run_files ( test-name : sources * : libs * : requirements * ) {
local tests ;
for local defn in $(BOOST_ARCHIVE_LIST) {
tests += [
test-bsl-run_archive $(test-name)
: $(defn:LB)
: $(test-name) $(sources)
: $(libs)
: $(requirements)
] ;
}
return $(tests) ;
}
rule test-bsl-run_polymorphic_archive ( test-name : sources * ) {
local tests ;
for local defn in $(BOOST_ARCHIVE_LIST) {
tests += [
test-bsl-run_archive $(test-name)
: polymorphic_$(defn:LB)
: $(test-name) $(sources)
] ;
}
return $(tests) ;
}