Index: tabix/Makefile =================================================================== --- tabix.orig/Makefile 2012-12-21 16:59:37.846017464 -0800 +++ tabix/Makefile 2012-12-21 16:59:57.586016768 -0800 @@ -1,47 +1,47 @@ -CC= gcc -CFLAGS= -g -Wall -O2 -fPIC #-m64 #-arch ppc +CC= gcc +CFLAGS= -g -Wall -O2 DFLAGS= -D_FILE_OFFSET_BITS=64 -D_USE_KNETFILE -DBGZF_CACHE -LOBJS= bgzf.o kstring.o knetfile.o index.o bedidx.o -AOBJS= main.o +LOBJS= bgzf.lo kstring.lo knetfile.lo index.lo bedidx.lo +AOBJS= main.lo +BOBJS= bgzip.lo bgzf.lo PROG= tabix bgzip INCLUDES= SUBDIRS= . LIBPATH= -LIBCURSES= +LIBCURSES= +LIBNAME= libtabix.la +LIBVERSION= 1 + +# catch platform settings +UNAME := $(shell uname) +ifeq ($(UNAME), Darwin) +LIBTOOL := glibtool +else +LIBTOOL := libtool +endif +LTFLAGS= --tag=CC + +ifdef SHARED +CFLAGS+= -shared +else +CFLAGS+= -static +endif + +.SUFFIXES:.c .o .lo + +.c.lo: + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CFLAGS) $(DFLAGS) $(INCLUDES) $< + +all:$(PROG) $(LIBNAME) -.SUFFIXES:.c .o +$(LIBNAME):$(LOBJS) + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(CFLAGS) -version-info $(LIBVERSION) -rpath /usr/lib $(LOBJS) -o $@ -lc -lz -.c.o: - $(CC) -c $(CFLAGS) $(DFLAGS) $(INCLUDES) $< -o $@ +tabix:$(AOBJS) $(LIBNAME) + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(CFLAGS) -o $@ $(AOBJS) $(LIBNAME) -lm -lz -all-recur lib-recur clean-recur cleanlocal-recur install-recur: - @target=`echo $@ | sed s/-recur//`; \ - wdir=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - cd $$subdir; \ - $(MAKE) CC="$(CC)" DFLAGS="$(DFLAGS)" CFLAGS="$(CFLAGS)" \ - INCLUDES="$(INCLUDES)" LIBPATH="$(LIBPATH)" $$target || exit 1; \ - cd $$wdir; \ - done; - -all:$(PROG) - -lib:libtabix.a - -libtabix.so.1:$(LOBJS) - $(CC) -shared -Wl,-soname,libtabix.so -o $@ $(LOBJS) -lc -lz - -libtabix.1.dylib:$(LOBJS) - libtool -dynamic $(LOBJS) -o $@ -lc -lz - -libtabix.a:$(LOBJS) - $(AR) -csru $@ $(LOBJS) - -tabix:lib $(AOBJS) - $(CC) $(CFLAGS) -o $@ $(AOBJS) -L. -ltabix -lm $(LIBPATH) -lz - -bgzip:bgzip.o bgzf.o knetfile.o - $(CC) $(CFLAGS) -o $@ bgzip.o bgzf.o knetfile.o -lz +bgzip:$(BOBJS) + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(CFLAGS) -o $@ $(BOBJS) $(LIBNAME) -lz TabixReader.class:TabixReader.java javac -cp .:sam.jar TabixReader.java @@ -57,7 +57,5 @@ tabix.pdf:tabix.tex pdflatex tabix.tex -cleanlocal: - rm -fr gmon.out *.o a.out *.dSYM $(PROG) *~ *.a tabix.aux tabix.log tabix.pdf *.class libtabix.*.dylib libtabix.so* - -clean:cleanlocal-recur +clean: + $(LIBTOOL) --mode=clean rm -fr gmon.out $(LOBJS) $(AOBJS) $(BOBJS) a.out *.dSYM $(PROG) *~ tabix.aux tabix.log tabix.pdf *.class libtabix.la Index: tabix/tabix.py =================================================================== --- tabix.orig/tabix.py 2012-12-21 16:59:37.846017464 -0800 +++ tabix/tabix.py 2012-12-21 17:06:31.342002867 -0800 @@ -8,20 +8,22 @@ from ctypes.util import find_library import glob, platform -def load_shared_library(lib, _path='.', ver='*'): +def load_shared_library(lib, _path=None, ver='*'): """Search for and load the tabix library. The expectation is that the library is located in the current directory (ie. "./") """ # find from the system path path = find_library(lib) - if (path == None): # if fail, search in the custom directory + if path is None: # if fail, search in the custom directory + _path = list(_path) if _path is not None else ['.', '.libs'] s = platform.system() if (s == 'Darwin'): suf = ver+'.dylib' elif (s == 'Linux'): suf = '.so'+ver - candidates = glob.glob(_path+'/lib'+lib+suf); - if (len(candidates) == 1): path = candidates[0] - else: return None + for _p in _path: + candidates = glob.glob(_p+'/lib'+lib+suf); + if (len(candidates) > 0): path = candidates[0] + if path is None: return None cdll.LoadLibrary(path) return CDLL(path)