mirror of
https://github.com/zeux/pugixml.git
synced 2025-01-03 01:55:25 +08:00
c622ce6fed
git-svn-id: http://pugixml.googlecode.com/svn/trunk@493 99668b35-9821-0410-8761-19e4c4f06640
106 lines
2.4 KiB
Plaintext
106 lines
2.4 KiB
Plaintext
# Latest jamplus is needed to use this
|
|
|
|
# Targets:
|
|
# pugixml - build pugixml library
|
|
# tests - build pugixml test suite
|
|
# run_tests - run pugixml test suite
|
|
# coverage - get test suite coverage
|
|
|
|
# Options:
|
|
# toolset=name - select toolset
|
|
# supported toolsets: mingw*, msvc*
|
|
|
|
# default toolset/configuration
|
|
if ( ! $(toolset) )
|
|
{
|
|
if ( $(OS) = SOLARIS )
|
|
{
|
|
toolset = suncc ;
|
|
}
|
|
else if ( $(UNIX) )
|
|
{
|
|
local GCCVERSION = [ Subst [ Shell "gcc -dumpversion" ] : $(NEWLINE) ] ;
|
|
toolset = "gcc"$(GCCVERSION) ;
|
|
}
|
|
else
|
|
{
|
|
exit You should specify a toolset ;
|
|
}
|
|
}
|
|
|
|
if ( ! $(configuration) )
|
|
{
|
|
configuration = "debug" ;
|
|
}
|
|
|
|
if ( ! $(defines) )
|
|
{
|
|
defines = "PUGIXML_STANDARD" ;
|
|
}
|
|
|
|
# coverage options
|
|
if ( $(toolset:I=^mingw) || $(toolset:I=^gcc) )
|
|
{
|
|
CCFLAGS = -fprofile-arcs -ftest-coverage ;
|
|
LDFLAGS = -fprofile-arcs ;
|
|
GCOVFLAGS = -n ;
|
|
}
|
|
|
|
# build folder
|
|
BUILD = build ;
|
|
|
|
# enable dependency cache
|
|
DEPCACHE.standard = $(BUILD)/.depcache ;
|
|
|
|
# rules
|
|
include "Jamrules.jam" ;
|
|
|
|
# split define sets into list
|
|
local DEFINESETS = [ Split $(defines) : ';' ] ;
|
|
|
|
# split configurations into list
|
|
local CONFIGURATIONS = [ Split $(configuration) : ',' ] ;
|
|
|
|
for CONFIG in $(CONFIGURATIONS)
|
|
{
|
|
for DEFINESET in $(DEFINESETS)
|
|
{
|
|
local DEFINES = [ Split $(DEFINESET) : ',' ] ;
|
|
|
|
# build folder
|
|
local CFGBUILD = $(BUILD)/$(toolset)/$(DEFINES:J=_)/$(CONFIG) ;
|
|
|
|
# compilation options
|
|
local CFGFLAGS = $(CCFLAGS) [ GetCFlags $(CONFIG) : $(DEFINES) ] ;
|
|
|
|
# build library
|
|
local PUGIXML = $(CFGBUILD)/pugixml.lib ;
|
|
Library $(PUGIXML) : src/pugixml.cpp src/pugixpath.cpp : $(CFGFLAGS) ;
|
|
Alias pugixml : $(PUGIXML) ;
|
|
|
|
# build tests
|
|
local TESTS = $(CFGBUILD)/tests.exe ;
|
|
Application $(TESTS) : [ Glob tests : *.cpp ] : $(CFGFLAGS) : $(PUGIXML) ;
|
|
Alias tests : $(TESTS) ;
|
|
|
|
# run tests
|
|
Test $(TESTS)_run : $(TESTS) ;
|
|
Alias run_tests : $(TESTS)_run ;
|
|
|
|
# gather coverage
|
|
Coverage $(TESTS)_coverage : $(PUGIXML) ;
|
|
Alias coverage : $(TESTS)_coverage ;
|
|
|
|
GCOVFLAGS on $(TESTS)_coverage = $(GCOVFLAGS) -o $(CFGBUILD)/src ; # because stupid gcov can't find files via relative paths
|
|
|
|
# add special autotest markers to build log
|
|
if $(autotest)
|
|
{
|
|
COVPREFIX on $(TESTS)_coverage = "### autotest $(CONFIG) [$(DEFINESET)]" ;
|
|
}
|
|
|
|
# gather coverage after tests run
|
|
Depends $(TESTS)_coverage : $(TESTS)_run ;
|
|
}
|
|
}
|