# @configure_input@
#
# ${R_HOME}/etc/Makeconf
#
# R was configured using the following call
# (not including env. vars and site configuration)
# configure @R_CONFIG_ARGS@

## This fails if it contains spaces, or if it is quoted
include $(R_SHARE_DIR)/make/vars.mk

AR = @AR@
BLAS_LIBS = @BLAS_LIBS@
C_VISIBILITY = @C_VISIBILITY@
CC = @CC@
CFLAGS = @CFLAGS@ $(LTO)
CPICFLAGS = @CPICFLAGS@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@ @CXXSTD@
## Not used by anything in R, in particular not for the .cc.d rule
CXXCPP = @CXXCPP0@
CXXFLAGS = @CXXFLAGS@ $(LTO)
CXXPICFLAGS = @CXXPICFLAGS@
CXX98 = @CXX98@
CXX98FLAGS = @CXX98FLAGS@ $(LTO)
CXX98PICFLAGS = @CXX98PICFLAGS@
CXX98STD = @CXX98STD@
CXX11 = @CXX11@
CXX11FLAGS = @CXX11FLAGS@ $(LTO)
CXX11PICFLAGS = @CXX11PICFLAGS@
CXX11STD = @CXX11STD@
CXX14 = @CXX14@
CXX14FLAGS = @CXX14FLAGS@ $(LTO)
CXX14PICFLAGS = @CXX14PICFLAGS@
CXX14STD = @CXX14STD@
CXX17 = @CXX17@
CXX17FLAGS = @CXX17FLAGS@ $(LTO)
CXX17PICFLAGS = @CXX17PICFLAGS@
CXX17STD = @CXX17STD@
CXX_VISIBILITY = @CXX_VISIBILITY@
DYLIB_EXT = @DYLIB_EXT@
DYLIB_LD = @DYLIB_LD@
DYLIB_LDFLAGS = @DYLIB_LDFLAGS@@BUILD_LTO_TRUE@ $(CFLAGS) $(CPICFLAGS)
DYLIB_LINK = $(DYLIB_LD) $(DYLIB_LDFLAGS) $(LDFLAGS)
ECHO = echo
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
F_VISIBILITY = @F_VISIBILITY@
## FC is the compiler used for all Fortran as from R 3.6.0
FC = @FC@
FCFLAGS = @FCFLAGS@ $(LTO)
## additional libs needed when linking with $(FC), e.g. on some Oracle compilers
FCLIBS_XTRA = @FCLIBS_XTRA@
FFLAGS = @FFLAGS@ $(LTO)
FLIBS = @FLIBS_IN_SO@
FPICFLAGS = @FPICFLAGS@
FOUNDATION_CPPFLAGS = @FOUNDATION_CPPFLAGS@
FOUNDATION_LIBS = @FOUNDATION_LIBS@
JAR = @JAR@
JAVA = @JAVA@
JAVAC = @JAVAC@
JAVAH = @JAVAH@
## JAVA_HOME might be used in the next three.  
## They are for packages 'JavaGD' and 'rJava'
JAVA_HOME = @JAVA_HOME@
JAVA_CPPFLAGS = @JAVA_CPPFLAGS0@
JAVA_LIBS = @JAVA_LIBS0@
JAVA_LD_LIBRARY_PATH = @JAVA_LD_LIBRARY_PATH@
LAPACK_LIBS = @LAPACK_LIBS@
LDFLAGS = @LDFLAGS@
## we only need this is if it is external, as otherwise link to R
LIBINTL= @LIBINTL@
LIBM = @LIBM@
LIBR0 = @LIBR0@
LIBR1 = @LIBR1@
LIBR = @LIBR0@ @LIBR1@
LIBS = @LIBS@
## needed by R CMD config
LIBnn = @LIBnn@
LIBTOOL = $(SHELL) "$(R_HOME)/bin/libtool"
LTO = @LTOALL@
## needed to build applications linking to static libR
MAIN_LD = @MAIN_LD@
MAIN_LDFLAGS = @MAIN_LDFLAGS@
MAIN_LINK = $(MAIN_LD) $(MAIN_LDFLAGS) $(LDFLAGS)
MKINSTALLDIRS = "$(R_HOME)/bin/mkinstalldirs"
OBJC = @OBJC@
OBJCFLAGS = @OBJCFLAGS@ $(LTO)
OBJC_LIBS = @OBJC_LIBS@
OBJCXX = @OBJCXX@
R_ARCH = @R_ARCH@
RANLIB = @RANLIB@
SAFE_FFLAGS = @SAFE_FFLAGS@
SED = @SED@
SHELL = @R_SHELL@
SHLIB_CFLAGS = @SHLIB_CFLAGS@
SHLIB_CXXFLAGS = @SHLIB_CXXFLAGS@
SHLIB_CXXLD = @SHLIB_CXXLD@
SHLIB_CXXLDFLAGS = @SHLIB_CXXLDFLAGS@
SHLIB_CXX98LD = @SHLIB_CXX98LD@
SHLIB_CXX98LDFLAGS = @SHLIB_CXX98LDFLAGS@
SHLIB_CXX11LD = @SHLIB_CXX11LD@
SHLIB_CXX11LDFLAGS = @SHLIB_CXX11LDFLAGS@
SHLIB_CXX14LD = @SHLIB_CXX14LD@
SHLIB_CXX14LDFLAGS = @SHLIB_CXX14LDFLAGS@
SHLIB_CXX17LD = @SHLIB_CXX17LD@
SHLIB_CXX17LDFLAGS = @SHLIB_CXX17LDFLAGS@
SHLIB_EXT = @SHLIB_EXT@
SHLIB_FFLAGS = @SHLIB_FFLAGS@
SHLIB_LD = @SHLIB_LD@
SHLIB_LDFLAGS = @SHLIB_LDFLAGS@@BUILD_LTO_TRUE@ $(CFLAGS) $(CPICFLAGS)
SHLIB_LIBADD = @SHLIB_LIBADD@
## We want to ensure libR is picked up from $(R_HOME)/lib
## before e.g. /usr/local/lib if a version is already installed.
SHLIB_LINK = $(SHLIB_LD) $(SHLIB_LDFLAGS) $(LIBR0) $(LDFLAGS)
SHLIB_OPENMP_CFLAGS = @SHLIB_OPENMP_CFLAGS@
SHLIB_OPENMP_CXXFLAGS = @SHLIB_OPENMP_CXXFLAGS@
SHLIB_OPENMP_FFLAGS = @SHLIB_OPENMP_FFLAGS@
STRIP_STATIC_LIB = @STRIP_STATIC_LIB@
STRIP_SHARED_LIB = @STRIP_SHARED_LIB@
TCLTK_CPPFLAGS = @TCLTK_CPPFLAGS@
TCLTK_LIBS = @TCLTK_LIBS@
YACC = @YACC@

