UNPKG

bs-platform

Version:

bucklescript compiler, ocaml standard libary by bucklescript and its required runtime support

60 lines (48 loc) 1.62 kB
//@ts-check var cp = require('child_process') var path = require('path') var fs = require('fs') /** * @type {string} */ var cached = undefined // FIXME: this works in CI, but for release build, submodule // is carried, so it needs to be fixed /** * @returns{string} */ function getVersionPrefix(){ if(cached !== undefined){ return cached } var file = path.join(__dirname, '..', 'ocaml', 'VERSION') if(fs.existsSync(file)){ var version = fs.readFileSync(file, 'ascii') cached = version.substr(0, version.indexOf('+')) return cached } file = path.join(__dirname,'..','OCAML_VERSION') if(fs.existsSync(file)){ var version = fs.readFileSync(file, 'ascii') cached = version.substr(0, version.indexOf('+')) return cached } throw new Error("version file not found") } exports.getVersionPrefix = getVersionPrefix function build() { var ocamlSrcDir = path.join(__dirname, '..', 'ocaml') if(!fs.existsSync(ocamlSrcDir)){ fs.mkdirSync(ocamlSrcDir) } if (!fs.existsSync(path.join(ocamlSrcDir, 'VERSION'))) { cp.execSync(`tar xzvf ocaml.tar.gz`, { cwd: ocamlSrcDir, stdio: [0, 1, 2] }) } var prefix = path.normalize(path.join(__dirname, '..', 'native', getVersionPrefix())) cp.execSync('./configure -prefix ' + prefix + ' -no-ocamlbuild -no-curses -no-graph -no-pthread -no-debugger && make clean && make -j9 world.opt && make install ' , { cwd: path.join(__dirname, '..', 'ocaml'), stdio: [0, 1, 2] }) } exports.build = build if(require.main === module){ build() }