Fixes parallel make where each invocation of swig was writing and deleting the same file resulting in lots of the newly introduced warning messages: On exit, could not delete file xxx.py: No such file or directory
76 lines
3 KiB
Makefile
76 lines
3 KiB
Makefile
#######################################################################
|
|
# Makefile for errors test-suite
|
|
#
|
|
# This test-suite is for checking SWIG errors and warnings and uses
|
|
# Python as the target language.
|
|
#
|
|
# It compares the stderr output from SWIG to the contents of the .stderr
|
|
# file for each test case. The test cases are different to those used by
|
|
# the language module test-suites. The .i files in this directory are
|
|
# used instead of those in the parent directory.
|
|
#
|
|
# When adding a new test case, be sure to commit the expected output
|
|
# file (.stderr) in addition to the test case itself.
|
|
#######################################################################
|
|
|
|
LANGUAGE = errors
|
|
ERROR_EXT = newerr
|
|
|
|
srcdir = @srcdir@
|
|
top_srcdir = @top_srcdir@
|
|
top_builddir = @top_builddir@
|
|
|
|
SWIG_LIB_SET = @SWIG_LIB_SET@
|
|
SWIGINVOKE = $(SWIG_LIB_SET) $(SWIGTOOL) $(SWIGEXE)
|
|
|
|
# All .i files with prefix 'cpp_' will be treated as C++ input and remaining .i files as C input
|
|
ALL_ERROR_TEST_CASES := $(sort $(patsubst %.i,%, $(notdir $(wildcard $(srcdir)/*.i))))
|
|
CPP_ERROR_TEST_CASES := $(sort $(filter cpp_%, $(ALL_ERROR_TEST_CASES)))
|
|
C_ERROR_TEST_CASES := $(sort $(filter-out $(CPP_ERROR_TEST_CASES), $(ALL_ERROR_TEST_CASES)))
|
|
DOXYGEN_ERROR_TEST_CASES := $(sort $(filter doxygen_%, $(C_ERROR_TEST_CASES)))
|
|
C_ERROR_TEST_CASES := $(sort $(filter-out $(DOXYGEN_ERROR_TEST_CASES), $(C_ERROR_TEST_CASES)))
|
|
|
|
# Always use C++ for Doxygen tests, there doesn't seem to be any need to
|
|
# distinguish between C and C++ Doxygen tests.
|
|
DOXYGEN_ERROR_TEST_CASES := $(DOXYGEN_ERROR_TEST_CASES:=.cpptest)
|
|
|
|
ERROR_TEST_CASES := $(CPP_ERROR_TEST_CASES:=.cpptest) \
|
|
$(C_ERROR_TEST_CASES:=.ctest) \
|
|
$(DOXYGEN_ERROR_TEST_CASES)
|
|
|
|
include $(srcdir)/../common.mk
|
|
|
|
# This is tricky: we need to let common.mk define SWIGOPT before appending to
|
|
# it, if we do it before including it, its defining of SWIGOPT would override
|
|
# whatever we do here.
|
|
$(DOXYGEN_ERROR_TEST_CASES): SWIGOPT += -doxygen
|
|
|
|
# Unique module names are obtained from the .i file name (required for parallel make).
|
|
# Note: -module overrides %module in the .i file.
|
|
MODULE_OPTION=-module $*
|
|
nomodule.ctest: MODULE_OPTION =
|
|
|
|
# Portable dos2unix / todos for stripping CR
|
|
TODOS = tr -d '\r'
|
|
#TODOS = sed -e 's/\r$$//' # On Mac OS X behaves as if written 's/r$$//'
|
|
|
|
# strip source directory from output, so that diffs compare
|
|
STRIP_SRCDIR = sed -e 's|\\|/|g' -e 's|^$(SRCDIR)||'
|
|
|
|
# Rules for the different types of tests
|
|
%.cpptest:
|
|
echo "$(ACTION)ing errors testcase $*"
|
|
-$(SWIGINVOKE) -c++ -python -Wall -Fstandard $(MODULE_OPTION) $(SWIGOPT) $(SRCDIR)$*.i 2>&1 | $(TODOS) | $(STRIP_SRCDIR) > $*.$(ERROR_EXT)
|
|
$(COMPILETOOL) diff -c $(SRCDIR)$*.stderr $*.$(ERROR_EXT)
|
|
|
|
%.ctest:
|
|
echo "$(ACTION)ing errors testcase $*"
|
|
-$(SWIGINVOKE) -python -Wall -Fstandard $(MODULE_OPTION) $(SWIGOPT) $(SRCDIR)$*.i 2>&1 | $(TODOS) | $(STRIP_SRCDIR) > $*.$(ERROR_EXT)
|
|
$(COMPILETOOL) diff -c $(SRCDIR)$*.stderr $*.$(ERROR_EXT)
|
|
|
|
%.clean:
|
|
@exit 0
|
|
|
|
clean:
|
|
$(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' python_clean
|
|
@rm -f *.$(ERROR_EXT) *.py
|