# Makefile for e4py, a Python 2.2 extension to use the e4Graph package. # # Copyright (c) 2000-2003, JYL Software Inc. # Copyright (c) 2000-2003, Michael Krimerman. # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE, EVEN IF # JYL SOFTWARE INC. OR MICHAEL KRIMERMAN ARE MADE AWARE OF THE POSSIBILITY # OF SUCH DAMAGE. # Include the parameters determined at configure time: include ../../all/makefile.include # Which libraries to link with the libe4graph. We use the assigment # syntax (rather than +=) to make this work for HPUX and Tru64 Make # programs ALLLIBS = \ -L${PRODUCT_DIR}/libs -le4graph \ -L${METAKIT_LIB} -lmk4 \ ${LIBS} # Where to find source and include files: SRC = ./../src INCLUDE = ./../include E4GRAPHINCLUDE = ./../../main/include # Where to put object files: PRODOBJDIR = ${PRODUCT_DIR}/objects/python # Where to put libraries: PRODLIBDIR = ${PRODUCT_DIR}/libs # Where to put include files: PRODINCDIR = ${PRODUCT_DIR}/include # The source, include and object files for the t4Graph package: SOURCE = \ $(SRC)/e4py.cpp \ $(SRC)/PyErrors.cpp \ $(SRC)/PyNode.cpp \ $(SRC)/PyNodeVisitor.cpp \ $(SRC)/PyStorage.cpp \ $(SRC)/PyStorageVisitor.cpp \ $(SRC)/PyVertex.cpp \ $(SRC)/PyVertexVisitor.cpp OBJECTS = \ ${PRODOBJDIR}/e4py.o \ ${PRODOBJDIR}/PyErrors.o \ ${PRODOBJDIR}/PyNode.o \ ${PRODOBJDIR}/PyNodeVisitor.o \ ${PRODOBJDIR}/PyStorage.o \ ${PRODOBJDIR}/PyStorageVisitor.o \ ${PRODOBJDIR}/PyVertex.o \ ${PRODOBJDIR}/PyVertexVisitor.o INCLUDES = \ -I${INCLUDE} \ -I${E4GRAPHINCLUDE} \ -I${PYTHON_INC} # Compile flags. Collect all the flags specified in the makefile.include # and by users on the command line, e.g. 'make CPPFLAGS=...'. ALLCPPFLAGS = \ $(CPPFLAGS) ${INCLUDES} # Main target: all: ${PRODLIBDIR}/libe4py${SHLIB_SUFFIX} includes # Install the package. install: all -mkdir -p $(includedir) cp -p ../include/e4py.h $(includedir)/e4py.h -mkdir -p $(libdir) cp -p ${PRODLIBDIR}/libe4py$(SHLIB_SUFFIX) \ $(libdir)/libe4py$(SHLIB_SUFFIX).0.0.0 -/bin/rm -f $(libdir)/libe4py$(SHLIB_SUFFIX) \ $(libdir)/libe4py$(SHLIB_SUFFIX).0 -ln -s libe4py$(SHLIB_SUFFIX).0.0.0 \ $(libdir)/libe4py$(SHLIB_SUFFIX) -ln -s libe4py$(SHLIB_SUFFIX).0.0.0 \ $(libdir)/libe4py$(SHLIB_SUFFIX).0 # Uninstall the package: uninstall: /bin/rm -f $(includedir)/e4py.h /bin/rm -f $(libdir)/libe4py$(SHLIB_SUFFIX).0.0.0 /bin/rm -f $(libdir)/libe4py$(SHLIB_SUFFIX) /bin/rm -f $(libdir)/libe4py$(SHLIB_SUFFIX).0 # Release engineering: release: all mkdir -p $(release_tmp_dir)/include cp -p ../include/e4py.h $(release_tmp_dir)/include/e4py.h mkdir -p $(release_tmp_dir)/lib cp -p ${PRODLIBDIR}/libe4py$(SHLIB_SUFFIX) \ $(release_tmp_dir)/lib/libe4py$(SHLIB_SUFFIX).0.0.0 cp -p ${PRODLIBDIR}/libe4py$(SHLIB_SUFFIX) \ $(release_tmp_dir)/lib/libe4py$(SHLIB_SUFFIX) cp -p ${PRODLIBDIR}/libe4py$(SHLIB_SUFFIX) \ $(release_tmp_dir)/lib/libe4py$(SHLIB_SUFFIX).0 # Build the library: ${PRODLIBDIR}/libe4py$(SHLIB_SUFFIX): ${OBJECTS} -@mkdir -p ${PRODLIBDIR} ${SHLIB_LD} -o ${PRODLIBDIR}/libe4py$(SHLIB_SUFFIX) \ ${OBJECTS} ${ALLLIBS} # Produce the include files: includes: -@mkdir -p ${PRODINCDIR} -@cp ${INCLUDE}/*.h ${PRODINCDIR} # Individual file targets: ${PRODOBJDIR}/e4py.o: ${SRC}/e4py.cpp -@mkdir -p ${PRODOBJDIR} ${CXX} -c ${CXXFLAGS} ${ALLCPPFLAGS} ${SRC}/e4py.cpp -o $@ ${PRODOBJDIR}/PyErrors.o: ${SRC}/PyErrors.cpp -@mkdir -p ${PRODOBJDIR} ${CXX} -c ${CXXFLAGS} ${ALLCPPFLAGS} ${SRC}/PyErrors.cpp -o $@ ${PRODOBJDIR}/PyNode.o: ${SRC}/PyNode.cpp -@mkdir -p ${PRODOBJDIR} ${CXX} -c ${CXXFLAGS} ${ALLCPPFLAGS} ${SRC}/PyNode.cpp -o $@ ${PRODOBJDIR}/PyNodeVisitor.o: ${SRC}/PyNodeVisitor.cpp -@mkdir -p ${PRODOBJDIR} ${CXX} -c ${CXXFLAGS} ${ALLCPPFLAGS} ${SRC}/PyNodeVisitor.cpp -o $@ ${PRODOBJDIR}/PyStorage.o: ${SRC}/PyStorage.cpp -@mkdir -p ${PRODOBJDIR} ${CXX} -c ${CXXFLAGS} ${ALLCPPFLAGS} ${SRC}/PyStorage.cpp -o $@ ${PRODOBJDIR}/PyStorageVisitor.o: ${SRC}/PyStorageVisitor.cpp -@mkdir -p ${PRODOBJDIR} ${CXX} -c ${CXXFLAGS} ${ALLCPPFLAGS} ${SRC}/PyStorageVisitor.cpp -o $@ ${PRODOBJDIR}/PyVertex.o: ${SRC}/PyVertex.cpp -@mkdir -p ${PRODOBJDIR} ${CXX} -c ${CXXFLAGS} ${ALLCPPFLAGS} ${SRC}/PyVertex.cpp -o $@ ${PRODOBJDIR}/PyVertexVisitor.o: ${SRC}/PyVertexVisitor.cpp -@mkdir -p ${PRODOBJDIR} ${CXX} -c ${CXXFLAGS} ${ALLCPPFLAGS} ${SRC}/PyVertexVisitor.cpp -o $@ # Clean: clean: -/bin/rm -f ${PRODLIBDIR}/libe4py$(SHLIB_SUFFIX) -/bin/rm -f ${OBJECTS} -/bin/rm -f *~ #*