Previously SWIG looked at the indentation of the first line and removed that many characters from each subsequent line, regardless of what those characters were. This was made worse because SWIG's preprocessor removes any whitespace before a '#'. Fixes github issue #379, reported by Joe Orton.
195 lines
4.7 KiB
Makefile
195 lines
4.7 KiB
Makefile
#######################################################################
|
|
# Makefile for python test-suite
|
|
#######################################################################
|
|
|
|
ifeq (,$(PY3))
|
|
PYBIN = @PYTHON@
|
|
else
|
|
PYBIN = @PYTHON3@
|
|
endif
|
|
|
|
LANGUAGE = python
|
|
PYTHON = $(PYBIN)
|
|
PEP8 = @PEP8@
|
|
PEP8_FLAGS = --ignore=E402,E501,E30,W291,W391
|
|
|
|
#*_runme.py for Python 2.x, *_runme3.py for Python 3.x
|
|
PY2SCRIPTSUFFIX = _runme.py
|
|
PY3SCRIPTSUFFIX = _runme3.py
|
|
PY2TO3 = 2to3 -x import
|
|
|
|
ifeq (,$(PY3))
|
|
SCRIPTSUFFIX = $(PY2SCRIPTSUFFIX)
|
|
else
|
|
SCRIPTSUFFIX = $(PY3SCRIPTSUFFIX)
|
|
endif
|
|
|
|
srcdir = @srcdir@
|
|
top_srcdir = @top_srcdir@
|
|
top_builddir = @top_builddir@
|
|
|
|
CPP_TEST_CASES += \
|
|
argcargvtest \
|
|
callback \
|
|
complextest \
|
|
director_stl \
|
|
director_wstring \
|
|
file_test \
|
|
iadd \
|
|
implicittest \
|
|
inout \
|
|
inplaceadd \
|
|
input \
|
|
li_cstring \
|
|
li_cwstring \
|
|
li_factory \
|
|
li_implicit \
|
|
li_std_containers_int \
|
|
li_std_map_member \
|
|
li_std_multimap \
|
|
li_std_pair_extra \
|
|
li_std_set \
|
|
li_std_stream \
|
|
li_std_string_extra \
|
|
li_std_vectora \
|
|
li_std_vector_extra \
|
|
li_std_wstream \
|
|
li_std_wstring \
|
|
primitive_types \
|
|
python_abstractbase \
|
|
python_append \
|
|
python_director \
|
|
python_nondynamic \
|
|
python_overload_simple_cast \
|
|
python_pythoncode \
|
|
python_richcompare \
|
|
simutry \
|
|
std_containers \
|
|
swigobject \
|
|
template_matrix
|
|
|
|
# li_std_carray
|
|
# director_profile
|
|
# python_pybuf
|
|
|
|
C_TEST_CASES += \
|
|
file_test \
|
|
li_cstring \
|
|
li_cwstring \
|
|
python_nondynamic \
|
|
python_varargs_typemap
|
|
|
|
#
|
|
# This test only works with modern C compilers
|
|
#
|
|
#C_TEST_CASES += \
|
|
# complextest
|
|
|
|
include $(srcdir)/../common.mk
|
|
|
|
# Overridden variables here
|
|
SCRIPTDIR = .
|
|
LIBS = -L.
|
|
VALGRIND_OPT += --suppressions=pythonswig.supp
|
|
|
|
# Custom tests - tests with additional commandline options
|
|
# none!
|
|
|
|
# Rules for the different types of tests
|
|
%.cpptest:
|
|
+$(convert_testcase)
|
|
$(setup)
|
|
+$(swig_and_compile_cpp)
|
|
$(check_pep8)
|
|
$(run_testcase)
|
|
|
|
%.ctest:
|
|
+$(convert_testcase)
|
|
$(setup)
|
|
+$(swig_and_compile_c)
|
|
$(check_pep8)
|
|
$(run_testcase)
|
|
|
|
%.multicpptest:
|
|
+$(convert_testcase)
|
|
$(setup)
|
|
+$(swig_and_compile_multi_cpp)
|
|
$(check_pep8_multi_cpp)
|
|
$(run_testcase)
|
|
|
|
|
|
|
|
# Runs the testcase. A testcase is only run if
|
|
# a file is found which has _runme.py (or _runme3.py for Python 3) appended after the testcase name.
|
|
|
|
py_runme = $(SCRIPTPREFIX)$*$(SCRIPTSUFFIX)
|
|
py2_runme = $(SCRIPTPREFIX)$*$(PY2SCRIPTSUFFIX)
|
|
py3_runme = $(SCRIPTPREFIX)$*$(PY3SCRIPTSUFFIX)
|
|
|
|
ifneq (,$(PEP8))
|
|
check_pep8 = $(PEP8) $(PEP8_FLAGS) $(SCRIPTPREFIX)$*.py
|
|
|
|
check_pep8_multi_cpp = \
|
|
for f in `cat $(top_srcdir)/$(EXAMPLES)/$(TEST_SUITE)/$*.list` ; do \
|
|
$(PEP8) $(PEP8_FLAGS) $$f.py; \
|
|
done
|
|
endif
|
|
|
|
run_python = env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH PYTHONPATH=.:$(srcdir):$$PYTHONPATH $(RUNTOOL) $(PYTHON) $(py_runme)
|
|
|
|
run_testcase = \
|
|
if [ -f $(SCRIPTDIR)/$(py_runme) ]; then \
|
|
$(run_python);\
|
|
fi
|
|
|
|
# No copying/conversion needed for in-source-tree Python 2 scripts
|
|
ifeq ($(SCRIPTDIR)|$(SCRIPTSUFFIX),$(srcdir)|$(PY2SCRIPTSUFFIX))
|
|
convert_testcase =
|
|
else
|
|
|
|
convert_testcase = \
|
|
if [ -f $(srcdir)/$(py2_runme) ]; then \
|
|
$(MAKE) $(SCRIPTDIR)/$(py_runme); \
|
|
fi
|
|
|
|
$(SCRIPTDIR)/$(SCRIPTPREFIX)%$(SCRIPTSUFFIX): $(srcdir)/$(SCRIPTPREFIX)%$(PY2SCRIPTSUFFIX)
|
|
test x$< = x$@ || cp $< $@ || exit 1
|
|
test x$(PY3) = x || $(PY2TO3) -w $@ >/dev/null 2>&1 || exit 1
|
|
|
|
endif
|
|
|
|
# Clean: remove the generated .py file
|
|
# We only remove the _runme3.py if it is generated by 2to3 from a _runme.py.
|
|
%.clean:
|
|
@rm -f $*.py
|
|
@if test -f $(srcdir)/$(py2_runme); then rm -f $(SCRIPTDIR)/$(py3_runme) $(SCRIPTDIR)/$(py3_runme).bak; fi
|
|
@if test "x$(SCRIPTDIR)" != "x$(srcdir)"; then rm -f $(SCRIPTDIR)/$(py2_runme); fi
|
|
|
|
clean:
|
|
$(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR="$(SRCDIR)" python_clean
|
|
rm -f hugemod.h hugemod_a.i hugemod_b.i hugemod_a.py hugemod_b.py hugemod_runme.py
|
|
rm -f clientdata_prop_a.py clientdata_prop_b.py import_stl_a.py import_stl_b.py
|
|
rm -f imports_a.py imports_b.py mod_a.py mod_b.py multi_import_a.py
|
|
rm -f multi_import_b.py packageoption_a.py packageoption_b.py packageoption_c.py
|
|
|
|
cvsignore:
|
|
@echo '*wrap* *.pyc *.so *.dll *.exp *.lib'
|
|
@echo Makefile
|
|
@for i in ${CPP_TEST_CASES} ${C_TEST_CASES}; do echo $$i.py; done
|
|
@for i in ${CPP_TEST_CASES} ${C_TEST_CASES}; do if grep -q $${i}_runme.py CVS/Entries ; then echo $${i}_runme.py; fi; done
|
|
@echo clientdata_prop_a.py
|
|
@echo clientdata_prop_b.py
|
|
@echo imports_a.py
|
|
@echo imports_b.py
|
|
@echo mod_a.py mod_b.py
|
|
@echo hugemod.h hugemod_a.i hugemod_b.i hugemod_a.py hugemod_b.py hugemod_runme.py
|
|
@echo template_typedef_import.py
|
|
|
|
hugemod_runme = hugemod$(SCRIPTPREFIX)
|
|
|
|
hugemod:
|
|
perl hugemod.pl $(hugemod_runme)
|
|
$(MAKE) hugemod_a.cpptest
|
|
$(MAKE) hugemod_b.cpptest
|
|
sh -c "time $(PYTHON) $(hugemod_runme)"
|
|
sh -c "time $(PYTHON) $(hugemod_runme)"
|