# 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)/cmplx.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_cmplx.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 cmplx.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 -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 cmplx.so: $(OBJ) cmplx.o $(LD) $(LDOPTS) $(OBJ) cmplx.o -o cmplx.so -lm 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 cmplx.o cmplx.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