@@ -535,11 +535,26 @@ build_libarrow <- function(src_dir, dst_dir) {
535535 makeflags <- sprintf(" -j%s" , ncores )
536536 Sys.setenv(MAKEFLAGS = makeflags )
537537 } else {
538- # Extract -j value from existing MAKEFLAGS if present
539- j_match <- regmatches(makeflags , regexpr(" -j\\ s*( [0-9]+)" , makeflags , perl = TRUE ))
538+ # Extract -j/--jobs value from existing MAKEFLAGS if present
539+ j_match <- regmatches(makeflags , regexpr(" (^| \\ s)( -j\\ s*|--jobs(=| \\ s)+)( [0-9]+)(?= \\ s|$ )" , makeflags , perl = TRUE ))
540540 if (length(j_match ) > 0 ) {
541- ncores <- as.integer(sub(" -j \\ s* " , " " , j_match , perl = TRUE ))
541+ ncores <- as.integer(sub(" .*?([0-9]+)$ " , " \\ 1 " , j_match , perl = TRUE ))
542542 }
543+ # Keep GNU make's optional -j/--jobs argument in one token for nested gmake
544+ makeflags <- gsub(" (^|\\ s)-j\\ s+([0-9]+)(?=\\ s|$)" , " \\ 1-j\\ 2" , makeflags , perl = TRUE )
545+ makeflags <- gsub(" (^|\\ s)--jobs\\ s+([0-9]+)(?=\\ s|$)" , " \\ 1--jobs=\\ 2" , makeflags , perl = TRUE )
546+ # Give any remaining bare `-j`/`--jobs` an explicit count
547+ makeflags <- gsub(" (^|\\ s)-j(?=\\ s|$)" , sprintf(" \\ 1-j%s" , ncores ), makeflags , perl = TRUE )
548+ makeflags <- gsub(" (^|\\ s)--jobs(?=\\ s|$)" , sprintf(" \\ 1--jobs=%s" , ncores ), makeflags , perl = TRUE )
549+ Sys.setenv(MAKEFLAGS = makeflags )
550+ }
551+ gnumakeflags <- Sys.getenv(" GNUMAKEFLAGS" )
552+ if (nzchar(gnumakeflags )) {
553+ gnumakeflags <- gsub(" (^|\\ s)-j\\ s+([0-9]+)(?=\\ s|$)" , " \\ 1-j\\ 2" , gnumakeflags , perl = TRUE )
554+ gnumakeflags <- gsub(" (^|\\ s)--jobs\\ s+([0-9]+)(?=\\ s|$)" , " \\ 1--jobs=\\ 2" , gnumakeflags , perl = TRUE )
555+ gnumakeflags <- gsub(" (^|\\ s)-j(?=\\ s|$)" , sprintf(" \\ 1-j%s" , ncores ), gnumakeflags , perl = TRUE )
556+ gnumakeflags <- gsub(" (^|\\ s)--jobs(?=\\ s|$)" , sprintf(" \\ 1--jobs=%s" , ncores ), gnumakeflags , perl = TRUE )
557+ Sys.setenv(GNUMAKEFLAGS = gnumakeflags )
543558 }
544559 if (! quietly ) {
545560 lg(" Building with MAKEFLAGS=%s" , makeflags )
0 commit comments