/usr/src/blcr-0.8.5/tests/Makefile.am is in blcr-dkms 0.8.5-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 | # Special target (run before tests) ensures the kernel modules are loaded
check_module:
@(/sbin/lsmod | grep '^blcr ' > /dev/null 2>&1) || \
(echo '#############################################################'; \
echo '#### BLCR modules are not loaded. Cannot run the tests! ####'; \
echo '#### You must insmod/modprobe the following modules as ####'; \
echo '#### root (in order) before you can run "make check": ####'; \
echo '#### blcr_imports blcr ####'; \
echo '#### "make insmod" will automate this if run as a user ####'; \
echo '#### with sudo(8) rights. ####'; \
echo '#############################################################'; \
false)
# Files we clean at various times
CONTEXTS = context.* .context.*.tmp Context[123] .Context[123].tmp
TEST_TEMPS = tst*
# Special target (run before tests) ensures no temp file conflicts
clean_temps:
rm -Rf $(CONTEXTS) $(TEST_TEMPS)
# Special target (run before tests) ensures utils are up-to-date (if built)
if CR_INSTALLED_UTIL
util_dir = $(bindir)
else
util_dir = $(TOP_BUILDDIR)/bin
endif
if CR_BUILD_UTIL
build_util:
@$(MAKE) $(AM_MAKEFLAGS) --no-print-directory -C $(TOP_BUILDDIR) util symlinks
else
build_util:
@: # Empty
endif
# "SIMPLE" tests, which just return success or failure.
# These tests get listed in the SIMPLE_TESTS variable.
if CR_ENABLE_SHARED
# These test the actual cr_run utility or dlopen(), and thus require shared libs:
SIMPLE_scripts_shared = cr_run cr_targ cr_targ2 cr_omit dlopen
endif
SIMPLE_progs = atomics bug2524
SIMPLE_scripts = $(SIMPLE_scripts_shared) \
bug2003 run_on save_exe save_priv save_share save_all \
reloc_exe reloc_file reloc_fifo reloc_dir reloc_all \
clobber
SIMPLE_TESTS = $(SIMPLE_progs) $(SIMPLE_scripts)
# "SEQ" tests are ones that check for certain events happening in
# proper sequence, by using a wrapper to parse output.
# These tests get listed in the SEQ_TESTS variable.
SEQ_progs = stage0001 stage0002 stage0003 stage0004 \
critical_sections replace_cb \
failed_cb failed_cb2 pid_in_use cs_enter_leave cs_enter_leave2 \
cr_tryenter_cs stopped edeadlk pid_restore
# XXX: cb_exit has moved to "bonus" list for now. See bug 2244.
# XXX: ptrace has moved to "bonus" list for now. See bug 2455.
SEQ_scripts =
SEQ_TESTS = $(SEQ_progs) $(SEQ_scripts)
# C/R unit tests ("CRUT")
# These are tests that use the crut.c infractructure and the crut_wrapper
# script.
CRUT_progs = \
simple simple_pthread cwd dup filedescriptors pipe named_fifo \
cloexec get_info orphan overlap child mmaps hugetlbfs readdir dev_null \
cr_signal linked_fifo sigpending dpipe forward hooks math sigaltstack \
prctl lam nscd
# hugetlbfs2 moved to "bonus" list due to leak of MAP_PRIVATE pages in some kernels
CRUT_TESTS = $(CRUT_progs)
# These are like SIMPLE_TESTS, SEQ_TESTS and CRUT_TESTS, but for
# maintainer-only tests (the "bonus" tests).
if CR_ENABLE_SHARED
SEQ_scripts2_shared = \
ash_test bash_test csh_test ksh_test zsh_test \
perl_test python_test tcl_test expect_test ruby_test \
guile_test clisp_test rep_test emacslisp_test \
php_test gst_test gcj_test gij_test jre_test \
ocaml_test sml_test mosml_test
endif
if CR_HAVE_CXX
SEQ_testcxx = testcxx
testcxx_SOURCES = testcxx.cc
endif
SIMPLE_progs2 = atomics_stress
SIMPLE_scripts2 =
SEQ_progs2 = cb_exit ptrace $(SEQ_testcxx)
SEQ_scripts2 = $(SEQ_scripts2_shared)
CRUT_progs2 = hugetlbfs2
SIMPLE_TESTS2 = $(SIMPLE_progs2) $(SIMPLE_scripts2)
SEQ_TESTS2 = $(SEQ_progs2) $(SEQ_scripts2)
CRUT_TESTS2 = $(CRUT_progs2)
# Need extra ldflags when an object references no symbols in a lib
libcr_ldflags = -u cr_link_me
libcr_run_ldflags = -u cr_run_link_me
libcr_omit_ldflags = -u cr_omit_link_me
if CR_INSTALLED_LIBCR
# Use the installed library and headers
libcr_L = -L$(libdir)
libcr_includes = -I$(includedir)
else
libcr_L = -L$(top_builddir)/libcr
libcr_includes = -I$(top_srcdir)/include -I$(top_builddir)/include
LIBCR = $(top_builddir)/libcr/libcr.la \
$(top_builddir)/libcr/libcr_run.la \
$(top_builddir)/libcr/libcr_omit.la
$(tester_progs) $(check_progs2): $(LIBCR)
endif
# The library/ies that (nearly?) every test needs:
libcr_ldadd = $(libcr_L) -lcr
libcr_run_ldadd = $(libcr_L) -lcr_run
libcr_omit_ldadd = $(libcr_L) -lcr_omit
# Gather reusable code into libtest.a
libtest_a_SOURCES = crut.c crut_util.c crut_util_pth.c crut_util_libcr.c
libtest_ldadd = libtest.a
# Generic flags here...
LDADD = $(libtest_ldadd) $(libcr_ldadd) -lpthread @CR_CLIENT_LDADD@
INCLUDES = $(libcr_includes)
AM_CFLAGS = -Wall
# Test-specific flags here...
stage0001_LDADD = $(libtest_ldadd) $(libcr_ldadd) @CR_CLIENT_LDADD@ # NO PTHREADS FOR THIS TEST
atomics_CFLAGS = $(CFLAGS) -I$(top_srcdir)/libcr/arch/@CR_LIBARCH@
atomics_LDADD = @CR_CLIENT_LDADD@ # No libs required
atomics_stress_CFLAGS = $(CFLAGS) -I$(top_srcdir)/libcr/arch/@CR_LIBARCH@
atomics_stress_LDADD = $(libtest_ldadd) -lpthread @CR_CLIENT_LDADD@ # Only need crut_util.o and pthreads
ptrace_LDFLAGS = $(libcr_ldflags) # In static builds need help to ensure libcr is linked (no refs)
# The wrappers
wrapper_progs = seq_wrapper crut_wrapper
seq_wrapper_LDADD = $(libtest_ldadd) # Must not be a lt-exec
# Rules to "build" a shell script
# We "install" to avoid worrying about the permissions in/on $srcdir
# The .sh suffix not meant denote any specific shell
all_scripts = $(SIMPLE_scripts) $(SEQ_scripts) $(helper_scripts) \
$(SIMPLE_scripts2) $(SEQ_scripts2) $(helper_scripts2)
all_scripts_src = $(patsubst %,%.sh,$(all_scripts))
$(all_scripts): shellinit
$(all_scripts) : % : %.sh
$(INSTALL_SCRIPT) $< $@
# Rule to wrap the SEQ tests with the seq_wrapper
SEQ_RUN = $(patsubst %,%.st,$(SEQ_TESTS))
SEQ_RUN2 = $(patsubst %,%.st,$(SEQ_TESTS2))
$(SEQ_RUN) $(SEQ_RUN2) : %.st : % seq_wrapper
@rm -f $@
@$(LN_S) -f seq_wrapper $@
# Rule to wrap the CRUT tests with the crut_wrapper
# We use a 1-line script, not a symlink, in the build directory
# to allow crut_wrapper to be a libtool wrapper itself.
CRUT_RUN = $(patsubst %,%.ct,$(CRUT_TESTS))
CRUT_RUN2 = $(patsubst %,%.ct,$(CRUT_TESTS2))
$(CRUT_RUN) $(CRUT_RUN2) : %.ct : % crut_wrapper
@rm -f $@
@(echo '#!/bin/sh'; \
echo 'exec `dirname $$0`/crut_wrapper -q "$$@" $*' ) > $@
@chmod +x $@
# Script to run all the CRUT tests standalone
rununittests: $(CRUT_TESTS)
(echo '#!/bin/sh'; echo './crut_wrapper $$@ $(CRUT_TESTS)') > $@
chmod +x $@
# Rules to help w/ some dependencies in other directories:
if CR_BUILD_LIBCR
$(LIBCR): FORCE
@$(MAKE) $(AM_MAKEFLAGS) --no-print-directory -C $(@D)
endif
# Prog(s) needed indirectly by test(s)
cr_run: hello
hello_LDADD = # NO LIBS HERE
cr_targ cr_tagr2 cr_omit: pause
bug2003: bug2003_aux
save_exe save_priv save_share save_all: save_aux
reloc_exe reloc_file reloc_fifo reloc_dir reloc_all: reloc_aux
run_on: save_aux pause
clobber: save_aux
if CR_ENABLE_SHARED
pause_LDADD = # NO LIBS HERE
bug2003_aux_LDADD = # NO LIBS HERE
save_aux_LDADD = $(libtest_ldadd) # NO LIBCR HERE - must not be a lt-exec
reloc_aux_LDADD = $(libtest_ldadd) # NO LIBCR HERE - must not be a lt-exec
dlopen_aux_LDADD = -ldl # NO LIBCR HERE
helper_progs_shared = hello dlopen_aux
dlopen: dlopen_aux
else
pause_LDADD = $(libcr_run_ldadd) @CR_CLIENT_LDADD@
pause_LDFLAGS = $(libcr_run_ldflags)
bug2003_aux_LDADD = $(libcr_run_ldadd) @CR_CLIENT_LDADD@
bug2003_aux_LDFLAGS = $(libcr_run_ldflags)
save_aux_LDADD = $(libcr_run_ldadd) $(libtest_ldadd) @CR_CLIENT_LDADD@
save_aux_LDFLAGS = $(libcr_run_ldflags)
reloc_aux_LDADD = $(libcr_run_ldadd) $(libtest_ldadd) @CR_CLIENT_LDADD@
reloc_aux_LDFLAGS = $(libcr_run_ldflags)
endif
helper_progs = $(helper_progs_shared) bug2003_aux pause save_aux reloc_aux
helper_progs2 =
helper_scripts =
helper_scripts2 =
# Maintainer-only tests
BONUS_TESTS = $(SIMPLE_TESTS2) $(SEQ_RUN2) $(CRUT_RUN2)
bonus-tests: $(BONUS_TESTS)
@$(MAKE) $(AM_MAKEFLAGS) --no-print-directory check TESTS="$(BONUS_TESTS)"
bonus-check: $(BONUS_TESTS)
@$(MAKE) $(AM_MAKEFLAGS) --no-print-directory check TESTS="$(TESTS) $(BONUS_TESTS)"
# Create our own target for building (but NOT running) the tests
build-tests: tests # Legacy target
tests: $(TESTS) $(BONUS_TESTS) rununittests
@echo '################################################################################'
@echo 'HOW TO RUN THESE TESTS:'
@echo
@echo 'SIMPLE TESTS ($(SIMPLE_TESTS)):'
@echo '--- use ./test'
@echo 'UNIT TESTS ($(CRUT_TESTS)):'
@echo '--- use ./<test>.ct'
@echo '--- or use ./rununittests to run them all'
@echo 'SEQ TESTS ($(SEQ_TESTS)):'
@echo '--- use ./<test>.st'
@echo '################################################################################'
# Some tests use cr_run even w/o shared libs - mask that
if CR_ENABLE_SHARED
CR_RUN_INSTALLED=$(bindir)/cr_run
else
CR_RUN_INSTALLED=env
endif
# Depending whether we build the testsuite or not, the test programs and
# scripts should be in either the testsexec_ or check_ prefix.
#
tester_progs = $(SIMPLE_progs) $(SEQ_progs) $(CRUT_progs) $(helper_progs)
tester_scripts = $(SIMPLE_scripts) $(SEQ_scripts) $(helper_scripts)
if CR_BUILD_TESTSUITE
testsexecdir = $(libexecdir)/blcr-testsuite
testsexec_PROGRAMS = $(tester_progs) $(wrapper_progs)
testsexec_SCRIPTS = $(tester_scripts)
AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = $(testsexec_PROGRAMS) $(testsexec_SCRIPTS)
install-exec-local:
@$(mkinstalldirs) "$(DESTDIR)$(testsexecdir)"
@cd "$(DESTDIR)$(testsexecdir)" && \
for file in $(SEQ_RUN); do rm -f $$file; $(LN_S) seq_wrapper $$file; done && \
for file in $(CRUT_RUN); do rm -f $$file; $(LN_S) crut_wrapper $$file; done && \
echo '# This file is required, but typically empty, in an installed testsuite' > shellinit && \
chmod 644 shellinit
@sed -e 's,%bindir%,$(bindir),;' \
-e 's,%tests%,$(TESTS),;' \
-e 's,%cr_run%,$(CR_RUN_INSTALLED),;' \
-e 's,%cr_pwd%,@PWD_PROG@,;' \
$(srcdir)/RUN_ME.in >$(DESTDIR)$(testsexecdir)/RUN_ME
@chmod +x $(DESTDIR)$(testsexecdir)/RUN_ME
uninstall-local:
@cd $(DESTDIR)$(testsexecdir) && rm -f RUN_ME $(SEQ_RUN) $(CRUT_RUN)
else
check_progs = $(tester_progs)
check_scripts = $(tester_scripts)
endif
# Maintainer-only tests progs and scripts (always in check_ prefix)
check_progs2 = $(SIMPLE_progs2) $(SEQ_progs2) $(CRUT_progs2) $(helper_progs2)
check_scripts2 = $(SIMPLE_scripts2) $(SEQ_scripts2) $(helper_scripts2)
# Environment variables visible to the test programs
TESTS_ENVIRONMENT = top_srcdir="$(TOP_SRCDIR)" LIBCR_DISABLE_NSCD=1
# Automake magic here...
check_LIBRARIES = libtest.a
check_HEADERS = crut.h crut_util.h
check_SCRIPTS = check_module clean_temps build_util $(check_scripts) $(check_scripts2)
check_PROGRAMS = $(check_progs) $(check_progs2) $(wrapper_progs)
TESTS = $(SIMPLE_TESTS) $(SEQ_RUN) $(CRUT_RUN) # Things to actually run
EXTRA_DIST = license.txt CountingApp.java CountingApp.class RUN_ME.in $(all_scripts_src)
MOSTLYCLEANFILES = core core.* $(CONTEXTS)
CLEANFILES = $(SEQ_RUN) $(CRUT_RUN) $(SEQ_RUN2) $(CRUT_RUN2) $(all_scripts) \
rununittests RUN_ME
clean-local: clean_temps
echoval: FORCE
@echo $($(VARNAME)) | sed 's/"/\\"/'g
.PHONY: check_module clean_temps build_util tests build-tests echoval FORCE
FORCE:
# Preserve the empty line above!
|