diff --git a/mk/config.mk.in b/mk/config.mk.in
index 6f255a4bccd298307558aff538998a9ba93cdaa6..ee53a5a7b15231873420a29a38396d4bec7a0202 100644
--- a/mk/config.mk.in
+++ b/mk/config.mk.in
@@ -618,10 +618,9 @@ LdIsGNULd		= @LdIsGNULd@
 #   ar: Bad file number
 # see #3201.  We need to specify a smaller max command-line size
 # to work around it.  32767 doesn't work; 30000 does.
-ifeq "$(Windows)" "YES"
-XARGS = xargs -s 30000
-else
 XARGS = xargs
+ifeq "$(Windows)" "YES"
+XARGS_OPTS = -s 30000
 endif
 
 #
diff --git a/rts/ghc.mk b/rts/ghc.mk
index b002bdc2a6260bed5e46c993acae33cd826cfefa..a667ac35530e42251c18f9a0ca87aaee2fb1cbc1 100644
--- a/rts/ghc.mk
+++ b/rts/ghc.mk
@@ -114,7 +114,7 @@ $$(rts_$1_LIB) : $$(rts_$1_OBJS) rts/libs.depend
 else
 $$(rts_$1_LIB) : $$(rts_$1_OBJS)
 	"$$(RM)" $$(RM_OPTS) $$@
-	echo $$(rts_$1_OBJS) | $$(XARGS) "$$(AR)" $$(AR_OPTS) $$(EXTRA_AR_ARGS) $$@
+	echo $$(rts_$1_OBJS) | "$$(XARGS)" $$(XARGS_OPTS) "$$(AR)" $$(AR_OPTS) $$(EXTRA_AR_ARGS) $$@
 endif
 
 endef
diff --git a/rules/build-package-way.mk b/rules/build-package-way.mk
index e674b7aaee1ec4ff66c41b6e857025d974322125..901d66fe2946ef11ef38bae5a6401340afac925f 100644
--- a/rules/build-package-way.mk
+++ b/rules/build-package-way.mk
@@ -63,11 +63,11 @@ else
 ifeq "$$($1_$2_SplitObjs)" "YES"
 $$($1_$2_$3_LIB) : $$($1_$2_$3_ALL_OBJS)
 	"$$(RM)" $$(RM_OPTS) $$@
-	(echo $$($1_$2_$3_NON_HS_OBJS) `$$($1_$2_$3_MKSTUBOBJS)`; $$(FIND) $$(patsubst %.$$($3_osuf),%_$$($3_osuf)_split,$$($1_$2_$3_HS_OBJS)) -name '*.$$($3_osuf)' -print) | $$(XARGS) "$$(AR)" $(AR_OPTS) $$(EXTRA_AR_ARGS) $$@
+	(echo $$($1_$2_$3_NON_HS_OBJS) `$$($1_$2_$3_MKSTUBOBJS)`; $$(FIND) $$(patsubst %.$$($3_osuf),%_$$($3_osuf)_split,$$($1_$2_$3_HS_OBJS)) -name '*.$$($3_osuf)' -print) | "$$(XARGS)" $$(XARGS_OPTS) "$$(AR)" $$(AR_OPTS) $$(EXTRA_AR_ARGS) $$@
 else
 $$($1_$2_$3_LIB) : $$($1_$2_$3_ALL_OBJS)
 	"$$(RM)" $$(RM_OPTS) $$@
-	echo $$($1_$2_$3_ALL_OBJS) `$$($1_$2_$3_MKSTUBOBJS)` | $$(XARGS) "$$(AR)" $(AR_OPTS) $$(EXTRA_AR_ARGS) $$@
+	echo $$($1_$2_$3_ALL_OBJS) `$$($1_$2_$3_MKSTUBOBJS)` | "$$(XARGS)" $$(XARGS_OPTS) "$$(AR)" $$(AR_OPTS) $$(EXTRA_AR_ARGS) $$@
 endif
 endif