#Adapted from the Makefile for PyLucene, by the OSAF # Makefile for building Poi4R # # Supported operating systems: Linux, Mac OS X and Windows. # See INSTALL file for requirements. # # Steps to build # 1. Edit the sections below as documented # 2. make all # 3. make install # # The install target installs the Poi4R python extension in python's # site-packages directory. On Mac OS X, it also installs the gcj runtime # libraries into $(PREFIX)/lib. # # To successfully import the Poi4R extension into Ruby, all required # libraries need to be found. If the locations you chose are non-standard, # the relevant DYLD_LIBRARY_PATH (Mac OS X), LD_LIBRARY_PATH (Linux), or # PATH (Windows) need to be set accordingly. # # # VERSION=0.1.0 POI_VER=2.0-final-20040126 RUBY_VER=1.8 POI4R:=$(shell pwd) POI=$(POI4R)/poi-$(POI_VER) #DEBUG=1 # # You need to uncomment and edit the variables below in the section # corresponding to your operating system. # # PREFIX: where programs are normally installed on your system (Unix). # PREFIX_RUBY: where your version of python is installed. # GCJ_HOME: where GCC/GCJ is installed. # Windows drive-absolute paths need to be expressed cygwin style. # # Mac OS X (Darwin) #PREFIX=/usr/local #PREFIX_RUBY=/Library/Frameworks/Ruby.framework/Versions/$(RUBY_VER) #SWIG=$(PREFIX)/bin/swig #GCJ_HOME=/usr/local/gcc-3.4.1 #DB=$(POI4R)/db-$(DB_VER) #PREFIX_DB=/usr/local/BerkeleyDB.$(DB_LIB_VER) # Linux PREFIX=/usr PREFIX_RUBY=$(PREFIX) SWIG=$(PREFIX)/bin/swig GCJ_HOME=/usr #DB=$(POI4R)/db-$(DB_VER) #PREFIX_DB=$(PREFIX)/BerkeleyDB.$(DB_LIB_VER) # Windows #PREFIX_RUBY=/cygdrive/o/Python-2.3.2 #SWIG=/cygdrive/c/utils/bin/swig.exe #GCJ_HOME=/cygdrive/o/mingw-3.1 #DB=/cygdrive/o/db-$(DB_VER) #PREFIX_DB=$(DB) # # No edits required below # OS=$(shell uname) ifeq ($(findstring CYGWIN,$(OS)),CYGWIN) OS=Cygwin endif ifeq ($(findstring WINNT,$(OS)),WINNT) OS=Cygwin endif ifeq ($(DEBUG),1) COMP_OPT=DEBUG=1 SUFFIX=d _SUFFIX=_d BINDIR=debug else COMP_OPT= SUFFIX= _SUFFIX= BINDIR=release endif SWIG_OPT=-DSWIG_COBJECT_TYPES -DPOI4R_VER="'$(VERSION)'" -DPOI_VER="'$(POI_VER)'" JCCFLAGS=--encoding=UTF-8 #JCCFLAGS=--encoding=UTF-8 -findirect-dispatch ifeq ($(OS),Darwin) RUBY_SITE=$(PREFIX_RUBY)/lib/ruby$(RUBY_VER)/site-packages RUBY_INC=$(PREFIX_RUBY)/lib/ruby$(RUBY_VER) POI4R=$(BINDIR)/poi4r.so ifeq ($(DEBUG),1) CCFLAGS=-O0 -g LDFLAGS=-g else CCFLAGS=-O2 LDFLAGS= endif else ifeq ($(OS),Linux) RUBY_SITE=$(PREFIX_RUBY)/lib/ruby/site-ruby/$(RUBY_VER)/ RUBY_INC=$(PREFIX_RUBY)/lib/ruby/$(RUBY_VER)/i686-linux POI4R_LIB=$(BINDIR)/poi4r.so ifeq ($(DEBUG),1) CCFLAGS=-O0 -g -fPIC LDFLAGS=-g else CCFLAGS=-O2 -fPIC LDFLAGS= endif else ifeq ($(OS),Cygwin) RUBY_SITE=`cygpath -aw $(PREFIX_RUBY)/Lib/site-packages` RUBY_INC=`cygpath -aw $(PREFIX_RUBY)/Include` RUBY_PC=`cygpath -aw $(PREFIX_RUBY)/PC` POI4R_LIB=$(BINDIR)/poi4r$(_SUFFIX).so ifeq ($(DEBUG),1) CCFLAGS=-O -g LDFLAGS=-g else CCFLAGS=-O2 LDFLAGS= endif else RUBY=unknown RUBY_SITE=unknown endif endif endif CLASSES=$(BINDIR)/classes JAR_CLASSES=$(CLASSES)/jar CC=$(GCJ_HOME)/bin/gcc CXX=$(GCJ_HOME)/bin/g++ JCC=$(GCJ_HOME)/bin/gcj JCCH=$(GCJ_HOME)/bin/gcjh JAR=$(GCJ_HOME)/bin/jar POI_ZIP=poi-$(POI_VER).jar POI_JAR=poi-$(POI_VER).jar POI4R_CP:=$(BINDIR)/$(POI_JAR):$(CLASSES) OBJS=$(BINDIR)/poi.o $(BINDIR)/io.java.o $(BINDIR)/io.cpp.o LIBS=$(POI4R_LIB) default: all patches: env: ifndef PREFIX_RUBY @echo Operating system is $(OS) @echo You need to edit that section of the Makefile @false else @true endif $(BINDIR): mkdir -p $(BINDIR)/classes/jar DISTRIB=Poi-$(VERSION) ifeq ($(OS),Cygwin) POI4R_CP:=`cygpath -awp $(POI4R_CP)` endif ifeq ($(OS),Cygwin) _poi=`cygpath -aw $(POI)` else _poi=$(POI) endif $(BINDIR)/$(POI_JAR): cp $(POI4R)/$(POI_JAR) $(BINDIR)/$(POI_JAR) cd $(JAR_CLASSES); $(JAR) -xf $(POI4R)/$(POI_JAR) $(BINDIR)/io.java.o: java/org/apache/poi/RubyOutputStream.java $(JCC) $(JCCFLAGS) -C -d $(CLASSES) java/org/apache/poi/RubyOutputStream.java $(JCC) $(JCCFLAGS) $(CCFLAGS) -I$(GCJ_HOME)/include -c -o $@ java/org/apache/poi/RubyOutputStream.java $(CLASSES)/org/apache/poi/RubyOutputStream.h: $(BINDIR)/io.java.o Makefile mkdir -p $(CLASSES)/org/apache/poi/hssf/usermodel $(JCCH) -d $(CLASSES) --classpath=$(JAR_CLASSES) org.apache.poi.hssf.usermodel.HSSFWorkbook $(JCCH) -d $(CLASSES) --classpath=$(JAR_CLASSES) org.apache.poi.hssf.usermodel.HSSFSheet $(JCCH) -d $(CLASSES) --classpath=$(JAR_CLASSES) org.apache.poi.hssf.usermodel.HSSFRow $(JCCH) -d $(CLASSES) --classpath=$(JAR_CLASSES) org.apache.poi.hssf.usermodel.HSSFCell $(JCCH) -d $(CLASSES) --classpath=$(JAR_CLASSES) org.apache.poi.hssf.usermodel.HSSFHeader $(JCCH) -d $(CLASSES) --classpath=$(JAR_CLASSES) org.apache.poi.hssf.usermodel.HSSFFooter $(JCCH) -d $(CLASSES) --classpath=$(JAR_CLASSES) org.apache.poi.hssf.usermodel.HSSFFont $(JCCH) -d $(CLASSES) --classpath=$(JAR_CLASSES) org.apache.poi.hssf.usermodel.HSSFDataFormat $(JCCH) -d $(CLASSES) --classpath=$(JAR_CLASSES) org.apache.poi.hssf.usermodel.HSSFCellStyle $(JCCH) -d $(CLASSES) --classpath=$(CLASSES) org.apache.poi.RubyOutputStream $(BINDIR)/io.cpp.o: $(CLASSES)/org/apache/poi/RubyOutputStream.h cpp/RubyIO.cpp $(BINDIR)/io.java.o $(JCC) -I$(RUBY_INC) -I$(GCJ_HOME)/include -I$(CLASSES) $(CCFLAGS) -c -o $@ cpp/RubyIO.cpp $(BINDIR)/poi.o: $(BINDIR)/$(POI_JAR) $(JCC) $(JCCFLAGS) $(CCFLAGS) -c -o $@ $(BINDIR)/$(POI_JAR) Poi4R_wrap.cxx: $(BINDIR)/io.cpp.o Poi4R.i ifdef SWIG $(SWIG) $(SWIG_OPT) -I$(CLASSES) -c++ -ruby Poi4R.i endif ifeq ($(OS),Darwin) $(POI4R_LIB): $(OBJS) Poi4R_wrap.cxx $(CXX) -shared -bundle -o $@ $(CCFLAGS) $(SWIG_OPT) $(DB_INC) -I$(GCJ_HOME)/include -I$(CLASSES) -I$(RUBY_INC) Poi4R_wrap.cxx $(OBJS) -L$(GCJ_HOME)/lib -lgcj -liconv -undefined suppress -flat_namespace -multiply_defined suppress else ifeq ($(OS),Linux) $(POI4R_LIB): $(OBJS) Poi4R_wrap.cxx $(CXX) -shared -o $@ $(CCFLAGS) $(SWIG_OPT) $(DB_INC) -I$(CLASSES) -I$(RUBY_INC) Poi4R_wrap.cxx $(OBJS) -lgcj else ifeq ($(OS),Cygwin) $(POI4R_LIB): $(OBJS) Poi4R_wrap.cxx $(CXX) -c $(CCFLAGS) $(PYDBG) -D_NO_OLDNAMES -D_off_t=off_t $(SWIG_OPT) $(DB_INC) -I$(CLASSES) -I$(RUBY_PC) -I$(RUBY_INC) -o $(BINDIR)/Poi4R_wrap.o Poi4R_wrap.cxx $(CXX) -shared $(LDFLAGS) -o $@ $(OBJS) `cygpath -aw $(PREFIX_RUBY)/python23$(_SUFFIX).dll` $(BINDIR)/Poi4R_wrap.o -lgcj -lwin32k -lws2_32 endif endif endif all: env $(BINDIR) $(LIBS) @echo build of $(POI4R_LIB) complete install:: all install Poi4R.rb $(RUBY_SITE) install $(POI4R_LIB) $(RUBY_SITE) ifeq ($(OS),Darwin) install:: install $(GCJ_HOME)/lib/libgcj.5.dylib $(PREFIX)/lib install $(GCJ_HOME)/lib/libstdc++.6.dylib $(PREFIX)/lib install $(GCJ_HOME)/lib/libgcc_s.1.0.dylib $(PREFIX)/lib else ifeq ($(OS),Linux) install:: else ifeq ($(OS),Cygwin) install:: endif endif endif clean: rm -rf $(BINDIR) Poi4R.rb* Poi4R_wrap.cxx realclean: clean rm -rf $(POI) $(STORE) $(DISTRIB) distrib:: mkdir -p $(DISTRIB)/python install Poi4R.rb $(DISTRIB)/python install $(POI4R_LIB) $(DISTRIB)/python install README $(DISTRIB) ifeq ($(OS),Darwin) distrib:: ifdef DB mkdir -p $(DISTRIB)/db install $(LIBDB_JAVA_LIB) $(DISTRIB)/db install libdb_java-$(DB_LIB_VER).la.osx $(DISTRIB)/db endif mkdir -p $(DISTRIB)/gcj install $(GCJ_HOME)/lib/libgcj.5.dylib $(DISTRIB)/gcj install $(GCJ_HOME)/lib/libstdc++.6.dylib $(DISTRIB)/gcj install $(GCJ_HOME)/lib/libgcc_s.1.0.dylib $(DISTRIB)/gcj else ifeq ($(OS),Linux) distrib:: ifdef DB mkdir -p $(DISTRIB)/db install $(LIBDB_JAVA_LIB) $(DISTRIB)/db endif mkdir -p $(DISTRIB)/gcj install $(GCJ_HOME)/lib/libgcj.so.5 $(DISTRIB)/gcj install $(GCJ_HOME)/lib/libstdc++.so.6 $(DISTRIB)/gcj install $(GCJ_HOME)/lib/libgcc_s.so.1 $(DISTRIB)/gcj else ifeq ($(OS),Cygwin) distrib:: ifdef DB mkdir -p $(DISTRIB)/db install $(LIBDB_JAVA_LIB) $(DISTRIB)/db endif endif endif endif