#-*- Makefile -*-

## This is only used when building R itself but it does customize
## etc/*/Makeconf using LOCAL_SOFT, BINPREF[64], IMPLIB and R_ARCH

## Customize by copying to MkRules.local and uncommenting and editing 
## some of the definitions there.  
## 

## =========== configuration macros for building packages ================
# Absolute path to '/usr/local' software collection.  The versions used
# on CRAN can be found at https://www.stats.ox.ac.uk/pub/Rtools/libs.html
# It can be interrogated by 'R CMD config LOCAL_SOFT'
# Use 'make rsync-extsoft' to populate the default directory.
# LOCAL_SOFT = $(R_HOME)/extsoft

## ============== configuration macros for building R ===================

# Path of library directory containing zlib, bzlib, liblzma, pcre,
# libpng, libjpeg, libtiff.
# Use 'make rsync-extsoft' to populate the default directory.
# EXT_LIBS = $(LOCAL_SOFT)

# an alternative is to use -gstabs here, if the debugger supports only stabs.
# G_FLAG = -gdwarf-2

# Set to YES and specify the path if you want to use the ATLAS BLAS.
# USE_ATLAS = NO
# ATLAS_PATH =

# Support for the ACML and Goto BLASes has been withdrawn: see R-admin.html

# Define to use svnversion to set SVN-REVISION (slow, and requires a clean
# checkout with no modifications).
# USE_SVNVERSION = YES

# With the previously recommended gcc 4.6.3 toolchain, set this to 32 or 64
# MULTI =
# If the toolchain's bin directory is not in your path, set this to the path
# (including the trailing /, and use / not \).
# TOOL_PATH =
# for other toolchains leave these empty and set the more detailed options below

# With the recommended gcc 4.9.3 toolchain or another toolchain, set 
# BINPREF and BINPREF64 (below) to the respective bin directories.  
# Include the trailing /, and use / not \.
# Do this in the more detailed options below
# Set this to 32 or 64
# WIN = 32


### BEGIN more detailed options
# Some of the toolchains have prefixes for e.g. ar, gcc.
# This can also be used to give the full path to the compiler, 
# including a trailing / .  
# BINPREF = c:/Rtools/mingw_32/bin/
# prefix for 64-bit:
# BINPREF64 = c:/Rtools/mingw_64/bin/
# Set this to indicate a non-gcc compiler and version
# COMPILED_BY = <determined automatically>

# Others use a -m64 or -m32 option to select architectures
# M_ARCH =
# and for as (--32 or --64)
# AS_ARCH =
# and for windres (-F pe-i386 or pe-x86-64)
# RC_ARCH =
# and for dlltool ("-m i386 --as-flags --32" vs "-m i386:x86-64 --as-flags --64")
# DT_ARCH =

# 32- or 64-bit Windows?
# WIN = 32

# The gcc 4.9.3 64 bit toolchain is set up for the 'medium code' model and needs
# to remove the .refptr and .weak entries from the exports list; this is the default
# when WIN = 64, with blank for WIN = 32:
# NM_FILTER = | $(SED) -e '/[.]refptr[.]/d' -e '/[.]weak[.]/d'

# We normally link directly against DLLs, 
# but this macro forces the use of import libs
# Has been needed for some versions of MinGW-w64
# USE_IMPLIBS = YES

### END more detailed options


# set to use ICU
# USE_ICU = YES
# path to parent of ICU headers
# ICU_PATH =
# ICU_LIBS = -lsicuin -lsicuuc -lsicudt -lstdc++

# set to use libcurl
# USE_LIBCURL = YES
# path to parent of libcurl headers
# CURL_PATH =
# libs: for 32-bit
# CURL_LIBS = -lcurl -lrtmp -lssl -lssh2 -lcrypto -lgdi32 -lcrypt32 -lz -lws2_32 -lgdi32 -lcrypt32 -lwldap32 -lwinmm -lidn
# libs: for 64-bit
# CURL_LIBS = -lcurl -lrtmp -lssl -lssh2 -lcrypto -lgdi32 -lcrypt32 -lz -lws2_32 -lgdi32 -lcrypt32 -lwldap32 -lwinmm

# For the cairographics devices
# Optionally use a static build of cairographics from
#   https://www.rforge.net/Cairo/files/cairo-current-win.tar.gz
# and set CAIRO_HOME to the parent of the win32/win64 directories
#
# If CAIRO_HOME is not set the devices are not built.
# CAIRO_HOME =

# set this to YES to build static HTML help
# BUILD_HTML = NO

# unset this if you are *not* using MiKTeX
# MIKTEX = TRUE
# Recent MiKTEX does not provide texi2dvi and needs something like
# TEXI2DVI = TEXINDEX=/Rtools/bin/texindex.exe texify

# for texinfo >= 5.1. If the texinfo files are installed at /packages/texinfo,
# TEXI2ANY = /path/to/perl -I/packages/texinfo /packages/texinfo/texi2any
# if you do not have texinfo (default),
# TEXI2ANY = missing

# additional optimization flags (use -mtune=native for a private build)
# EOPTS = -mtune=core2

# define to -fopenmp if the toolchain has OpenMP support
# OPENMP = -fopenmp

# define to -pthread if the toolchain has pthreads support
# PTHREAD = -pthread

## ====== configuration macros for building installer ===========

# location where Inno Setup 5.[34].x was installed. Spaces allowed.
# ISDIR = C:/packages/Inno

# optional location where qpdf was installed (in $(QPDF)/bin). Spaces allowed.
# QPDF =

# home of 32-bit files for combined installer on 64-bit build
# HOME32 =

# Full paths of extra DLLs that need to be shipped
# e.g
# DLLs32 = c:/R/bin/pthreadGC2-w32.dll
# DLLs64 = c:/R/bin64/pthreadGC2-w64.dll
# DLLs32 =
# DLLs64 =


## ====== configuration macros for building MSI installer ===========

# location where WiX 3.x executables were installed. Spaces allowed.
# The MSI uses '/bin': other packagings may not
# WIX3DIR = C:/packages/WiX3.5/bin

# set to 1 for a non-elevated per-user installer
# WIX_PERSONAL = 0

## =============== end of user-customizable parts  ===================
