summaryrefslogtreecommitdiff
path: root/Jamfile.jam
blob: 31e7aa6d0dec4e2110556e14ba2955f79af0d3d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 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 ( $(UNIX) )
	{
		local GCCVERSION = [ Shell "gcc -dumpversion" ] ;
		toolset = "gcc"$(GCCVERSION) ;
	}
	else
	{
		exit You should specify a toolset ;
	}
}

if ( ! $(configuration) )
{
	configuration = "debug" ;
}

# split defines into list
defines = [ Split $(defines) : ',' ] ;

# options
if ( $(defines) )
{
	BUILD = build/$(toolset)/$(defines:J=_)/$(configuration) ;
}
else
{
	BUILD = build/$(toolset)/standard/$(configuration) ;
}

if ( $(toolset:I=^mingw) || $(toolset:I=^gcc) )
{
	CCFLAGS = -fprofile-arcs -ftest-coverage ;
	LDFLAGS = -fprofile-arcs ;
	GCOVFLAGS = -n ;

	GCOVFLAGS += -o $(BUILD)/src ; # because stupid gcov can't find files via relative paths
}

# rules
include "Jamrules.jam" ;

# enable dependency cache
DEPCACHE.standard = build/.depcache ;

# targets
Library pugixml : src/pugixml.cpp src/pugixpath.cpp ;
Application tests : [ Glob tests : *.cpp ] : pugixml ;
Test run_tests : tests ;
Coverage coverage : pugixml ;
Depends coverage : run_tests ;