@@ -24,13 +24,13 @@ set -e
24
24
25
25
CURRENT_EVM_VERSION=london
26
26
27
- function print_optimizer_levels_or_exit
27
+ function print_optimizer_presets_or_exit
28
28
{
29
- local selected_levels =" $1 "
29
+ local selected_presets =" $1 "
30
30
31
- [[ $selected_levels != " " ]] || { printWarning " No steps to run. Exiting." ; exit 0; }
31
+ [[ $selected_presets != " " ]] || { printWarning " No presets to run. Exiting." ; exit 0; }
32
32
33
- printLog " Selected optimizer levels : ${selected_levels } "
33
+ printLog " Selected settings presets : ${selected_presets } "
34
34
}
35
35
36
36
function verify_input
@@ -141,7 +141,7 @@ function force_truffle_compiler_settings
141
141
local config_file=" $1 "
142
142
local binary_type=" $2 "
143
143
local solc_path=" $3 "
144
- local level =" $4 "
144
+ local preset =" $4 "
145
145
local evm_version=" ${5:- " $CURRENT_EVM_VERSION " } "
146
146
147
147
[[ $binary_type == native || $binary_type == solcjs ]] || assertFail
@@ -153,14 +153,16 @@ function force_truffle_compiler_settings
153
153
echo " Config file: $config_file "
154
154
echo " Binary type: $binary_type "
155
155
echo " Compiler path: $solc_path "
156
- echo " Optimization level : $level "
157
- echo " Optimizer settings : $( optimizer_settings_for_level " $level " ) "
156
+ echo " Settings preset : ${preset} "
157
+ echo " Settings : $( settings_from_preset " $preset " " $evm_version " ) "
158
158
echo " EVM version: $evm_version "
159
+ echo " Compiler version: ${SOLCVERSION_SHORT} "
160
+ echo " Compiler version (full): ${SOLCVERSION} "
159
161
echo " -------------------------------------"
160
162
161
163
# Forcing the settings should always work by just overwriting the solc object. Forcing them by using a
162
164
# dedicated settings objects should only be the fallback.
163
- echo " module.exports['compilers'] = $( truffle_compiler_settings " $solc_path " " $level " " $evm_version " ) ;" >> " $config_file "
165
+ echo " module.exports['compilers'] = $( truffle_compiler_settings " $solc_path " " $preset " " $evm_version " ) ;" >> " $config_file "
164
166
}
165
167
166
168
function force_hardhat_compiler_binary
@@ -180,22 +182,22 @@ function force_hardhat_compiler_binary
180
182
function force_hardhat_compiler_settings
181
183
{
182
184
local config_file=" $1 "
183
- local level =" $2 "
185
+ local preset =" $2 "
184
186
local evm_version=" ${3:- " $CURRENT_EVM_VERSION " } "
185
187
186
188
printLog " Configuring Hardhat..."
187
189
echo " -------------------------------------"
188
190
echo " Config file: ${config_file} "
189
- echo " Optimization level : ${level } "
190
- echo " Optimizer settings : $( optimizer_settings_for_level " $level " ) "
191
+ echo " Settings preset : ${preset } "
192
+ echo " Settings : $( settings_from_preset " $preset " " $evm_version " ) "
191
193
echo " EVM version: ${evm_version} "
192
194
echo " Compiler version: ${SOLCVERSION_SHORT} "
193
195
echo " Compiler version (full): ${SOLCVERSION} "
194
196
echo " -------------------------------------"
195
197
196
198
{
197
199
echo -n ' module.exports["solidity"] = '
198
- hardhat_compiler_settings " $SOLCVERSION_SHORT " " $level " " $evm_version "
200
+ hardhat_compiler_settings " $SOLCVERSION_SHORT " " $preset " " $evm_version "
199
201
} >> " $config_file "
200
202
}
201
203
@@ -236,22 +238,27 @@ function run_test
236
238
replace_version_pragmas
237
239
238
240
printLog " Running compile function..."
239
- $compile_fn
241
+ time $compile_fn
240
242
241
243
printLog " Running test function..."
242
244
$test_fn
243
245
}
244
246
245
- function optimizer_settings_for_level
247
+ function settings_from_preset
246
248
{
247
- local level=" $1 "
248
-
249
- case " $level " in
250
- 1) echo " {enabled: false}" ;;
251
- 2) echo " {enabled: true, details: {yul: false}}" ;;
252
- 3) echo " {enabled: true, details: {yul: true}}" ;;
249
+ local preset=" $1 "
250
+ local evm_version=" $2 "
251
+
252
+ case " $preset " in
253
+ # NOTE: Remember to update `parallelism` of `t_ems_ext` job in CI config if you add/remove presets
254
+ legacy-no-optimize) echo " {evmVersion: '${evm_version} ', viaIR: false, optimizer: {enabled: false}}" ;;
255
+ ir-no-optimize) echo " {evmVersion: '${evm_version} ', viaIR: true, optimizer: {enabled: false}}" ;;
256
+ legacy-optimize-evm-only) echo " {evmVersion: '${evm_version} ', viaIR: false, optimizer: {enabled: true, details: {yul: false}}}" ;;
257
+ ir-optimize-evm-only) echo " {evmVersion: '${evm_version} ', viaIR: true, optimizer: {enabled: true, details: {yul: false}}}" ;;
258
+ legacy-optimize-evm+yul) echo " {evmVersion: '${evm_version} ', viaIR: false, optimizer: {enabled: true, details: {yul: true}}}" ;;
259
+ ir-optimize-evm+yul) echo " {evmVersion: '${evm_version} ', viaIR: true, optimizer: {enabled: true, details: {yul: true}}}" ;;
253
260
* )
254
- fail " Optimizer level not found. Please define OPTIMIZER_LEVEL=[1, 2, 3] "
261
+ fail " Unknown settings preset: ' ${preset} '. "
255
262
;;
256
263
esac
257
264
}
@@ -269,16 +276,13 @@ function replace_global_solc
269
276
function truffle_compiler_settings
270
277
{
271
278
local solc_path=" $1 "
272
- local level =" $2 "
279
+ local preset =" $2 "
273
280
local evm_version=" $3 "
274
281
275
282
echo " {"
276
283
echo " solc: {"
277
284
echo " version: \" ${solc_path} \" ,"
278
- echo " settings: {"
279
- echo " optimizer: $( optimizer_settings_for_level " $level " ) ,"
280
- echo " evmVersion: \" ${evm_version} \" "
281
- echo " }"
285
+ echo " settings: $( settings_from_preset " $preset " " $evm_version " ) "
282
286
echo " }"
283
287
echo " }"
284
288
}
@@ -310,15 +314,12 @@ function hardhat_solc_build_subtask {
310
314
311
315
function hardhat_compiler_settings {
312
316
local solc_version=" $1 "
313
- local level =" $2 "
317
+ local preset =" $2 "
314
318
local evm_version=" $3 "
315
319
316
320
echo " {"
317
321
echo " version: '${solc_version} ',"
318
- echo " settings: {"
319
- echo " optimizer: $( optimizer_settings_for_level " $level " ) ,"
320
- echo " evmVersion: '${evm_version} '"
321
- echo " }"
322
+ echo " settings: $( settings_from_preset " $preset " " $evm_version " ) "
322
323
echo " }"
323
324
}
324
325
@@ -329,7 +330,7 @@ function compile_and_run_test
329
330
local verify_fn=" $3 "
330
331
331
332
printLog " Running compile function..."
332
- $compile_fn
333
+ time $compile_fn
333
334
$verify_fn " $SOLCVERSION_SHORT " " $SOLCVERSION "
334
335
335
336
if [[ " $COMPILE_ONLY " == 1 ]]; then
@@ -345,24 +346,24 @@ function truffle_run_test
345
346
local config_file=" $1 "
346
347
local binary_type=" $2 "
347
348
local solc_path=" $3 "
348
- local optimizer_level =" $4 "
349
+ local preset =" $4 "
349
350
local compile_fn=" $5 "
350
351
local test_fn=" $6 "
351
352
352
353
truffle_clean
353
- force_truffle_compiler_settings " $config_file " " $binary_type " " $solc_path " " $optimizer_level "
354
+ force_truffle_compiler_settings " $config_file " " $binary_type " " $solc_path " " $preset "
354
355
compile_and_run_test compile_fn test_fn truffle_verify_compiler_version
355
356
}
356
357
357
358
function hardhat_run_test
358
359
{
359
360
local config_file=" $1 "
360
- local optimizer_level =" $2 "
361
+ local preset =" $2 "
361
362
local compile_fn=" $3 "
362
363
local test_fn=" $4 "
363
364
364
365
hardhat_clean
365
- force_hardhat_compiler_settings " $config_file " " $optimizer_level "
366
+ force_hardhat_compiler_settings " $config_file " " $preset "
366
367
compile_and_run_test compile_fn test_fn hardhat_verify_compiler_version
367
368
}
368
369
0 commit comments