#-*- Makefile -*-

## This is only used when building R itself but it does customize
## etc/*/Makeconf: see fixed/Makefile

## Customize by copying to MkRules.local and uncommenting and editing 
## some of the definitions there. The values are tailored to Rtools42, the
## currently recommented toolchain using gcc 10.3, MinGW-w64 9, 64-bit only,
## UCRT. R is only intended to be built for 64-bit UCRT as of R 4.2. 

## =========== configuration macros for building packages ================

# LOCAL_SOFT is intended to point to software collection with static
# libraries and headers installed "outside of Rtools", in the same spirit as
# software is installed on Linux into '/usr/local' if it is not available in
# the respective Linux distribution. 
#
# CRAN distributed this software and running 'make rsync-extsoft' would
# populate the default directory $(R_HOME)/extsoft.  The versions used on
# CRAN recommended for R 2.14.2 to 3.2.4 can still be found at
# https://www.stats.ox.ac.uk/pub/Rtools/libs.html
#
# Eventually, this software collection became part of Rtools, so it should
# no longer be referred to via LOCAL_SOFT.  Rtools42 hence introduce
# variable R_TOOLS_SOFT for use in R packages to refer to headers or
# libraries in the Rtools software collection (which in turn can be
# influenced by R_CUSTOM_TOOLS_SOFT for packages).  LOCAL_SOFT should not be
# used for that purpose.  R source code refers to that software collection
# using EXT_LIBS.
#
# However, a number of CRAN packages ended up referring to Rtools software
# collection via LOCAL_SOFT, so LOCAL_SOFT is set up by default to also
# point to the Rtools software. This may be changed in the future.
#
# To build R from source with Rtools42 (installed from installer as well as
# tarball), gcc has to be on PATH and LOCAL_SOFT can be computed as follows:
#
# LOCAL_SOFT ?= $(shell which `echo $(CC) | sed -e 's/ .*//g'` | sed -e 's!/bin/[^/]\+!!g')
#
## ============== configuration macros for building R ===================

# Path of library directory containing zlib, bzlib, liblzma, pcre,
# libpng, libjpeg, libtiff, xz.
# 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 previously recommended gcc 8.3.0 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 (in previously recommended toolchains)
# WIN = 64


### 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 = 
# prefix for 64-bit:
# BINPREF64 =
# 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 =
# needed libs varies by version and build.
# 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 (previously recommended toolchain)
# CURL_LIBS = -lcurl -lrtmp -lssl -lssh2 -lcrypto -lgdi32 -lcrypt32 -lz -lws2_32 -lgdi32 -lcrypt32 -lwldap32 -lwinmm -lidn
# libs: for 64-bit (previously recommended toolchain)
# CURL_LIBS = -lcurl -lrtmp -lssl -lssh2 -lcrypto -lgdi32 -lcrypt32 -lz -lws2_32 -lgdi32 -lcrypt32 -lwldap32 -lwinmm
# libs: currently recommended gcc 10.3 64-bit toolchain
# CURL_LIBS=-lcurl -lzstd -lrtmp -lssl -lssh2 -lgcrypt -lcrypto -lgdi32 -lz -lws2_32 -lgdi32 -lcrypt32 -lidn2 -lunistring -liconv -lgpg-error -lwldap32 -lwinmm

# For the cairographics devices, with the previously recommended toolchains
# one would optionally use a static build of cairographics from
# https://www.rforge.net/Cairo/files/cairo-current-win.tar.gz
#
# set to build cairo devices in "cairodevices" or "distribution" targets
# (they are not built in "all" even if this is set)
# USE_CAIRO = YES
# set to cairo headers (included in the recommended toolchain, but under "cairo")
# CAIRO_CPPFLAGS = -I$(EXT_LIBS)/include/cairo
# set to cairo libraries (included in the recommended toolchain)
# CAIRO_LIBS = "-lcairo -lfontconfig -lfreetype -lpng -lpixman-1 -lexpat -lharfbuzz -lbz2 -lintl -lz -liconv -lgdi32 -lmsimg32"
#
# Previous versions of R used CAIRO_HOME and an empty value meant to not
# build cairo. This is no longer used.

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

# set to use MiKTeX (and unset otherwise)
# MIKTEX = TRUE
# TEXI2DVI = texi2dvi
# MiKTEX no longer provides texi2dvi and needs something like (previous toolchains)
# TEXI2DVI = TEXINDEX=/Rtools/bin/texindex.exe texify
# with the currently recommended toolchain, Msys2 texi2dvi is used, but needs a workaround for a bug
# TEXI2DVI = env COMSPEC= texi2dvi

# 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 (e.g. -mtune=native for a private build)
#
# -mstackrealign is used to avoid traps due to misaligned addresses with
#   SSE2 (seen on 32-bit builds with forced SSE2 using -mfpmath=sse -msse2,
#   probably not needed on 64-bit builds)
#
# -fexceptions was used as a workaround for GCC 10.3.0 bug causing crashes in
#   long jumps due to invalid unwind tables. This is the only reason for
#   this option as R does not use structured exception handling from C.
#   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103274
#   
#   -fno-reorder-blocks-and-partition was not a suitable workaround because
#   of https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103465
#
#   (reorder-blocks-and-partition has been fixed in GCC, so -fexceptions
#   should no longer be needed for newer versions of GCC and the recommended
#   gcc 10.3 toolchain)
#
# See MkRules.rules where -fno-optimize-sibling-calls is optionally added to
# work around issues with gfortran/legacy calls from C.
#
# EOPTS = -mfpmath=sse -msse2 -mstackrealign $(LTO)

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

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

# define to use Link-Time Optimization.
# standard value is -flto, or e.g. -flto=8 to use 8 threads
# LTO =
# flag for use with Rcmd INSTALL --use-LTO
# LTO_OPT =

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

# location where Inno Setup 6 was installed. Spaces allowed.
# ISDIR = C:/Program Files (x86)/Inno Setup 6

# 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 =
# 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  ===================
