From 20edc02ff7f8b9c2558bcb80816a18cc9fca710d Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Tue, 20 Apr 2010 20:44:06 +0000 Subject: unicode: Added Linux build rules, converted Jamrules.jam to Unix file endings git-svn-id: http://pugixml.googlecode.com/svn/trunk@278 99668b35-9821-0410-8761-19e4c4f06640 --- Jamrules.jam | 831 +++++++++++++++++++++++++++++++---------------------------- 1 file changed, 430 insertions(+), 401 deletions(-) diff --git a/Jamrules.jam b/Jamrules.jam index d4109d3..54806a6 100644 --- a/Jamrules.jam +++ b/Jamrules.jam @@ -1,401 +1,430 @@ -# Rules for Jamfile.jam - -if ( $(toolset:I=^mingw) ) -{ - CCFLAGS += -D$(defines) ; - - if ( $(configuration) = "debug" ) - { - CCFLAGS += -D_DEBUG ; - } - else - { - CCFLAGS += -DNDEBUG -O3 ; - } - - if ( PUGIXML_NO_EXCEPTIONS in $(defines) ) - { - CCFLAGS += -fno-exceptions ; - } - - 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 $(<) -static-libgcc $(LDFLAGS) - } - - actions CoverageAction - { - "%$(toolset)_PATH%\bin\gcov" $(>:\\) $(GCOVFLAGS) | perl tests/gcov-filter.pl - } -} -else if ( $(toolset:I=^msvc) ) -{ - CCFLAGS += /D$(defines) ; - - if ( $(configuration) = "debug" ) - { - CCFLAGS += /D_DEBUG /MTd ; - } - else - { - CCFLAGS += /DNDEBUG /Ox /MT ; - } - - if ( $(toolset) != msvc6 ) - { - CCFLAGS += /Wp64 /W4 ; - } - else - { - CCFLAGS += /W3 ; # lots of warnings at W4 in standard library - } - - if ( ! ( PUGIXML_NO_EXCEPTIONS in $(defines) ) ) - { - CCFLAGS += /EHsc ; - } - else if ( $(toolset) = "msvc6" || $(toolset) = "msvc71" ) - { - # No no-exception STL in MSVC6, buggy no-exception STL in MSVC71 - CCFLAGS += /EHsc ; - } - else - { - CCFLAGS += /D_HAS_EXCEPTIONS=0 ; - } - - if ( $(toolset:I=x64$) ) - { - postfix = "\\amd64" ; - sdk_postfix = "\\x64" ; - LDFLAGS += /MACHINE:X64 ; - } - else - { - postfix = "" ; - sdk_postfix = "" ; - } - - actions ObjectAction - { - "%$(toolset)_PATH%\bin$(postfix)\cl.exe" /WX /I"%$(toolset)_PATH%\include" /c $(>) /Fo$(<) /nologo $(CCFLAGS) - } - - actions LibraryAction - { - "%$(toolset)_PATH%\bin$(postfix)\lib.exe" /NOLOGO /OUT:$(<) $(>) - } - - actions LinkAction - { - "%$(toolset)_PATH%\bin$(postfix)\link.exe" /SUBSYSTEM:CONSOLE /NOLOGO /OUT:$(<) $(>) /LIBPATH:"%$(toolset)_PATH%\lib$(postfix)" /LIBPATH:"%$(toolset)_PATH%\PlatformSDK\lib" /LIBPATH:"%WINSDK_PATH%\Lib$(sdk_postfix)" $(LDFLAGS) - } - - actions CoverageAction - { - } -} -else if ( $(toolset) = "ic8" ) -{ - msvc = "msvc7" ; - - CCFLAGS += /D$(defines) ; - - if ( $(configuration) = "debug" ) - { - CCFLAGS += /D_DEBUG /MTd ; - } - else - { - CCFLAGS += /DNDEBUG /Ox /MT ; - } - - if ( ! ( PUGIXML_NO_EXCEPTIONS in $(defines) ) ) - { - CCFLAGS += /EHsc ; - } - - actions ObjectAction - { - "%$(toolset)_PATH%\bin\icl.exe" /W4 /WX /Wport /Qwd981,444,280,383,909,304,167,177 /I"%$(msvc)_PATH%\include" /I"%$(toolset)_PATH%\include" /c $(>) /Fo$(<) /nologo $(CCFLAGS) - } - - actions LibraryAction - { - "%$(msvc)_PATH%\bin\lib.exe" /NOLOGO /OUT:$(<) $(>) - } - - actions LinkAction - { - "%$(msvc)_PATH%\bin\link.exe" /SUBSYSTEM:CONSOLE /NOLOGO /OUT:$(<) $(>) /LIBPATH:"%$(toolset)_PATH%\lib" /LIBPATH:"%$(msvc)_PATH%\lib" /LIBPATH:"%$(msvc)_PATH%\PlatformSDK\lib" $(LDFLAGS) - } - - actions CoverageAction - { - } -} -else if ( $(toolset:I=^dmc) ) -{ - CCFLAGS += -D$(defines) ; - - if ( $(configuration) = "debug" ) - { - CCFLAGS += -D_DEBUG ; - } - else - { - CCFLAGS += -DNDEBUG ; - } - - if ( ! ( PUGIXML_NO_EXCEPTIONS in $(defines) ) ) - { - CCFLAGS += -Ae ; - } - - actions ObjectAction - { - "%$(toolset)_PATH%\bin\dmc.exe" -c -f -I%$(toolset)_PATH%\stlport\stlport -wx $(>) -o$(<) $(CCFLAGS) - } - - actions LibraryAction - { - "%$(toolset)_PATH%\bin\lib.exe" -c $(<) $(>) - } - - actions LinkAction - { - "%$(toolset)_PATH%\bin\link.exe" $(>:\\) , $(<:\\) , nul , $(LDFLAGS:\\) - } - - actions CoverageAction - { - } -} -else if ( $(toolset:I=^cw) ) -{ - cw_bin = "%$(toolset)_PATH%\\Other Metrowerks Tools\\Command Line Tools" ; - CCFLAGS += -D$(defines) ; - - if ( $(configuration) = "debug" ) - { - CCFLAGS += -D_DEBUG ; - } - else - { - CCFLAGS += -DNDEBUG -O4 ; - } - - if ( PUGIXML_NO_EXCEPTIONS in $(defines) ) - { - CCFLAGS += -Cpp_exceptions off ; - } - - actions ObjectAction - { - "$(cw_bin)\mwcc.exe" -c -cwd include -ansi strict -iso_templates on -msext off -w all,cmdline,iserror,nonotused,nonotinlined,noimplicitconv,nounwanted $(>) -o $(<) $(CCFLAGS) - } - - actions LibraryAction - { - "$(cw_bin)\mwld.exe" -library -o $(<) $(>) - } - - actions LinkAction - { - "$(cw_bin)\mwld.exe" -subsystem console -o $(<) $(>) $(LDFLAGS) - } - - actions CoverageAction - { - } -} -else if ( $(toolset:I=^bcc) ) -{ - CCFLAGS += -D$(defines) ; - - if ( $(configuration) = "debug" ) - { - CCFLAGS += -D_DEBUG ; - } - else - { - CCFLAGS += -DNDEBUG -Ox ; - } - - actions ObjectAction - { - "%$(toolset)_PATH%\bin\bcc32.exe" $(CCFLAGS) -c -q -Q -fp -w -w! -w-8026 -w-8027 -w-8091 -w-8004 -o $(<) $(>) - } - - actions LibraryAction - { - "%$(toolset)_PATH%\bin\tlib.exe" /C $(<:\\) -+$(>:\\) - } - - actions LinkAction - { - "%$(toolset)_PATH%\bin\ilink32.exe" -L"%$(toolset)_PATH%\lib" -Tpe -ap -Gn -x -c "%$(toolset)_PATH%\lib\c0x32.obj" $(>:\\) , $(<:\\) , , $(LDFLAGS:\\) cw32 import32 - } - - actions CoverageAction - { - } -} -else -{ - exit "Unknown toolset $(toolset)!" ; -} - -actions screenoutput RunAction -{ - $(>:\\) -} - -actions quietly ignore MakeDirAction -{ - mkdir $(<:\\) >nul 2>&1 -} - -actions quietly ignore DeleteAction -{ - del /F $(>:\\) >nul 2>&1 -} - -rule MakeFileDir TARGET -{ - local DIR = $(TARGET:D) ; - - MakeDirAction $(DIR) ; - Needs $(TARGET) : $(DIR) ; -} - -rule Alias TARGET : SOURCE -{ - NotFile $(TARGET) ; - Always $(TARGET) ; - Depends $(TARGET) : $(SOURCE) ; -} - -rule Object TARGET : SOURCE -{ - HDRRULE on $(SOURCE) = C.HdrRule ; - HDRSCAN on $(SOURCE) = $(C.HDRPATTERN) ; - - MakeFileDir $(TARGET) ; - ObjectAction $(TARGET) : $(SOURCE) ; - Depends $(TARGET) : $(SOURCE) ; -} - -rule Objects SOURCES -{ - local OBJECTS ; - - for SOURCE in $(SOURCES) - { - local OBJECT = $(BUILD)/$(SOURCE:S=.o) ; - - Object $(OBJECT) : $(SOURCE) ; - OBJECTS += $(OBJECT) ; - } - - return $(OBJECTS) ; -} - -rule Library TARGET : SOURCES -{ - # build object files - local OBJECTS = [ Objects $(SOURCES) ] ; - - # build library - local LIBRARY = $(BUILD)/$(TARGET).a ; - - MakeFileDir $(LIBRARY) ; - LibraryAction $(LIBRARY) : $(OBJECTS) ; - Depends $(LIBRARY) : $(OBJECTS) ; - - # make alias - Alias $(TARGET) : $(LIBRARY) ; - - # remember library path for linking - $(TARGET)_path = $(LIBRARY) ; - - # remember library objects for coverage - $(TARGET)_objects = $(OBJECTS) ; -} - -rule Application TARGET : SOURCES : LIBRARIES -{ - # build object files - local OBJECTS = [ Objects $(SOURCES) ] ; - - # get binary path - local EXECUTABLE = $(BUILD)/$(TARGET).exe ; - - # set libraries - LDFLAGS on $(EXECUTABLE) = $(LDFLAGS) $($(LIBRARIES)_path) ; - - # build application - MakeFileDir $(EXECUTABLE) ; - LinkAction $(EXECUTABLE) : $(OBJECTS) ; - Depends $(EXECUTABLE) : $(OBJECTS) $($(LIBRARIES)_path) ; - - # make alias - Alias $(TARGET) : $(EXECUTABLE) ; - - # remember executable path for running - $(TARGET)_path = $(EXECUTABLE) ; - - # remember executable objects for coverage - $(TARGET)_objects = $(OBJECTS) $($(LIBRARIES)_objects) ; -} - -rule CleanCoverage TARGET -{ - # make target - local CLEAN_TARGET = $(TARGET)_clean_coverage ; - - NotFile $(CLEAN_TARGET) ; - Always $(CLEAN_TARGET) ; - Depends $(TARGET) : $(CLEAN_TARGET) ; - - # clean object files - local FILES = $($(SOURCE)_objects:S=.gcda) ; - - DeleteAction $(CLEAN_TARGET) : $(FILES) ; -} - -rule Test TARGET : SOURCE -{ - # make alias - Alias $(TARGET) : $(SOURCE) ; - - # run tests - RunAction $(TARGET) : $($(SOURCE)_path) ; - - # remember executable objects for coverage - $(TARGET)_objects = $($(SOURCE)_objects) ; - - # clean coverage files before run - CleanCoverage $(TARGET) ; -} - -rule Coverage TARGET : SOURCE -{ - local FILES = $($(SOURCE)_objects:S=.gcda) ; - - # disable "independent target" warnings - NotFile $(FILES) ; - - CoverageAction $(TARGET) : $(FILES) ; - Depends $(TARGET) : $(SOURCE) ; -} +# Rules for Jamfile.jam + +if ( $(toolset:I=^mingw) || $(toolset) = "gcc" ) +{ + if ( $(toolset) = "gcc" ) + { + GCCPATH = "" ; + } + else + { + GCCPATH = "%$(toolset)_PATH%\bin\\" ; + } + + CCFLAGS += -D$(defines) ; + + if ( $(configuration) = "debug" ) + { + CCFLAGS += -D_DEBUG ; + } + else + { + CCFLAGS += -DNDEBUG -O3 ; + } + + if ( PUGIXML_NO_EXCEPTIONS in $(defines) ) + { + CCFLAGS += -fno-exceptions ; + } + + actions ObjectAction + { + "$(GCCPATH)gcc" -W -Wall -Wextra -Werror -pedantic -c $(>) -o $(<) $(CCFLAGS) + } + + actions LibraryAction + { + "$(GCCPATH)ar" rc $(<) $(>) + } + + actions LinkAction + { + "$(GCCPATH)g++" $(>) -o $(<) -static-libgcc $(LDFLAGS) + } + + actions CoverageAction + { + "$(GCCPATH)gcov" $(>:\\) $(GCOVFLAGS) | perl tests/gcov-filter.pl + } +} +else if ( $(toolset:I=^msvc) ) +{ + CCFLAGS += /D$(defines) ; + + if ( $(configuration) = "debug" ) + { + CCFLAGS += /D_DEBUG /MTd ; + } + else + { + CCFLAGS += /DNDEBUG /Ox /MT ; + } + + if ( $(toolset) != msvc6 ) + { + CCFLAGS += /Wp64 /W4 ; + } + else + { + CCFLAGS += /W3 ; # lots of warnings at W4 in standard library + } + + if ( ! ( PUGIXML_NO_EXCEPTIONS in $(defines) ) ) + { + CCFLAGS += /EHsc ; + } + else if ( $(toolset) = "msvc6" || $(toolset) = "msvc71" ) + { + # No no-exception STL in MSVC6, buggy no-exception STL in MSVC71 + CCFLAGS += /EHsc ; + } + else + { + CCFLAGS += /D_HAS_EXCEPTIONS=0 ; + } + + if ( $(toolset:I=x64$) ) + { + postfix = "\\amd64" ; + sdk_postfix = "\\x64" ; + LDFLAGS += /MACHINE:X64 ; + } + else + { + postfix = "" ; + sdk_postfix = "" ; + } + + actions ObjectAction + { + "%$(toolset)_PATH%\bin$(postfix)\cl.exe" /WX /I"%$(toolset)_PATH%\include" /c $(>) /Fo$(<) /nologo $(CCFLAGS) + } + + actions LibraryAction + { + "%$(toolset)_PATH%\bin$(postfix)\lib.exe" /NOLOGO /OUT:$(<) $(>) + } + + actions LinkAction + { + "%$(toolset)_PATH%\bin$(postfix)\link.exe" /SUBSYSTEM:CONSOLE /NOLOGO /OUT:$(<) $(>) /LIBPATH:"%$(toolset)_PATH%\lib$(postfix)" /LIBPATH:"%$(toolset)_PATH%\PlatformSDK\lib" /LIBPATH:"%WINSDK_PATH%\Lib$(sdk_postfix)" $(LDFLAGS) + } + + actions CoverageAction + { + } +} +else if ( $(toolset) = "ic8" ) +{ + msvc = "msvc7" ; + + CCFLAGS += /D$(defines) ; + + if ( $(configuration) = "debug" ) + { + CCFLAGS += /D_DEBUG /MTd ; + } + else + { + CCFLAGS += /DNDEBUG /Ox /MT ; + } + + if ( ! ( PUGIXML_NO_EXCEPTIONS in $(defines) ) ) + { + CCFLAGS += /EHsc ; + } + + actions ObjectAction + { + "%$(toolset)_PATH%\bin\icl.exe" /W4 /WX /Wport /Qwd981,444,280,383,909,304,167,177 /I"%$(msvc)_PATH%\include" /I"%$(toolset)_PATH%\include" /c $(>) /Fo$(<) /nologo $(CCFLAGS) + } + + actions LibraryAction + { + "%$(msvc)_PATH%\bin\lib.exe" /NOLOGO /OUT:$(<) $(>) + } + + actions LinkAction + { + "%$(msvc)_PATH%\bin\link.exe" /SUBSYSTEM:CONSOLE /NOLOGO /OUT:$(<) $(>) /LIBPATH:"%$(toolset)_PATH%\lib" /LIBPATH:"%$(msvc)_PATH%\lib" /LIBPATH:"%$(msvc)_PATH%\PlatformSDK\lib" $(LDFLAGS) + } + + actions CoverageAction + { + } +} +else if ( $(toolset:I=^dmc) ) +{ + CCFLAGS += -D$(defines) ; + + if ( $(configuration) = "debug" ) + { + CCFLAGS += -D_DEBUG ; + } + else + { + CCFLAGS += -DNDEBUG ; + } + + if ( ! ( PUGIXML_NO_EXCEPTIONS in $(defines) ) ) + { + CCFLAGS += -Ae ; + } + + actions ObjectAction + { + "%$(toolset)_PATH%\bin\dmc.exe" -c -f -I%$(toolset)_PATH%\stlport\stlport -wx $(>) -o$(<) $(CCFLAGS) + } + + actions LibraryAction + { + "%$(toolset)_PATH%\bin\lib.exe" -c $(<) $(>) + } + + actions LinkAction + { + "%$(toolset)_PATH%\bin\link.exe" $(>:\\) , $(<:\\) , nul , $(LDFLAGS:\\) + } + + actions CoverageAction + { + } +} +else if ( $(toolset:I=^cw) ) +{ + cw_bin = "%$(toolset)_PATH%\\Other Metrowerks Tools\\Command Line Tools" ; + CCFLAGS += -D$(defines) ; + + if ( $(configuration) = "debug" ) + { + CCFLAGS += -D_DEBUG ; + } + else + { + CCFLAGS += -DNDEBUG -O4 ; + } + + if ( PUGIXML_NO_EXCEPTIONS in $(defines) ) + { + CCFLAGS += -Cpp_exceptions off ; + } + + actions ObjectAction + { + "$(cw_bin)\mwcc.exe" -c -cwd include -ansi strict -iso_templates on -msext off -w all,cmdline,iserror,nonotused,nonotinlined,noimplicitconv,nounwanted $(>) -o $(<) $(CCFLAGS) + } + + actions LibraryAction + { + "$(cw_bin)\mwld.exe" -library -o $(<) $(>) + } + + actions LinkAction + { + "$(cw_bin)\mwld.exe" -subsystem console -o $(<) $(>) $(LDFLAGS) + } + + actions CoverageAction + { + } +} +else if ( $(toolset:I=^bcc) ) +{ + CCFLAGS += -D$(defines) ; + + if ( $(configuration) = "debug" ) + { + CCFLAGS += -D_DEBUG ; + } + else + { + CCFLAGS += -DNDEBUG -Ox ; + } + + actions ObjectAction + { + "%$(toolset)_PATH%\bin\bcc32.exe" $(CCFLAGS) -c -q -Q -fp -w -w! -w-8026 -w-8027 -w-8091 -w-8004 -o $(<) $(>) + } + + actions LibraryAction + { + "%$(toolset)_PATH%\bin\tlib.exe" /C $(<:\\) -+$(>:\\) + } + + actions LinkAction + { + "%$(toolset)_PATH%\bin\ilink32.exe" -L"%$(toolset)_PATH%\lib" -Tpe -ap -Gn -x -c "%$(toolset)_PATH%\lib\c0x32.obj" $(>:\\) , $(<:\\) , , $(LDFLAGS:\\) cw32 import32 + } + + actions CoverageAction + { + } +} +else +{ + exit "Unknown toolset $(toolset)!" ; +} + +if ( $(UNIX) ) +{ + actions screenoutput RunAction + { + $(>) + } + + actions quietly ignore MakeDirAction + { + mkdir -p $(<) + } + + actions quietly ignore DeleteAction + { + rm -f $(>) + } +} +else +{ + actions screenoutput RunAction + { + $(>:\\) + } + + actions quietly ignore MakeDirAction + { + mkdir $(<:\\) >nul 2>&1 + } + + actions quietly ignore DeleteAction + { + del /F $(>:\\) >nul 2>&1 + } +} + +rule MakeFileDir TARGET +{ + local DIR = $(TARGET:D) ; + + MakeDirAction $(DIR) ; + Needs $(TARGET) : $(DIR) ; +} + +rule Alias TARGET : SOURCE +{ + NotFile $(TARGET) ; + Always $(TARGET) ; + Depends $(TARGET) : $(SOURCE) ; +} + +rule Object TARGET : SOURCE +{ + HDRRULE on $(SOURCE) = C.HdrRule ; + HDRSCAN on $(SOURCE) = $(C.HDRPATTERN) ; + + MakeFileDir $(TARGET) ; + ObjectAction $(TARGET) : $(SOURCE) ; + Depends $(TARGET) : $(SOURCE) ; +} + +rule Objects SOURCES +{ + local OBJECTS ; + + for SOURCE in $(SOURCES) + { + local OBJECT = $(BUILD)/$(SOURCE:S=.o) ; + + Object $(OBJECT) : $(SOURCE) ; + OBJECTS += $(OBJECT) ; + } + + return $(OBJECTS) ; +} + +rule Library TARGET : SOURCES +{ + # build object files + local OBJECTS = [ Objects $(SOURCES) ] ; + + # build library + local LIBRARY = $(BUILD)/$(TARGET).a ; + + MakeFileDir $(LIBRARY) ; + LibraryAction $(LIBRARY) : $(OBJECTS) ; + Depends $(LIBRARY) : $(OBJECTS) ; + + # make alias + Alias $(TARGET) : $(LIBRARY) ; + + # remember library path for linking + $(TARGET)_path = $(LIBRARY) ; + + # remember library objects for coverage + $(TARGET)_objects = $(OBJECTS) ; +} + +rule Application TARGET : SOURCES : LIBRARIES +{ + # build object files + local OBJECTS = [ Objects $(SOURCES) ] ; + + # get binary path + local EXECUTABLE = $(BUILD)/$(TARGET).exe ; + + # set libraries + LDFLAGS on $(EXECUTABLE) = $(LDFLAGS) $($(LIBRARIES)_path) ; + + # build application + MakeFileDir $(EXECUTABLE) ; + LinkAction $(EXECUTABLE) : $(OBJECTS) ; + Depends $(EXECUTABLE) : $(OBJECTS) $($(LIBRARIES)_path) ; + + # make alias + Alias $(TARGET) : $(EXECUTABLE) ; + + # remember executable path for running + $(TARGET)_path = $(EXECUTABLE) ; + + # remember executable objects for coverage + $(TARGET)_objects = $(OBJECTS) $($(LIBRARIES)_objects) ; +} + +rule CleanCoverage TARGET +{ + # make target + local CLEAN_TARGET = $(TARGET)_clean_coverage ; + + NotFile $(CLEAN_TARGET) ; + Always $(CLEAN_TARGET) ; + Depends $(TARGET) : $(CLEAN_TARGET) ; + + # clean object files + local FILES = $($(SOURCE)_objects:S=.gcda) ; + + DeleteAction $(CLEAN_TARGET) : $(FILES) ; +} + +rule Test TARGET : SOURCE +{ + # make alias + Alias $(TARGET) : $(SOURCE) ; + + # run tests + RunAction $(TARGET) : $($(SOURCE)_path) ; + + # remember executable objects for coverage + $(TARGET)_objects = $($(SOURCE)_objects) ; + + # clean coverage files before run + CleanCoverage $(TARGET) ; +} + +rule Coverage TARGET : SOURCE +{ + local FILES = $($(SOURCE)_objects:S=.gcda) ; + + # disable "independent target" warnings + NotFile $(FILES) ; + + CoverageAction $(TARGET) : $(FILES) ; + Depends $(TARGET) : $(SOURCE) ; +} -- cgit v1.2.3