## Legacy settings:  no longer used by R as of 3.6.0
## Setting FC often sets F77 (on Solaris make even if set)
## so must follow FC in this file.
F77 = @FC@
FCPICFLAGS = @FPICFLAGS@
F77_VISIBILITY = @F_VISIBILITY@
SHLIB_FCLD = @SHLIB_FCLD@
SHLIB_FCLDFLAGS = @SHLIB_FCLDFLAGS@
SHLIB_OPENMP_FCFLAGS = @SHLIB_OPENMP_FFLAGS@


## for linking to libR.a
STATIC_LIBR = @WANT_R_STATIC_TRUE@ @STATICR1@ "$(R_HOME)/lib$(R_ARCH)/libR.a" @STATICR2@ $(BLAS_LIBS) $(FLIBS) @R_XTRA_LIBS@ $(LIBINTL) @READLINE_LIBS@ $(LIBS)

## These are recorded as macros for legacy use in packages
## set on AIX, formerly for old glibc (-D__NO_MATH_INLINES)
R_XTRA_CFLAGS = @R_XTRA_CFLAGS@
## @R_XTRA_CPPFLAGS@ was formerly set on HP-UX
R_XTRA_CPPFLAGS = @R_XTRA_CPPFLAGS@ @R_INCLUDES@ -DNDEBUG
## currently unset
R_XTRA_CXXFLAGS = @R_XTRA_CXXFLAGS@
## used for gfortran in R > 3.6.0
R_XTRA_FFLAGS = @R_XTRA_FFLAGS@

## SHLIB_CFLAGS SHLIB_CXXFLAGS SHLIB_FFLAGS are apparently currently unused
## SHLIB_CXXFLAGS is undocumented, there is no SHLIB_FCFLAGS
ALL_CFLAGS = @R_XTRA_CFLAGS@ $(PKG_CFLAGS) $(CPICFLAGS) $(SHLIB_CFLAGS) $(CFLAGS)
ALL_CPPFLAGS = @R_XTRA_CPPFLAGS@ @R_INCLUDES@ -DNDEBUG $(PKG_CPPFLAGS) $(CLINK_CPPFLAGS) $(CPPFLAGS)
ALL_CXXFLAGS = @R_XTRA_CXXFLAGS@ $(PKG_CXXFLAGS) $(CXXPICFLAGS) $(SHLIB_CXXFLAGS) $(CXXFLAGS)
ALL_OBJCFLAGS = $(PKG_OBJCFLAGS) $(CPICFLAGS) $(SHLIB_CFLAGS) $(OBJCFLAGS)
ALL_OBJCXXFLAGS = $(PKG_OBJCXXFLAGS) $(CXXPICFLAGS) $(SHLIB_CXXFLAGS) $(OBJCXXFLAGS)
ALL_FFLAGS = @R_XTRA_FFLAGS@ $(PKG_FFLAGS) $(FPICFLAGS) $(SHLIB_FFLAGS) $(FFLAGS)
## can be overridden by R CMD SHLIB
P_FCFLAGS = $(PKG_FFLAGS)
ALL_FCFLAGS = @R_XTRA_FFLAGS@ $(P_FCFLAGS) $(FPICFLAGS) $(SHLIB_FFLAGS) $(FCFLAGS)
## LIBR here as a couple of packages use this without SHLIB_LINK
ALL_LIBS = $(PKG_LIBS) $(SHLIB_LIBADD) $(LIBR)@DYLIB_UNDEFINED_ALLOWED_FALSE@ $(LIBINTL)

.SUFFIXES:
.SUFFIXES: .c .cc .cpp .d .f .f90 .f95 .m .mm .M .o

@r_cc_rules_frag@
@r_cxx_rules_frag@
@r_objc_rules_frag@
.mm.o:
	$(OBJCXX) $(ALL_CPPFLAGS) $(ALL_OBJCXXFLAGS) -c $< -o $@
.M.o:
	$(OBJCXX) $(ALL_CPPFLAGS) $(ALL_OBJCXXFLAGS) -c $< -o $@
.f.o:
	$(FC) $(ALL_FFLAGS) -c $< -o $@
## @FCFLAGS_f9x@ are flags needed to recognise the extensions
.f95.o:
	$(FC) $(ALL_FCFLAGS) -c @FCFLAGS_f95@ $< -o $@
.f90.o:
	$(FC) $(ALL_FCFLAGS) -c @FCFLAGS_f90@ $< -o $@
