Skip to content

Commit e07d470

Browse files
authored
Merge pull request #1174 from bloomberg/re_entrant_bsb
refactoring bsb, make sure it is parsing re-entrant, so that later we could have a better global view
2 parents 3b1b211 + 131a474 commit e07d470

28 files changed

+5047
-5176
lines changed

docs/Manual.html

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ <h1><a href="https://github.com/bloomberg/bucklescript">BuckleScript</a> User Ma
518518
<li><a href="#_an_example_with_multiple_modules">An example with multiple modules</a></li>
519519
</ul>
520520
</li>
521-
<li><a href="#_built_in_npm_support">Built in npm support</a>
521+
<li><a href="#_built_in_npm_support">Built in NPM support</a>
522522
<ul class="sectlevel2">
523523
<li><a href="#_build_ocaml_library_as_a_npm_package">Build OCaml library as a npm package</a></li>
524524
<li><a href="#_to_use_ocaml_library_as_a_npm_package">To use OCaml library as a npm package</a></li>
@@ -1216,16 +1216,35 @@ <h3 id="_an_example_with_multiple_modules"><a class="anchor" href="#_an_example_
12161216
</div>
12171217
</div>
12181218
<div class="sect1">
1219-
<h2 id="_built_in_npm_support"><a class="anchor" href="#_built_in_npm_support"></a>Built in npm support</h2>
1219+
<h2 id="_built_in_npm_support"><a class="anchor" href="#_built_in_npm_support"></a>Built in NPM support</h2>
12201220
<div class="sectionbody">
12211221
<div class="sect2">
12221222
<h3 id="_build_ocaml_library_as_a_npm_package"><a class="anchor" href="#_build_ocaml_library_as_a_npm_package"></a>Build OCaml library as a npm package</h3>
12231223
<div class="paragraph">
1224+
<p>BuckleScript build system has built in support for NPM packages,
1225+
please checkout the section about the bsb for NPM support.</p>
1226+
</div>
1227+
<div class="admonitionblock note">
1228+
<table>
1229+
<tr>
1230+
<td class="icon">
1231+
<div class="title">Note</div>
1232+
</td>
1233+
<td class="content">
1234+
<div class="paragraph">
1235+
<p>This section covers some basics of how NPM is supported internally, normal users
1236+
are safe to skip this section.</p>
1237+
</div>
1238+
</td>
1239+
</tr>
1240+
</table>
1241+
</div>
1242+
<div class="paragraph">
12241243
<p>BuckleScript extends the OCaml compiler options with several flags to
12251244
provide better experience for NPM users.</p>
12261245
</div>
12271246
<div class="paragraph">
1228-
<p>In general, you are expected to deploy two kinds of artifacts, the
1247+
<p>In general, you are expected to see two kinds of build artifacts, the
12291248
generated JS files and meta data which your OCaml dependencies rely
12301249
on.</p>
12311250
</div>
@@ -1261,7 +1280,7 @@ <h3 id="_to_use_ocaml_library_as_a_npm_package"><a class="anchor" href="#_to_use
12611280
</div>
12621281
<div class="listingblock">
12631282
<div class="content">
1264-
<pre class="pygments highlight"><code data-lang="sh">bsc.exe -bs-package-include ocaml-package-name -c a.ml</code></pre>
1283+
<pre class="pygments highlight"><code data-lang="sh">bsc.exe -I path/to/ocaml/package/installed -c a.ml</code></pre>
12651284
</div>
12661285
</div>
12671286
</div>
@@ -1272,7 +1291,7 @@ <h3 id="_together"><a class="anchor" href="#_together"></a>Together</h3>
12721291
</div>
12731292
<div class="listingblock">
12741293
<div class="content">
1275-
<pre class="pygments highlight"><code data-lang="sh">bsc.exe -bs-package-include ocaml-package1 -bs-package-include ocaml-package2 -bs-package-name <span class="tok-nv">$npm_package_name</span> -bs-package-output commonjs:path/to/lib/js/ -c a.ml</code></pre>
1294+
<pre class="pygments highlight"><code data-lang="sh">bsc.exe -I path/to/ocaml/package1/installed -I path/to/ocaml/package2/installed -bs-package-name <span class="tok-nv">$npm_package_name</span> -bs-package-output commonjs:path/to/lib/js/ -c a.ml</code></pre>
12761295
</div>
12771296
</div>
12781297
</div>

