@@ -629,7 +629,12 @@ <h1><a href="https://github.com/bloomberg/bucklescript">BuckleScript</a> User Ma
629
629
< li > < a href ="#_changes_to_command_line_options "> Changes to command line options</ a > </ li >
630
630
</ ul >
631
631
</ li >
632
- < li > < a href ="#_build_system_support "> Build system support</ a > </ li >
632
+ < li > < a href ="#_build_system_support "> Build system support</ a >
633
+ < ul class ="sectlevel2 ">
634
+ < li > < a href ="#_build_with_bsb_experimental "> Build with bsb (experimental)</ a > </ li >
635
+ < li > < a href ="#_build_using_make "> Build using Make</ a > </ li >
636
+ </ ul >
637
+ </ li >
633
638
< li > < a href ="#_faq "> FAQ</ a > </ li >
634
639
< li > < a href ="#_high_level_compiler_workflow "> High Level compiler workflow</ a >
635
640
< ul class ="sectlevel2 ">
@@ -985,8 +990,7 @@ <h4 id="_minimal_dependencies"><a class="anchor" href="#_minimal_dependencies"><
985
990
</ div >
986
991
< div class ="listingblock ">
987
992
< div class ="content ">
988
- < pre class ="pygments highlight "> < code data-lang ="sh "> < span class ="tok-nb "> export </ span > < span class ="tok-nv "> BS_RELEASE_BUILD</ span > < span class ="tok-o "> =</ span > 1
989
- make world</ code > </ pre >
993
+ < pre class ="pygments highlight "> < code data-lang ="sh "> make world</ code > </ pre >
990
994
</ div >
991
995
</ div >
992
996
< hr >
@@ -3753,6 +3757,121 @@ <h2 id="_build_system_support"><a class="anchor" href="#_build_system_support"><
3753
3757
</ tr >
3754
3758
</ table >
3755
3759
</ div >
3760
+ < div class ="sect2 ">
3761
+ < h3 id ="_build_with_bsb_experimental "> < a class ="anchor " href ="#_build_with_bsb_experimental "> </ a > Build with bsb (experimental)</ h3 >
3762
+ < div class ="paragraph ">
3763
+ < p > BuckleScript proivdes a native build tool using < a href ="https://github.com/ninja-build/ninja/releases "> ninja</ a > ,
3764
+ it is designed for fast feedback loop (typically 100ms feedback loop).</ p >
3765
+ </ div >
3766
+ < div class ="admonitionblock note ">
3767
+ < table >
3768
+ < tr >
3769
+ < td class ="icon ">
3770
+ < div class ="title "> Note</ div >
3771
+ </ td >
3772
+ < td class ="content ">
3773
+ < div class ="paragraph ">
3774
+ < p > Currently user needs install ninja first</ p >
3775
+ </ div >
3776
+ </ td >
3777
+ </ tr >
3778
+ </ table >
3779
+ </ div >
3780
+ < div class ="paragraph ">
3781
+ < p > It is a schema based build tool, the schema is
3782
+ < a href ="http://bloomberg.github.io/bucklescript/docson/#build-schema.json "> available</ a > </ p >
3783
+ </ div >
3784
+ < div class ="paragraph ">
3785
+ < p > Here is a typical configuration:</ p >
3786
+ </ div >
3787
+ < div class ="listingblock ">
3788
+ < div class ="title "> bsconfig.json</ div >
3789
+ < div class ="content ">
3790
+ < pre class ="pygments highlight "> < code data-lang ="js "> < span class ="tok-p "> {</ span >
3791
+ < span class ="tok-s2 "> "name"</ span > < span class ="tok-o "> :</ span > < span class ="tok-s2 "> "bs-string"</ span > < span class ="tok-p "> ,</ span >
3792
+ < span class ="tok-s2 "> "version"</ span > < span class ="tok-o "> :</ span > < span class ="tok-s2 "> "0.1.2"</ span > < span class ="tok-p "> ,</ span >
3793
+ < span class ="tok-s2 "> "ocaml-config"</ span > < span class ="tok-o "> :</ span > < span class ="tok-p "> {</ span >
3794
+ < span class ="tok-c1 "> // "bs-dependencies": ["bs-mocha"], </ span > < b class ="conum "> (1)</ b >
3795
+ < span class ="tok-s2 "> "sources"</ span > < span class ="tok-o "> :</ span > < span class ="tok-p "> [</ span >
3796
+ < span class ="tok-p "> {</ span >
3797
+ < span class ="tok-s2 "> "dir"</ span > < span class ="tok-o "> :</ span > < span class ="tok-s2 "> "src"</ span > < span class ="tok-p "> ,</ span >
3798
+ < span class ="tok-s2 "> "public"</ span > < span class ="tok-o "> :</ span > < span class ="tok-s2 "> "all"</ span > < span class ="tok-p "> ,</ span > < b class ="conum "> (2)</ b >
3799
+ < span class ="tok-s2 "> "files"</ span > < span class ="tok-o "> :</ span > < span class ="tok-p "> [</ span >
3800
+ < span class ="tok-s2 "> "bs_string.ml"</ span > < span class ="tok-p "> ,</ span >
3801
+ < span class ="tok-s2 "> "bs_nativeint.ml"</ span > < span class ="tok-p "> ,</ span >
3802
+ < span class ="tok-s2 "> "bs_math.ml"</ span > < span class ="tok-p "> ,</ span >
3803
+ < span class ="tok-s2 "> "bs_array.ml"</ span >
3804
+ < span class ="tok-p "> ]</ span >
3805
+ < span class ="tok-p "> },</ span >
3806
+ < span class ="tok-p "> {</ span > < span class ="tok-s2 "> "dir"</ span > < span class ="tok-o "> :</ span > < span class ="tok-s2 "> "test"</ span > < span class ="tok-p "> ,</ span >
3807
+ < span class ="tok-s2 "> "files"</ span > < span class ="tok-o "> :</ span > < span class ="tok-p "> [</ span >
3808
+ < span class ="tok-s2 "> "bs_string_test.ml"</ span >
3809
+ < span class ="tok-p "> ]</ span >
3810
+ < span class ="tok-p "> ,</ span >
3811
+ < span class ="tok-s2 "> "bs-dependencies"</ span > < span class ="tok-o "> :</ span > < span class ="tok-p "> [</ span > < span class ="tok-s2 "> "bs-mocha"</ span > < span class ="tok-p "> ]</ span > < b class ="conum "> (3)</ b >
3812
+ < span class ="tok-p "> }</ span >
3813
+ < span class ="tok-p "> ]</ span >
3814
+ < span class ="tok-p "> }</ span >
3815
+ < span class ="tok-p "> }</ span > </ code > </ pre >
3816
+ </ div >
3817
+ </ div >
3818
+ < div class ="colist arabic ">
3819
+ < ol >
3820
+ < li >
3821
+ < p > It is an extension to JSON with comment support</ p >
3822
+ </ li >
3823
+ < li >
3824
+ < p > List interfaces to be exposed to client</ p >
3825
+ </ li >
3826
+ < li >
3827
+ < p > Add more dependencies for some TARGETS</ p >
3828
+ </ li >
3829
+ </ ol >
3830
+ </ div >
3831
+ < div class ="paragraph ">
3832
+ < p > The entry point is < code > bsb.exe</ code > ,
3833
+ it will check if there is already < code > build.ninja</ code > in the build directory,
3834
+ if not or need regenerated it will generate a file < code > build.ninja</ code >
3835
+ and delegate the hard work to < code > ninja</ code > .</ p >
3836
+ </ div >
3837
+ < div class ="paragraph ">
3838
+ < p > The directory layout (after building) would be</ p >
3839
+ </ div >
3840
+ < div class ="listingblock ">
3841
+ < div class ="content ">
3842
+ < pre > .
3843
+ ├── lib
3844
+ │ ├── bs
3845
+ │ │ ├── src
3846
+ │ │ └── test
3847
+ │ ├── js
3848
+ │ │ ├── src
3849
+ │ │ └── test
3850
+ │ ├── amdjs < b class ="conum "> (1)</ b >
3851
+ │ │ ├── src
3852
+ │ │ └── test
3853
+ │ ├── goog < b class ="conum "> (2)</ b >
3854
+ │ │ ├── src
3855
+ │ │ └── test
3856
+ │ └── ocaml
3857
+ ├── scripts
3858
+ ├── src
3859
+ └── test</ pre >
3860
+ </ div >
3861
+ </ div >
3862
+ < div class ="colist arabic ">
3863
+ < ol >
3864
+ < li >
3865
+ < p > Will generate amdjs modules if flags are turned on</ p >
3866
+ </ li >
3867
+ < li >
3868
+ < p > Will generate goog modules if flags are turned on</ p >
3869
+ </ li >
3870
+ </ ol >
3871
+ </ div >
3872
+ </ div >
3873
+ < div class ="sect2 ">
3874
+ < h3 id ="_build_using_make "> < a class ="anchor " href ="#_build_using_make "> </ a > Build using Make</ h3 >
3756
3875
< div class ="paragraph ">
3757
3876
< p > BuckleScript distribution has < code > bsdep.exe</ code > which has the same interface as < code > ocamldep</ code > </ p >
3758
3877
</ div >
@@ -3839,6 +3958,7 @@ <h2 id="_build_system_support"><a class="anchor" href="#_build_system_support"><
3839
3958
</ div >
3840
3959
</ div >
3841
3960
</ div >
3961
+ </ div >
3842
3962
< div class ="sect1 ">
3843
3963
< h2 id ="_faq "> < a class ="anchor " href ="#_faq "> </ a > FAQ</ h2 >
3844
3964
< div class ="sectionbody ">
0 commit comments