mirror of
https://github.com/zeux/pugixml.git
synced 2025-01-16 12:13:24 +08:00
6db04f4320
git-svn-id: http://pugixml.googlecode.com/svn/trunk@140 99668b35-9821-0410-8761-19e4c4f06640
166 lines
3.1 KiB
Plaintext
166 lines
3.1 KiB
Plaintext
# Rules for Jamfile.jam
|
|
|
|
actions ObjectAction
|
|
{
|
|
%MINGW_PATH%\bin\gcc -W -Wall -Wextra -Werror -pedantic -c $(>) -o $(<) $(CCFLAGS)
|
|
}
|
|
|
|
actions LibraryAction
|
|
{
|
|
%MINGW_PATH%\bin\ar rc $(<) $(>)
|
|
}
|
|
|
|
actions LinkAction
|
|
{
|
|
%MINGW_PATH%\bin\g++ $(>) -o $(<) $(LDFLAGS)
|
|
}
|
|
|
|
actions CoverageAction
|
|
{
|
|
%MINGW_PATH%\bin\gcov $(>:\\) $(GCOVFLAGS) | perl tests/gcov-filter.pl
|
|
}
|
|
|
|
actions 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) ;
|
|
}
|