# unit test pseudo targetNotFile unittests ;rule UnitTestDependency{Depends unittests : $(1) ;}rule UnitTestLib{# UnitTestLib <lib> : <sources> : <libraries> ;#local lib = $(1) ;local sources = $(2) ;local libraries = $(3) ;# if TEST_DEBUG is defined, we turn on debuggingif $(TEST_DEBUG) {DEBUG on $(lib) [ FGristFiles $(sources:S=$(SUFOBJ)) ] ?= 1 ;}# define TEST_R5/TEST_HAIKU depending on the platform we build forif $(TARGET_PLATFORM) = libbe_test {ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ;# make the target depend on the installed libbe librariesDepends $(lib) :<tests!unittests>libbe_test.so ;} else {ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ;}UseCppUnitObjectHeaders $(sources) ;MakeLocate $(lib) : $(TARGET_UNIT_TEST_LIB_DIR) ;SharedLibrary $(lib) : $(sources) : $(libraries) libcppunit.so ;UnitTestDependency $(lib) ;}rule UnitTest{# UnitTest <target> : <sources> : <libraries> : <resources> ;#local target = $(1) ;local sources = $(2) ;local libraries = $(3) ;local resources = $(4) ;# define TEST_R5/TEST_HAIKU depending on the platform we build forif $(TARGET_PLATFORM) = libbe_test {ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ;# make the target depend on the installed libbe librariesDepends $(target) :<tests!unittests>libbe_test.so ;} else {ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ;}UseCppUnitObjectHeaders $(sources) ;MakeLocate $(target) : $(TARGET_UNIT_TEST_DIR) ;SimpleTest $(target) : $(sources) : $(libraries) libcppunit.so: $(resources) ;UnitTestDependency $(target) ;}rule TestObjects{# TestObjects <sources> ;#local sources = $(1) ;# define TEST_R5/TEST_HAIKU depending on the platform we build forif $(TARGET_PLATFORM) = libbe_test {ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ;} else {ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ;}UseCppUnitObjectHeaders $(sources) ;Objects $(sources) ;}rule SimpleTest{# SimpleTest <target> : <sources> : [ <libraries> ] : [ <resources> ] ;# if TEST_DEBUG is defined, we turn on debuggingif $(TEST_DEBUG) {DEBUG on $(1) [ FGristFiles $(2:S=$(SUFOBJ)) ] ?= 1 ;}Application $(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) ;}