diff options
| -rw-r--r-- | Jamfile.jam | 33 | ||||
| -rw-r--r-- | Jamrules.jam | 77 | 
2 files changed, 92 insertions, 18 deletions
diff --git a/Jamfile.jam b/Jamfile.jam index 420a3e0..48dd03a 100644 --- a/Jamfile.jam +++ b/Jamfile.jam @@ -1,17 +1,40 @@  # 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
 -include "Jamrules.jam" ;
 +# Options:
 +# toolset=name - select toolset
 +# 	supported toolsets: mingw*, msvc*
 +
 +# default toolset/configuration
 +if ( ! $(toolset) )
 +{
 +	exit You should specify a toolset ;
 +}
 +
 +if ( ! $(configuration) )
 +{
 +	configuration = "debug" ;
 +}
 -BUILD = build/mingw/debug ;
 -CCFLAGS = -fprofile-arcs -ftest-coverage ;
 -LDFLAGS = -fprofile-arcs ;
 -GCOVFLAGS = -n ;
 +# options
 +BUILD = build/$(toolset)/$(configuration) ;
 +
 +if ( $(toolset) = "mingw" )
 +{
 +	CCFLAGS = -fprofile-arcs -ftest-coverage ;
 +	LDFLAGS = -fprofile-arcs ;
 +	GCOVFLAGS = -n ;
 +}
 +
 +# rules
 +include "Jamrules.jam" ;
 +# targets
  Library pugixml : src/pugixml.cpp src/pugixpath.cpp ;
  Application tests : tests/main.cpp [ Glob tests : test_*.cpp ] : pugixml ;
  Test run_tests : tests ;
 diff --git a/Jamrules.jam b/Jamrules.jam index 4fda7f4..55138f2 100644 --- a/Jamrules.jam +++ b/Jamrules.jam @@ -1,23 +1,74 @@  # Rules for Jamfile.jam
 -actions ObjectAction
 +if ( $(toolset:I=^mingw) )
  {
 -	%MINGW_PATH%\bin\gcc -W -Wall -Wextra -Werror -pedantic -c $(>) -o $(<) $(CCFLAGS)
 -}
 +	if ( $(configuration) = "debug" )
 +	{
 +		CCFLAGS += -D_DEBUG ;
 +	}
 +	else
 +	{
 +		CCFLAGS += -DNDEBUG -O3 ;
 +	}
 -actions LibraryAction
 -{
 -	%MINGW_PATH%\bin\ar rc $(<) $(>)
 +	actions ObjectAction
 +	{
 +		%$(toolset)_PATH%\bin\gcc -W -Wall -Wextra -Werror -pedantic -c $(>) -o $(<) $(CCFLAGS)
 +	}
 +	
 +	actions LibraryAction
 +	{
 +		%$(toolset)_PATH%\bin\ar rc $(<) $(>)
 +	}
 +	
 +	actions LinkAction
 +	{
 +		%$(toolset)_PATH%\bin\g++ $(>) -o $(<) $(LDFLAGS) 
 +	}
 +	
 +	actions CoverageAction
 +	{
 +		%$(toolset)_PATH%\bin\gcov $(>:\\) $(GCOVFLAGS) | perl tests/gcov-filter.pl
 +	}
  }
 -
 -actions LinkAction
 +else if ( $(toolset:I^=msvc) )
  {
 -	%MINGW_PATH%\bin\g++ $(>) -o $(<) $(LDFLAGS) 
 -}
 +	if ( $(configuration) = "debug" )
 +	{
 +		CCFLAGS += /D_DEBUG /MTd ;
 +	}
 +	else
 +	{
 +		CCFLAGS += /DNDEBUG /Ox /MT ;
 +	}
 -actions CoverageAction
 -{
 -	%MINGW_PATH%\bin\gcov $(>:\\) $(GCOVFLAGS) | perl tests/gcov-filter.pl
 +	if ( $(toolset) != msvc6 )
 +	{
 +		CCFLAGS += /Wp64 /W4 ;
 +	}
 +	else
 +	{
 +		CCFLAGS += /W3 ; # lots of warnings at W4 in standard library
 +	}
 +
 +	actions ObjectAction
 +	{
 +		%$(toolset)_PATH%\bin\cl.exe /EHsc /WX /I%$(toolset)_PATH%\include /c $(>) /Fo$(<) /nologo $(CCFLAGS)
 +	}
 +	
 +	actions LibraryAction
 +	{
 +		%$(toolset)_PATH%\bin\lib.exe /NOLOGO /OUT:$(<) $(>)
 +	}
 +	
 +	actions LinkAction
 +	{
 +		%$(toolset)_PATH%\bin\link.exe /SUBSYSTEM:CONSOLE /NOLOGO /OUT:$(<) $(>) /LIBPATH:%$(toolset)_PATH%\lib /LIBPATH:%$(toolset)_PATH%\PlatformSDK\lib $(LDFLAGS)
 +	}
 +	
 +	actions CoverageAction
 +	{
 +	}
  }
  actions RunAction
  | 
