1# unit test pseudo target 2NotFile unittests ; 3 4rule UnitTestDependency 5{ 6 Depends unittests : $(1) ; 7} 8 9 10rule UnitTestLib 11{ 12 # UnitTestLib <lib> : <sources> : <libraries> ; 13 # 14 local lib = $(1) ; 15 local sources = $(2) ; 16 local libraries = $(3) ; 17 18 # if TEST_DEBUG is defined, we turn on debugging 19 if $(TEST_DEBUG) { 20 DEBUG on $(lib) [ FGristFiles $(sources:S=$(SUFOBJ)) ] ?= 1 ; 21 } 22 23 # define TEST_R5/TEST_HAIKU depending on the platform we build for 24 if $(TARGET_PLATFORM) = libbe_test { 25 ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ; 26 27 # make the target depend on the installed libbe libraries 28 Depends $(lib) : 29 <tests!unittests>libbe_test.so ; 30 } else { 31 ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ; 32 } 33 34 UseCppUnitObjectHeaders $(sources) ; 35 36 MakeLocate $(lib) : $(TARGET_UNIT_TEST_LIB_DIR) ; 37 SharedLibrary $(lib) : $(sources) : $(libraries) libcppunit.so ; 38 39 UnitTestDependency $(lib) ; 40} 41 42 43rule UnitTest 44{ 45 # UnitTest <target> : <sources> : <libraries> : <resources> ; 46 # 47 local target = $(1) ; 48 local sources = $(2) ; 49 local libraries = $(3) ; 50 local resources = $(4) ; 51 52 # define TEST_R5/TEST_HAIKU depending on the platform we build for 53 if $(TARGET_PLATFORM) = libbe_test { 54 ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ; 55 56 # make the target depend on the installed libbe libraries 57 Depends $(target) : 58 <tests!unittests>libbe_test.so ; 59 } else { 60 ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ; 61 } 62 63 UseCppUnitObjectHeaders $(sources) ; 64 65 MakeLocate $(target) : $(TARGET_UNIT_TEST_DIR) ; 66 SimpleTest $(target) : $(sources) : $(libraries) libcppunit.so 67 : $(resources) ; 68 69 UnitTestDependency $(target) ; 70} 71 72 73rule TestObjects 74{ 75 # TestObjects <sources> ; 76 # 77 local sources = $(1) ; 78 79 # define TEST_R5/TEST_HAIKU depending on the platform we build for 80 if $(TARGET_PLATFORM) = libbe_test { 81 ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ; 82 } else { 83 ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ; 84 } 85 86 UseCppUnitObjectHeaders $(sources) ; 87 88 Objects $(sources) ; 89} 90 91 92rule SimpleTest 93{ 94 # SimpleTest <target> : <sources> : [ <libraries> ] : [ <resources> ] ; 95 96 # if TEST_DEBUG is defined, we turn on debugging 97 if $(TEST_DEBUG) { 98 DEBUG on $(1) [ FGristFiles $(2:S=$(SUFOBJ)) ] ?= 1 ; 99 } 100 101 Executable $(1) : $(2) : $(3) : $(4) ; 102} 103 104 105rule BuildPlatformTest 106{ 107 # Usage BuildPlatformTest <target> : <sources> ; 108 local target = $(1) ; 109 local sources = $(2) ; 110 111 local relPath ; 112 if [ FIsPrefix src tests : $(SUBDIR_TOKENS) ] { 113 relPath = $(SUBDIR_TOKENS[3-]) ; 114 } else { 115 relPath = $(SUBDIR_TOKENS[2-]) ; 116 } 117 MakeLocate $(target) : [ FDirName $(HAIKU_TEST_DIR) $(relPath) ] ; 118 119 BuildPlatformMain $(target) : $(sources) ; 120} 121