PREFIX=usr
LAPACK_VERSION=3.0
LAPACK_DIR=lapack-$(LAPACK_VERSION)
CBLAS_DIR=cblas
CBLIB_DIR=cblas/lib/LINUX
VPATH=$(LAPACK_DIR):$(CBLIB_DIR)
PACKAGE=$(LAPACK_DIR)-5
DISTDIR=./dist
CYGDOCDIR=$(DISTDIR)/$(PREFIX)/share/doc/Cygwin
DOCDIR=$(DISTDIR)/$(PREFIX)/share/doc/$(LAPACK_DIR)
LIBDIR=$(DISTDIR)/$(PREFIX)/lib
BINDIR=$(LIBDIR)/lapack
PROFDIR=$(DISTDIR)/etc/profile.d
INCLUDE=$(DISTDIR)/usr/include

all:
	$(MAKE) -f Makefile lapacklib -C $(LAPACK_DIR)
	$(MAKE) -f Makefile blaslib -C $(LAPACK_DIR)
	$(MAKE) alllib -C $(CBLAS_DIR) CBDIR=${PWD}//${CBLAS_DIR}
	$(MAKE) top

top: cyglapack.dll 

cyglapack.dll: lapack_LINUX.a cygblas.dll
	cd $(LAPACK_DIR) ;\
	gcc -shared -o cyglapack.dll \
	-Wl,--enable-auto-image-base \
	-Wl,--out-implib=liblapack.dll.a \
	-Wl,--export-all-symbols \
	-Wl,--enable-auto-import \
	-Wl,--whole-archive lapack_LINUX.a \
	-Wl,--no-whole-archive -lg2c libblas.dll.a
	strip $(LAPACK_DIR)\cyglapack.dll

cygblas.dll: blas_LINUX.a cblas_LINUX.a
	cd $(LAPACK_DIR) ;\
	mkdir tmp; cp blas_LINUX.a tmp/tmp.a; cd tmp; \
	ar x ../../$(CBLIB_DIR)/cblas_LINUX.a; \
	ar r tmp.a *.o; cd ../; \
	gcc -shared -o cygblas.dll \
	-Wl,--enable-auto-image-base \
	-Wl,--out-implib=libblas.dll.a \
	-Wl,--export-all-symbols \
	-Wl,--enable-auto-import \
	-Wl,--whole-archive tmp/tmp.a \
	-Wl,--no-whole-archive -lg2c
	rm -rf $(LAPACK_DIR)/tmp
	strip $(LAPACK_DIR)\cygblas.dll

clean:
	-rm -f $(LAPACK_DIR)/SRC/*.o
	-rm -f $(LAPACK_DIR)/BLAS/SRC/*.o
	-rm -f $(LAPACK_DIR)/*.dll
	-rm -f $(LAPACK_DIR)/*.a
	-rm -f $(CBLIB_DIR)/*.a
	-rm -f $(CBLAS_DIR)/src/*.o
	-rm -rf $(DISTDIR)

dist: cyglapack.dll cygblas.dll FORCE
	rm -rf $(DISTDIR)/*
	-mkdir -p $(DOCDIR)
	-mkdir -p $(CYGDOCDIR)
	-mkdir -p $(DOCDIR)
	-mkdir -p $(BINDIR)
	-mkdir -p $(LIBDIR)
	-mkdir -p $(PROFDIR)
	-mkdir -p $(INCLUDE)
	#chmod a+rx $(CYGDOCDIR) $(DOCDIR) $(BINDIR) $(LIBDIR)
	install -m 775 $(LAPACK_DIR)/cyglapack.dll $(LAPACK_DIR)/cygblas.dll $(BINDIR)
	install -m 664 $(LAPACK_DIR)/liblapack.dll.a $(LAPACK_DIR)/libblas.dll.a $(LIBDIR)
	cd $(LIBDIR); ln -s liblapack.dll.a liblapack.a
	cd $(LIBDIR); ln -s libblas.dll.a libblas.a
	install -m 664 $(LAPACK_DIR)/README $(DOCDIR)
	install -m 664 CYGWIN-PATCHES/LICENSE $(DOCDIR)
	install -m 664 CYGWIN-PATCHES/LICENSE.atlas $(DOCDIR)
	install -m 664 CYGWIN-PATCHES/$(LAPACK_DIR).README $(CYGDOCDIR)
	install -m 775 CYGWIN-PATCHES/lapack.sh $(PROFDIR)
	install -m 775 CYGWIN-PATCHES/lapack.csh $(PROFDIR)
	install -m 664 cblas/src/cblas.h $(INCLUDE)
	install -m 664 cblas/src/cblas_f77.h $(INCLUDE)
	cd $(DISTDIR); tar -cjf ../$(PACKAGE).tar.bz2 *
	rm -rf $(DISTDIR)/*
	mv $(PACKAGE).tar.bz2 $(DISTDIR)
	cp CYGWIN-PATCHES/setup.hint $(DISTDIR) 

FORCE:
