diff options
Diffstat (limited to 'Jamfile.jam')
-rw-r--r-- | Jamfile.jam | 318 |
1 files changed, 159 insertions, 159 deletions
diff --git a/Jamfile.jam b/Jamfile.jam index ae986cc..63dd298 100644 --- a/Jamfile.jam +++ b/Jamfile.jam @@ -1,159 +1,159 @@ -# 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 ;
- 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 ;
- }
-}
-
-# 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:S=.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 = 0.9 ;
-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 ;
+# 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 ; + 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 ; + } +} + +# 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:S=.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 = 0.9 ; +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 ; |