@@ -621,6 +621,7 @@ <h1><a href="https://github.com/bloomberg/bucklescript">BuckleScript</a> User Ma
621
621
< li > < a href ="#_examples_3 "> Examples</ a > </ li >
622
622
</ ul >
623
623
</ li >
624
+ < li > < a href ="#_build_system_support "> Build system support</ a > </ li >
624
625
< li > < a href ="#_faq "> FAQ</ a > </ li >
625
626
< li > < a href ="#_high_level_compiler_workflow "> High Level compiler workflow</ a >
626
627
< ul class ="sectlevel2 ">
@@ -648,8 +649,9 @@ <h1><a href="https://github.com/bloomberg/bucklescript">BuckleScript</a> User Ma
648
649
< li > < a href ="#_difference_from_a_href_https_github_com_ocsigen_js_of_ocaml_js_of_ocaml_a "> Difference from < a href ="https://github.com/ocsigen/js_of_ocaml "> js_of_ocaml</ a > </ a > </ li >
649
650
</ ul >
650
651
</ li >
651
- < li > < a href ="#_changes "> Appendix A: CHANGES</ a > </ li >
652
- < li > < a href ="#_1_1_0_dev "> 1.1.0(dev)</ a > </ li >
652
+ < li > < a href ="#_1_1_1_dev "> Appendix A: 1.1.1(dev)</ a > </ li >
653
+ < li > < a href ="#_changes "> CHANGES</ a > </ li >
654
+ < li > < a href ="#_1_1_0 "> 1.1.0</ a > </ li >
653
655
< li > < a href ="#_1_03 "> 1.03</ a > </ li >
654
656
< li > < a href ="#_1_02 "> 1.02</ a > </ li >
655
657
< li > < a href ="#_1_01 "> 1.01</ a > </ li >
@@ -3664,15 +3666,13 @@ <h3 id="_examples_3"><a class="anchor" href="#_examples_3"></a>Examples</h3>
3664
3666
</ div >
3665
3667
</ div >
3666
3668
< div class ="sect1 ">
3667
- < h2 id ="_faq "> < a class ="anchor " href ="#_faq "> </ a > FAQ </ h2 >
3669
+ < h2 id ="_build_system_support "> < a class ="anchor " href ="#_build_system_support "> </ a > Build system support </ h2 >
3668
3670
< div class ="sectionbody ">
3669
- < div class ="qlist qanda ">
3670
- < ol >
3671
- < li >
3672
- < p > < em > How to adapt your build system?</ em > </ p >
3673
- < p > The BuckleScript compilation model is the same as the OCaml compiler.
3671
+ < div class ="paragraph ">
3672
+ < p > The BuckleScript compilation model is similar to OCaml native compiler.
3674
3673
If < code > b.ml</ code > depends on < code > a.ml</ code > , you have to compile < code > a.ml</ code > < strong > and</ strong > < code > a.mli</ code >
3675
3674
first.</ p >
3675
+ </ div >
3676
3676
< div class ="admonitionblock note ">
3677
3677
< table >
3678
3678
< tr >
@@ -3690,26 +3690,29 @@ <h2 id="_faq"><a class="anchor" href="#_faq"></a>FAQ</h2>
3690
3690
</ table >
3691
3691
</ div >
3692
3692
< div class ="paragraph ">
3693
+ < p > BuckleScript distribution has < code > bsdep.exe</ code > which has the same interface as < code > ocamldep</ code > </ p >
3694
+ </ div >
3695
+ < div class ="paragraph ">
3693
3696
< p > Here is a simple Makefile to get started:</ p >
3694
3697
</ div >
3695
3698
< div class ="listingblock ">
3696
3699
< div class ="title "> Makefile</ div >
3697
3700
< div class ="content ">
3698
3701
< pre class ="pygments highlight "> < code data-lang ="make "> < span class ="tok-nv "> OCAMLC</ span > < span class ="tok-o "> =</ span > bsc.exe < b class ="conum "> (1)</ b >
3699
- < span class ="tok-nv "> OCAMLDEP</ span > < span class ="tok-o "> =</ span > ocamldep < b class ="conum "> (2)</ b >
3702
+ < span class ="tok-nv "> OCAMLDEP</ span > < span class ="tok-o "> =</ span > bsdep.exe < b class ="conum "> (2)</ b >
3700
3703
< span class ="tok-nv "> SOURCE_LIST</ span > < span class ="tok-o "> :=</ span > src_a src_b
3701
3704
< span class ="tok-nv "> SOURCE_MLI</ span > < span class ="tok-o "> =</ span > < span class ="tok-k "> $(</ span > addsuffix .mli, < span class ="tok-k "> $(</ span > SOURCE_LIST< span class ="tok-k "> ))</ span >
3702
3705
< span class ="tok-nv "> SOURCE_ML</ span > < span class ="tok-o "> =</ span > < span class ="tok-k "> $(</ span > addsuffix .ml, < span class ="tok-k "> $(</ span > SOURCE_LIST< span class ="tok-k "> ))</ span >
3703
3706
< span class ="tok-nv "> TARGETS</ span > < span class ="tok-o "> :=</ span > < span class ="tok-k "> $(</ span > addsuffix .cmj, < span class ="tok-k "> $(</ span > SOURCE_LIST< span class ="tok-k "> ))</ span >
3704
3707
< span class ="tok-nv "> INCLUDES</ span > < span class ="tok-o "> =</ span >
3705
3708
< span class ="tok-nf "> all</ span > < span class ="tok-o "> :</ span > < span class ="tok-k "> $(</ span > < span class ="tok-nv "> TARGETS</ span > < span class ="tok-k "> )</ span >
3706
- < span class ="tok-nf "> %.cmi </ span > < span class ="tok-o "> :</ span > % .< span class ="tok-n "> mli </ span >
3709
+ < span class ="tok-nf "> .mli </ span > < span class ="tok-o "> :</ span > .< span class ="tok-n "> cmi </ span >
3707
3710
< span class ="tok-k "> $(</ span > OCAMLC< span class ="tok-k "> )</ span > < span class ="tok-k "> $(</ span > INCLUDES< span class ="tok-k "> )</ span > < span class ="tok-k "> $(</ span > COMPFLAGS< span class ="tok-k "> )</ span > -c < span class ="tok-nv "> $<</ span >
3708
- < span class ="tok-nf "> % .ml</ span > < span class ="tok-o "> :</ span > % .< span class ="tok-n "> cmj</ span > :
3711
+ < span class ="tok-nf "> .ml</ span > < span class ="tok-o "> :</ span > .< span class ="tok-n "> cmj</ span > :
3709
3712
< span class ="tok-k "> $(</ span > OCAMLC< span class ="tok-k "> )</ span > < span class ="tok-k "> $(</ span > INCLUDES< span class ="tok-k "> )</ span > < span class ="tok-k "> $(</ span > COMPFLAGS< span class ="tok-k "> )</ span > -c < span class ="tok-nv "> $<</ span >
3710
3713
< span class ="tok-cp "> -include .depend</ span >
3711
3714
< span class ="tok-nf "> depend</ span > < span class ="tok-o "> :</ span >
3712
- < span class ="tok-k "> $(</ span > OCAMLDEP< span class ="tok-k "> )</ span > < span class ="tok-k "> $(</ span > INCLUDES< span class ="tok-k "> )</ span > < span class ="tok-k "> $(</ span > SOURCE_ML< span class ="tok-k "> )</ span > < span class ="tok-k "> $(</ span > SOURCE_MLI< span class ="tok-k "> )</ span > < span class =" tok-p " > | </ span > sed -e < span class =" tok-s1 " > 's/\.cmx/.cmj/g' </ span > > .depend</ code > </ pre >
3715
+ < span class ="tok-k "> $(</ span > OCAMLDEP< span class ="tok-k "> )</ span > < span class ="tok-k "> $(</ span > INCLUDES< span class ="tok-k "> )</ span > < span class ="tok-k "> $(</ span > SOURCE_ML< span class ="tok-k "> )</ span > < span class ="tok-k "> $(</ span > SOURCE_MLI< span class ="tok-k "> )</ span > > .depend</ code > </ pre >
3713
3716
</ div >
3714
3717
</ div >
3715
3718
< div class ="colist arabic ">
@@ -3722,8 +3725,62 @@ <h2 id="_faq"><a class="anchor" href="#_faq"></a>FAQ</h2>
3722
3725
</ li >
3723
3726
</ ol >
3724
3727
</ div >
3728
+ < div class ="paragraph ">
3729
+ < p > In theory, people need run < code > make depend && make all</ code > , < code > make depend</ code > will calculate dependency
3730
+ while < code > make all</ code > will do the job.</ p >
3731
+ </ div >
3732
+ < div class ="paragraph ">
3733
+ < p > However, in practice, people used to use a file watch service,
3734
+ take < a href ="https://facebook.github.io/watchman/ "> watchman</ a > for example, you need json configure</ p >
3735
+ </ div >
3736
+ < div class ="listingblock ">
3737
+ < div class ="title "> build.json</ div >
3738
+ < div class ="content ">
3739
+ < pre class ="pygments highlight "> < code data-lang ="json "> < span class ="tok-p "> [</ span >
3740
+ < span class ="tok-s2 "> "trigger"</ span > < span class ="tok-p "> ,</ span > < span class ="tok-s2 "> "."</ span > < span class ="tok-p "> ,</ span > < span class ="tok-p "> {</ span >
3741
+ < span class ="tok-nt "> "name"</ span > < span class ="tok-p "> :</ span > < span class ="tok-s2 "> "build"</ span > < span class ="tok-p "> ,</ span >
3742
+ < span class ="tok-nt "> "expression"</ span > < span class ="tok-p "> :</ span > < span class ="tok-p "> [</ span > < span class ="tok-s2 "> "pcre"</ span > < span class ="tok-p "> ,</ span > < span class ="tok-s2 "> "(\\.(ml|mll|mly|mli|sh|sh)$|Makefile)"</ span > < span class ="tok-p "> ],</ span > < b class ="conum "> (1)</ b >
3743
+ < span class ="tok-nt "> "command"</ span > < span class ="tok-p "> :</ span > < span class ="tok-p "> [</ span > < span class ="tok-s2 "> "./build.sh"</ span > < span class ="tok-p "> ],</ span >
3744
+ < span class ="tok-nt "> "append_files"</ span > < span class ="tok-p "> :</ span > < span class ="tok-kc "> true</ span >
3745
+ < span class ="tok-p "> }</ span >
3746
+ < span class ="tok-p "> ]</ span > </ code > </ pre >
3747
+ </ div >
3748
+ </ div >
3749
+ < div class ="colist arabic ">
3750
+ < ol >
3751
+ < li >
3752
+ < p > whenever such files changed, it will trigger < code > command</ code > field to be run</ p >
3753
+ </ li >
3754
+ </ ol >
3755
+ </ div >
3756
+ < div class ="listingblock ">
3757
+ < div class ="title "> build.sh</ div >
3758
+ < div class ="content ">
3759
+ < pre class ="pygments highlight "> < code data-lang ="sh "> make -r -j8 all < b class ="conum "> (1)</ b >
3760
+ make depend < b class ="conum "> (2)</ b > </ code > </ pre >
3761
+ </ div >
3762
+ </ div >
3763
+ < div class ="colist arabic ">
3764
+ < ol >
3765
+ < li >
3766
+ < p > build</ p >
3725
3767
</ li >
3726
3768
< li >
3769
+ < p > update the dependency</ p >
3770
+ </ li >
3771
+ </ ol >
3772
+ </ div >
3773
+ < div class ="paragraph ">
3774
+ < p > Now in your working directory, type < code > watchman -j < build.json</ code > and enjoy the lightning build speed.</ p >
3775
+ </ div >
3776
+ </ div >
3777
+ </ div >
3778
+ < div class ="sect1 ">
3779
+ < h2 id ="_faq "> < a class ="anchor " href ="#_faq "> </ a > FAQ</ h2 >
3780
+ < div class ="sectionbody ">
3781
+ < div class ="qlist qanda ">
3782
+ < ol >
3783
+ < li >
3727
3784
< p > < em > How does IO work in browser?</ em > </ p >
3728
3785
< p > In general, it is very hard to simulate IO in browser, we recommend users to write bindings to NodeJS directly for server side, or use < code > Js.log</ code > in client side, see disucssions in < a href ="https://github.com/bloomberg/bucklescript/issues/748 "> #748</ a > </ p >
3729
3786
</ li >
@@ -4444,13 +4501,19 @@ <h3 id="_difference_from_a_href_https_github_com_ocsigen_js_of_ocaml_js_of_ocaml
4444
4501
</ div >
4445
4502
</ div >
4446
4503
< div class ="sect1 ">
4447
- < h2 id ="_changes "> < a class ="anchor " href ="#_changes "> </ a > Appendix A: CHANGES</ h2 >
4504
+ < h2 id ="_1_1_1_dev "> < a class ="anchor " href ="#_1_1_1_dev "> </ a > Appendix A: 1.1.1(dev)</ h2 >
4505
+ < div class ="sectionbody ">
4506
+
4507
+ </ div >
4508
+ </ div >
4509
+ < div class ="sect1 ">
4510
+ < h2 id ="_changes "> < a class ="anchor " href ="#_changes "> </ a > CHANGES</ h2 >
4448
4511
< div class ="sectionbody ">
4449
4512
4450
4513
</ div >
4451
4514
</ div >
4452
4515
< div class ="sect1 ">
4453
- < h2 id ="_1_1_0_dev "> < a class ="anchor " href ="#_1_1_0_dev "> </ a > 1.1.0(dev) </ h2 >
4516
+ < h2 id ="_1_1_0 "> < a class ="anchor " href ="#_1_1_0 "> </ a > 1.1.0</ h2 >
4454
4517
< div class ="sectionbody ">
4455
4518
< div class ="ulist ">
4456
4519
< ul >
0 commit comments