Skip to content

Commit

Permalink
maybe work on R 4.2/4/1
Browse files Browse the repository at this point in the history
  • Loading branch information
paleolimbot committed Jun 6, 2024
1 parent 7f89dff commit 37fcad4
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 11 deletions.
14 changes: 12 additions & 2 deletions configure.win
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@

if pkg-config absl_base --libs 2>/dev/null; then
exit 0;
echo "Using Abseil from RTools via pkg-config"
else
WIN_CPPFLAGS="-DABSL_FORCE_WAITER_MODE=4" tools/build_absl.sh
fi

WIN_CPPFLAGS="-DABSL_FORCE_WAITER_MODE=4" tools/build_absl.sh
if pkg-config openssl --libs 2>/dev/null; then
echo "Using openssl from RTools via pkg-config"
else
"${R_HOME}/bin${R_ARCH_BIN}/Rscript.exe" "../tools/winlibs.R"
fi




15 changes: 12 additions & 3 deletions src/Makevars.win
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@

# Configure Abseil. If it wasn't available via pkg-config, it was built
# by cmake in configure.win.

ABSL_LIBS = -labsl_cord -labsl_cordz_info -labsl_cord_internal -labsl_cordz_functions -labsl_cordz_handle -labsl_crc_cord_state -labsl_crc32c -labsl_crc_internal -labsl_crc_cpu_detect -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_exponential_biased -labsl_synchronization -labsl_graphcycles_internal -labsl_kernel_timeout_internal -labsl_stacktrace -labsl_symbolize -labsl_malloc_internal -labsl_time -labsl_civil_time -labsl_time_zone -labsl_hash -labsl_city -labsl_bad_optional_access -labsl_bad_variant_access -labsl_low_level_hash -labsl_str_format_internal -labsl_strings -labsl_string_view -labsl_strings_internal -labsl_int128 -labsl_throw_delegate -labsl_demangle_internal -labsl_base -labsl_spinlock_wait -labsl_debugging_internal -labsl_raw_logging_internal -labsl_log_severity

ifeq (,$(shell pkg-config absl_base --libs 2>/dev/null))
Expand All @@ -8,13 +11,19 @@ else
ABSL_LIB_FLAGS = $(ABSL_LIBS)
endif


# Configure openssl and finalize PKG_LIBS. If openssl is not available via
# pkg-config, it was downloaded from rwinlibs in configure.win.
ifeq (,$(shell pkg-config openssl --libs 2>/dev/null))
PKG_LIBS = -Ls2 -ls2static $(ABSL_LIB_FLAGS) -lssl -lcrypto -lz -lws2_32 -lgdi32 -lcrypt32
OPENSSL_CFLAGS = -I../windows/openssl-$(VERSION)/include
OPENSSL_LIB_FLAGS = -L../windows/openssl/lib -lssl -lcrypto -lz -lws2_32 -lgdi32 -lcrypt32
else
PKG_LIBS = -Ls2 -ls2static $(ABSL_LIB_FLAGS) $(shell pkg-config --libs openssl)
OPENSSL_CFLAGS =
OPENSSL_LIB_FLAGS = $(shell pkg-config --libs openssl)
endif

PKG_CPPFLAGS = $(ABSL_CFLAGS) -DSTRICT_R_HEADERS -DS2_USE_EXACTFLOAT -D_USE_MATH_DEFINES -DNDEBUG -DIS_LITTLE_ENDIAN -DOMIT_STRPTIME -I../src
PKG_CPPFLAGS = $(ABSL_CFLAGS) $(OPENSSL_CFLAGS) -DSTRICT_R_HEADERS -DS2_USE_EXACTFLOAT -D_USE_MATH_DEFINES -DNDEBUG -DIS_LITTLE_ENDIAN -DOMIT_STRPTIME -I../src
PKG_LIBS = -Ls2 -ls2static $(ABSL_LIB_FLAGS) $(OPENSSL_LIB_FLAGS)

CXX_STD = CXX17

Expand Down
29 changes: 23 additions & 6 deletions tools/winlibs.R
Original file line number Diff line number Diff line change
@@ -1,10 +1,27 @@
# Build against mingw-w64 build of openssl
VERSION <- commandArgs(TRUE)
if(!file.exists(sprintf("../windows/openssl-%s/include/openssl/ssl.h", VERSION))){
if(getRversion() < "3.3.0") setInternet2()
download.file(sprintf("https://github.com/rwinlib/openssl/archive/v%s.zip", VERSION),

# This script is used to support R 4.0, 4.1, and 4.2 on Windows, which do not have
# OpenSSL available via pkg-config. It places the headers in windows/openssl/include
# and the libs for this R version/arch in windows/openssl/lib to simplify the
# configure/makevars setup.

openssl_version <- "1.1.1k"
if(file.exists("windows/openssl/include/openssl/ssl.h")) {
cat("Using previously downloaded rwinlibs openssl")
} else {
cat(sprintf("Downloading OpenSSL %s from rwinlibs", openssl_version))

download.file(sprintf("https://github.com/rwinlib/openssl/archive/v%s.zip", openssl_version),
"lib.zip", quiet = TRUE)
dir.create("../windows", showWarnings = FALSE)
unzip("lib.zip", exdir = "../windows")
unzip("lib.zip", exdir = "windows")

file.rename("windows/openssl-1.1.1k", "windows/openssl")
crt <- if (packageVersion("base") >= "4.2.0") "-ucrt" else ""
libs <- list.files(
sprintf("windows/openssl/lib/%s%s", .Platform$r_arch, crt),
full.names = TRUE
)

file.copy(libs, "windows/openssl/lib")
unlink("lib.zip")
}

0 comments on commit 37fcad4

Please sign in to comment.