@@ -950,16 +950,51 @@ rule ${mlyRuleName}
950950 generator = true
951951` ;
952952async function othersNinja ( devmode = true ) {
953- var externalDeps = [ runtimeTarget ] ;
953+ var externalDeps = [ compilerTarget , fileTarget ( 'belt_internals.cmi' ) , fileTarget ( 'js.cmi' ) ] ;
954954 var ninjaOutput = devmode ? "build.ninja" : "release.ninja" ;
955955 var ninjaCwd = "others" ;
956956
957957 var templateOthersRules = `
958- bsc_flags = ${ commonBsFlags } -bs-cross-module-opt -make-runtime -nopervasives -unsafe -w +50 -warn-error A -open Bs_stdlib_mini -I ./runtime
958+ bsc_primitive_flags = ${ commonBsFlags } -bs-cross-module-opt -make-runtime -nopervasives -unsafe -w +50 -warn-error A
959+ bsc_flags = $bsc_primitive_flags -open Belt_internals
959960${ ruleCC ( ninjaCwd ) }
960961${ ninjaQuickBuidList ( [
961- [ [ "belt.cmj" , "belt.cmi" ] , "belt.ml" , "cc" , ninjaCwd , [ ] , [ ] , externalDeps ] ,
962- [ [ "node.cmj" , "node.cmi" ] , "node.ml" , "cc" , ninjaCwd , [ ] , [ ] , externalDeps ] ,
962+ [
963+ [ "belt.cmj" , "belt.cmi" ] ,
964+ "belt.ml" ,
965+ "cc" ,
966+ ninjaCwd ,
967+ [ [ "bsc_flags" , "$bsc_primitive_flags" ] ] ,
968+ [ ] ,
969+ [ compilerTarget ] ,
970+ ] ,
971+ [
972+ [ "js.cmj" , "js.cmi" ] ,
973+ "js.ml" ,
974+ "cc" ,
975+ ninjaCwd ,
976+ [ [ "bsc_flags" , "$bsc_primitive_flags" ] ] ,
977+ [ ] ,
978+ [ compilerTarget ] ,
979+ ] ,
980+ [
981+ [ "belt_internals.cmi" ] ,
982+ "belt_internals.mli" ,
983+ "cc" ,
984+ ninjaCwd ,
985+ [ [ "bsc_flags" , "$bsc_primitive_flags" ] ] ,
986+ [ ] ,
987+ [ compilerTarget ] ,
988+ ] ,
989+ [
990+ [ "node.cmj" , "node.cmi" ] ,
991+ "node.ml" ,
992+ "cc" ,
993+ ninjaCwd ,
994+ [ ] , // need -I ./runtime
995+ [ ] ,
996+ [ compilerTarget , fileTarget ( 'js.cmi' ) ] , // need js.cm*
997+ ] ,
963998] ) }
964999` ;
9651000 var othersDirFiles = fs . readdirSync ( othersDir , "ascii" ) ;
@@ -969,12 +1004,14 @@ ${ninjaQuickBuidList([
9691004 ( x . endsWith ( ".ml" ) || x . endsWith ( ".mli" ) ) &&
9701005 ! x . includes ( ".cppo" ) &&
9711006 ! x . includes ( ".pp" ) &&
972- ! x . includes ( "#" )
1007+ ! x . includes ( "#" ) &&
1008+ x !== "js.ml"
9731009 ) ;
9741010 var othersFiles = othersDirFiles . filter (
9751011 ( x ) =>
9761012 ! x . startsWith ( "js" ) &&
9771013 x !== "belt.ml" &&
1014+ x !== "belt_internals.mli" &&
9781015 x !== "node.ml" &&
9791016 ( x . endsWith ( ".ml" ) || x . endsWith ( ".mli" ) ) &&
9801017 ! x . includes ( "#" ) &&
@@ -1027,7 +1064,7 @@ async function stdlibNinja(devmode = true) {
10271064 var stdlibVersion = "stdlib-406" ;
10281065 var ninjaCwd = stdlibVersion ;
10291066 var stdlibDir = path . join ( jscompDir , stdlibVersion ) ;
1030- var externalDeps = [ othersTarget ] ;
1067+ var externalDeps = [ compilerTarget , othersTarget ] ;
10311068 var ninjaOutput = devmode ? "build.ninja" : "release.ninja" ;
10321069 var bsc_flags = "bsc_flags" ;
10331070 /**
@@ -1038,7 +1075,7 @@ async function stdlibNinja(devmode = true) {
10381075 // deprecations diabled due to string_of_float
10391076 var warnings = "-w -9-3-106 -warn-error A" ;
10401077 var templateStdlibRules = `
1041- ${ bsc_flags } = ${ commonBsFlags } -bs-cross-module-opt -make-runtime ${ warnings } -I runtime -I others
1078+ ${ bsc_flags } = ${ commonBsFlags } -bs-cross-module-opt -make-runtime ${ warnings } -I others
10421079${ ruleCC ( ninjaCwd ) }
10431080${ ninjaQuickBuidList ( [
10441081 // we make it still depends on external
@@ -1176,6 +1213,7 @@ ${mllList(ninjaCwd, [
11761213 await Promise . all ( depModulesForBscAsync ( sources , testDir , depsMap ) ) ;
11771214 var targets = collectTarget ( sources ) ;
11781215 var output = generateNinja ( depsMap , targets , ninjaCwd , [
1216+ runtimeTarget ,
11791217 stdlibTarget ,
11801218 pseudoTarget ( "$bsc" ) ,
11811219 ] ) ;
0 commit comments