swig/Examples/test-suite/common.mk
Haoyu Bai 3d8ddfc442 Merged the Python 3.0 support branch. The merging progress is not so smooth, so hope this commit won't make anything broken.
This is the (incomplemete) log produced by svnmerge.py:

Merged revisions 10405-10409,10420-10422,10426,10438,10445,10451,10454-10465,10467,10473-10475,10485,10488-10489,10493-10495,10497,10509-10510,10513-10514,10517,10520,10525,10528-10529,10533-10535,10554-10557,10570,10573,10593,10614,10666-10669,10673,10678,10687,10690,10704-10706,10731,10744,10750-10752,10755,10759,10770,10775-10776,10813,10819 via svnmerge from 
https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2008-bhy



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10834 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2008-09-11 17:18:07 +00:00

543 lines
13 KiB
Makefile

#######################################################################
# SWIG test suite makefile.
# The test suite comprises many different test cases, which have
# typically produced bugs in the past. The aim is to have the test
# cases compiling for every language modules. Some testcase have
# a runtime test which is written in each of the module's language.
#
# This makefile runs SWIG on the testcases, compiles the c/c++ code
# then builds the object code for use by the language.
# To complete a test in a language follow these guidelines:
# 1) Add testcases to CPP_TEST_CASES (c++) or C_TEST_CASES (c) or
# MULTI_CPP_TEST_CASES (multi-module c++ tests)
# 2) If not already done, create a makefile which:
# a) Defines LANGUAGE matching a language rule in Examples/Makefile,
# for example LANGUAGE = java
# b) Define rules for %.ctest, %.cpptest, %.multicpptest and %.clean.
# c) Define srcdir, top_srcdir and top_builddir (these are the
# equivalent to configure's variables of the same name).
# 3) One off special commandline options can be achieved by adding a
# test case to CUSTOM_TEST_CASES and defining rules to run and test.
#
# The 'check' target runs the testcases including SWIG invocation,
# C/C++ compilation, target language compilation (if any) and runtime
# test (if there is an associated 'runme' test).
# The 'partialcheck' target only invokes SWIG.
# The 'all' target is the same as the 'check' target but also includes
# known broken testcases.
# The 'clean' target cleans up.
#
# Note that the RUNTOOL, COMPILETOOL and SWIGTOOL variables can be used
# for # invoking tools for the runtime tests and target language
# compiler (eg javac) respectively. For example, valgrind can be used
# for memory checking of the runtime tests using:
# make RUNTOOL="valgrind --leak-check-full"
# and valgrind can be used when invoking SWIG using:
# make SWIGTOOL="valgrind --tool=memcheck"
#
# The variables below can be overridden after including this makefile
#######################################################################
#######################################################################
# Variables
#######################################################################
ifneq (,$(USE_VALGRIND))
VALGRIND_OPT = --leak-check=full
RUNTOOL = valgrind $(VALGRIND_OPT)
else
RUNTOOL =
endif
COMPILETOOL=
SWIGTOOL =
SWIG = $(SWIGTOOL) $(top_builddir)/preinst-swig
SWIG_LIB = $(top_srcdir)/Lib
TEST_SUITE = test-suite
EXAMPLES = Examples
CXXSRCS =
CSRCS =
TARGETPREFIX =
TARGETSUFFIX =
SWIGOPT = -I$(top_srcdir)/$(EXAMPLES)/$(TEST_SUITE)/$(LANGUAGE) -I$(top_srcdir)/$(EXAMPLES)/$(TEST_SUITE) -DSWIG_NOEXTRA_QUALIFICATION
INCLUDES = -I$(top_srcdir)/$(EXAMPLES)/$(TEST_SUITE)/$(LANGUAGE) -I$(top_srcdir)/$(EXAMPLES)/$(TEST_SUITE)
LIBS = -L.
LIBPREFIX = lib
ACTION = check
#
# Please keep test cases in alphabetical order.
# Note that any whitespace after the last entry in each list will break make
#
# Broken C++ test cases. (Can be run individually using make testcase.cpptest.)
CPP_TEST_BROKEN += \
constants \
cpp_broken \
exception_partial_info \
extend_variable \
namespace_union \
nested_comment \
overload_complicated \
template_default_pointer \
template_expr
# Broken C test cases. (Can be run individually using make testcase.ctest.)
C_TEST_BROKEN += \
tag_no_clash_with_variable
# C++ test cases. (Can be run individually using make testcase.cpptest.)
CPP_TEST_CASES += \
abstract_access \
abstract_inherit \
abstract_inherit_ok \
abstract_signature \
abstract_typedef \
abstract_typedef2 \
abstract_virtual \
access_change \
add_link \
aggregate \
allowexcept \
allprotected \
anonymous_bitfield \
apply_signed_char \
apply_strings \
argout \
array_member \
array_typedef_memberin \
arrayref \
arrays_dimensionless \
arrays_global \
arrays_global_twodim \
arrays_scope \
bloody_hell \
bools \
cast_operator \
casts \
char_strings \
class_ignore \
class_scope_weird \
compactdefaultargs \
const_const_2 \
constant_pointers \
constover \
constructor_copy \
constructor_exception \
constructor_explicit \
constructor_ignore \
constructor_value \
contract \
conversion \
conversion_namespace \
conversion_ns_template \
cplusplus_throw \
cpp_basic \
cpp_enum \
cpp_namespace \
cpp_nodefault \
cpp_static \
cpp_typedef \
default_args \
default_constructor \
defvalue_constructor \
derived_byvalue \
derived_nested \
destructor_reprotected \
director_abstract \
director_basic \
director_classes \
director_classic \
director_constructor \
director_default \
director_detect \
director_enum \
director_exception \
director_extend \
director_finalizer \
director_frob \
director_ignore \
director_namespace_clash \
director_nested \
director_overload \
director_primitives \
director_protected \
director_redefined \
director_thread \
director_unroll \
director_using \
director_wombat \
disown \
dynamic_cast \
empty \
enum_scope_template \
enum_template \
enum_thorough \
enum_var \
evil_diamond \
evil_diamond_ns \
evil_diamond_prop \
exception_order \
extend \
extend_default \
extend_placement \
extend_template \
extend_template_ns \
extern_namespace \
extern_throws \
features \
fragments \
friends \
fvirtual \
global_ns_arg \
global_vars \
grouping \
ignore_parameter \
import_nomodule \
inherit \
inherit_missing \
inherit_same_name \
inherit_target_language \
inherit_void_arg \
inline_initializer \
keyword_rename \
kind \
langobj \
li_attribute \
li_boost_shared_ptr \
li_boost_shared_ptr_bits \
li_carrays \
li_cdata \
li_cpointer \
li_stdint \
li_typemaps \
li_windows \
long_long_apply \
member_pointer \
member_template \
minherit \
minherit2 \
mixed_types \
multiple_inheritance \
name_cxx \
name_warnings \
namespace_class \
namespace_enum \
namespace_extend \
namespace_nested \
namespace_spaces \
namespace_template \
namespace_typedef_class \
namespace_typemap \
namespace_virtual_method \
naturalvar \
newobject1 \
null_pointer \
operator_overload \
operator_overload_break \
operbool \
ordering \
overload_copy \
overload_extend \
overload_rename \
overload_simple \
overload_subtype \
overload_template \
overload_template_fast \
pointer_reference \
primitive_ref \
private_assign \
protected_rename \
pure_virtual \
redefined \
refcount \
reference_global_vars \
register_par \
rename1 \
rename2 \
rename3 \
rename4 \
rename_scope \
restrict_cplusplus \
return_const_value \
return_value_scope \
rname \
samename \
sizet \
smart_pointer_const \
smart_pointer_const2 \
smart_pointer_extend \
smart_pointer_member \
smart_pointer_multi \
smart_pointer_multi_typedef \
smart_pointer_namespace \
smart_pointer_namespace2 \
smart_pointer_not \
smart_pointer_overload \
smart_pointer_protected \
smart_pointer_rename \
smart_pointer_simple \
smart_pointer_static \
smart_pointer_templatemethods \
smart_pointer_templatevariables \
smart_pointer_typedef \
special_variables \
static_array_member \
static_const_member \
static_const_member_2 \
struct_value \
template \
template_arg_replace \
template_arg_scope \
template_arg_typename \
template_array_numeric \
template_base_template \
template_classes \
template_const_ref \
template_construct \
template_default \
template_default2 \
template_default_arg \
template_default_class_parms \
template_default_inherit \
template_default_qualify \
template_default_vw \
template_enum \
template_enum_ns_inherit \
template_enum_typedef \
template_explicit \
template_extend1 \
template_extend2 \
template_extend_overload \
template_extend_overload_2 \
template_forward \
template_inherit \
template_inherit_abstract \
template_int_const \
template_methods \
template_ns \
template_ns2 \
template_ns3 \
template_ns4 \
template_ns_enum \
template_ns_enum2 \
template_ns_inherit \
template_ns_scope \
template_partial_arg \
template_qualifier \
template_qualifier \
template_ref_type \
template_rename \
template_retvalue \
template_specialization \
template_specialization_defarg \
template_specialization_enum \
template_static \
template_tbase_template \
template_template_parameters \
template_typedef \
template_typedef_cplx \
template_typedef_cplx2 \
template_typedef_cplx3 \
template_typedef_cplx4 \
template_typedef_cplx5 \
template_typedef_funcptr \
template_typedef_ns \
template_typedef_ptr \
template_typedef_rec \
template_using \
template_virtual \
template_whitespace \
threads \
throw_exception \
typedef_array_member \
typedef_class \
typedef_funcptr \
typedef_inherit \
typedef_mptr \
typedef_reference \
typedef_scope \
typedef_sizet \
typedef_struct \
typemap_namespace \
typemap_ns_using \
typemap_numinputs \
typemap_variables \
typemap_various \
typename \
types_directive \
union_scope \
using1 \
using2 \
using_composition \
using_extend \
using_inherit \
using_namespace \
using_pointers \
using_private \
using_protected \
valuewrapper \
valuewrapper_base \
valuewrapper_const \
valuewrapper_opaque \
varargs \
virtual_destructor \
virtual_poly \
voidtest \
wrapmacro
#
# Put all the heavy STD/STL cases here, where they can be skipped if needed
#
CPP_STD_TEST_CASES += \
director_string \
ignore_template_constructor \
li_std_deque \
li_std_except \
li_std_pair \
li_std_string \
li_std_vector \
naturalvar \
smart_pointer_inherit \
template_typedef_fnc \
template_type_namespace \
template_opaque
ifndef SKIP_CPP_STD_CASES
CPP_TEST_CASES += ${CPP_STD_TEST_CASES}
endif
# C test cases. (Can be run individually using make testcase.ctest.)
C_TEST_CASES += \
arrays \
char_constant \
const_const \
empty \
enums \
extern_declaration \
funcptr \
function_typedef \
immutable \
inctest \
integers \
keyword_rename \
lextype \
li_carrays \
li_cdata \
li_cmalloc \
li_constraints \
li_cpointer \
li_math \
long_long \
name \
nested \
newobject2 \
overload_extend \
overload_extendc \
preproc \
ret_by_value \
sizeof_pointer \
sneaky1 \
struct_rename \
typedef_struct \
typemap_subst \
unions
# Multi-module C++ test cases . (Can be run individually using make testcase.multicpptest.)
MULTI_CPP_TEST_CASES += \
clientdata_prop \
imports \
packageoption \
mod \
template_typedef_import \
multi_import
NOT_BROKEN_TEST_CASES = $(CPP_TEST_CASES:=.cpptest) \
$(C_TEST_CASES:=.ctest) \
$(MULTI_CPP_TEST_CASES:=.multicpptest) \
$(CUSTOM_TEST_CASES:=.customtest) \
$(EXTRA_TEST_CASES)
BROKEN_TEST_CASES = $(CPP_TEST_BROKEN:=.cpptest) \
$(C_TEST_BROKEN:=.ctest)
ALL_CLEAN = $(CPP_TEST_CASES:=.clean) \
$(C_TEST_CASES:=.clean) \
$(MULTI_CPP_TEST_CASES:=.clean) \
$(CUSTOM_TEST_CASES:=.clean) \
$(CPP_TEST_BROKEN:=.clean) \
$(C_TEST_BROKEN:=.clean)
#######################################################################
# The following applies for all module languages
#######################################################################
all: $(BROKEN_TEST_CASES) $(NOT_BROKEN_TEST_CASES)
check: $(NOT_BROKEN_TEST_CASES)
# partialcheck target runs SWIG only, ie no compilation or running of tests (for a subset of languages)
partialcheck:
$(MAKE) check CC=true CXX=true LDSHARED=true CXXSHARED=true RUNTOOL=true COMPILETOOL=true
broken: $(BROKEN_TEST_CASES)
swig_and_compile_cpp = \
$(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile CXXSRCS="$(CXXSRCS)" \
SWIG_LIB="$(SWIG_LIB)" SWIG="$(SWIG)" \
INCLUDES="$(INCLUDES)" SWIGOPT="$(SWIGOPT)" NOLINK=true \
TARGET="$(TARGETPREFIX)$*$(TARGETSUFFIX)" INTERFACE="$*.i" \
$(LANGUAGE)$(VARIANT)_cpp
swig_and_compile_c = \
$(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile CSRCS="$(CSRCS)" \
SWIG_LIB="$(SWIG_LIB)" SWIG="$(SWIG)" \
INCLUDES="$(INCLUDES)" SWIGOPT="$(SWIGOPT)" NOLINK=true \
TARGET="$(TARGETPREFIX)$*$(TARGETSUFFIX)" INTERFACE="$*.i" \
$(LANGUAGE)$(VARIANT)
swig_and_compile_multi_cpp = \
for f in `cat $(top_srcdir)/$(EXAMPLES)/$(TEST_SUITE)/$*.list` ; do \
$(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile CXXSRCS="$(CXXSRCS)" \
SWIG_LIB="$(SWIG_LIB)" SWIG="$(SWIG)" LIBS='$(LIBS)' \
INCLUDES="$(INCLUDES)" SWIGOPT="$(SWIGOPT)" NOLINK=true \
TARGET="$(TARGETPREFIX)$${f}$(TARGETSUFFIX)" INTERFACE="$$f.i" \
$(LANGUAGE)$(VARIANT)_cpp; \
done
swig_and_compile_external = \
$(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile \
SWIG_LIB="$(SWIG_LIB)" SWIG="$(SWIG)" \
TARGET="$*_wrap_hdr.h" \
$(LANGUAGE)$(VARIANT)_externalhdr; \
$(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile CXXSRCS="$(CXXSRCS) $*_external.cxx" \
SWIG_LIB="$(SWIG_LIB)" SWIG="$(SWIG)" \
INCLUDES="$(INCLUDES)" SWIGOPT="$(SWIGOPT)" NOLINK=true \
TARGET="$(TARGETPREFIX)$*$(TARGETSUFFIX)" INTERFACE="$*.i" \
$(LANGUAGE)$(VARIANT)_cpp
swig_and_compile_runtime = \
setup = \
if [ -f $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then \
echo "$(ACTION)ing testcase $* (with run test) under $(LANGUAGE)" ; \
else \
echo "$(ACTION)ing testcase $* under $(LANGUAGE)" ; \
fi;
#######################################################################
# Clean
#######################################################################
clean: $(ALL_CLEAN)
distclean: clean
@rm -f Makefile
.PHONY: all check partialcheck broken clean distclean