# @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@
CXXFLAGS = @CXXFLAGS@ $(LTO)
CXXPICFLAGS = @CXXPICFLAGS@
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@
CXX20 = @CXX20@
CXX20FLAGS = @CXX20FLAGS@ $(LTO)
CXX20PICFLAGS = @CXX20PICFLAGS@
CXX20STD = @CXX20STD@
CXX_VISIBILITY = @CXX_VISIBILITY@
DYLIB_EXT = @DYLIB_EXT@
DYLIB_LD = @DYLIB_LD@
DYLIB_LDFLAGS = @DYLIB_LDFLAGS@@BUILD_LTO_TRUE@ $(CFLAGS) $(CPICFLAGS) @LTO_LD@
## should be used by packges for dylibs, but at the time of writing was not
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_FC)
## additional libs needed when linking with $(FC), e.g. on some Oracle compilers
FCLIBS_XTRA = @FCLIBS_XTRA@
FFLAGS = @FFLAGS@ $(LTO_FC)
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"
## set for --enable-lto, --enable-lto=check
LTO = @LTOALL@
LTO_FC = @LTOALL_FC@
LTO_LD = @LTO_LD@
## set for --enable-lto=R, used in INSTALL
LTO_OPT = @LTO@
LTO_FC_OPT = @LTO_FC@
## 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"
NM = @NM@
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@@BUILD_LTO_ALL_TRUE@ $(CXXFLAGS) $(CXXPICFLAGS) $(LTO_LD)
SHLIB_CXX11LD = @SHLIB_CXX11LD@
SHLIB_CXX11LDFLAGS = @SHLIB_CXX11LDFLAGS@@BUILD_LTO_ALL_TRUE@ $(CXX11FLAGS) $(CXX11PICFLAGS) $(LTO_LD)
SHLIB_CXX14LD = @SHLIB_CXX14LD@
SHLIB_CXX14LDFLAGS = @SHLIB_CXX14LDFLAGS@@BUILD_LTO_ALL_TRUE@ $(CXX14FLAGS) $(CXX14PICFLAGS) $(LTO_LD)
SHLIB_CXX17LD = @SHLIB_CXX17LD@
SHLIB_CXX17LDFLAGS = @SHLIB_CXX17LDFLAGS@@BUILD_LTO_ALL_TRUE@ $(CXX17FLAGS) $(CXX17PICFLAGS) $(LTO_LD)
SHLIB_CXX20LD = @SHLIB_CXX20LD@
SHLIB_CXX20LDFLAGS = @SHLIB_CXX20LDFLAGS@@BUILD_LTO_ALL_TRUE@ $(CXX20FLAGS) $(CXX20PICFLAGS) $(LTO_LD)
SHLIB_EXT = @SHLIB_EXT@
SHLIB_FCLD = @SHLIB_FCLD@
SHLIB_FCLDFLAGS = @SHLIB_FCLDFLAGS@@BUILD_LTO_ALL_TRUE@ $(FCFLAGS) $(FPICFLAGS)
SHLIB_FFLAGS = @SHLIB_FFLAGS@
SHLIB_LD = @SHLIB_LD@
## used for add-on packages linked by C
SHLIB_LDFLAGS = @SHLIB_LDFLAGS@@BUILD_LTO_ALL_TRUE@ $(CFLAGS) $(CPICFLAGS) $(LTO_LD)
## used for standard packages
SHLIB_LDFLAGS_R = @SHLIB_LDFLAGS@@BUILD_LTO_TRUE@ $(CFLAGS) $(CPICFLAGS) $(LTO_LD)
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@

## 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)
## XDEFS is a temporary measure for use by R CMD INSTALL
ALL_CPPFLAGS = @R_XTRA_CPPFLAGS@ @R_INCLUDES@ -DNDEBUG $(PKG_CPPFLAGS) $(CLINK_CPPFLAGS) $(CPPFLAGS) @R_DEFS@ $(XDEFS)
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 $@
.f95.o:
	$(FC) $(ALL_FCFLAGS) -c @FCFLAGS_f95@ $< -o $@
.f90.o:
	$(FC) $(ALL_FCFLAGS) -c @FCFLAGS_f90@ $< -o $@
