@@ -168,35 +168,30 @@ precompile_coreroot_fx()
168
168
local outputDir=" $overlayDir " /out
169
169
170
170
# Delete previously crossgened assemblies
171
- rm " $overlayDir " /* .ni.dll
172
-
173
- # Collect reference assemblies for Crossgen2
174
- local crossgen2References=" "
171
+ rm " $overlayDir " /* .ni.dll 2> /dev/null
175
172
176
173
if [[ " $__DoCrossgen2 " != 0 ]]; then
177
174
compilerName=Crossgen2
178
175
179
176
mkdir " $outputDir "
180
-
181
- skipCrossGenFiles+=(' Microsoft.CodeAnalysis.CSharp.dll' )
182
- skipCrossGenFiles+=(' Microsoft.CodeAnalysis.dll' )
183
- skipCrossGenFiles+=(' Microsoft.CodeAnalysis.VisualBasic.dll' )
184
-
185
- for reference in " $overlayDir " /* .dll; do
186
- crossgen2References+=" -r:${reference} "
187
- done
188
177
fi
189
178
190
179
echo " ${__MsgPrefix} Running ${compilerName} on framework assemblies in CORE_ROOT: '${CORE_ROOT} '"
191
180
192
181
local totalPrecompiled=0
193
182
local failedToPrecompile=0
194
- local compositeCommandLine=" ${__DotNetCli} "
195
- compositeCommandLine+=" $__Crossgen2Dll "
196
- compositeCommandLine+=" --composite"
197
- compositeCommandLine+=" -O"
198
- compositeCommandLine+=" --out:$outputDir /framework-r2r.dll"
199
- compositeCommandLine+=" --targetarch ${__BuildArch} "
183
+ local compositeOutputFile=$outputDir /framework-r2r.dll
184
+ local compositeResponseFile=$compositeOutputFile .rsp
185
+ local compositeCommandLine=" ${__DotNetCli} $__Crossgen2Dll @$compositeResponseFile "
186
+
187
+ if [[ " $__CompositeBuildMode " != 0 ]]; then
188
+ rm $compositeResponseFile 2> /dev/null
189
+ echo --composite>> $compositeResponseFile
190
+ echo -O>> $compositeResponseFile
191
+ echo --out:$compositeOutputFile >> $compositeResponseFile
192
+ echo --targetarch:${__BuildArch} >> $compositeResponseFile
193
+ fi
194
+
200
195
declare -a failedAssemblies
201
196
202
197
filesToPrecompile=$( find -L " $overlayDir " -maxdepth 1 -iname Microsoft.\* .dll -o -iname System.\* .dll -o -iname netstandard.dll -o -iname mscorlib.dll -type f)
@@ -207,18 +202,32 @@ precompile_coreroot_fx()
207
202
fi
208
203
209
204
if [[ " $__CompositeBuildMode " != 0 ]]; then
210
- compositeCommandLine+= " $filename "
205
+ echo $filename >> $compositeResponseFile
211
206
continue
212
207
fi
213
208
214
209
local commandLine=" "
210
+ local responseFile=" $overlayDir /$( basename $filename ) .rsp"
211
+
212
+ rm $responseFile 2> /dev/null
215
213
216
214
if [[ " $__DoCrossgen " != 0 ]]; then
217
- commandLine=" $__CrossgenExe /Platform_Assemblies_Paths $overlayDir $filename "
215
+ commandLine=" $__CrossgenExe @$responseFile "
216
+ echo /Platform_Assemblies_Paths>> $responseFile
217
+ echo $overlayDir >> $responseFile
218
+ echo $filename >> $responseFile
218
219
fi
219
220
220
221
if [[ " $__DoCrossgen2 " != 0 ]]; then
221
- commandLine=" ${__DotNetCli} $__Crossgen2Dll $crossgen2References -O --inputbubble --out $outputDir /$( basename $filename ) $filename --targetarch ${__BuildArch} "
222
+ commandLine=" ${__DotNetCli} $__Crossgen2Dll @$responseFile "
223
+ echo -O>> $responseFile
224
+ echo --inputbubble>> $responseFile
225
+ echo --out:$outputDir /$( basename $filename ) >> $responseFile
226
+ echo --targetarch:${__BuildArch} >> $responseFile
227
+ echo $filename >> $responseFile
228
+ for reference in $overlayDir /* .dll; do
229
+ echo -r:$reference >> $responseFile
230
+ done
222
231
fi
223
232
224
233
echo Precompiling " $filename "
@@ -245,6 +254,8 @@ precompile_coreroot_fx()
245
254
246
255
if [[ " $__CompositeBuildMode " != 0 ]]; then
247
256
# Compile the entire framework in composite build mode
257
+ echo " Response file: $compositeResponseFile "
258
+ cat $compositeResponseFile
248
259
echo " Compiling composite R2R framework: $compositeCommandLine "
249
260
$compositeCommandLine
250
261
local exitCode=" $? "
0 commit comments