blob: 3d09d7e16656fef2990d1973eadbfbdaf3486bbf [file] [log] [blame]
#-*- 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 ===================