From a317d77836301e20eff8f2673a8ed1b2b1c5bd53 Mon Sep 17 00:00:00 2001 From: Christopher Paciorek Date: Thu, 18 Jan 2024 10:27:16 -0800 Subject: [PATCH] add `--preclean` to `R CMD SHLIB` (#1393) * update LICENSE to 2024 * add --preclean to R CMD SHLIB to address issue 1368 * fix typo --- packages/nimble/R/cppDefs_cppProject.R | 8 ++++++-- packages/nimble/R/options.R | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/nimble/R/cppDefs_cppProject.R b/packages/nimble/R/cppDefs_cppProject.R index 725dc61f4..f468782a7 100644 --- a/packages/nimble/R/cppDefs_cppProject.R +++ b/packages/nimble/R/cppDefs_cppProject.R @@ -204,7 +204,9 @@ cppProjectClass <- setRefClass('cppProjectClass', ssDllName <- normalizePath(file.path(dirName, paste0(dllName, .Platform$dynlib.ext)), winslash = "\\", mustWork=FALSE) ssdSHLIBcmd <- normalizePath(file.path(R.home('bin'), 'R'), winslash = "\\", mustWork=FALSE) - ssdSHLIBargs <- paste('CMD SHLIB', cppName, '-o', basename(ssDllName)) + ssdSHLIBargs <- paste('CMD SHLIB', + ifelse(nimbleOptions()$precleanCompilation, '--preclean', ''), + cppName, '-o', basename(ssDllName)) logFile <- paste0(dllName, ".log") errorFile <- paste0(dllName, ".err") @@ -276,7 +278,9 @@ cppProjectClass <- setRefClass('cppProjectClass', includes <- c(includes, Oincludes) ## normal operation will have Oincludes. } SHLIBcmd <- normalizePath(file.path(R.home('bin'), 'R'), winslash = "\\", mustWork=FALSE) - SHLIBargs <- paste('CMD SHLIB', paste(c(mainfiles, includes), collapse = ' '), '-o', basename(outputSOfile)) + SHLIBargs <- paste('CMD SHLIB', + ifelse(nimbleOptions()$precleanCompilation, '--preclean', ''), + paste(c(mainfiles, includes), collapse = ' '), '-o', basename(outputSOfile)) cur = getwd() setwd(dirName) diff --git a/packages/nimble/R/options.R b/packages/nimble/R/options.R index ccf276e3c..95719e1ed 100644 --- a/packages/nimble/R/options.R +++ b/packages/nimble/R/options.R @@ -52,6 +52,7 @@ nimbleUserNamespace <- as.environment(list(sessionSpecificDll = NULL)) checkModel = FALSE, checkNimbleFunction = TRUE, checkDuplicateNodeDefinitions = TRUE, + precleanCompilation = TRUE, verbose = TRUE, verboseErrors = FALSE,