From 2a14a3b4c9b48b7656cb44aa75bef3b585f95e02 Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" <arseny.kapoulkine@99668b35-9821-0410-8761-19e4c4f06640> Date: Wed, 28 Oct 2009 20:08:43 +0000 Subject: [PATCH] Added MSVC building git-svn-id: http://pugixml.googlecode.com/svn/trunk@186 99668b35-9821-0410-8761-19e4c4f06640 --- Jamfile.jam | 33 ++++++++++++++++++---- Jamrules.jam | 77 +++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 92 insertions(+), 18 deletions(-) diff --git a/Jamfile.jam b/Jamfile.jam index 420a3e0f..48dd03ab 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 4fda7f40..55138f20 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 -- GitLab