Files
mercury/tests/mmc_make/Mmakefile
Peter Wang 181122d1f8 Fix writing .module_dep files.
compiler/make.module_dep_file.m:
    Write foreign included file names to the .module_dep stream
    instead of the implicit output stream. The bug was introduced in
    commit 5f50259d16.

tests/mmc_make/Mmakefile:
    mmc --make does not set a non-zero exit status even if there were
    problems reading a .module_dep file. Explicitly grep for "error" in
    the mmc --make output in the include_file test that should have
    caught the preceding bug (assuming the workspace is built with
    --use-subdirs).

    grep for "error" in another test case.
2021-03-01 12:28:43 +11:00

92 lines
2.6 KiB
Makefile

#-----------------------------------------------------------------------------#
# vim: ts=8 sw=8 noexpandtab ft=make
#-----------------------------------------------------------------------------#
TESTS_DIR = ..
THIS_DIR = mmc_make
MAYBE_J1 =
#-----------------------------------------------------------------------------#
MMAKE_USE_MMC_MAKE=yes
PROGS = \
bug489 \
complex_test \
hello \
include_file \
include_file2 \
linkage_test \
rebuild
# These tests only work if the workspace was compiled with `--use-subdirs'.
ifneq ($(origin WORKSPACE),undefined)
ifeq ($(shell [ -d $(WORKSPACE)/library/Mercury ] || echo cannot_run),cannot_run)
PROGS =
endif
endif
TESTS = $(sort $(PROGS))
include ../Mmake.common
%.runtest: %.res ;
Mercury.modules: lexer.m
$(MC) -f $^
bug489.log: Mercury.modules
complex_test.log: install_libs
# Check that included files are identified as dependencies of the target code.
# sleep 1 is required because mmc --make timestamps are not granular enough.
include_file2.runtest: include_file
sleep 1 && touch inc/code.c inc/code.java inc/code.cs
$(MCM) --verbose-make include_file > include_file2.err 2>&1
! grep -qi 'error' include_file2.err && \
grep '^Making Mercury/.*/include_file[.]' include_file2.err
linkage_test.log: install_libs_linkage_test2
# Just test that the executable is rebuilt.
rebuild.runtest:
$(MCM) --rebuild rebuild
$(MCM) --rebuild --verbose-make rebuild > rebuild.err2 2>&1
! grep -qi 'error' rebuild.err2 && \
grep '^Making rebuild\($$\|\.\)' rebuild.err2
# The compiler used to fail when invoked as `mmc --make build_object.o'.
build_object.runtest: build_object.o
.PHONY: install_libs
install_libs: start_runtests_local
$(MMAKE) TESTS_FLAGS
( cd lib; \
$(MCM) --no-libgrade --install-prefix $(shell pwd)/install \
libcomplex_numbers.install ) \
|| touch complex_test.failed
.PHONY: install_libs_linkage_test2
install_libs_linkage_test2: start_runtests_local
$(MMAKE) TESTS_FLAGS
( cd lib; \
$(MCM) --no-libgrade --install-prefix $(shell pwd)/install \
liblinkage_test2.install --lib-linkage static ) \
|| touch linkage_test.failed
# Copy/symlink TESTS_FLAGS into the current directory for when
# we change into the `lib' subdirectory.
TESTS_FLAGS: ../TESTS_FLAGS
ln -s $< $@ || cp $< $@
realclean_local: realclean_mmc_make
realclean_mmc_make: TESTS_FLAGS
rm -rf install include_file2.err rebuild.err2
# ./TESTS_FLAGS is expected by the following line.
cd lib; $(MCM) complex_numbers.realclean linkage_test2.realclean
rm -f TESTS_FLAGS
rm -f Mercury.modules
#-----------------------------------------------------------------------------#