#-*- Makefile -*-
all:  libR makeMakedeps $(DLLNAME).dll

# set this in Makevars.win to supply your own resource file
RCNAME=${DLLNAME}_res
# set this (e.g. in SHLIB) to suppress adding version info to the DLL
RCOBJ=$(RCNAME).o

# Don't use SOURCES as this get passed on for libR.
CFSOURCES=$(wildcard -f *.c *.f)
CSOURCES=$(wildcard -f *.c)
CXXSOURCES=$(wildcard -f *.cc *.cpp *.C)
OBJSA=$(foreach i,$(CFSOURCES) $(CXXSOURCES),$(basename $i).o)

include $(RHOME)/src/gnuwin32/MkRules

ifneq ($(strip $(CXXSOURCES)),)
  DLL_LDMAIN=g++
endif

ifdef DEBUG
  DLLFLAGS=
  DEBUGFLAG=-g -Wall
else
  DLLFLAGS=-s
  DEBUGFLAG=-Wall
endif

CPPFLAGS=$(PKG_CPPFLAGS) -I$(RHOME)/src/include
# -include $(RHOME)/src/include/globalvar.h 
CFLAGS=$(CPPFLAGS) $(DEBUGFLAG) -O2 $(PKG_CFLAGS)
CXXFLAGS=$(CPPFLAGS) $(DEBUGFLAG) -O2 $(PKG_CXXFLAGS)
FFLAGS=-O2 $(DEBUGFLAG) $(PKG_FFLAGS)
DLLLIBS=-L$(RHOME)/src/gnuwin32 $(PKG_LIBS) $(FLIBS) -lR 
RESFLAGS=--include-dir $(RHOME)/src/include
BLAS_LIBS=-lRblas
LAPACK_LIBS=-L$(RHOME)/lib -lRlapack
# for use by Makevars.win
R_HOME=$(RHOME)

AA=$(wildcard Makefile)
ifeq ($(AA),Makefile)
 include Makefile
else
 OBJS=$(filter-out $(OBJS-NO),$(OBJSA))
endif
AA=$(wildcard Makevars.win)
ifeq ($(AA),Makevars.win)
 include Makevars.win
else
-include Makevars
endif

libR:
	@$(MAKE) -s --no-print-directory -C $(RHOME)/src/gnuwin32 libR.a
	@$(MAKE) -s --no-print-directory -C $(RHOME)/src/gnuwin32 libRblas.a

$(DLLNAME)_res.rc:
	@PERL5LIB=$(RHOME)/share/perl perl $(RHOME)/src/gnuwin32/makeDllRes.pl $(DLLNAME) > $@

$(DLLNAME)_res.o: $(DLLNAME)_res.rc $(RHOME)/src/include/Rversion.h

$(DLLNAME).a: $(OBJS)
	@$(RM) -f $@
	$(AR) cr $@ *.o
	$(RANLIB) $@

$(DLLNAME).dll : $(DLLNAME).a $(RCOBJ)

# Dependencies
CXXSOURCES1=$(wildcard -f *.cc)
CXXSOURCES2=$(wildcard -f *.cpp)
CXXSOURCES3=$(wildcard -f *.C)
DEPS=$(CSOURCES:.c=.d) $(CXXSOURCES1:.cc=.d) $(CXXSOURCES2:.cpp=.d) $(CXXSOURCES3:.C=.d)

makeMakedeps: $(DEPS)
	@$(RM) Makedeps
ifneq ($(strip $(DEPS)),)
	@cat $(DEPS) >> Makedeps
endif

-include Makedeps