@@ -76,22 +76,28 @@ if(WASM)
76
76
$<TARGET_OBJECTS:crypto_blake3s_objects>
77
77
$<TARGET_OBJECTS:crypto_keccak_objects>
78
78
$<TARGET_OBJECTS:crypto_schnorr_objects>
79
- $<TARGET_OBJECTS:crypto_pedersen_objects>
79
+ $<TARGET_OBJECTS:crypto_generators_objects>
80
+ $<TARGET_OBJECTS:crypto_pedersen_hash_objects>
81
+ $<TARGET_OBJECTS:crypto_pedersen_commitment_objects>
80
82
$<TARGET_OBJECTS:ecc_objects>
81
83
$<TARGET_OBJECTS:polynomials_objects>
82
84
$<TARGET_OBJECTS:plonk_objects>
83
85
$<TARGET_OBJECTS:honk_objects>
84
86
$<TARGET_OBJECTS:proof_system_objects>
85
87
$<TARGET_OBJECTS:stdlib_primitives_objects>
86
88
$<TARGET_OBJECTS:stdlib_schnorr_objects>
87
- $<TARGET_OBJECTS:stdlib_pedersen_objects>
89
+ $<TARGET_OBJECTS:stdlib_pedersen_hash_objects>
90
+ $<TARGET_OBJECTS:stdlib_pedersen_commitment_objects>
88
91
$<TARGET_OBJECTS:stdlib_blake2s_objects>
89
92
$<TARGET_OBJECTS:stdlib_blake3s_objects>
90
93
$<TARGET_OBJECTS:stdlib_sha256_objects>
91
94
$<TARGET_OBJECTS:stdlib_aes128_objects>
92
95
$<TARGET_OBJECTS:stdlib_merkle_tree_objects>
93
96
$<TARGET_OBJECTS:acir_format_objects>
94
97
$<TARGET_OBJECTS:acir_proofs_objects>
98
+ $<TARGET_OBJECTS:stdlib_sha256_objects>
99
+ $<TARGET_OBJECTS:stdlib_aes128_objects>
100
+ $<TARGET_OBJECTS:stdlib_merkle_tree_objects>
95
101
)
96
102
97
103
# With binaryen installed, it seems its wasm backend optimiser gets invoked automatically.
@@ -105,12 +111,35 @@ if(WASM)
105
111
-nostartfiles -O2 -Wl,--no -entry -Wl,--export-dynamic -Wl,--import-memory -Wl,--allow-undefined -Wl,--stack-first -Wl,-z,stack-size=1048576
106
112
)
107
113
114
+ # Repeat the above but for the smaller primitives.wasm
115
+ # Used in packages where we don't need the full contents of barretenberg
116
+ add_executable (
117
+ primitives.wasm
118
+ $<TARGET_OBJECTS:srs_objects>
119
+ $<TARGET_OBJECTS:numeric_objects>
120
+ $<TARGET_OBJECTS:crypto_sha256_objects>
121
+ $<TARGET_OBJECTS:crypto_aes128_objects>
122
+ $<TARGET_OBJECTS:crypto_blake2s_objects>
123
+ $<TARGET_OBJECTS:crypto_blake3s_objects>
124
+ $<TARGET_OBJECTS:crypto_generators_objects>
125
+ $<TARGET_OBJECTS:crypto_keccak_objects>
126
+ $<TARGET_OBJECTS:crypto_schnorr_objects>
127
+ $<TARGET_OBJECTS:crypto_pedersen_hash_objects>
128
+ $<TARGET_OBJECTS:crypto_pedersen_commitment_objects>
129
+ $<TARGET_OBJECTS:ecc_objects>
130
+ )
131
+
132
+ target_link_options (
133
+ primitives.wasm
134
+ PRIVATE
135
+ -nostartfiles -O2 -Wl,--no -entry -Wl,--export-dynamic -Wl,--import-memory -Wl,--allow-undefined -Wl,--stack-first -Wl,-z,stack-size=1048576
136
+ )
137
+
108
138
# TODO(blaine): Figure out how to Asyncify the wasm output.
109
139
# Binaryen's Asyncify transform produces wasm that has too many local variables to run in a WebAssembly
110
140
# instance. This likely would be "solved" by enabling the optimizations to reduce the number of locals,
111
141
# but using any optimization level results in a wasm file that takes an unusable amount of time to solve the
112
142
# most simple prood.
113
-
114
143
# find_program(WASM_OPT wasm-opt)
115
144
116
145
# if(NOT WASM_OPT)
@@ -124,6 +153,13 @@ if(WASM)
124
153
# VERBATIM
125
154
# )
126
155
156
+ add_custom_command (
157
+ TARGET primitives.wasm
158
+ POST_BUILD
159
+ COMMAND wasm-opt "$<TARGET_FILE:primitives.wasm>" -O2 -o "$<TARGET_FILE:primitives.wasm>"
160
+ VERBATIM
161
+ )
162
+
127
163
if (INSTALL_BARRETENBERG)
128
164
install (TARGETS barretenberg.wasm DESTINATION ${CMAKE_INSTALL_BINDIR} )
129
165
endif ()
@@ -142,15 +178,18 @@ if(WASM)
142
178
$<TARGET_OBJECTS:crypto_blake3s_objects>
143
179
$<TARGET_OBJECTS:crypto_keccak_objects>
144
180
$<TARGET_OBJECTS:crypto_schnorr_objects>
145
- $<TARGET_OBJECTS:crypto_pedersen_objects>
181
+ $<TARGET_OBJECTS:crypto_generators_objects>
182
+ $<TARGET_OBJECTS:crypto_pedersen_hash_objects>
183
+ $<TARGET_OBJECTS:crypto_pedersen_commitment_objects>
146
184
$<TARGET_OBJECTS:ecc_objects>
147
185
$<TARGET_OBJECTS:polynomials_objects>
148
186
$<TARGET_OBJECTS:plonk_objects>
149
187
$<TARGET_OBJECTS:honk_objects>
150
188
$<TARGET_OBJECTS:proof_system_objects>
151
189
$<TARGET_OBJECTS:stdlib_primitives_objects>
152
190
$<TARGET_OBJECTS:stdlib_schnorr_objects>
153
- $<TARGET_OBJECTS:stdlib_pedersen_objects>
191
+ $<TARGET_OBJECTS:stdlib_pedersen_hash_objects>
192
+ $<TARGET_OBJECTS:stdlib_pedersen_commitment_objects>
154
193
$<TARGET_OBJECTS:stdlib_blake2s_objects>
155
194
$<TARGET_OBJECTS:stdlib_blake3s_objects>
156
195
$<TARGET_OBJECTS:stdlib_sha256_objects>
@@ -174,15 +213,18 @@ else()
174
213
$<TARGET_OBJECTS:crypto_blake3s_objects>
175
214
$<TARGET_OBJECTS:crypto_keccak_objects>
176
215
$<TARGET_OBJECTS:crypto_schnorr_objects>
177
- $<TARGET_OBJECTS:crypto_pedersen_objects>
216
+ $<TARGET_OBJECTS:crypto_generators_objects>
217
+ $<TARGET_OBJECTS:crypto_pedersen_hash_objects>
218
+ $<TARGET_OBJECTS:crypto_pedersen_commitment_objects>
178
219
$<TARGET_OBJECTS:ecc_objects>
179
220
$<TARGET_OBJECTS:polynomials_objects>
180
221
$<TARGET_OBJECTS:plonk_objects>
181
222
$<TARGET_OBJECTS:honk_objects>
182
223
$<TARGET_OBJECTS:proof_system_objects>
183
224
$<TARGET_OBJECTS:stdlib_primitives_objects>
184
225
$<TARGET_OBJECTS:stdlib_schnorr_objects>
185
- $<TARGET_OBJECTS:stdlib_pedersen_objects>
226
+ $<TARGET_OBJECTS:stdlib_pedersen_hash_objects>
227
+ $<TARGET_OBJECTS:stdlib_pedersen_commitment_objects>
186
228
$<TARGET_OBJECTS:stdlib_blake2s_objects>
187
229
$<TARGET_OBJECTS:stdlib_blake3s_objects>
188
230
$<TARGET_OBJECTS:stdlib_sha256_objects>
0 commit comments