jscomp/Makefile

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -252,10 +252,13 @@ OTHER_CORE_SRCS= bsppx_main bspack_main jsoo_main bspp_main js_cmi_datasets \
252252
OTHER_CORE_CMXS= $(addprefix core/, $(addsuffix .cmx, $(OTHER_CORE_SRCS)))
253253
BSB_SRCS= bsb_config bsb_build_schemas bsb_build_util \
254254
bsb_dir bsb_ninja \
255-
bsb_build_ui bsb_default\
255+
bsb_build_ui \
256+
bsb_default\
256257
bsb_dep_infos\
257-
bsb_gen\
258-
bsb_file\
258+
bsb_gen\
259+
bsb_file\
260+
bsb_config_types\
261+
bsb_config_parse\
259262
bsb_unix
260263

261264
BSB_CMXS=$(addprefix bsb/, $(addsuffix .cmx, $(BSB_SRCS)))

jscomp/all.depend

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -571,9 +571,8 @@ core/bspp_main.cmx : core/bspp_main.cmi
571571
core/js_cmi_datasets.cmx : ext/string_map.cmx core/js_cmi_datasets.cmi
572572
core/js_main.cmx : core/ocaml_parse.cmx core/ocaml_options.cmx \
573573
core/ocaml_batch_compile.cmx core/js_implementation.cmx \
574-
common/js_config.cmx ext/ext_string.cmx ext/ext_filename.cmx \
575-
common/bs_pkg.cmx depends/bs_exception.cmx \
576-
core/bs_conditional_initial.cmx core/js_main.cmi
574+
common/js_config.cmx ext/ext_string.cmx core/bs_conditional_initial.cmx \
575+
core/js_main.cmi
577576
ounit/oUnit.cmi :
578577
ounit/oUnitDiff.cmi :
579578
ounit/oUnit.cmx : ounit/oUnitUtils.cmx ounit/oUnitTypes.cmx \
@@ -649,32 +648,38 @@ bsb/bsb_build_ui.cmx : ext/string_vec.cmx ext/string_set.cmx \
649648
ext/ext_filename.cmx ext/ext_file_pp.cmx ext/ext_array.cmx \
650649
bsb/bsb_dir.cmx bsb/bsb_config.cmx bsb/bsb_build_util.cmx \
651650
bsb/bsb_build_schemas.cmx common/binary_cache.cmx bsb/bsb_build_ui.cmi
652-
bsb/bsb_build_util.cmx : ext/ext_sys.cmx ext/ext_string.cmx ext/ext_list.cmx \
653-
ext/ext_json.cmx ext/ext_filename.cmx ext/ext_array.cmx \
654-
bsb/bsb_config.cmx bsb/bsb_build_util.cmi
655-
bsb/bsb_config.cmx : ext/literals.cmx common/js_config.cmx \
656-
ext/ext_string.cmx ext/ext_filename.cmx bsb/bsb_config.cmi
657-
bsb/bsb_default.cmx : ext/string_set.cmx ext/literals.cmx ext/ext_sys.cmx \
651+
bsb/bsb_build_util.cmx : ext/literals.cmx ext/ext_sys.cmx ext/ext_string.cmx \
652+
ext/ext_list.cmx ext/ext_json.cmx ext/ext_filename.cmx ext/ext_array.cmx \
653+
bsb/bsb_config.cmx bsb/bsb_build_schemas.cmx common/bs_pkg.cmx \
654+
bsb/bsb_build_util.cmi
655+
bsb/bsb_config.cmx : ext/string_set.cmx ext/literals.cmx ext/ext_string.cmx \
656+
ext/ext_filename.cmx bsb/bsb_config.cmi
657+
bsb/bsb_config_parse.cmx : ext/string_hash_set.cmx ext/literals.cmx \
658658
ext/ext_string.cmx ext/ext_json.cmx ext/ext_filename.cmx \
659-
bsb/bsb_config.cmx bsb/bsb_build_util.cmx bsb/bsb_build_schemas.cmx \
660-
common/bs_pkg.cmx bsb/bsb_default.cmi
659+
ext/ext_file_pp.cmx bsb/bsb_default.cmx bsb/bsb_config_types.cmx \
660+
bsb/bsb_config.cmx bsb/bsb_build_util.cmx bsb/bsb_build_ui.cmx \
661+
bsb/bsb_build_schemas.cmx bsb/bsb_config_parse.cmi
662+
bsb/bsb_config_types.cmx : ext/string_hash_set.cmx bsb/bsb_config.cmx \
663+
bsb/bsb_build_ui.cmx
664+
bsb/bsb_default.cmx : ext/string_set.cmx ext/literals.cmx \
665+
ext/ext_pervasives.cmx ext/ext_filename.cmx bsb/bsb_config_types.cmx \
666+
bsb/bsb_config.cmx bsb/bsb_build_util.cmx common/bs_pkg.cmx \
667+
bsb/bsb_default.cmi
661668
bsb/bsb_dep_infos.cmx : bsb/bsb_dep_infos.cmi
662669
bsb/bsb_dir.cmx : bsb/bsb_dir.cmi
663670
bsb/bsb_file.cmx : bsb/bsb_file.cmi
664671
bsb/bsb_gen.cmx : ext/string_map.cmx ext/literals.cmx ext/ext_string.cmx \
665-
ext/ext_filename.cmx bsb/bsb_ninja.cmx bsb/bsb_config.cmx \
666-
bsb/bsb_build_util.cmx bsb/bsb_build_ui.cmx bsb/bsb_build_schemas.cmx \
667-
common/binary_cache.cmx bsb/bsb_gen.cmi
672+
ext/ext_filename.cmx bsb/bsb_ninja.cmx bsb/bsb_config_types.cmx \
673+
bsb/bsb_config.cmx bsb/bsb_build_util.cmx bsb/bsb_build_ui.cmx \
674+
bsb/bsb_build_schemas.cmx common/binary_cache.cmx bsb/bsb_gen.cmi
668675
bsb/bsb_helper_main.cmx : depends/depends_post_process.cmx \
669676
bsb/bsb_helper_main.cmi
670677
bsb/bsb_main.cmx : ext/string_vec.cmx ext/string_set.cmx \
671678
ext/string_hash_set.cmx ext/literals.cmx ext/ext_sys.cmx \
672-
ext/ext_string.cmx ext/ext_pervasives.cmx ext/ext_json.cmx \
673-
ext/ext_filename.cmx ext/ext_file_pp.cmx ext/ext_array.cmx \
674-
bsb/bsb_unix.cmx bsb/bsb_ninja.cmx bsb/bsb_gen.cmx bsb/bsb_file.cmx \
675-
bsb/bsb_dep_infos.cmx bsb/bsb_default.cmx bsb/bsb_config.cmx \
676-
bsb/bsb_build_util.cmx bsb/bsb_build_ui.cmx bsb/bsb_build_schemas.cmx \
677-
common/bs_pkg.cmx bsb/bsb_main.cmi
679+
ext/ext_string.cmx ext/ext_filename.cmx ext/ext_array.cmx \
680+
bsb/bsb_unix.cmx bsb/bsb_gen.cmx bsb/bsb_file.cmx bsb/bsb_dep_infos.cmx \
681+
bsb/bsb_config_types.cmx bsb/bsb_config_parse.cmx bsb/bsb_config.cmx \
682+
bsb/bsb_build_util.cmx bsb/bsb_main.cmi
678683
bsb/bsb_ninja.cmx : ext/string_set.cmx ext/string_map.cmx \
679684
ext/string_hash_set.cmx ext/literals.cmx ext/ext_sys.cmx \
680685
ext/ext_string.cmx ext/ext_filename.cmx bsb/bsb_config.cmx \
@@ -685,15 +690,17 @@ bsb/bsb_unix.cmx : ext/ext_sys.cmx ext/ext_string.cmx bsb/bsb_unix.cmi
685690
bsb/bsb_build_ui.cmi : ext/string_set.cmi ext/ext_json.cmi \
686691
ext/ext_file_pp.cmi common/binary_cache.cmi
687692
bsb/bsb_build_util.cmi : ext/ext_json.cmi
688-
bsb/bsb_config.cmi :
689-
bsb/bsb_default.cmi : ext/string_set.cmi ext/ext_json.cmi
693+
bsb/bsb_config.cmi : ext/string_set.cmi
694+
bsb/bsb_config_parse.cmi : bsb/bsb_config_types.cmx bsb/bsb_config.cmi
695+
bsb/bsb_default.cmi : ext/ext_json.cmi bsb/bsb_config_types.cmx \
696+
bsb/bsb_config.cmi
690697
bsb/bsb_dep_infos.cmi :
691698
bsb/bsb_dir.cmi :
692699
bsb/bsb_file.cmi :
693-
bsb/bsb_gen.cmi : bsb/bsb_default.cmi bsb/bsb_build_ui.cmi
700+
bsb/bsb_gen.cmi : bsb/bsb_config_types.cmx
694701
bsb/bsb_helper_main.cmi :
695702
bsb/bsb_main.cmi :
696-
bsb/bsb_ninja.cmi : ext/string_hash_set.cmi bsb/bsb_default.cmi \
703+
bsb/bsb_ninja.cmi : ext/string_hash_set.cmi bsb/bsb_config.cmi \
697704
bsb/bsb_build_ui.cmi
698705
bsb/bsb_unix.cmi :
699706
jscmj_main.cmx : common/js_config.cmx core/js_cmj_format.cmx \

