summaryrefslogtreecommitdiffstats
path: root/lib/libkse/test/Makefile
blob: 5b5eb3c79a36a92db54fde76d6808eabdc85bc19 (plain)
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#
# $FreeBSD$
#
# Automated test suite for libpthread (pthreads).
#

# File lists.

# Tests written in C.
CTESTS := hello_d.c hello_s.c join_leak_d.c mutex_d.c sem_d.c sigsuspend_d.c \
	sigwait_d.c

# C programs that are used internally by the tests.  The build system merely
# compiles these.
BTESTS := guard_b.c hello_b.c

# Tests written in perl.
PTESTS := guard_s.pl propagate_s.pl

# Munge the file lists to their final executable names (strip the .c).
CTESTS := $(CTESTS:R)
BTESTS := $(BTESTS:R)

CPPFLAGS := -D_LIBC_R_ -D_REENTRANT
CFLAGS := -Wall -pipe -g3
LDFLAGS_A := -static
LDFLAGS_P := -pg
LDFLAGS_S :=
LIBS := -lpthread

# Flags passed to verify.  "-v" or "-u" may be useful.
VERIFY = perl verify
VFLAGS :=

all : default

# Only use the following suffixes, in order to avoid any strange built-in rules.
.SUFFIXES :
.SUFFIXES : .c .o .d .pl

# Clear out all paths, then set just one (default path) for the main build
# directory.
.PATH :
.PATH : .

# Build the C programs.
.for bin in $(CTESTS) $(BTESTS)
$(bin)_a : $(bin:S/$/&.c/)
	$(CC) $(CFLAGS) $(CPPFLAGS) -c $(bin:S/$/&.c/) -o $(@:S/$/&.o/)
	$(CC) -o $@ $(@:S/$/&.o/) $(LDFLAGS_A) $(LIBS)
	@$(SHELL) -ec "$(CC) -M $(CPPFLAGS) $(bin:S/$/&.c/) | sed \"s/\($(bin:T)\)\.o\([ :]*\)/$(bin:H:S!/!\\/!g)\/\1_a.o \2/g\" > $(@:R:S/$/&.d/)"

$(bin)_p : $(bin:S/$/&.c/)
	$(CC) $(CFLAGS) $(CPPFLAGS) -c $(bin:S/$/&.c/) -o $(@:S/$/&.o/)
	$(CC) -o $@ $(@:S/$/&.o/) $(LDFLAGS_P) $(LIBS)
	@$(SHELL) -ec "$(CC) -M $(CPPFLAGS) $(bin:S/$/&.c/) | sed \"s/\($(bin:T)\)\.o\([ :]*\)/$(bin:H:S!/!\\/!g)\/\1_p.o \2/g\" > $(@:R:S/$/&.d/)"

$(bin)_s : $(bin:S/$/&.c/)
	$(CC) $(CFLAGS) $(CPPFLAGS) -c $(bin:S/$/&.c/) -o $(@:S/$/&.o/)
	$(CC) -o $@ $(@:S/$/&.o/) $(LDFLAGS_S) $(LIBS)
	@$(SHELL) -ec "$(CC) -M $(CPPFLAGS) $(bin:S/$/&.c/) | sed \"s/\($(bin:T)\)\.o\([ :]*\)/$(bin:H:S!/!\\/!g)\/\1_s.o \2/g\" > $(@:R:S/$/&.d/)"
.endfor

# Dependency file inclusion.
.for depfile in $(CTESTS:R:S/$/&_a.d/) $(BTESTS:R:S/$/&_a.d/) \
		$(CTESTS:R:S/$/&_p.d/) $(BTESTS:R:S/$/&_p.d/) \
		$(CTESTS:R:S/$/&_s.d/) $(BTESTS:R:S/$/&_s.d/)
.if exists($(depfile))
.include "$(depfile)"
.endif
.endfor

default : check

tests_a : $(CTESTS:S/$/&_a/) $(BTESTS:S/$/&_a/)
tests_p : $(CTESTS:S/$/&_p/) $(BTESTS:S/$/&_p/)
tests_s : $(CTESTS:S/$/&_s/) $(BTESTS:S/$/&_s/)

tests : tests_a tests_p tests_s

check_a : tests_a
.for bin in $(CTESTS) $(BTESTS)
	@cp $(bin)_a $(bin)
.endfor
	@echo "Test static library:"
	@$(VERIFY) $(VFLAGS) $(CTESTS) $(PTESTS)

check_p : tests_p
.for bin in $(CTESTS) $(BTESTS)
	@cp $(bin)_p $(bin)
.endfor
	@echo "Test profile library:"
	@$(VERIFY) $(VFLAGS) $(CTESTS) $(PTESTS)

check_s : tests_s
.for bin in $(CTESTS) $(BTESTS)
	@cp $(bin)_s $(bin)
.endfor
	@echo "Test shared library:"
	@$(VERIFY) $(VFLAGS) $(CTESTS) $(PTESTS)

check : check_a check_p check_s

clean :
	rm -f *~
	rm -f *.core
	rm -f *.out
	rm -f *.perf
	rm -f *.diff
	rm -f *.gmon
	rm -f $(CTESTS) $(BTESTS)
	rm -f $(CTESTS:S/$/&_a/) $(BTESTS:S/$/&_a/)
	rm -f $(CTESTS:S/$/&_p/) $(BTESTS:S/$/&_p/)
	rm -f $(CTESTS:S/$/&_s/) $(BTESTS:S/$/&_s/)
	rm -f *.d
	rm -f *.o
OpenPOWER on IntegriCloud