@@ -107,7 +107,6 @@ switch(
107107# on Windows, check for Rtools; if it exists, and we have tbb, use it
108108if (.Platform $ OS.type == " windows" ) {
109109
110- tbbPattern <- " lib(tbb[^[:alpha:]]*)\\ .a$"
111110 gccPath <- normalizePath(Sys.which(" gcc" ), winslash = " /" )
112111
113112 tbbLib <- Sys.getenv(" TBB_LIB" , unset = NA )
@@ -118,22 +117,35 @@ if (.Platform$OS.type == "windows") {
118117 if (is.na(tbbInc ))
119118 tbbInc <- normalizePath(file.path(gccPath , " ../../include" ), winslash = " /" )
120119
121- tbbLibs <- list.files(tbbLib , pattern = tbbPattern )
122- if (length(tbbLibs )) {
123- tbbName <- gsub(tbbPattern , " \\ 1" , tbbLibs [[1L ]])
120+ tbbFiles <- list.files(tbbLib , pattern = " ^libtbb" )
121+ if (length(tbbFiles )) {
122+
123+ tbbPattern <- " ^lib(tbb\\ d*(?:_static)?)\\ .a$"
124+ tbbName <- grep(tbbPattern , tbbFiles , perl = TRUE , value = TRUE )
125+ tbbName <- gsub(tbbPattern , " \\ 1" , tbbName , perl = TRUE )
126+
127+ tbbMallocPattern <- " ^lib(tbbmalloc\\ d*(?:_static)?)\\ .a$"
128+ tbbMallocName <- grep(tbbMallocPattern , tbbFiles , perl = TRUE , value = TRUE )
129+ tbbMallocName <- gsub(tbbMallocPattern , " \\ 1" , tbbMallocName , perl = TRUE )
130+
124131 Sys.setenv(
125132 TBB_LIB = tbbLib ,
126133 TBB_INC = tbbInc ,
127- TBB_NAME = tbbName
134+ TBB_NAME = tbbName ,
135+ TBB_MALLOC_NAME = tbbMallocName
128136 )
137+
129138 }
139+
130140}
131141
132142# try and figure out path to TBB
133143tbbRoot <- Sys.getenv(" TBB_ROOT" , unset = NA )
134144tbbLib <- Sys.getenv(" TBB_LIB" , unset = NA )
135145tbbInc <- Sys.getenv(" TBB_INC" , unset = NA )
146+
136147tbbName <- Sys.getenv(" TBB_NAME" , unset = " tbb" )
148+ tbbMallocName <- Sys.getenv(" TBB_MALLOC_NAME" , unset = " tbbmalloc" )
137149
138150# check TBB_ROOT first if defined
139151if (! is.na(tbbRoot )) {
@@ -205,9 +217,10 @@ if (tryAutoDetect) {
205217
206218# now, define TBB_LIB and TBB_INC as appropriate
207219define(
208- TBB_LIB = if (! is.na(tbbLib )) tbbLib else " " ,
209- TBB_INC = if (! is.na(tbbInc )) tbbInc else " " ,
210- TBB_NAME = tbbName
220+ TBB_LIB = if (! is.na(tbbLib )) tbbLib else " " ,
221+ TBB_INC = if (! is.na(tbbInc )) tbbInc else " " ,
222+ TBB_NAME = tbbName ,
223+ TBB_MALLOC_NAME = tbbMallocName
211224)
212225
213226# set PKG_LIBS
@@ -217,7 +230,7 @@ pkgLibs <- if (!is.na(tbbLib)) {
217230 " -Wl,-L\" $(TBB_LIB)\" " ,
218231 sprintf(" -Wl,-rpath,%s" , shQuote(tbbLib )),
219232 " -l$(TBB_NAME)" ,
220- " -ltbbmalloc "
233+ " -l$(TBB_MALLOC_NAME) "
221234 )
222235
223236} else if (.Platform $ OS.type == " windows" ) {
@@ -229,7 +242,7 @@ pkgLibs <- if (!is.na(tbbLib)) {
229242 c(
230243 " -Wl,-Ltbb/build/lib_release" ,
231244 " -l$(TBB_NAME)" ,
232- " -ltbbmalloc "
245+ " -l$(TBB_MALLOC_NAME) "
233246 )
234247
235248}
0 commit comments