jscomp/bin/bsb.d

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,16 @@ bin/bsb.ml : ext/ext_string.ml
1111
bin/bsb.ml : ext/ext_string.mli
1212
bin/bsb.ml : ext/ext_filename.ml
1313
bin/bsb.ml : ext/ext_filename.mli
14-
bin/bsb.ml : ext/map_gen.ml
15-
bin/bsb.ml : ext/string_map.ml
16-
bin/bsb.ml : ext/string_map.mli
17-
bin/bsb.ml : common/binary_cache.ml
18-
bin/bsb.ml : common/binary_cache.mli
19-
bin/bsb.ml : common/js_config.ml
20-
bin/bsb.ml : common/js_config.mli
14+
bin/bsb.ml : ext/set_gen.ml
15+
bin/bsb.ml : ext/string_set.ml
16+
bin/bsb.ml : ext/string_set.mli
2117
bin/bsb.ml : bsb/bsb_config.ml
2218
bin/bsb.ml : bsb/bsb_config.mli
2319
bin/bsb.ml : ext/ext_array.ml
2420
bin/bsb.ml : ext/ext_array.mli
21+
bin/bsb.ml : ext/map_gen.ml
22+
bin/bsb.ml : ext/string_map.ml
23+
bin/bsb.ml : ext/string_map.mli
2524
bin/bsb.ml : ext/ext_json.ml
2625
bin/bsb.ml : ext/ext_json.mli
2726
bin/bsb.ml : ext/ext_list.ml
@@ -30,32 +29,34 @@ bin/bsb.ml : ext/ext_sys.ml
3029
bin/bsb.ml : ext/ext_sys.mli
3130
bin/bsb.ml : bsb/bsb_build_util.ml
3231
bin/bsb.ml : bsb/bsb_build_util.mli
32+
bin/bsb.ml : common/binary_cache.ml
33+
bin/bsb.ml : common/binary_cache.mli
3334
bin/bsb.ml : bsb/bsb_dir.ml
3435
bin/bsb.ml : bsb/bsb_dir.mli
3536
bin/bsb.ml : ext/ext_file_pp.ml
3637
bin/bsb.ml : ext/ext_file_pp.mli
37-
bin/bsb.ml : ext/set_gen.ml
38-
bin/bsb.ml : ext/string_set.ml
39-
bin/bsb.ml : ext/string_set.mli
4038
bin/bsb.ml : ext/vec_gen.ml
4139
bin/bsb.ml : ext/resize_array.ml
4240
bin/bsb.ml : ext/resize_array.mli
4341
bin/bsb.ml : ext/string_vec.ml
4442
bin/bsb.ml : ext/string_vec.mli
4543
bin/bsb.ml : bsb/bsb_build_ui.ml
4644
bin/bsb.ml : bsb/bsb_build_ui.mli
47-
bin/bsb.ml : bsb/bsb_default.ml
48-
bin/bsb.ml : bsb/bsb_default.mli
49-
bin/bsb.ml : bsb/bsb_dep_infos.ml
50-
bin/bsb.ml : bsb/bsb_dep_infos.mli
51-
bin/bsb.ml : bsb/bsb_file.ml
52-
bin/bsb.ml : bsb/bsb_file.mli
5345
bin/bsb.ml : stubs/bs_hash_stubs.ml
5446
bin/bsb.ml : ext/ext_util.ml
5547
bin/bsb.ml : ext/ext_util.mli
5648
bin/bsb.ml : ext/hash_set_gen.ml
5749
bin/bsb.ml : ext/string_hash_set.ml
5850
bin/bsb.ml : ext/string_hash_set.mli
51+
bin/bsb.ml : bsb/bsb_config_types.ml
52+
bin/bsb.ml : bsb/bsb_default.ml
53+
bin/bsb.ml : bsb/bsb_default.mli
54+
bin/bsb.ml : bsb/bsb_config_parse.ml
55+
bin/bsb.ml : bsb/bsb_config_parse.mli
56+
bin/bsb.ml : bsb/bsb_dep_infos.ml
57+
bin/bsb.ml : bsb/bsb_dep_infos.mli
58+
bin/bsb.ml : bsb/bsb_file.ml
59+
bin/bsb.ml : bsb/bsb_file.mli
5960
bin/bsb.ml : bsb/bsb_ninja.ml
6061
bin/bsb.ml : bsb/bsb_ninja.mli
6162
bin/bsb.ml : bsb/bsb_gen.ml

0 commit comments

Comments
 (0)