#
# ${R_HOME}/src/modules/lapack/Makefile

VPATH = @srcdir@
srcdir = @srcdir@
top_srcdir = @top_srcdir@

top_builddir = ../../..
subdir = src/modules/lapack
R_HOME = $(top_builddir)

include $(top_builddir)/Makeconf

SOURCES_C = Lapack.c @USE_VECLIB_G95FIX_TRUE@ vecLibg95c.c
SOURCES_F = @USE_VECLIB_G95FIX_TRUE@ vecLibg95f.f

## BUILD_LTO_CHECK_TRUE relies on using the internal LAPACK
DEPENDS = $(SOURCES_C:.c=.d)
SOURCES = $(SOURCES_C) $(SOURCES_F)
OBJECTS = $(SOURCES_C:.c=.o) $(SOURCES_F:.f=.o)
HEADERS = Lapack.h

## Sources for the -lRlapack.  On OSX this may be linked directly to
## vecLib/Accelerate, so needs the zdot* fix.
LIBSOURCES = dlamch.f dlapack.f \
  @COMPILE_FORTRAN_DOUBLE_COMPLEX_FALSE@ cmplx.f
LIBOBJECTS = $(LIBSOURCES:.f=.o) @USE_VECLIB_G95FIX_TRUE@ vecLibg95f.o vecLibg95c.o

distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
DISTFILES = \
	LICENSE README Makefile.in Makefile.win \
	Rlapackrc.rc dllversion.rc \
	$(HEADERS) Lapack.c init_win.c \
	vecLibg95c.c vecLibg95f.f \
	cmplx.f dlapack.f dlamch.f \
	dble.txt cmplx.txt

lapack_la = lapack$(SHLIB_EXT)
lapack_la_OBJECTS = $(OBJECTS)
## Formerly used for passing '+s' to SHLIB_LINK on HP-UX.
lapack_la_LDFLAGS = @LAPACK_LDFLAGS@
lapack_la_LIBADD = $(LIBR1) @DYLIB_UNDEFINED_ALLOWED_FALSE@ $(LIBINTL)

@BUILD_LTO_CHECK_FALSE@Rlapack_la = libRlapack$(R_DYLIB_EXT)
@BUILD_LTO_CHECK_TRUE@Rlapack_la = libRlapack.a
Rlapack_la_OBJECTS = $(LIBOBJECTS)
## This used to skip FLIBS, but that relied on all the functions
## needed being loaded into R.bin/libR.so, and that need not be the
## case for a static libfortran or if a package is compiled under a
## different compiler.
Rlapack_la_LIBADD =  $(FLIBS_IN_SO) @DYLIB_UNDEFINED_ALLOWED_FALSE@ $(LIBR)

ALL_CFLAGS = $(ALL_CFLAGS_LO)
ALL_FFLAGS = $(ALL_FFLAGS_LO)


all: R

Makefile: $(srcdir)/Makefile.in \
  $(top_builddir)/config.status \
  $(SOURCES)
	@cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@

Makedeps: Makefile $(DEPENDS)
	@cat $(DEPENDS) >> Makefile
	@touch $@

## treated separately: e.g. we need to force stores with 
## gcc >= 3.4.0 at least on i686
## (SHLIB_FFLAGS is apparently currently unused)
LTO = @LTO_FC@
DLAMC_FFLAGS=$(FPICFLAGS) $(SHLIB_FFLAGS) @SAFE_FFLAGS@ $(LTO_FC)
dlamch.o: dlamch.f
	$(FC) $(DLAMC_FFLAGS) -c $< -o $@

R: Makedeps
@USE_EXTERNAL_LAPACK_FALSE@	@$(MAKE) rhome="$(abs_top_builddir)" $(Rlapack_la) Rlapack_install
	@$(MAKE) $(lapack_la)

$(lapack_la): $(lapack_la_OBJECTS)
	$(SHLIB_LINK) -o $@ $(lapack_la_LDFLAGS) $(lapack_la_OBJECTS) $(lapack_la_LIBADD) @LAPACK_LIBS@ @BLAS_LIBS@ $(FLIBS_IN_SO)
## <FIXME>
## Not sure if we want to do this ...
	@$(MAKE) rhome="$(abs_top_builddir)" install
## </FIXME>

## Include BLAS here, as with (static) ATLAS that pulls all the
## BLAS routines into one place.
$(Rlapack_la): $(LIBOBJECTS)
	@BUILD_LTO_CHECK_FALSE@$(DYLIB_LINK) -o $@ $(LIBOBJECTS) @RLAPACK_LDFLAGS@ @BLAS_LIBS@ $(Rlapack_la_LIBADD)
	@BUILD_LTO_CHECK_TRUE@$(AR) -cr $@ $(LIBOBJECTS)

Rlapack_install: $(Rlapack_la) 
	@$(MKINSTALLDIRS) "$(DESTDIR)$(Rexeclibdir)"
	@$(SHELL) $(top_srcdir)/tools/copy-if-change $(Rlapack_la) \
	  "$(Rexeclibdir)/$(Rlapack_la)"

install: installdirs
	@$(SHELL) $(top_srcdir)/tools/copy-if-change $(lapack_la) "$(DESTDIR)$(Rexecmodulesdir)/$(lapack_la)"
@USE_EXTERNAL_LAPACK_FALSE@	@$(SHELL) $(top_srcdir)/tools/copy-if-change $(Rlapack_la) "$(DESTDIR)$(Rexeclibdir)/$(Rlapack_la)"
installdirs:
	@$(MKINSTALLDIRS) "$(DESTDIR)$(Rexecmodulesdir)"
install-strip-Rlapack:
	@$(SHELL) $(top_srcdir)/tools/copy-if-change $(Rlapack_la) "$(DESTDIR)$(Rexeclibdir)/$(Rlapack_la)"
	@if test -n "$(STRIP_SHARED_LIB)"; then \
	  $(STRIP_SHARED_LIB) "$(DESTDIR)$(Rexeclibdir)/$(Rlapack_la)"; \
	fi
install-strip: @USE_EXTERNAL_LAPACK_FALSE@ install-strip-Rlapack
	@$(SHELL) $(top_srcdir)/tools/copy-if-change $(lapack_la) "$(DESTDIR)$(Rexecmodulesdir)/$(lapack_la)"
	@if test -n "$(STRIP_SHARED_LIB)"; then \
	  $(STRIP_SHARED_LIB) "$(DESTDIR)$(Rexecmodulesdir)/$(lapack_la)"; \
	fi
uninstall:
	@rm -f "$(Rexecmodulesdir)/$(lapack_la)"

mostlyclean: clean
clean:
	@-rm -Rf .libs _libs
	@-rm -f Makedeps *.d *.o *.a *.lo *.la \
	  $(lapack_la) $(Rlapack_la)
distclean: clean
	@-rm -f Makefile
maintainer-clean: distclean

TAGS info dvi check:

distdir: $(DISTFILES)
	@for f in $(DISTFILES); do \
	  test -f $(distdir)/$${f} \
	    || ln $(srcdir)/$${f} $(distdir)/$${f} 2>/dev/null \
	    || cp -p $(srcdir)/$${f} $(distdir)/$${f}; \
	done

## Automagically generated dependencies:

