mirror of
https://review.haiku-os.org/haiku
synced 2025-01-31 18:56:49 +01:00
8811e46163
exception that it turns on debugging for the target by default (unless NO_TEST_DEBUG is defined or DEBUG has been overridden before). Note, that SimpleTest makes no assumptions about the supported target platforms. So, if the target should be buildable for other platforms than Haiku, that has to be specified. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14653 a95241bf-73f2-0310-859d-f6bbb57e9c96
279 lines
8.2 KiB
Plaintext
279 lines
8.2 KiB
Plaintext
# test pseudo targets
|
|
NOTFILE obostests ;
|
|
NOTFILE r5tests ;
|
|
|
|
rule CommonTestLib
|
|
{
|
|
# CommonTestLib <target> : <sources> : <obos libraries>
|
|
# : <r5 libraries> : <test libraries> : <public headers>;
|
|
# Builds a unit test for both OBOS and R5 modules.
|
|
# <target> The name of the target.
|
|
# <sources> The list of sources.
|
|
# <obos libraries> A list of link libraries for the OBOS tests (as passed
|
|
# to LinkAgainst).
|
|
# <r5 libraries> A list of link libraries for the R5 tests (as passed
|
|
# to LinkAgainst).
|
|
# <test libraries> A list of link libraries for both OBOS tests and R5 tests
|
|
# that have a common name (i.e. specify libx.so and the OBOS tests will link
|
|
# to libx.so and the R5 tests will link to libx_r5.so).
|
|
# <public headers> A list of public header dirs (as passed to
|
|
# UsePublicHeaders).
|
|
|
|
TestLib $(1) : $(2) : [ FDirName $(HAIKU_TEST_DIR) unittester lib ] : $(3) $(5) : $(6) ;
|
|
R5TestLib $(1) : $(2) : [ FDirName $(HAIKU_TEST_DIR) unittester_r5 lib ] : $(4) [ R5SharedLibraryNames $(5) ] ;
|
|
}
|
|
|
|
rule TestLib
|
|
{
|
|
# TestLib <target> : <sources> : <dest> : <libraries> : <public headers>
|
|
# Builds a unit test library for an OBOS module.
|
|
# <target> The name of the target.
|
|
# <sources> The list of sources.
|
|
# <dest> The directory for the target (as passed to FDirName).
|
|
# <libraries> A list of link libraries (as passed to LinkAgainst).
|
|
# <public headers> A list of public header dirs (as passed to
|
|
# UsePublicHeaders).
|
|
|
|
local target = $(1) ;
|
|
local sources = $(2) ;
|
|
local dest = $(3) ;
|
|
local libraries = $(4) ;
|
|
local headerDirs = $(5) ;
|
|
local objects = [ FGristFiles $(sources:S=$(SUFOBJ)) ] ;
|
|
|
|
# Our Main replacement.
|
|
MakeLocate $(target) : $(dest) ;
|
|
MainFromObjects $(target) : $(objects) ;
|
|
TestObjects $(sources) : $(headerDirs) ;
|
|
|
|
Depends $(target) : libcppunit.so ;
|
|
Depends obostests : $(target) ;
|
|
LinkAgainst $(target) : libcppunit.so $(libraries) ;
|
|
LINKFLAGS on $(target) = $(LINKFLAGS) -nostart -Xlinker -soname=\"$(target)\" ;
|
|
}
|
|
|
|
rule R5TestLib
|
|
{
|
|
# R5TestLib <target> : <sources> : <dest> : <libraries>
|
|
# Builds a unit test for an R5 module. "_r5" is appended to the object
|
|
# and the target name.
|
|
# <target> The name of the target.
|
|
# <sources> The list of sources.
|
|
# <dest> The directory for the target (as passed to FDirName).
|
|
# <libraries> A list of link libraries (as passed to LinkAgainst).
|
|
|
|
local target = $(1:B)_r5$(1:S) ;
|
|
local sources = $(2) ;
|
|
local dest = $(3) ;
|
|
local libraries = $(4) ;
|
|
local objects = [ R5ObjectNames $(sources) ] ;
|
|
|
|
# Our Main replacement.
|
|
MakeLocate $(target) : $(dest) ;
|
|
MainFromObjects $(target) : $(objects) ;
|
|
TestObjects $(sources) : : true ;
|
|
|
|
Depends $(target) : libcppunit.so ;
|
|
Depends r5tests : $(target) ;
|
|
LinkAgainst $(target) : libcppunit.so $(libraries) ;
|
|
LINKFLAGS on $(target) = $(LINKFLAGS) -nostart -Xlinker -soname=\"$(target)\" ;
|
|
}
|
|
|
|
rule CommonUnitTest
|
|
{
|
|
# CommonUnitTest <target> : <sources> : <dest> : <obos libraries>
|
|
# : <r5 libraries> : <public headers>;
|
|
# Builds a unit test for both OBOS and R5 modules.
|
|
# <target> The name of the target.
|
|
# <sources> The list of sources.
|
|
# <dest> The directory for the target (as passed to FDirName).
|
|
# <obos libraries> A list of link libraries for the OBOS tests (as passed
|
|
# to LinkAgainst).
|
|
# <r5 libraries> A list of link libraries for the R5 tests (as passed
|
|
# to LinkAgainst).
|
|
# <public headers> A list of public header dirs (as passed to
|
|
# UsePublicHeaders).
|
|
|
|
UnitTest $(1) : $(2) : $(3) : $(4) : $(6) ;
|
|
R5UnitTest $(1) : $(2) : $(3) : $(5) ;
|
|
}
|
|
|
|
rule UnitTest
|
|
{
|
|
# UnitTest <target> : <sources> : <dest> : <libraries> : <public headers>
|
|
# Builds a unit test for an OBOS module.
|
|
# <target> The name of the target.
|
|
# <sources> The list of sources.
|
|
# <dest> The directory for the target (as passed to FDirName).
|
|
# <libraries> A list of link libraries (as passed to LinkAgainst).
|
|
# <public headers> A list of public header dirs (as passed to
|
|
# UsePublicHeaders).
|
|
|
|
local target = $(1) ;
|
|
local sources = $(2) ;
|
|
local dest = $(3) ;
|
|
local libraries = $(4) ;
|
|
local headerDirs = $(5) ;
|
|
local objects = [ FGristFiles $(sources:S=$(SUFOBJ)) ] ;
|
|
|
|
# Our Main replacement.
|
|
MakeLocate $(target) : [ FDirName $(HAIKU_TEST_DIR) $(dest) ] ;
|
|
MainFromObjects $(target) : $(objects) ;
|
|
TestObjects $(sources) : $(headerDirs) ;
|
|
|
|
Depends $(target) : libcppunit.so ;
|
|
Depends obostests : $(target) ;
|
|
LinkAgainst $(target) : libcppunit.so $(libraries) ;
|
|
}
|
|
|
|
rule R5UnitTest
|
|
{
|
|
# R5UnitTest <target> : <sources> : <dest> : <libraries>
|
|
# Builds a unit test for an R5 module. "_r5" is appended to the object
|
|
# and the target name.
|
|
# <target> The name of the target.
|
|
# <sources> The list of sources.
|
|
# <dest> The directory for the target (as passed to FDirName).
|
|
# <libraries> A list of link libraries (as passed to LinkAgainst).
|
|
|
|
local target = $(1)_r5 ;
|
|
local sources = $(2) ;
|
|
local dest = $(3) ;
|
|
local libraries = $(4) ;
|
|
local objects = [ R5ObjectNames $(sources) ] ;
|
|
|
|
# Our Main replacement.
|
|
MakeLocate $(target) : [ FDirName $(HAIKU_TEST_DIR) $(dest) ] ;
|
|
MainFromObjects $(target) : $(objects) ;
|
|
TestObjects $(sources) : : true ;
|
|
|
|
Depends $(target) : libcppunit.so ;
|
|
Depends r5tests : $(target) ;
|
|
LinkAgainst $(target) : libcppunit.so $(libraries) ;
|
|
}
|
|
|
|
rule R5ObjectNames
|
|
{
|
|
# R5ObjectNames <sources> ;
|
|
# Returns a list of gristed object names given a list of source file names.
|
|
# Moreover each object names gets "_r5" inserted before the object suffix.
|
|
local objects = $(1:S=)_r5 ;
|
|
return [ FGristFiles $(objects:S=$(SUFOBJ)) ] ;
|
|
}
|
|
|
|
rule R5Objects
|
|
{
|
|
# R5Objects <sources>
|
|
# Similar to Objects, but appends "_r5" to the object file names and
|
|
# removes `-nostdinc' from the CC and C++ flags to enable system headers.
|
|
# <sources> The source files.
|
|
|
|
# Remove `-nostdinc' from CCFLAGS and C++FLAGS.
|
|
local oldCCFLAGS = $(CCFLAGS) ;
|
|
local oldC++FLAGS = $(C++FLAGS) ;
|
|
CCFLAGS = [ FFilter $(CCFLAGS) : -nostdinc ] ;
|
|
C++FLAGS = [ FFilter $(C++FLAGS) : -nostdinc ] ;
|
|
|
|
local sources = $(1) ;
|
|
local source ;
|
|
for source in [ FGristFiles $(sources) ]
|
|
{
|
|
local object = [ R5ObjectNames $(source) ] ;
|
|
Object $(object) : $(source) ;
|
|
LocalDepends obj : $(object) ;
|
|
}
|
|
|
|
# Reset CCFLAGS and C++FLAGS to original values.
|
|
CCFLAGS = $(oldCCFLAGS) ;
|
|
C++FLAGS = $(oldC++FLAGS) ;
|
|
}
|
|
|
|
rule TestObjects
|
|
{
|
|
# TestLib <sources> : <public headers> : <r5>
|
|
# Compiles objects for tests.
|
|
# <sources> The list of sources.
|
|
# <public headers> A list of public header dirs (as passed to
|
|
# UsePublicHeaders).
|
|
# <r5> If set, "_r5" is appended to the object file names and
|
|
# <public headers> is ignored. Furthermore the pre-processor macro
|
|
# TEST_R5 is defined, TEST_OBOS otherwise.
|
|
|
|
local sources = $(1) ;
|
|
local headerDirs = $(2) ;
|
|
local r5 = $(3) ;
|
|
local objects ;
|
|
|
|
if $(r5) {
|
|
objects = [ R5ObjectNames $(sources) ] ;
|
|
} else {
|
|
objects = [ FGristFiles $(sources:S=$(SUFOBJ)) ] ;
|
|
}
|
|
|
|
# Turn optimization off, if desired.
|
|
if ! $(NO_TEST_DEBUG) {
|
|
OPTIM on $(objects) = ;
|
|
}
|
|
|
|
# set headers/defines
|
|
UseCppUnitObjectHeaders $(sources) : $(objects) ;
|
|
if $(r5) {
|
|
ObjectDefines $(sources) : TEST_R5 ;
|
|
} else {
|
|
UsePublicObjectHeaders $(sources) : $(headerDirs) : $(objects) ;
|
|
ObjectDefines $(sources) : TEST_OBOS ;
|
|
}
|
|
|
|
if ! $(NO_TEST_DEBUG) {
|
|
# Turn debugging on. That is usually desired for test code.
|
|
ObjectCcFlags $(objects) : $(DEBUG_FLAGS) ;
|
|
ObjectC++Flags $(objects) : $(DEBUG_FLAGS) ;
|
|
}
|
|
|
|
# compile
|
|
if $(r5) {
|
|
R5Objects $(sources) ;
|
|
} else {
|
|
Objects $(sources) ;
|
|
}
|
|
}
|
|
|
|
rule R5SharedLibraryNames
|
|
{
|
|
# R5SharedLibraryNames <sources> ;
|
|
# Returns a list of shared library names given a list of file names. NO
|
|
# GRISTING IS PERFORMED :-) However, each library names gets "_r5" inserted
|
|
# before the shared lib suffix.
|
|
return $(1:S=)_r5.so ;
|
|
}
|
|
|
|
rule SimpleTest
|
|
{
|
|
# SimpleTest <target> : <sources> : [ <libraries> ] : [ <resources> ] ;
|
|
|
|
# unless NO_TEST_DEBUG is defined, we turn on debugging
|
|
if ! $(NO_TEST_DEBUG) {
|
|
DEBUG on $(1) [ FGristFiles $(2:S=$(SUFOBJ)) ] ?= 1 ;
|
|
}
|
|
|
|
Executable $(1) : $(2) : $(3) : $(4) ;
|
|
}
|
|
|
|
rule BuildPlatformTest
|
|
{
|
|
# Usage BuildPlatformTest <target> : <sources> ;
|
|
|
|
local target = $(1) ;
|
|
local sources = $(2) ;
|
|
|
|
local relPath ;
|
|
if [ FIsPrefix src tests : $(SUBDIR_TOKENS) ] {
|
|
relPath = $(SUBDIR_TOKENS[3-]) ;
|
|
} else {
|
|
relPath = $(SUBDIR_TOKENS[2-]) ;
|
|
}
|
|
MakeLocate $(target) : [ FDirName $(HAIKU_TEST_DIR) $(relPath) ] ;
|
|
|
|
BuildPlatformMain $(target) : $(sources) ;
|
|
}
|