33# in all copies. This software is provided "as is" without express or implied
44# warranty, and with no claim as to its suitability for any purpose.
55#
6- # Boost.Python build and test Jamfile
7- #
8- # To run all tests quietly: jam test
9- # To run all tests with verbose output: jam -sPYTHON_TEST_ARGS=-v test
10- #
11- # Declares the following targets:
12- # 1. libboost_python.dll/.so, a dynamic library to be linked with all
13- # Boost.Python modules
14- #
15- # 2. pairs of test targets of the form <name>.test and <name>.run
16- # <name>.test runs the test when it is out-of-date, and the "test"
17- # pseudotarget depends on it. <name>.run runs
18- # a test unconditionally, and can be used to force a test to run.. Each
19- # test target builds one or more Boost.Python modules and runs a Python
20- # script to test them. The test names are:
21- #
22- # from ../test
23- #
24- # comprehensive - a comprehensive test of Boost.Python features
25- #
26- # from ../example:
27- # abstract -
28- # getting_started1 -
29- # getting_started2 -
30- # simple_vector -
31- # do_it_yourself_convts -
32- # pickle1 -
33- # pickle2 -
34- # pickle3 -
35- #
36- # dvect1 -
37- # dvect2 -
38- # ivect1 -
39- # ivect2 -
40- # noncopyable -
41- #
42- # subproject-specific environment/command-line variables:
43- #
44- # PYTHON - How to invoke the Python interpreter. Defaults to "python"
45- #
46- # PYTHON_ROOT - Windows only: where Python is installed. Defaults to "c:/tools/python"
47- #
48- # PYTHON_VERSION - Version of Python. Defaults to "2.1" on Windows, "1.5" on Unix
49- #
50- # PYTHON_TEST_ARGS - specifies arguments to be passed to test scripts on
51- # the command line. "-v" can be useful if you want to
52- # see the output of successful tests.
53- #
54- # PYTHON_VECT_ITERATIONS - specifies the number of test iterations to use for
55- # the dvect and ivect tests above.
6+ # Boost.Python library Jamfile
7+
568
579# declare the location of this subproject relative to the root
5810subproject libs/python/build ;
@@ -64,106 +16,51 @@ include <module@>python.jam ;
6416if [ check-python-config ]
6517{
6618
67- local PYTHON_PROPERTIES = $(PYTHON_PROPERTIES) <define>BOOST_PYTHON_DYNAMIC_LIB ;
68-
69- #######################
70- rule bpl-test ( test-name : sources + )
71- {
72- boost-python-test $(test-name) : $(sources) <dll>boost_python ;
73- }
74-
75- #######################
76-
77- #
78- # Declare the boost python static link library
79- #
80-
81- # Base names of the source files for libboost_python
82- local CPP_SOURCES =
83- types classes conversions extension_class functions
84- init_function module_builder objects cross_module errors
85- ;
86-
87- lib boost_python_static : ../src/$(CPP_SOURCES).cpp
88- # requirements
89- : $(BOOST_PYTHON_INCLUDES)
90- <shared-linkable>true
91- <define>BOOST_PYTHON_STATIC_LIB=1
92- [ difference $(PYTHON_PROPERTIES) : <define>BOOST_PYTHON_DYNAMIC_LIB ]
93- : <suppress>true # don't build this unless the user asks for it by name
19+ local bpl-linkflags ;
20+
21+ if $(UNIX) && ( $(OS) = AIX )
22+ {
23+ bpl-linkflags = <linkflags>"-e initlibbpl" ;
24+ }
25+
26+ dll boost_python
27+ :
28+ ../src/numeric.cpp
29+
30+ ../src/list.cpp
31+ ../src/long.cpp
32+ ../src/dict.cpp
33+ ../src/tuple.cpp
34+ ../src/str.cpp
35+
36+ ../src/aix_init_module.cpp
37+ ../src/converter/from_python.cpp
38+ ../src/converter/registry.cpp
39+ ../src/converter/type_id.cpp
40+ ../src/object/enum.cpp
41+ ../src/object/class.cpp
42+ ../src/object/function.cpp
43+ ../src/object/inheritance.cpp
44+ ../src/object/life_support.cpp
45+ ../src/object/pickle_support.cpp
46+ ../src/errors.cpp
47+ ../src/module.cpp
48+ ../src/converter/builtin_converters.cpp
49+ ../src/converter/arg_to_python_base.cpp
50+ ../src/object/iterator.cpp
51+ ../src/object_protocol.cpp
52+ ../src/object_operators.cpp
53+ :
54+ $(BOOST_PYTHON_V2_PROPERTIES)
55+ <define>BOOST_PYTHON_SOURCE
56+ $(bpl-linkflags)
9457 ;
9558
96- dll boost_python
97- # $(SUFDLL[1])
98- : ../src/$(CPP_SOURCES).cpp
99- # requirements
100- : $(BOOST_PYTHON_INCLUDES)
101- <shared-linkable>true
102- <runtime-link>dynamic
103- $(PYTHON_PROPERTIES)
104- ;
105-
106- stage bin-stage : <dll>boost_python
59+ stage bin-stage : <dll>boost_python
10760 :
10861 <tag><debug>"_debug"
10962 <tag><debug-python>"_pydebug"
11063 :
11164 debug release
11265 ;
113-
114- ############# comprehensive module and test ###########
115- bpl-test boost_python_test
116- : ../test/comprehensive.cpp ;
117-
118- boost-python-runtest comprehensive
119- : ../test/comprehensive.py <pyd>boost_python_test <dll>boost_python ;
120-
121- ############# simple tests from ../example ############
122-
123- rule boost-python-example-runtest ( name )
124- {
125- bpl-test $(name)
126- : ../example/$(name).cpp ;
127-
128- boost-python-runtest $(name)
129- : ../example/test_$(name).py <pyd>$(name) <dll>boost_python ;
130- }
131-
132-
133- boost-python-example-runtest abstract ;
134- boost-python-example-runtest getting_started1 ;
135- boost-python-example-runtest getting_started2 ;
136- boost-python-example-runtest simple_vector ;
137- boost-python-example-runtest do_it_yourself_convts ;
138- boost-python-example-runtest pickle1 ;
139- boost-python-example-runtest pickle2 ;
140- boost-python-example-runtest pickle3 ;
141-
142-
143- bpl-test ivect : ../example/ivect.cpp ;
144- bpl-test dvect : ../example/dvect.cpp ;
145- bpl-test noncopyable_export : ../example/noncopyable_export.cpp ;
146- bpl-test noncopyable_import : ../example/noncopyable_import.cpp ;
147-
148- ############## cross-module tests from ../example ##########
149-
150- # A simple rule to build a test which depends on multiple modules in the PYTHONPATH
151- rule boost-python-multi-example-runtest ( test-name : modules + )
152- {
153- boost-python-runtest $(test-name)
154- : ../example/tst_$(test-name).py <pyd>$(modules) <dll>boost_python
155- : : : $(PYTHON_VECT_ITERATIONS) ;
156- }
157-
158- PYTHON_VECT_ITERATIONS ?= 10 ;
159-
160- boost-python-multi-example-runtest dvect1 : ivect dvect ;
161- boost-python-multi-example-runtest dvect2 : ivect dvect ;
162-
163- boost-python-multi-example-runtest ivect1 : ivect dvect ;
164- boost-python-multi-example-runtest ivect2 : ivect dvect ;
165-
166- boost-python-multi-example-runtest
167- noncopyable : noncopyable_import noncopyable_export ;
168-
16966}
0 commit comments