File: Make.tests.rules

package info (click to toggle)
zeroc-ice 3.7.10-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 75,704 kB
  • sloc: cpp: 356,894; java: 226,081; cs: 98,312; javascript: 35,027; python: 28,716; objc: 27,050; php: 7,526; ruby: 7,190; yacc: 2,949; ansic: 2,469; xml: 1,589; lex: 1,241; makefile: 472; sh: 52
file content (93 lines) | stat: -rw-r--r-- 3,164 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#
# Copyright (c) ZeroC, Inc. All rights reserved.
#

#
# $(call test,[$1])
#
# Returns the test project name (./test/Ice/operations -> test/Ice/operations)
#
test = $(patsubst $(lang_srcdir)/%,%,$(if $1,$1,$(currentdir)))

#
# $(call test-sources,$1=sources,$2=dir,$3=main-src extra-srcs)
#
# Returns sources if set, otherwise if main-src exists return main-src + extra-srcs, if it
# doesn't exist, returns an empty value.
#
test-sources = $(call unique,$(if $1,$(foreach f,$1,$(notdir $(wildcard $2/$f))),\
                 $(if $(wildcard $2/$(firstword $3)),$(foreach f,$3,$(notdir $(wildcard $2/$f))))))

#
# The test executables to try to build in each test directory
#
test-programs           = client server serveramd collocated

#
# The default test sources for each test executable.
#
test-client-sources     = Client.$1 *Test.ice AllTests.$1
test-server-sources     = Server.$1 *Test.ice TestI.$1
test-serveramd-sources  = ServerAMD.$1 *TestAMD.ice TestAMDI.$1
test-collocated-sources = Collocated.$1

#
# $(call create-test-project,test)
#
# Defines a project for the given test.
#
# The following variables can be defined to customize the build of the test:
#
# <name>_cleandirs
# <name>_clean
# <name>_bindir
# <name>_libdir
# <name>_sliceflags
# <name>_cppflags
# <name>_dependencies
# <name>_programs
# <name>_libraries
#
# The following variables allows to specify per-target (program or library) configuration
#
# <name>_<target>_sources
# <name>_<target>_sources
#
define create-test-project

$1_srcdir       := $1
$1_programs     := $$(or $$($1_programs),$(test-programs))
$1_caninstall   := no

$1_client_sources       := $$(call test-sources,$$(call $1_client_sources,$$($1_srcext)),$$($1_srcdir),\
                                $$(call test-client-sources,$$($1_srcext)))

$1_server_sources       := $$(call test-sources,$$(call $1_server_sources,$$($1_srcext)),$$($1_srcdir),\
                                $$(call test-server-sources,$$($1_srcext)))

$1_serveramd_sources    := $$(call test-sources,$$(call $1_serveramd_sources,$$($1_srcext)),$$($1_srcdir),\
                                $$(call test-serveramd-sources,$$($1_srcext)))

$1_collocated_sources   := $$(call test-sources,$$(call $1_collocated_sources,$$($1_srcext)),$$($1_srcdir),\
                                $$(call test-collocated-sources,$$($1_srcext)) \
                                        $$(filter-out Server.$$($1_srcext) Client.$$($1_srcext),\
                                                $$(notdir $$($1_client_sources) $$($1_server_sources))))

$1_programs     := $$(foreach p,$$($1_programs),$$(if $$($1_$$(p)_sources),$1_$$(p)))

$$(foreach m,$$($1_programs) $$($1_libraries),$$(eval $$m_sources := $$(addprefix $$($1_srcdir)/,$$($$m_sources))))

projects += $(project)

endef

#
# Returns the tests which don't have a Makefile.mk fragment specified
#
tests-without-project-makefile = $(foreach d,$(patsubst %/Client.$1,%,$(shell find $(lang_srcdir)/test -name Client.$1)),\
                                     $(if $(wildcard $d/Makefile.mk),,$(call test,$d)))

#
# The tests variable is used to load tests in Makefile.mk fragments
#
tests :=