mirror of
https://github.com/zeux/pugixml.git
synced 2024-12-26 21:04:25 +08:00
168 lines
3.8 KiB
Plaintext
168 lines
3.8 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
|
|
{
|
|
toolset = msvc ;
|
|
}
|
|
}
|
|
|
|
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 ;
|
|
|
|
if $(fullcoverage)
|
|
{
|
|
GCOVFLAGS = --branch-probabilities --function-summaries ;
|
|
}
|
|
else
|
|
{
|
|
GCOVFLAGS = --no-output ;
|
|
}
|
|
}
|
|
|
|
# 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 : $(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 ;
|
|
}
|
|
}
|
|
|
|
# documentation
|
|
Documentation docs/manual.html : docs/manual.qbk : docs/manual.xsl ;
|
|
Documentation docs/quickstart.html : docs/quickstart.qbk : docs/quickstart.xsl ;
|
|
|
|
Alias docs : docs/manual.html docs/quickstart.html ;
|
|
|
|
# samples
|
|
for SAMPLE in [ Glob docs/samples : *.cpp ]
|
|
{
|
|
local CONFIG = "debug" ;
|
|
local DEFINES = "PUGIXML_STANDARD" ;
|
|
|
|
# build folder
|
|
local CFGBUILD = $(BUILD)/$(toolset)/$(DEFINES:J=_)/$(CONFIG) ;
|
|
|
|
# compilation options
|
|
local CFGFLAGS = $(CCFLAGS) [ GetCFlags $(CONFIG) : $(DEFINES) ] ;
|
|
CFGFLAGS += -I src ;
|
|
|
|
# build and run sample
|
|
local EXECUTABLE = $(CFGBUILD)/samples/$(SAMPLE:B).exe ;
|
|
local PUGIXML = $(CFGBUILD)/pugixml.lib ;
|
|
|
|
Application $(EXECUTABLE) : $(SAMPLE) : $(CFGFLAGS) : $(PUGIXML) ;
|
|
|
|
RunSampleAction $(EXECUTABLE)_run : $(EXECUTABLE) ;
|
|
Depends $(EXECUTABLE)_run : $(EXECUTABLE) ;
|
|
|
|
Depends samples : $(EXECUTABLE)_run ;
|
|
}
|
|
|
|
# release
|
|
VERSION = 1.5 ;
|
|
RELEASE_FILES =
|
|
[ Glob contrib : *.cpp *.hpp ]
|
|
[ Glob src : *.cpp *.hpp ]
|
|
[ Glob docs : *.html *.css ]
|
|
[ Glob docs/samples : *.cpp *.hpp *.xml ]
|
|
[ Glob docs/images : *.png ]
|
|
[ Glob docs/manual : *.html ]
|
|
@("scripts/**":W=:X=svn)
|
|
readme.txt
|
|
;
|
|
|
|
actions ArchiveAction
|
|
{
|
|
perl tests/archive.pl $(<) $(>)
|
|
}
|
|
|
|
ArchiveAction pugixml-$(VERSION).zip : $(RELEASE_FILES) ;
|
|
ArchiveAction pugixml-$(VERSION).tar.gz : $(RELEASE_FILES) ;
|
|
Depends release : pugixml-$(VERSION).zip pugixml-$(VERSION).tar.gz : $(RELEASE_FILES) ;
|
|
NotFile release ;
|