diff --git a/build/.cvsignore b/build/.cvsignore new file mode 100644 index 00000000..3df2d179 --- /dev/null +++ b/build/.cvsignore @@ -0,0 +1,2 @@ +Makefile +patch_tru64_to_gcc diff --git a/build/Makefile.gcc b/build/Makefile.gcc new file mode 100644 index 00000000..36412e3e --- /dev/null +++ b/build/Makefile.gcc @@ -0,0 +1,188 @@ +# Usage: +# +# Create a new empty directory anywhere (preferably not in the boost tree). +# Copy this Makefile to that new directory and rename it to "Makefile" +# Set the MYBOOST pathname below. +# +# make softlinks Create softlinks to source code and tests +# make Compile all sources +# make test Run doctest tests +# make clean Remove all object files +# make unlink Remove softlinks + +MYBOOST= /net/cci/rwgk/myboost + +PYEXE= /usr/local/Python-1.5.2/bin/python +PYINC= -I/usr/local/Python-1.5.2/include/python1.5 +#PYEXE= /usr/local/Python-2.0/bin/python +#PYINC= -I/usr/local/Python-2.0/include/python2.0 +#STLPORTINC= -I/usr/local/STLport-4.1b3/stlport +#STLPORTOPTS= \ +# -D__USE_STD_IOSTREAM \ +# -D__STL_NO_SGI_IOSTREAMS \ +# -D__STL_USE_NATIVE_STRING \ +# -D__STL_NO_NEW_C_HEADERS \ +# -D_RWSTD_COMPILE_INSTANTIATE=1 +#STLPORTINC= -I/usr/local/STLport-4.1b4/stlport +#STLPORTOPTS= -D__NO_USE_STD_IOSTREAM -D__STL_NO_SGI_IOSTREAMS +#STLPORTINC= -I/net/cci/xp/C++_C_headers + +STDOPTS= -ftemplate-depth-21 +WARNOPTS= + +CPP= g++ +CPPOPTS= $(STLPORTINC) $(STLPORTOPTS) -I$(MYBOOST) $(PYINC) \ + $(STDOPTS) $(WARNOPTS) -g + +LD= g++ +LDOPTS= -shared + +BPL_SRC = $(MYBOOST)/libs/python/src +BPL_TST = $(MYBOOST)/libs/python/test +BPL_EXA = $(MYBOOST)/libs/python/example +SOFTLINKS = \ +$(BPL_SRC)/classes.cpp \ +$(BPL_SRC)/conversions.cpp \ +$(BPL_SRC)/extension_class.cpp \ +$(BPL_SRC)/functions.cpp \ +$(BPL_SRC)/import_extension_class.cpp \ +$(BPL_SRC)/init_function.cpp \ +$(BPL_SRC)/module_builder.cpp \ +$(BPL_SRC)/objects.cpp \ +$(BPL_SRC)/types.cpp \ +$(BPL_TST)/comprehensive.cpp \ +$(BPL_TST)/comprehensive.hpp \ +$(BPL_TST)/comprehensive.py \ +$(BPL_TST)/doctest.py \ +$(BPL_EXA)/abstract.cpp \ +$(BPL_EXA)/dvect.cpp \ +$(BPL_EXA)/dvect.h \ +$(BPL_EXA)/getting_started1.cpp \ +$(BPL_EXA)/getting_started2.cpp \ +$(BPL_EXA)/getting_started3.cpp \ +$(BPL_EXA)/getting_started4.cpp \ +$(BPL_EXA)/getting_started5.cpp \ +$(BPL_EXA)/passing_char.cpp \ +$(BPL_EXA)/ivect.cpp \ +$(BPL_EXA)/ivect.h \ +$(BPL_EXA)/noncopyable_export.cpp \ +$(BPL_EXA)/noncopyable_import.cpp \ +$(BPL_EXA)/store.h \ +$(BPL_EXA)/test_abstract.py \ +$(BPL_EXA)/test_getting_started1.py \ +$(BPL_EXA)/test_getting_started2.py \ +$(BPL_EXA)/test_getting_started3.py \ +$(BPL_EXA)/test_getting_started4.py \ +$(BPL_EXA)/test_getting_started5.py \ +$(BPL_EXA)/tst_passing_char.py \ +$(BPL_EXA)/tst_dvect.py \ +$(BPL_EXA)/tst_ivect.py \ +$(BPL_EXA)/tst_noncopyable.py + +OBJ = classes.o conversions.o extension_class.o functions.o \ + import_extension_class.o init_function.o module_builder.o \ + objects.o types.o + +.SUFFIXES: .o .cpp + +all: libbpl.a test.so abstract.so \ + getting_started1.so getting_started2.so getting_started3.so \ + getting_started4.so getting_started5.so \ + passing_char.so \ + noncopyable_export.so noncopyable_import.so \ + ivect.so dvect.so + +softlinks: + @ for pn in $(SOFTLINKS); \ + do \ + bn=`basename "$$pn"`; \ + if [ ! -e "$$bn" ]; then \ + echo "ln -s $$pn ."; \ + ln -s "$$pn" .; \ + else \ + echo "info: no softlink created (file exists): $$bn"; \ + fi; \ + done + +unlink: + @ for pn in $(SOFTLINKS); \ + do \ + bn=`basename "$$pn"`; \ + if [ -L "$$bn" ]; then \ + echo "rm $$bn"; \ + rm "$$bn"; \ + elif [ -e "$$bn" ]; then \ + echo "info: not a softlink: $$bn"; \ + fi; \ + done + +libbpl.a: $(OBJ) + rm -f libbpl.a + ar r libbpl.a $(OBJ) + +test.so: $(OBJ) comprehensive.o + $(LD) $(LDOPTS) $(OBJ) comprehensive.o -o test.so + +abstract.so: $(OBJ) abstract.o + $(LD) $(LDOPTS) $(OBJ) abstract.o -o abstract.so + +getting_started1.so: $(OBJ) getting_started1.o + $(LD) $(LDOPTS) $(OBJ) getting_started1.o -o getting_started1.so + +getting_started2.so: $(OBJ) getting_started2.o + $(LD) $(LDOPTS) $(OBJ) getting_started2.o -o getting_started2.so + +getting_started3.so: $(OBJ) getting_started3.o + $(LD) $(LDOPTS) $(OBJ) getting_started3.o -o getting_started3.so + +getting_started4.so: $(OBJ) getting_started4.o + $(LD) $(LDOPTS) $(OBJ) getting_started4.o -o getting_started4.so + +getting_started5.so: $(OBJ) getting_started5.o + $(LD) $(LDOPTS) $(OBJ) getting_started5.o -o getting_started5.so + +passing_char.so: $(OBJ) passing_char.o + $(LD) $(LDOPTS) $(OBJ) passing_char.o -o passing_char.so + +noncopyable_export.so: $(OBJ) noncopyable_export.o + $(LD) $(LDOPTS) $(OBJ) $(HIDDEN) noncopyable_export.o -o noncopyable_export.so + +noncopyable_import.so: $(OBJ) noncopyable_import.o + $(LD) $(LDOPTS) $(OBJ) $(HIDDEN) noncopyable_import.o -o noncopyable_import.so + +ivect.cpp: ivect.h dvect.h +ivect.so: $(OBJ) ivect.o + $(LD) $(LDOPTS) $(OBJ) $(HIDDEN) ivect.o -o ivect.so + +dvect.cpp: ivect.h dvect.h +dvect.so: $(OBJ) dvect.o + $(LD) $(LDOPTS) $(OBJ) $(HIDDEN) dvect.o -o dvect.so + +.cpp.o: + $(CPP) $(CPPOPTS) -c $*.cpp + +test: + $(PYEXE) comprehensive.py + $(PYEXE) test_abstract.py + $(PYEXE) test_getting_started1.py + $(PYEXE) test_getting_started2.py + $(PYEXE) test_getting_started3.py + $(PYEXE) test_getting_started4.py + $(PYEXE) test_getting_started5.py + +clean: + rm -f $(OBJ) libbpl.a libbpl.a.input + rm -f comprehensive.o test.so + rm -f abstract.o abstract.so + rm -f getting_started1.o getting_started1.so + rm -f getting_started2.o getting_started2.so + rm -f getting_started3.o getting_started3.so + rm -f getting_started4.o getting_started4.so + rm -f getting_started5.o getting_started5.so + rm -f passing_char.o passing_char.so + rm -f noncopyable_export.o noncopyable_export.so + rm -f noncopyable_import.o noncopyable_import.so + rm -f ivect.o ivect.so + rm -f dvect.o dvect.so + rm -f so_locations *.pyc + rm -rf cxx_repository diff --git a/build/Makefile.tru64 b/build/Makefile.tru64 new file mode 100644 index 00000000..1791c528 --- /dev/null +++ b/build/Makefile.tru64 @@ -0,0 +1,193 @@ +# Usage: +# +# Create a new empty directory anywhere (preferably not in the boost tree). +# Copy this Makefile to that new directory and rename it to "Makefile" +# Set the MYBOOST pathname below. +# +# make softlinks Create softlinks to source code and tests +# make Compile all sources +# make test Run doctest tests +# make clean Remove all object files +# make unlink Remove softlinks + +MYBOOST= /net/cci/rwgk/myboost + +PYEXE= /usr/local/Python-1.5.2/bin/python +PYINC= -I/usr/local/Python-1.5.2/include/python1.5 +#PYEXE= /usr/local/Python-2.0/bin/python +#PYINC= -I/usr/local/Python-2.0/include/python2.0 +#STLPORTINC= -I/usr/local/STLport-4.1b3/stlport +#STLPORTOPTS= \ +# -D__USE_STD_IOSTREAM \ +# -D__STL_NO_SGI_IOSTREAMS \ +# -D__STL_USE_NATIVE_STRING \ +# -D__STL_NO_NEW_C_HEADERS \ +# -D_RWSTD_COMPILE_INSTANTIATE=1 +#STLPORTINC= -I/usr/local/STLport-4.1b4/stlport +#STLPORTOPTS= -D__NO_USE_STD_IOSTREAM -D__STL_NO_SGI_IOSTREAMS +STLPORTINC= -I/net/cci/xp/C++_C_headers + +STDOPTS= -std strict_ansi +WARNOPTS= -msg_disable 186,450,1115 +# use -msg_display_number to obtain integer tags for -msg_disable + +CPP= cxx +CPPOPTS= $(STLPORTINC) $(STLPORTOPTS) -I$(MYBOOST) $(PYINC) \ + $(STDOPTS) $(WARNOPTS) -g + +LD= cxx +LDOPTS= -shared -expect_unresolved 'Py*' -expect_unresolved '_Py*' + +#HIDDEN= -hidden + +BPL_SRC = $(MYBOOST)/libs/python/src +BPL_TST = $(MYBOOST)/libs/python/test +BPL_EXA = $(MYBOOST)/libs/python/example +SOFTLINKS = \ +$(BPL_SRC)/classes.cpp \ +$(BPL_SRC)/conversions.cpp \ +$(BPL_SRC)/extension_class.cpp \ +$(BPL_SRC)/functions.cpp \ +$(BPL_SRC)/import_extension_class.cpp \ +$(BPL_SRC)/init_function.cpp \ +$(BPL_SRC)/module_builder.cpp \ +$(BPL_SRC)/objects.cpp \ +$(BPL_SRC)/types.cpp \ +$(BPL_TST)/comprehensive.cpp \ +$(BPL_TST)/comprehensive.hpp \ +$(BPL_TST)/comprehensive.py \ +$(BPL_TST)/doctest.py \ +$(BPL_EXA)/abstract.cpp \ +$(BPL_EXA)/dvect.cpp \ +$(BPL_EXA)/dvect.h \ +$(BPL_EXA)/getting_started1.cpp \ +$(BPL_EXA)/getting_started2.cpp \ +$(BPL_EXA)/getting_started3.cpp \ +$(BPL_EXA)/getting_started4.cpp \ +$(BPL_EXA)/getting_started5.cpp \ +$(BPL_EXA)/passing_char.cpp \ +$(BPL_EXA)/ivect.cpp \ +$(BPL_EXA)/ivect.h \ +$(BPL_EXA)/noncopyable_export.cpp \ +$(BPL_EXA)/noncopyable_import.cpp \ +$(BPL_EXA)/store.h \ +$(BPL_EXA)/test_abstract.py \ +$(BPL_EXA)/test_getting_started1.py \ +$(BPL_EXA)/test_getting_started2.py \ +$(BPL_EXA)/test_getting_started3.py \ +$(BPL_EXA)/test_getting_started4.py \ +$(BPL_EXA)/test_getting_started5.py \ +$(BPL_EXA)/tst_passing_char.py \ +$(BPL_EXA)/tst_dvect.py \ +$(BPL_EXA)/tst_ivect.py \ +$(BPL_EXA)/tst_noncopyable.py + +OBJ = classes.o conversions.o extension_class.o functions.o \ + import_extension_class.o init_function.o module_builder.o \ + objects.o types.o + +.SUFFIXES: .o .cpp + +all: libbpl.a test.so abstract.so \ + getting_started1.so getting_started2.so getting_started3.so \ + getting_started4.so getting_started5.so \ + passing_char.so \ + noncopyable_export.so noncopyable_import.so \ + ivect.so dvect.so + +softlinks: + @ for pn in $(SOFTLINKS); \ + do \ + bn=`basename "$$pn"`; \ + if [ ! -e "$$bn" ]; then \ + echo "ln -s $$pn ."; \ + ln -s "$$pn" .; \ + else \ + echo "info: no softlink created (file exists): $$bn"; \ + fi; \ + done + +unlink: + @ for pn in $(SOFTLINKS); \ + do \ + bn=`basename "$$pn"`; \ + if [ -L "$$bn" ]; then \ + echo "rm $$bn"; \ + rm "$$bn"; \ + elif [ -e "$$bn" ]; then \ + echo "info: not a softlink: $$bn"; \ + fi; \ + done + +libbpl.a: $(OBJ) + rm -f libbpl.a + ls -1 ./cxx_repository/*.o > libbpl.a.input + ar r libbpl.a $(OBJ) -input libbpl.a.input + rm -f libbpl.a.input + +test.so: $(OBJ) comprehensive.o + $(LD) $(LDOPTS) $(OBJ) comprehensive.o -o test.so -lm + +abstract.so: $(OBJ) abstract.o + $(LD) $(LDOPTS) $(OBJ) abstract.o -o abstract.so + +getting_started1.so: $(OBJ) getting_started1.o + $(LD) $(LDOPTS) $(OBJ) getting_started1.o -o getting_started1.so + +getting_started2.so: $(OBJ) getting_started2.o + $(LD) $(LDOPTS) $(OBJ) getting_started2.o -o getting_started2.so + +getting_started3.so: $(OBJ) getting_started3.o + $(LD) $(LDOPTS) $(OBJ) getting_started3.o -o getting_started3.so + +getting_started4.so: $(OBJ) getting_started4.o + $(LD) $(LDOPTS) $(OBJ) getting_started4.o -o getting_started4.so + +getting_started5.so: $(OBJ) getting_started5.o + $(LD) $(LDOPTS) $(OBJ) getting_started5.o -o getting_started5.so + +passing_char.so: $(OBJ) passing_char.o + $(LD) $(LDOPTS) $(OBJ) passing_char.o -o passing_char.so + +noncopyable_export.so: $(OBJ) noncopyable_export.o + $(LD) $(LDOPTS) $(OBJ) $(HIDDEN) noncopyable_export.o -o noncopyable_export.so + +noncopyable_import.so: $(OBJ) noncopyable_import.o + $(LD) $(LDOPTS) $(OBJ) $(HIDDEN) noncopyable_import.o -o noncopyable_import.so + +ivect.cpp: ivect.h dvect.h +ivect.so: $(OBJ) ivect.o + $(LD) $(LDOPTS) $(OBJ) $(HIDDEN) ivect.o -o ivect.so + +dvect.cpp: ivect.h dvect.h +dvect.so: $(OBJ) dvect.o + $(LD) $(LDOPTS) $(OBJ) $(HIDDEN) dvect.o -o dvect.so + +.cpp.o: + $(CPP) $(CPPOPTS) -c $*.cpp + +test: + $(PYEXE) comprehensive.py + $(PYEXE) test_abstract.py + $(PYEXE) test_getting_started1.py + $(PYEXE) test_getting_started2.py + $(PYEXE) test_getting_started3.py + $(PYEXE) test_getting_started4.py + $(PYEXE) test_getting_started5.py + +clean: + rm -f $(OBJ) libbpl.a libbpl.a.input + rm -f comprehensive.o test.so + rm -f abstract.o abstract.so + rm -f getting_started1.o getting_started1.so + rm -f getting_started2.o getting_started2.so + rm -f getting_started3.o getting_started3.so + rm -f getting_started4.o getting_started4.so + rm -f getting_started5.o getting_started5.so + rm -f passing_char.o passing_char.so + rm -f noncopyable_export.o noncopyable_export.so + rm -f noncopyable_import.o noncopyable_import.so + rm -f ivect.o ivect.so + rm -f dvect.o dvect.so + rm -f so_locations *.pyc + rm -rf cxx_repository diff --git a/build/bpl_static.dsp b/build/bpl_static.dsp index 60f56070..701dd309 100644 --- a/build/bpl_static.dsp +++ b/build/bpl_static.dsp @@ -63,8 +63,8 @@ LIB32=link.exe -lib # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W4 /WX /Gm /GR /GX /ZI /Od /I "..\..\.." /I "c:\tools\python\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FR /YX /FD /GZ /c +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W4 /WX /Gm /GR /GX /ZI /Od /I "d:\boost\type_traits" /I "..\..\.." /I "c:\progra~1\python20\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FR /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe diff --git a/build/tru64.mak b/build/tru64.mak deleted file mode 100644 index 6631615c..00000000 --- a/build/tru64.mak +++ /dev/null @@ -1,51 +0,0 @@ -# -# Tested with: -# Compaq C++ V6.2-024 for Digital UNIX V5.0 (Rev. 910) -# -# Python 1.5.2 was installed without any customizations. -# boost_all.zip vers. 1.18.1 was unpacked using unzip -aa and not modified. -# STLport-4.1b3 was unpacked using unzip -aa and not modified. -# -# Initial version 2000-10-20: Ralf W. Grosse-Kunstleve, rwgk@cci.lbl.gov -# - -PYINC= /usr/local/include/python1.5 -BOOSTINC= /usr/local/boost_1_18_1 -STLPORTINC= /usr/local/STLport-4.1b3/stlport -STLPORTOPTS= \ - -D__USE_STD_IOSTREAM \ - -D__STL_NO_SGI_IOSTREAMS \ - -D__STL_NO_NEW_C_HEADERS \ - -D_RWSTD_COMPILE_INSTANTIATE=1 - -STDOPTS= -std strict_ansi -WARNOPTS= -msg_disable 186,450,1115 -# use -msg_display_number to obtain integer tags for -msg_disable - -CPP= cxx -CPPOPTS= -I$(STLPORTINC) $(STLPORTOPTS) -I$(BOOSTINC) -I$(PYINC) \ - $(STDOPTS) $(WARNOPTS) - -LD= cxx -LDOPTS= -shared -expect_unresolved '*' - -OBJ = extclass.o functions.o init_function.o module.o newtypes.o \ - objects.o py.o subclass.o - -.SUFFIXES: .o .cpp - -all: demo.so hello.so - -demo.so: $(OBJ) extclass_demo.o - $(LD) $(LDOPTS) $(OBJ) extclass_demo.o -o demo.so - -hello.so: $(OBJ) example1.o - $(LD) $(LDOPTS) $(OBJ) example1.o -o hello.so - -.cpp.o: - -$(CPP) $(CPPOPTS) $(INC) -c $*.cpp - -clean: - rm -f $(OBJ) extclass_demo.o example1.o demo.so hello.so so_locations - rm -rf cxx_repository - rm -f *.pyc diff --git a/doc/index.html b/doc/index.html index 1167f637..9ddd65d3 100644 --- a/doc/index.html +++ b/doc/index.html @@ -12,14 +12,14 @@

Synopsis

Use the Boost Python Library to quickly and easily export a C++ library to Python such that the Python interface is + href="http://www.python.org">Python such that the Python interface is very similar to the C++ interface. It is designed to be minimally intrusive on your C++ design. In most cases, you should not have to alter your C++ classes in any way in order to use them with BPL. The system should simply ``reflect'' your C++ classes and functions into Python. The major features of BPL include support for: