summaryrefslogtreecommitdiff
path: root/distribution/src/js
diff options
context:
space:
mode:
Diffstat (limited to 'distribution/src/js')
-rw-r--r--distribution/src/js/gulp-zeroc-slice2js/README.md47
-rw-r--r--distribution/src/js/gulp-zeroc-slice2js/package.json21
-rw-r--r--distribution/src/js/icejs-demos/README.md24
-rw-r--r--distribution/src/js/icejs-demos/bower.json25
-rw-r--r--distribution/src/js/icejs-demos/gulpfile.js217
-rw-r--r--distribution/src/js/icejs-demos/package.json31
-rw-r--r--distribution/src/js/npm/index.js14
-rw-r--r--distribution/src/js/npm/installSlice2js.js135
-rw-r--r--distribution/src/js/npm/package.json26
-rw-r--r--distribution/src/js/zeroc-icejs/.npmignore1
-rw-r--r--distribution/src/js/zeroc-icejs/README.md66
-rw-r--r--distribution/src/js/zeroc-icejs/bower.json27
-rw-r--r--distribution/src/js/zeroc-icejs/package.json20
-rw-r--r--distribution/src/js/zeroc-slice2js/.gitignore2
-rw-r--r--distribution/src/js/zeroc-slice2js/README.md55
-rwxr-xr-xdistribution/src/js/zeroc-slice2js/bin/slice2js-cli.js (renamed from distribution/src/js/npm/bin/cli.js)12
-rw-r--r--distribution/src/js/zeroc-slice2js/binding.gyp176
-rw-r--r--distribution/src/js/zeroc-slice2js/mcpp/config/linux/ia32/config.h227
-rw-r--r--distribution/src/js/zeroc-slice2js/mcpp/config/linux/x64/config.h227
-rw-r--r--distribution/src/js/zeroc-slice2js/mcpp/config/mac/x64/config.h227
-rw-r--r--distribution/src/js/zeroc-slice2js/mcpp/config/win/ia32/config.h7
-rw-r--r--distribution/src/js/zeroc-slice2js/mcpp/config/win/x64/config.h7
-rw-r--r--distribution/src/js/zeroc-slice2js/mcpp/mcpp.gyp68
-rw-r--r--distribution/src/js/zeroc-slice2js/package.json22
-rw-r--r--distribution/src/js/zeroc-slice2js/slice2js.js28
25 files changed, 1527 insertions, 185 deletions
diff --git a/distribution/src/js/gulp-zeroc-slice2js/README.md b/distribution/src/js/gulp-zeroc-slice2js/README.md
new file mode 100644
index 00000000000..f780dd07606
--- /dev/null
+++ b/distribution/src/js/gulp-zeroc-slice2js/README.md
@@ -0,0 +1,47 @@
+# gulp-zeroc-slice2js
+Gulp plugin to compile Slice files to JavaScript.
+
+## Install
+```bash
+$ npm install gulp-zeroc-slice2js --save-dev
+```
+
+## Usage
+```js
+var slice2js = require('gulp-zeroc-slice2js');
+
+gulp.task('compile', function() {
+ gulp.src('slice/*.ice')
+ .pipe(slice2js())
+ .pipe(gulp.dest(dest));
+});
+```
+
+## Options
+
+### exe `String`
+
+The path to the slice2js executable. By default the npm package [zeroc-slice2js](https://github.com/ZeroC-Inc/zeroc-slice2js) will be used.
+
+```js
+slice2js({exe: "/opt/Ice-3.6b/slice2js"})
+```
+
+### args `Array`
+
+The list of arguments passed to slice2js.
+
+```js
+slice2js({args: ["-I/opt/Ice-3.6b/slice"]})
+```
+
+For a full list of arguments you can pass to the slice2js compiler refer to the [zeroc-slice2js package](https://github.com/ZeroC-Inc/zeroc-slice2js).
+
+### dest `String`
+
+The destination directory for your compiled .js files, the same one you use for ``gulp.dest()``. If specified, the dependencies are computed and files will only be recompiled and passed down the gulp stream if changes have been made.
+
+```js
+slice2js({dest: "js/generated"})
+```
+
diff --git a/distribution/src/js/gulp-zeroc-slice2js/package.json b/distribution/src/js/gulp-zeroc-slice2js/package.json
new file mode 100644
index 00000000000..a594cee0fd0
--- /dev/null
+++ b/distribution/src/js/gulp-zeroc-slice2js/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "gulp-zeroc-slice2js",
+ "version": "3.6.0-beta.0",
+ "description": "Gulp plugin to compile Slice files to JavaScript",
+ "main": "index.js",
+ "author": "Zeroc, Inc.",
+ "homepage": "https://www.zeroc.com",
+ "repository": "https://github.com/zeroc-inc/gulp-zeroc-slice2js.git",
+ "license": "GPL-2.0+",
+ "keywords": [
+ "gulp",
+ "slice2js",
+ "Ice",
+ "IceJS"
+ ],
+ "dependencies": {
+ "zeroc-slice2js": "^3.6.0-beta.0",
+ "gulp-util": "^3.0.2",
+ "through2": "^0.6.3"
+ }
+}
diff --git a/distribution/src/js/icejs-demos/README.md b/distribution/src/js/icejs-demos/README.md
new file mode 100644
index 00000000000..6df44bb51f9
--- /dev/null
+++ b/distribution/src/js/icejs-demos/README.md
@@ -0,0 +1,24 @@
+# zeroc-icejs-demos
+Demos for [Ice for JavaScript](https://github.com/ZeroC-Inc/zeroc-icejs)
+
+## Requirements
+Compiling and running the Ice for JavaScript demos requires the following:
+- [Node.js](https://nodejs.org)
+- Dependencies for [node-gyp](https://github.com/TooTallNate/node-gyp) (Required to build the slice2js compiler).
+
+## Install
+```bash
+$ git clone https://github.com/ZeroC-Inc/icejs-demos icejs-demos
+$ cd icejs-demos
+$ npm install
+```
+
+## Running the scripts
+```bash
+$ npm run gulp:build // Build the demos
+$ npm run gulp:watch // Run demo web server; watch for files changes and reload
+$ npm run gulp:clean // Clean the demos
+```
+
+## Running the demos
+Running a demo requires running a corresponding (C++, Java, C#) server. For more information refer to the [documentation](https://doc.zeroc.com/display/Ice36/Sample+Programs).
diff --git a/distribution/src/js/icejs-demos/bower.json b/distribution/src/js/icejs-demos/bower.json
new file mode 100644
index 00000000000..b6107cd95f1
--- /dev/null
+++ b/distribution/src/js/icejs-demos/bower.json
@@ -0,0 +1,25 @@
+{
+ "name": "zeroc-icejs-demos",
+ "version": "3.6.0-beta.0",
+ "description": "Ice for JavaScript runtime",
+ "author": "Zeroc, Inc.",
+ "homepage": "http://zeroc.com",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/zeroc-inc/icejs-demos.git"
+ },
+ "license": "GPL-2.0+",
+ "keywords": [
+ "Ice",
+ "IceJS"
+ ],
+ "dependencies": {
+ "foundation": "~5.5.0",
+ "jquery": "~2.1.3",
+ "animo.js": "~1.0.2",
+ "spin.js": "~2.0.2",
+ "nouislider": "~7.0.10",
+ "highlightjs": "~8.4.0",
+ "zeroc-icejs": "~3.6.0-beta.0"
+ }
+}
diff --git a/distribution/src/js/icejs-demos/gulpfile.js b/distribution/src/js/icejs-demos/gulpfile.js
new file mode 100644
index 00000000000..5be6dd72995
--- /dev/null
+++ b/distribution/src/js/icejs-demos/gulpfile.js
@@ -0,0 +1,217 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+var bower = require("bower");
+var browserSync = require("browser-sync");
+var concat = require('gulp-concat');
+var del = require("del");
+var extreplace = require("gulp-ext-replace");
+var gulp = require("gulp");
+var gzip = require("gulp-gzip");
+var minifycss = require('gulp-minify-css');
+var newer = require('gulp-newer');
+var open = require("gulp-open");
+var path = require("path");
+var paths = require('vinyl-paths');
+var slice2js = require("gulp-zeroc-slice2js");
+var uglify = require("gulp-uglify");
+
+var HttpServer = require("./bin/HttpServer");
+
+var common =
+{
+ "scripts": [
+ "bower_components/foundation/js/vendor/modernizr.js",
+ "bower_components/foundation/js/vendor/jquery.js",
+ "bower_components/foundation/js/foundation.min.js",
+ "bower_components/nouislider/distribute/jquery.nouislider.all.js",
+ "bower_components/animo.js/animo.js",
+ "bower_components/spin.js/spin.js",
+ "bower_components/spin.js/jquery.spin.js",
+ "bower_components/highlightjs/highlight.pack.js",
+ "assets/icejs.js"],
+ "styles":
+ ["bower_components/foundation/css/foundation.css",
+ "bower_components/animo.js/animate+animo.css",
+ "bower_components/highlightjs/styles/vs.css",
+ "bower_components/nouislider/distribute/jquery.nouislider.min.css",
+ "assets/icejs.css"]
+};
+
+gulp.task("reload", [],
+ function()
+ {
+ browserSync.reload();
+ });
+
+gulp.task("bower", [],
+ function(cb)
+ {
+ bower.commands.install().on("end", function(){ cb(); });
+ });
+
+gulp.task("common:js", ["bower"],
+ function()
+ {
+ return gulp.src(common.scripts)
+ .pipe(newer("assets/common.min.js"))
+ .pipe(concat("common.min.js"))
+ .pipe(uglify())
+ .pipe(gulp.dest("assets"))
+ .pipe(gzip())
+ .pipe(gulp.dest("assets"));
+ });
+
+gulp.task("common:js:watch", [],
+ function()
+ {
+ gulp.watch(common.scripts, ["common:js"]);
+ gulp.watch("assets/common.min.js.gz", ["reload"]);
+ });
+
+gulp.task("common:css", ["bower"],
+ function()
+ {
+ return gulp.src(common.styles)
+ .pipe(newer("assets/common.css"))
+ .pipe(concat("common.css"))
+ .pipe(minifycss())
+ .pipe(gulp.dest("assets"))
+ .pipe(gzip())
+ .pipe(gulp.dest("assets"));
+ });
+
+gulp.task("common:css:watch", [],
+ function()
+ {
+ gulp.watch(common.styles, ["common:css"]);
+ gulp.watch("assets/common.css.gz", ["reload"]);
+ });
+
+gulp.task("common:clean", [],
+ function()
+ {
+ del(["assets/common.css", "assets/common.min.js"]);
+ });
+
+var demos = [
+ "Ice/hello",
+ "Ice/throughput",
+ "Ice/minimal",
+ "Ice/latency",
+ "Ice/bidir",
+ "Glacier2/chat",
+ "ChatDemo"];
+
+function demoGenerateTask(name) { return "demo_" + name.replace("/", "_"); }
+function demoWatchTask(name) { return "demo_" + name.replace("/", "_") + ":watch"; }
+function demoCleanTask(name) { return "demo_" + name.replace("/", "_") + ":clean"; }
+function demoGeneratedFile(file){ return path.join(path.basename(file, ".ice") + ".js"); }
+
+demos.forEach(
+ function(name)
+ {
+ gulp.task(demoGenerateTask(name), ["common:js", "common:css"],
+ function()
+ {
+ return gulp.src(path.join(name, "*.ice"))
+ .pipe(slice2js({args: ["-I" + name], dest: name}))
+ .pipe(gulp.dest(name));
+ });
+
+ gulp.task(demoWatchTask(name), [],
+ function()
+ {
+ gulp.watch(path.join(name, "*.ice"), [demoGenerateTask(name)]);
+
+ gulp.watch([path.join(name, "*.js"),
+ path.join(name, "browser", "*.js"),
+ path.join(name, "*.html")], ["reload"]);
+ });
+
+ gulp.task(demoCleanTask(name), ["common:clean"],
+ function()
+ {
+ return gulp.src(path.join(name, "*.ice"))
+ .pipe(extreplace(".js"))
+ .pipe(paths(del));
+ });
+ });
+
+var minDemos =
+{
+ "Ice/minimal":
+ {
+ srcs: [
+ "bower_packages/Ice.min.js",
+ "demo/Ice/minimal/Hello.js",
+ "demo/Ice/minimal/browser/Client.js"],
+ dest: "demo/Ice/minimal/browser/"
+ },
+ "ChatDemo":
+ {
+ srcs: [
+ "bower_packages/Ice.min.js",
+ "bower_packages/Glacier2.min.js",
+ "demo/ChatDemo/Chat.js",
+ "demo/ChatDemo/ChatSession.js",
+ "demo/ChatDemo/Client.js"],
+ dest: "demo/ChatDemo"
+ }
+};
+
+function demoTaskName(name) { return "demo_" + name.replace("/", "_"); }
+function minDemoTaskName(name) { return demoTaskName(name) + ":min"; }
+function minDemoWatchTaskName(name) { return minDemoTaskName(name) + ":watch"; }
+function minDemoCleanTaskName(name) { return minDemoTaskName(name) + ":clean"; }
+
+Object.keys(minDemos).forEach(
+ function(name)
+ {
+ var demo = minDemos[name];
+
+ gulp.task(minDemoTaskName(name), [demoTaskName(name)],
+ function()
+ {
+ return gulp.src(demo.srcs)
+ .pipe(newer(path.join(demo.dest, "Client.min.js")))
+ .pipe(concat("Client.min.js"))
+ .pipe(uglify())
+ .pipe(gulp.dest(demo.dest))
+ .pipe(gzip())
+ .pipe(gulp.dest(demo.dest));
+ });
+
+ gulp.task(minDemoWatchTaskName(name), [minDemoTaskName(name)],
+ function()
+ {
+ gulp.watch(demo.srcs, [minDemoTaskName(name)]);
+ });
+
+ gulp.task(minDemoCleanTaskName(name), [],
+ function()
+ {
+ del([path.join(demo.dest, "Client.min.js"),
+ path.join(demo.dest, "Client.min.js.gz")]);
+ });
+ });
+
+gulp.task("demo", demos.map(demoGenerateTask).concat(Object.keys(minDemos).map(minDemoTaskName)));
+gulp.task("demo:watch", demos.map(demoWatchTask).concat(Object.keys(minDemos).map(minDemoWatchTaskName)));
+gulp.task("demo:clean", demos.map(demoCleanTask).concat(Object.keys(minDemos).map(minDemoCleanTaskName)));
+gulp.task("build", ["demo"]);
+gulp.task("watch", ["demo", "demo:watch", "common:css:watch", "common:js:watch"],
+ function()
+ {
+ browserSync();
+ HttpServer();
+ return gulp.src("./index.html").pipe(open("", {url: "http://127.0.0.1:8080/index.html"}));
+ });
+gulp.task("clean", ["demo:clean", "common:clean"]);
+gulp.task("default", ["build"]);
diff --git a/distribution/src/js/icejs-demos/package.json b/distribution/src/js/icejs-demos/package.json
new file mode 100644
index 00000000000..b34a71b65c3
--- /dev/null
+++ b/distribution/src/js/icejs-demos/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "zeroc-icejs-demos",
+ "version": "3.6.0-beta.0",
+ "description": "Sample programs for Ice (Internet Communications Engine)",
+ "author": "ZeroC, Inc. <info@zeroc.com>",
+ "homepage": "https://www.zeroc.com",
+ "repository": "https://github.com/zeroc-inc/icejs-demos.git",
+ "license": "GPL-2.0+",
+ "dependencies": {
+ "bower": "^1.3.12",
+ "browser-sync": "^1.9.0",
+ "del": "^1.1.1",
+ "gulp": "^3.8.10",
+ "gulp-concat": "^2.4.3",
+ "gulp-ext-replace": "^0.1.0",
+ "gulp-gzip": "0.0.8",
+ "gulp-minify-css": "^0.3.12",
+ "gulp-newer": "^0.5.0",
+ "gulp-open": "^0.3.1",
+ "gulp-uglify": "^1.0.2",
+ "gulp-zeroc-slice2js": "^3.6.0-beta.0",
+ "http-proxy": "^1.8.1",
+ "zeroc-icejs": "^3.6.0-beta.0",
+ "vinyl-paths": "^1.0.0"
+ },
+ "scripts": {
+ "gulp:build": "gulp",
+ "gulp:watch": "gulp watch",
+ "gulp:clean": "gulp clean"
+ }
+}
diff --git a/distribution/src/js/npm/index.js b/distribution/src/js/npm/index.js
deleted file mode 100644
index 569b78a0ecc..00000000000
--- a/distribution/src/js/npm/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice is licensed to you under the terms described in the
-// ICE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-
-module.exports.Ice = require("./lib/Ice/Ice").Ice;
-module.exports.IceMX = require("./lib/Ice/Ice").IceMX;
-module.exports.Glacier2 = require("./lib/Glacier2/Glacier2").Glacier2;
-module.exports.IceGrid = require("./lib/IceGrid/IceGrid").IceGrid;
-module.exports.IceStorm = require("./lib/IceStorm/IceStorm").IceStorm;
diff --git a/distribution/src/js/npm/installSlice2js.js b/distribution/src/js/npm/installSlice2js.js
deleted file mode 100644
index 6a143fc0fa2..00000000000
--- a/distribution/src/js/npm/installSlice2js.js
+++ /dev/null
@@ -1,135 +0,0 @@
-// **********************************************************************
-// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice is licensed to you under the terms described in th
-// ICE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-
-var execFile = require('child_process').execFile;
-var fs = require('fs');
-var http = require('http');
-var os = require('os');
-var path = require('path');
-var url = require('url');
-var util = require('util');
-var zlib = require('zlib');
-var platform = os.platform();
-var arch = os.arch();
-
-var BIN_DIR = path.join(__dirname, 'bin');
-var slice2js = platform === 'win32' ? 'slice2js.exe' : 'slice2js';
-slice2js = path.join(BIN_DIR, slice2js);
-
-var pkgVer = require('./package.json').slice2js;
-
-function downloadSlice2js(redirectUrl)
-{
- if(fs.existsSync(slice2js))
- {
- fs.unlinkSync(slice2js);
- }
-
- var SLICE2JS_URL = redirectUrl ||
- process.env.SLICE2JS_URL ||
- process.env.npm_config_SLICE2JS_URL ||
- 'http://zeroc.com/download/3.6/';
-
- var dlPath =
- {
- 'darwin' :
- {
- 'x64' : util.format('slice2js-%s-osx.gz', pkgVer)
- },
- 'linux':
- {
- 'x64' : util.format('slice2js-%s-linux-%s.gz', pkgVer, arch),
- 'x86' : util.format('slice2js-%s-linux-%s.gz', pkgVer, arch)
- },
- 'win32':
- {
- 'x64' : util.format('slice2js-%s-win-%s.exe.gz', pkgVer, arch),
- 'x86' : util.format('slice2js-%s-win-%s.exe.gz', pkgVer, arch)
- }
- };
-
- var slice2js_url = url.resolve(SLICE2JS_URL, dlPath[platform][arch]);
- console.log('Downloading slice2js from: ' + slice2js_url);
- var req = http.get(slice2js_url,
- function(res)
- {
- if(res.statusCode !== 200)
- {
- if(res.statusCode === 302 && !redirectUrl)
- {
- return downloadSlice2js(res.headers.location);
- }
- else if (res.statusCode === 404)
- {
- console.log('Unable to find slice2js at %s. Proceeding without it.', SLICE2JS_URL);
- process.exit(0);
- }
- else
- {
- consle.log('There was an error downloading slice2js.');
- process.exit(0);
- }
- }
-
- var progress = 0;
- var dlStream = fs.createWriteStream(slice2js + '.gz');
- res.pipe(dlStream);
-
- res.on('end',
- function()
- {
- console.log('Slice2js downloaded.');
- dlStream.end();
-
- var zipSteam = fs.createReadStream(slice2js+'.gz');
- var fileStream = fs.createWriteStream(slice2js, {flags : 'w', mode: 33261});
- zipSteam.pipe(zlib.createGunzip()).pipe(fileStream);
- fileStream.on('close',
- function()
- {
- fs.unlinkSync(slice2js+'.gz');
- });
- });
- });
-
- req.on('error',
- function(err)
- {
- console.log('There was an error retrieving slice2js. ' + err.message);
- });
-}
-
-if(fs.existsSync(slice2js) === true)
-{
-
- execFile(slice2js, ['--version'],
- function(err, stdout, stderr)
- {
- if (err)
- {
- return downloadSlice2js();
- }
-
- var version = stdout.trim() || stderr.trim();
- if(version === pkgVer)
- {
- return;
- }
- else
- {
- downloadSlice2js();
- }
- });
-}
-else
-{
- downloadSlice2js();
-}
-
-module.exports.path = slice2js;
-module.exports.version = pkgVer;
diff --git a/distribution/src/js/npm/package.json b/distribution/src/js/npm/package.json
deleted file mode 100644
index d975719ce89..00000000000
--- a/distribution/src/js/npm/package.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "name": "icejs",
- "version": "3.5.1",
- "main": "index.js",
- "bin": {
- "slice2js": "bin/cli.js"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "postinstall": "node installSlice2js.js",
- "test": "slice2js --version"
- },
- "keywords": [
- "Ice",
- "IceJS"
- ],
- "slice2js": "3.5.1",
- "author": "Zeroc, Inc.",
- "repository": {
- "type": "git",
- "url": ""
- },
- "license": "GPL 2.0"
-}
diff --git a/distribution/src/js/zeroc-icejs/.npmignore b/distribution/src/js/zeroc-icejs/.npmignore
new file mode 100644
index 00000000000..bb4964323e1
--- /dev/null
+++ b/distribution/src/js/zeroc-icejs/.npmignore
@@ -0,0 +1 @@
+bower.json
diff --git a/distribution/src/js/zeroc-icejs/README.md b/distribution/src/js/zeroc-icejs/README.md
new file mode 100644
index 00000000000..e5bd9b47daa
--- /dev/null
+++ b/distribution/src/js/zeroc-icejs/README.md
@@ -0,0 +1,66 @@
+# zeroc-icejs
+Ice for JavaScript runtime
+
+## Install
+
+You can install Ice for JavaScript with either `npm` or `bower`.
+
+### npm
+```bash
+$ npm install zeroc-icejs --save
+```
+
+This module also includes the browser version of Ice for JavaScript.
+
+### bower
+
+```bash
+$ bower install zeroc-icejs --save
+```
+
+## Usage
+
+### npm
+
+```js
+var Ice = require('zeroc-icejs').Ice;
+var Glacier2 = require('zeroc-icejs').Glacier2;
+var IceStorm = require('zeroc-icejs').IceStorm;
+var IceGrid = require('zeroc-icejs').IceGrid;
+
+var communicator = Ice.initialize(process.argv);
+var proxy = communicator.stringToProxy("hello:tcp -h localhost -p 10000");
+```
+
+The npm package also includes the browser version of Ice for JavaScript. Refer to the `bower` documentation below, replacing `bower_components` with `node_modules`.
+
+### bower
+
+Add the necessary `<script>` tags to your html to include the Ice for JavaScript components you require.
+
+```html
+<script src="/bower_components/zeroc-icejs/lib/Ice.js"></script>
+<script src="/bower_components/zeroc-icejs/lib/Glacier2.js"></script>
+<script src="/bower_components/zeroc-icejs/lib/IceStorm.js"></script>
+<script src="/bower_components/zeroc-icejs/lib/IceGrid.js"></script>
+<script type="text/javascript">
+ var communicator = Ice.initialize();
+ var proxy = communicator.stringToProxy("hello:ws -h localhost -p 10002");
+</script>
+```
+
+Minified versions are available with the `.min.js` extension.
+
+## Documentation
+
+See the [Ice Documentation](https://doc.zeroc.com/display/Ice36/JavaScript+Mapping).
+
+## Slice2js Compiler
+
+To compile [Slice](https://doc.zeroc.com/display/Ice36/The+Slice+Language) files to JavaScript see the following:
+- [zeroc-slice2js](https://github.com/ZeroC-Inc/zeroc-slice2js)
+- [gulp-zeroc-slice2js](https://github.com/ZeroC-Inc/gulp-zeroc-slice2js)
+
+## Demos
+
+A collection of demos for Ice for JavaScript can be found [here](https://github.com/ZeroC-Inc/icejs-demos).
diff --git a/distribution/src/js/zeroc-icejs/bower.json b/distribution/src/js/zeroc-icejs/bower.json
new file mode 100644
index 00000000000..0e2f1b83820
--- /dev/null
+++ b/distribution/src/js/zeroc-icejs/bower.json
@@ -0,0 +1,27 @@
+{
+ "name": "zeroc-icejs",
+ "version": "3.6.0-beta.0",
+ "description": "Ice for JavaScript runtime",
+ "author": "Zeroc, Inc.",
+ "homepage": "https://www.zeroc.com",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/zeroc-inc/zeroc-icejs.git"
+ },
+ "license": "GPL-2.0+",
+ "main": [
+ "lib/Glacier2.js",
+ "lib/Ice.js",
+ "lib/IceStorm.js",
+ "lib/IceGrid.js"
+ ],
+ "keywords": [
+ "Ice",
+ "IceJS"
+ ],
+ "ignore": [
+ ".npmignore",
+ "package.json",
+ "src"
+ ]
+}
diff --git a/distribution/src/js/zeroc-icejs/package.json b/distribution/src/js/zeroc-icejs/package.json
new file mode 100644
index 00000000000..436e6d65575
--- /dev/null
+++ b/distribution/src/js/zeroc-icejs/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "zeroc-icejs",
+ "version": "3.6.0-beta.0",
+ "description": "Ice for JavaScript runtime",
+ "author": "Zeroc, Inc.",
+ "homepage": "https://www.zeroc.com",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/zeroc-inc/zeroc-icejs.git"
+ },
+ "license": "GPL-2.0+",
+ "main": "src/zeroc-icejs.js",
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "keywords": [
+ "Ice",
+ "IceJS"
+ ]
+}
diff --git a/distribution/src/js/zeroc-slice2js/.gitignore b/distribution/src/js/zeroc-slice2js/.gitignore
new file mode 100644
index 00000000000..847e18c072b
--- /dev/null
+++ b/distribution/src/js/zeroc-slice2js/.gitignore
@@ -0,0 +1,2 @@
+build
+npm-debug.log
diff --git a/distribution/src/js/zeroc-slice2js/README.md b/distribution/src/js/zeroc-slice2js/README.md
new file mode 100644
index 00000000000..6664f0cab34
--- /dev/null
+++ b/distribution/src/js/zeroc-slice2js/README.md
@@ -0,0 +1,55 @@
+# zeroc-slice2js
+Compiles Slice files to Javascript.
+
+## Install
+```bash
+$ npm install zeroc-slice2js --save-dev
+```
+
+_See below for command line usage._
+
+## Usage
+```js
+var slice2js = require('zeroc-slice2js');
+slice2js(["Hello.ice"]);
+```
+
+_The zeroc-slice2js module includes all of the Ice Slice definitions and automatically adds the slice directory to the include file search path._
+
+## Options
+
+### args `Array`
+
+The list of arguments passed to slice2js
+
+```bash
+-h, --help Show this message.
+-v, --version Display the Ice version.
+-DNAME Define NAME as 1.
+-DNAME=DEF Define NAME as DEF.
+-UNAME Remove any definition for NAME.
+-IDIR Put DIR in the include file search path.
+-E Print preprocessor output on stdout.
+--stdout Print genreated code to stdout.
+--output-dir DIR Create files in the directory DIR.
+--depend Generate Makefile dependencies.
+--depend-json Generate Makefile dependencies in JSON format.
+-d, --debug Print debug messages.
+--ice Permit `Ice` prefix (for building Ice source code only).
+--underscore Permit underscores in Slice identifiers.
+--icejs Build icejs module
+```
+
+Additional documentation can be found [here](https://doc.zeroc.com/display/Ice36/slice2js+Command-Line+Options).
+
+## Command Line
+Slice2js can also be installed globally and used from the command line.
+
+```bash
+$ npm install -g zeroc-slice2js
+$ slice2js Hello.ice
+```
+
+## Gulp
+
+For gulp integration refer to the [gulp-zeroc-slice2js package](https://github.com/ZeroC-Inc/gulp-zeroc-slice2js).
diff --git a/distribution/src/js/npm/bin/cli.js b/distribution/src/js/zeroc-slice2js/bin/slice2js-cli.js
index d692d5aafaf..b200680842c 100755
--- a/distribution/src/js/npm/bin/cli.js
+++ b/distribution/src/js/zeroc-slice2js/bin/slice2js-cli.js
@@ -10,13 +10,5 @@
'use strict';
-var binPath = require('../installSlice2js').path;
-var spawn = require('child_process').spawn;
-var path = require('path');
-
-var SLICE_DIR = path.resolve(path.join('..', 'slice'));
-
-var args = process.argv.slice(2);
-args.push('-I'+SLICE_DIR);
-
-spawn(binPath, args, { stdio: 'inherit' }).on('exit', process.exit);
+var slice2js = require('../slice2js');
+slice2js(process.argv.slice(2), {stdio: 'inherit'}).on('exit', process.exit);
diff --git a/distribution/src/js/zeroc-slice2js/binding.gyp b/distribution/src/js/zeroc-slice2js/binding.gyp
new file mode 100644
index 00000000000..ef12cc88f84
--- /dev/null
+++ b/distribution/src/js/zeroc-slice2js/binding.gyp
@@ -0,0 +1,176 @@
+{
+ 'target_defaults': {
+ 'defines': [
+ 'ICE_STATIC_LIBS',
+ 'SLICE_API_EXPORTS',
+ ],
+ 'conditions': [
+ ['OS=="win"', {
+ 'msvs_disabled_warnings': [
+ 4273, # inconsistent dll linkage
+ 4250
+ ],
+ }]
+ ]
+ },
+
+ 'targets': [
+ {
+ 'target_name': 'slice2js',
+ 'type': 'executable',
+ 'dependencies' : ['slice', 'iceutil'],
+
+ 'configurations': {
+ 'Release': {
+ 'msvs_settings': {
+ 'VCCLCompilerTool': {
+ 'RuntimeLibrary': '2',
+ 'ExceptionHandling': '1',
+ 'RuntimeTypeInfo' : 'true',
+ 'WarnAsError' : 'true'
+ },
+ },
+ },
+ },
+ 'sources': [
+ 'src/slice2js/Gen.cpp',
+ 'src/slice2js/JsUtil.cpp',
+ 'src/slice2js/Main.cpp'
+ ],
+ 'include_dirs' : [
+ 'include',
+ 'src/slice2js'
+ ],
+ 'cflags_cc' : [
+ '-fexceptions'
+ ],
+ 'cflags_cc!' : [
+ '-fno-rtti'
+ ],
+ 'conditions': [
+ ['OS=="win"', {
+ 'libraries': [
+ '-lrpcrt4.lib', '-ladvapi32.lib', '-lDbgHelp.lib'
+ ]
+ }]
+ ],
+ 'xcode_settings': {
+ 'GCC_ENABLE_CPP_RTTI': 'YES',
+ "GCC_ENABLE_CPP_EXCEPTIONS": "YES",
+ "MACOSX_DEPLOYMENT_TARGET":"10.9"
+ }
+ },
+
+ {
+ 'target_name': 'slice',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'mcpp/mcpp.gyp:mcpp',
+ 'iceutil'
+ ],
+ 'configurations': {
+ 'Release': {
+ 'msvs_settings': {
+ 'VCCLCompilerTool': {
+ 'RuntimeLibrary': '2',
+ 'ExceptionHandling': '1',
+ 'RuntimeTypeInfo' : 'true',
+ 'WarnAsError' : 'true'
+ }
+ }
+ }
+ },
+ 'sources': [
+ 'src/Slice/CPlusPlusUtil.cpp',
+ 'src/Slice/DotNetNames.cpp',
+ 'src/Slice/JavaUtil.cpp',
+ 'src/Slice/PHPUtil.cpp',
+ 'src/Slice/PythonUtil.cpp',
+ 'src/Slice/Util.cpp',
+ 'src/Slice/Checksum.cpp',
+ 'src/Slice/FileTracker.cpp',
+ 'src/Slice/MD5.cpp',
+ 'src/Slice/Parser.cpp',
+ 'src/Slice/RubyUtil.cpp',
+ 'src/Slice/CsUtil.cpp',
+ 'src/Slice/Grammar.cpp',
+ 'src/Slice/MD5I.cpp',
+ 'src/Slice/Preprocessor.cpp',
+ 'src/Slice/Scanner.cpp'
+ ],
+ 'include_dirs' : [
+ 'include',
+ 'src'
+ ],
+ 'cflags_cc' : [
+ '-fexceptions'
+ ],
+ 'cflags_cc!' : [
+ '-fno-rtti'
+ ],
+ 'xcode_settings': {
+ 'GCC_ENABLE_CPP_RTTI': 'YES',
+ "GCC_ENABLE_CPP_EXCEPTIONS": "YES",
+ "MACOSX_DEPLOYMENT_TARGET":"10.9"
+ }
+ },
+
+ {
+ 'target_name': 'iceutil',
+ 'type': 'static_library',
+ 'configurations': {
+ 'Release': {
+ 'msvs_settings': {
+
+ 'VCCLCompilerTool': {
+ 'RuntimeLibrary': '2',
+ 'ExceptionHandling': '1',
+ 'RuntimeTypeInfo' : 'true',
+ 'WarnAsError' : 'true'
+ },
+ },
+ },
+ },
+ 'sources': [
+ 'src/IceUtil/ArgVector.cpp',
+ 'src/IceUtil/Cond.cpp',
+ 'src/IceUtil/ConvertUTF.cpp',
+ 'src/IceUtil/CountDownLatch.cpp',
+ 'src/IceUtil/CtrlCHandler.cpp',
+ 'src/IceUtil/Exception.cpp',
+ 'src/IceUtil/FileUtil.cpp',
+ 'src/IceUtil/InputUtil.cpp',
+ 'src/IceUtil/MutexProtocol.cpp',
+ 'src/IceUtil/Options.cpp',
+ 'src/IceUtil/OutputUtil.cpp',
+ 'src/IceUtil/Random.cpp',
+ 'src/IceUtil/RecMutex.cpp',
+ 'src/IceUtil/SHA1.cpp',
+ 'src/IceUtil/Shared.cpp',
+ 'src/IceUtil/StringConverter.cpp',
+ 'src/IceUtil/StringUtil.cpp',
+ 'src/IceUtil/Thread.cpp',
+ 'src/IceUtil/ThreadException.cpp',
+ 'src/IceUtil/Time.cpp',
+ 'src/IceUtil/Timer.cpp',
+ 'src/IceUtil/Unicode.cpp',
+ 'src/IceUtil/UUID.cpp'
+ ],
+ 'include_dirs' : [
+ "src",
+ "include",
+ ],
+ 'cflags_cc' : [
+ '-fexceptions'
+ ],
+ 'cflags_cc!' : [
+ '-fno-rtti'
+ ],
+ 'xcode_settings': {
+ 'GCC_ENABLE_CPP_RTTI': 'YES',
+ "GCC_ENABLE_CPP_EXCEPTIONS": "YES",
+ "MACOSX_DEPLOYMENT_TARGET":"10.9"
+ }
+ }
+ ]
+}
diff --git a/distribution/src/js/zeroc-slice2js/mcpp/config/linux/ia32/config.h b/distribution/src/js/zeroc-slice2js/mcpp/config/linux/ia32/config.h
new file mode 100644
index 00000000000..69134c7df47
--- /dev/null
+++ b/distribution/src/js/zeroc-slice2js/mcpp/config/linux/ia32/config.h
@@ -0,0 +1,227 @@
+/* src/config.h. Generated from config.h.in by configure. */
+/* src/config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if '0x5c' in BIG5 multi-byte character is safe. */
+/* #undef BIGFIVE_IS_ESCAPE_FREE */
+
+/* Define the target compiler. */
+#define COMPILER INDEPENDENT
+
+/* Define the type of size_t. */
+/* #undef COMPILER_SP1_VAL */
+
+/* Define the type of ptrdiff_t. */
+/* #undef COMPILER_SP2_VAL */
+
+/* Define the type of wchar_t. */
+/* #undef COMPILER_SP3_VAL */
+
+/* Define the name of COMPILER-specific OLD-style predefined macro. */
+/* #undef COMPILER_SP_OLD */
+
+/* Define the value of COMPILER-specific OLD-style predefined macro. */
+/* #undef COMPILER_SP_OLD_VAL */
+
+/* Define the name of COMPILER-specific STD-style predefined macro. */
+/* #undef COMPILER_SP_STD */
+
+/* Define the value of COMPILER-specific STD-style predefined macro. */
+/* #undef COMPILER_SP_STD_VAL */
+
+/* Define compiler-specific C++ include directory 1. */
+/* #undef CPLUS_INCLUDE_DIR1 */
+
+/* Define compiler-specific C++ include directory 2. */
+/* #undef CPLUS_INCLUDE_DIR2 */
+
+/* Define compiler-specific C++ include directory 3. */
+/* #undef CPLUS_INCLUDE_DIR3 */
+
+/* Define compiler-specific C++ include directory 4. */
+/* #undef CPLUS_INCLUDE_DIR4 */
+
+/* Define the cpu-specific-macro. */
+#define CPU "i386"
+
+/* Define the name of CPU-specific OLD-style predefined macro. */
+/* #undef CPU_SP_OLD */
+
+/* Define the value of CPU-specific OLD-style predefined macro. */
+/* #undef CPU_SP_OLD_VAL */
+
+/* Define the name of CPU-specific STD-style predefined macro. */
+/* #undef CPU_SP_STD */
+
+/* Define the value of CPU-specific STD-style predefined macro. */
+/* #undef CPU_SP_STD_VAL */
+
+/* Define root directory of CYGWIN. */
+/* #undef CYGWIN_ROOT_DIRECTORY */
+
+/* Define compiler-specific C include directory 1. */
+/* #undef C_INCLUDE_DIR1 */
+
+/* Define compiler-specific C include directory 2. */
+/* #undef C_INCLUDE_DIR2 */
+
+/* Define compiler-specific C include directory 3. */
+/* #undef C_INCLUDE_DIR3 */
+
+/* Define if the argument of pragma is macro expanded. */
+/* #undef EXPAND_PRAGMA */
+
+/* Define if the cases of file name are folded. */
+/* #undef FNAME_FOLD */
+
+/* Define MacOS-specific framework directory 1. */
+/* #undef FRAMEWORK1 */
+
+/* Define MacOS-specific framework directory 2. */
+/* #undef FRAMEWORK2 */
+
+/* Define MacOS-specific framework directory 3. */
+/* #undef FRAMEWORK3 */
+
+/* Define gcc major version. */
+#define GCC_MAJOR_VERSION "4"
+
+/* Define gcc minor version. */
+#define GCC_MINOR_VERSION "8"
+
+/* Define if digraphs are available. */
+/* #undef HAVE_DIGRAPHS */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if the system has the type `intmax_t'. */
+#define HAVE_INTMAX_T 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if the system has the type `long long'. */
+#define HAVE_LONG_LONG 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdint.h,> header file. */
+/* #undef HAVE_STDINT_H_ */
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `stpcpy' function. */
+#define HAVE_STPCPY 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the <unistd.h,> header file. */
+/* #undef HAVE_UNISTD_H_ */
+
+/* Define the host compiler name. */
+#define HOST_CMP_NAME "GCC"
+
+/* Define the host compiler. */
+#define HOST_COMPILER GNUC
+
+/* Define the host system. */
+#define HOST_SYSTEM SYS_LINUX
+
+/* Define include directory to install mcpp_g*.h header files. */
+/* #undef INC_DIR */
+
+/* Define if '0x5c' in ISO2022-JP multi-byte character is safe. */
+/* #undef ISO2022_JP_IS_ESCAPE_FREE */
+
+/* Define output format of line directive. */
+/* #undef LINE_PREFIX */
+
+/* Define printf length modifier for the longest integer. */
+#define LL_FORM "j"
+
+/* Define if build libmcpp */
+#define MCPP_LIB 1
+
+/* Define /mingw directory. */
+/* #undef MINGW_DIRECTORY */
+
+/* Define root directory of MSYS. */
+/* #undef MSYS_ROOT_DIRECTORY */
+
+/* Define the suffix of object file. */
+#define OBJEXT "o"
+
+/* Name of package */
+#define PACKAGE "mcpp"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "kmatsui@t3.rim.or.jp"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "mcpp"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "mcpp 2.7.2"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "mcpp"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "2.7.2"
+
+/* Define include preference. */
+/* #undef SEARCH_INIT */
+
+/* Define if '0x5c' in SJIS multi-byte character is safe. */
+/* #undef SJIS_IS_ESCAPE_FREE */
+
+/* Define the default value of __STDC__. */
+/* #undef STDC */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define the default value of __STDC_VERSION__. */
+/* #undef STDC_VERSION */
+
+/* Define whether output format of line directive is C source style. */
+/* #undef STD_LINE_PREFIX */
+
+/* Define the target system. */
+#define SYSTEM SYS_LINUX
+
+/* Define the version of FreeBSD. */
+/* #undef SYSTEM_EXT_VAL */
+
+/* Define the name of SYSTEM-specific OLD-style predefined macro. */
+/* #undef SYSTEM_SP_OLD */
+
+/* Define the value of SYSTEM-specific OLD-style predefined macro. */
+/* #undef SYSTEM_SP_OLD_VAL */
+
+/* Define the name of SYSTEM-specific STD-style predefined macro. */
+/* #undef SYSTEM_SP_STD */
+
+/* Define the value of SYSTEM-specific STD-style predefined macro. */
+/* #undef SYSTEM_SP_STD_VAL */
+
+/* Version number of package */
+#define VERSION "2.7.2"
diff --git a/distribution/src/js/zeroc-slice2js/mcpp/config/linux/x64/config.h b/distribution/src/js/zeroc-slice2js/mcpp/config/linux/x64/config.h
new file mode 100644
index 00000000000..7249d8ba51f
--- /dev/null
+++ b/distribution/src/js/zeroc-slice2js/mcpp/config/linux/x64/config.h
@@ -0,0 +1,227 @@
+/* src/config.h. Generated from config.h.in by configure. */
+/* src/config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if '0x5c' in BIG5 multi-byte character is safe. */
+/* #undef BIGFIVE_IS_ESCAPE_FREE */
+
+/* Define the target compiler. */
+#define COMPILER INDEPENDENT
+
+/* Define the type of size_t. */
+/* #undef COMPILER_SP1_VAL */
+
+/* Define the type of ptrdiff_t. */
+/* #undef COMPILER_SP2_VAL */
+
+/* Define the type of wchar_t. */
+/* #undef COMPILER_SP3_VAL */
+
+/* Define the name of COMPILER-specific OLD-style predefined macro. */
+/* #undef COMPILER_SP_OLD */
+
+/* Define the value of COMPILER-specific OLD-style predefined macro. */
+/* #undef COMPILER_SP_OLD_VAL */
+
+/* Define the name of COMPILER-specific STD-style predefined macro. */
+/* #undef COMPILER_SP_STD */
+
+/* Define the value of COMPILER-specific STD-style predefined macro. */
+/* #undef COMPILER_SP_STD_VAL */
+
+/* Define compiler-specific C++ include directory 1. */
+/* #undef CPLUS_INCLUDE_DIR1 */
+
+/* Define compiler-specific C++ include directory 2. */
+/* #undef CPLUS_INCLUDE_DIR2 */
+
+/* Define compiler-specific C++ include directory 3. */
+/* #undef CPLUS_INCLUDE_DIR3 */
+
+/* Define compiler-specific C++ include directory 4. */
+/* #undef CPLUS_INCLUDE_DIR4 */
+
+/* Define the cpu-specific-macro. */
+#define CPU "x86_64"
+
+/* Define the name of CPU-specific OLD-style predefined macro. */
+/* #undef CPU_SP_OLD */
+
+/* Define the value of CPU-specific OLD-style predefined macro. */
+/* #undef CPU_SP_OLD_VAL */
+
+/* Define the name of CPU-specific STD-style predefined macro. */
+/* #undef CPU_SP_STD */
+
+/* Define the value of CPU-specific STD-style predefined macro. */
+/* #undef CPU_SP_STD_VAL */
+
+/* Define root directory of CYGWIN. */
+/* #undef CYGWIN_ROOT_DIRECTORY */
+
+/* Define compiler-specific C include directory 1. */
+/* #undef C_INCLUDE_DIR1 */
+
+/* Define compiler-specific C include directory 2. */
+/* #undef C_INCLUDE_DIR2 */
+
+/* Define compiler-specific C include directory 3. */
+/* #undef C_INCLUDE_DIR3 */
+
+/* Define if the argument of pragma is macro expanded. */
+/* #undef EXPAND_PRAGMA */
+
+/* Define if the cases of file name are folded. */
+/* #undef FNAME_FOLD */
+
+/* Define MacOS-specific framework directory 1. */
+/* #undef FRAMEWORK1 */
+
+/* Define MacOS-specific framework directory 2. */
+/* #undef FRAMEWORK2 */
+
+/* Define MacOS-specific framework directory 3. */
+/* #undef FRAMEWORK3 */
+
+/* Define gcc major version. */
+#define GCC_MAJOR_VERSION "4"
+
+/* Define gcc minor version. */
+#define GCC_MINOR_VERSION "8"
+
+/* Define if digraphs are available. */
+/* #undef HAVE_DIGRAPHS */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if the system has the type `intmax_t'. */
+#define HAVE_INTMAX_T 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if the system has the type `long long'. */
+#define HAVE_LONG_LONG 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdint.h,> header file. */
+/* #undef HAVE_STDINT_H_ */
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `stpcpy' function. */
+#define HAVE_STPCPY 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the <unistd.h,> header file. */
+/* #undef HAVE_UNISTD_H_ */
+
+/* Define the host compiler name. */
+#define HOST_CMP_NAME "GCC"
+
+/* Define the host compiler. */
+#define HOST_COMPILER GNUC
+
+/* Define the host system. */
+#define HOST_SYSTEM SYS_LINUX
+
+/* Define include directory to install mcpp_g*.h header files. */
+/* #undef INC_DIR */
+
+/* Define if '0x5c' in ISO2022-JP multi-byte character is safe. */
+/* #undef ISO2022_JP_IS_ESCAPE_FREE */
+
+/* Define output format of line directive. */
+/* #undef LINE_PREFIX */
+
+/* Define printf length modifier for the longest integer. */
+#define LL_FORM "j"
+
+/* Define if build libmcpp */
+#define MCPP_LIB 1
+
+/* Define /mingw directory. */
+/* #undef MINGW_DIRECTORY */
+
+/* Define root directory of MSYS. */
+/* #undef MSYS_ROOT_DIRECTORY */
+
+/* Define the suffix of object file. */
+#define OBJEXT "o"
+
+/* Name of package */
+#define PACKAGE "mcpp"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "kmatsui@t3.rim.or.jp"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "mcpp"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "mcpp 2.7.2"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "mcpp"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "2.7.2"
+
+/* Define include preference. */
+/* #undef SEARCH_INIT */
+
+/* Define if '0x5c' in SJIS multi-byte character is safe. */
+/* #undef SJIS_IS_ESCAPE_FREE */
+
+/* Define the default value of __STDC__. */
+/* #undef STDC */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define the default value of __STDC_VERSION__. */
+/* #undef STDC_VERSION */
+
+/* Define whether output format of line directive is C source style. */
+/* #undef STD_LINE_PREFIX */
+
+/* Define the target system. */
+#define SYSTEM SYS_LINUX
+
+/* Define the version of FreeBSD. */
+/* #undef SYSTEM_EXT_VAL */
+
+/* Define the name of SYSTEM-specific OLD-style predefined macro. */
+/* #undef SYSTEM_SP_OLD */
+
+/* Define the value of SYSTEM-specific OLD-style predefined macro. */
+/* #undef SYSTEM_SP_OLD_VAL */
+
+/* Define the name of SYSTEM-specific STD-style predefined macro. */
+/* #undef SYSTEM_SP_STD */
+
+/* Define the value of SYSTEM-specific STD-style predefined macro. */
+/* #undef SYSTEM_SP_STD_VAL */
+
+/* Version number of package */
+#define VERSION "2.7.2"
diff --git a/distribution/src/js/zeroc-slice2js/mcpp/config/mac/x64/config.h b/distribution/src/js/zeroc-slice2js/mcpp/config/mac/x64/config.h
new file mode 100644
index 00000000000..8d5154fa1ac
--- /dev/null
+++ b/distribution/src/js/zeroc-slice2js/mcpp/config/mac/x64/config.h
@@ -0,0 +1,227 @@
+/* src/config.h. Generated from config.h.in by configure. */
+/* src/config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if '0x5c' in BIG5 multi-byte character is safe. */
+/* #undef BIGFIVE_IS_ESCAPE_FREE */
+
+/* Define the target compiler. */
+#define COMPILER INDEPENDENT
+
+/* Define the type of size_t. */
+/* #undef COMPILER_SP1_VAL */
+
+/* Define the type of ptrdiff_t. */
+/* #undef COMPILER_SP2_VAL */
+
+/* Define the type of wchar_t. */
+/* #undef COMPILER_SP3_VAL */
+
+/* Define the name of COMPILER-specific OLD-style predefined macro. */
+/* #undef COMPILER_SP_OLD */
+
+/* Define the value of COMPILER-specific OLD-style predefined macro. */
+/* #undef COMPILER_SP_OLD_VAL */
+
+/* Define the name of COMPILER-specific STD-style predefined macro. */
+/* #undef COMPILER_SP_STD */
+
+/* Define the value of COMPILER-specific STD-style predefined macro. */
+/* #undef COMPILER_SP_STD_VAL */
+
+/* Define compiler-specific C++ include directory 1. */
+/* #undef CPLUS_INCLUDE_DIR1 */
+
+/* Define compiler-specific C++ include directory 2. */
+/* #undef CPLUS_INCLUDE_DIR2 */
+
+/* Define compiler-specific C++ include directory 3. */
+/* #undef CPLUS_INCLUDE_DIR3 */
+
+/* Define compiler-specific C++ include directory 4. */
+/* #undef CPLUS_INCLUDE_DIR4 */
+
+/* Define the cpu-specific-macro. */
+#define CPU "i386"
+
+/* Define the name of CPU-specific OLD-style predefined macro. */
+/* #undef CPU_SP_OLD */
+
+/* Define the value of CPU-specific OLD-style predefined macro. */
+/* #undef CPU_SP_OLD_VAL */
+
+/* Define the name of CPU-specific STD-style predefined macro. */
+/* #undef CPU_SP_STD */
+
+/* Define the value of CPU-specific STD-style predefined macro. */
+/* #undef CPU_SP_STD_VAL */
+
+/* Define root directory of CYGWIN. */
+/* #undef CYGWIN_ROOT_DIRECTORY */
+
+/* Define compiler-specific C include directory 1. */
+/* #undef C_INCLUDE_DIR1 */
+
+/* Define compiler-specific C include directory 2. */
+/* #undef C_INCLUDE_DIR2 */
+
+/* Define compiler-specific C include directory 3. */
+/* #undef C_INCLUDE_DIR3 */
+
+/* Define if the argument of pragma is macro expanded. */
+/* #undef EXPAND_PRAGMA */
+
+/* Define if the cases of file name are folded. */
+#define FNAME_FOLD 1
+
+/* Define MacOS-specific framework directory 1. */
+#define FRAMEWORK1 "/System/Library/Frameworks"
+
+/* Define MacOS-specific framework directory 2. */
+#define FRAMEWORK2 "/Library/Frameworks"
+
+/* Define MacOS-specific framework directory 3. */
+/* #undef FRAMEWORK3 */
+
+/* Define gcc major version. */
+#define GCC_MAJOR_VERSION "4"
+
+/* Define gcc minor version. */
+#define GCC_MINOR_VERSION "2"
+
+/* Define if digraphs are available. */
+/* #undef HAVE_DIGRAPHS */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if the system has the type `intmax_t'. */
+#define HAVE_INTMAX_T 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if the system has the type `long long'. */
+#define HAVE_LONG_LONG 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdint.h,> header file. */
+/* #undef HAVE_STDINT_H_ */
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `stpcpy' function. */
+#define HAVE_STPCPY 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the <unistd.h,> header file. */
+/* #undef HAVE_UNISTD_H_ */
+
+/* Define the host compiler name. */
+#define HOST_CMP_NAME "GCC"
+
+/* Define the host compiler. */
+#define HOST_COMPILER GNUC
+
+/* Define the host system. */
+#define HOST_SYSTEM SYS_MAC
+
+/* Define include directory to install mcpp_g*.h header files. */
+/* #undef INC_DIR */
+
+/* Define if '0x5c' in ISO2022-JP multi-byte character is safe. */
+/* #undef ISO2022_JP_IS_ESCAPE_FREE */
+
+/* Define output format of line directive. */
+/* #undef LINE_PREFIX */
+
+/* Define printf length modifier for the longest integer. */
+#define LL_FORM "j"
+
+/* Define if build libmcpp */
+#define MCPP_LIB 1
+
+/* Define /mingw directory. */
+/* #undef MINGW_DIRECTORY */
+
+/* Define root directory of MSYS. */
+/* #undef MSYS_ROOT_DIRECTORY */
+
+/* Define the suffix of object file. */
+#define OBJEXT "o"
+
+/* Name of package */
+#define PACKAGE "mcpp"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "kmatsui@t3.rim.or.jp"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "mcpp"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "mcpp 2.7.2"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "mcpp"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "2.7.2"
+
+/* Define include preference. */
+/* #undef SEARCH_INIT */
+
+/* Define if '0x5c' in SJIS multi-byte character is safe. */
+/* #undef SJIS_IS_ESCAPE_FREE */
+
+/* Define the default value of __STDC__. */
+/* #undef STDC */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define the default value of __STDC_VERSION__. */
+/* #undef STDC_VERSION */
+
+/* Define whether output format of line directive is C source style. */
+/* #undef STD_LINE_PREFIX */
+
+/* Define the target system. */
+#define SYSTEM SYS_MAC
+
+/* Define the version of FreeBSD. */
+/* #undef SYSTEM_EXT_VAL */
+
+/* Define the name of SYSTEM-specific OLD-style predefined macro. */
+/* #undef SYSTEM_SP_OLD */
+
+/* Define the value of SYSTEM-specific OLD-style predefined macro. */
+/* #undef SYSTEM_SP_OLD_VAL */
+
+/* Define the name of SYSTEM-specific STD-style predefined macro. */
+/* #undef SYSTEM_SP_STD */
+
+/* Define the value of SYSTEM-specific STD-style predefined macro. */
+/* #undef SYSTEM_SP_STD_VAL */
+
+/* Version number of package */
+#define VERSION "2.7.2"
diff --git a/distribution/src/js/zeroc-slice2js/mcpp/config/win/ia32/config.h b/distribution/src/js/zeroc-slice2js/mcpp/config/win/ia32/config.h
new file mode 100644
index 00000000000..8df4d0e74a7
--- /dev/null
+++ b/distribution/src/js/zeroc-slice2js/mcpp/config/win/ia32/config.h
@@ -0,0 +1,7 @@
+#define COMPILER INDEPENDENT
+#define HOST_SYSTEM SYS_WIN
+#define SYSTEM SYS_WIN
+#define CPU "i386"
+#define HOST_COMPILER MSC
+#define VERSION "2.7.2"
+#define MCPP_LIB 1 \ No newline at end of file
diff --git a/distribution/src/js/zeroc-slice2js/mcpp/config/win/x64/config.h b/distribution/src/js/zeroc-slice2js/mcpp/config/win/x64/config.h
new file mode 100644
index 00000000000..5d21598f007
--- /dev/null
+++ b/distribution/src/js/zeroc-slice2js/mcpp/config/win/x64/config.h
@@ -0,0 +1,7 @@
+#define COMPILER INDEPENDENT
+#define HOST_SYSTEM SYS_WIN
+#define SYSTEM SYS_WIN
+#define CPU "x86_64"
+#define HOST_COMPILER MSC
+#define VERSION "2.7.2"
+#define MCPP_LIB 1
diff --git a/distribution/src/js/zeroc-slice2js/mcpp/mcpp.gyp b/distribution/src/js/zeroc-slice2js/mcpp/mcpp.gyp
new file mode 100644
index 00000000000..0793fbd9c39
--- /dev/null
+++ b/distribution/src/js/zeroc-slice2js/mcpp/mcpp.gyp
@@ -0,0 +1,68 @@
+{
+ 'targets': [
+ {
+ 'target_name': 'mcpp',
+ 'product_prefix' : 'lib',
+ 'type': 'static_library',
+ 'sources': [
+ 'src/directive.c',
+ 'src/eval.c',
+ 'src/expand.c',
+ 'src/main.c',
+ 'src/mbchar.c',
+ 'src/support.c',
+ 'src/system.c',
+
+ # 'src/cc1.c',
+ # 'src/preproc.c',
+ ],
+ 'include_dirs' : [
+ 'src',
+ 'config/<(OS)/<(target_arch)'
+ ],
+ 'defines' : [
+ 'HAVE_CONFIG_H',
+ 'MCPP_LIB=1'
+ ],
+ 'configurations': {
+ 'Release': {
+ 'msvs_settings': {
+ 'VCCLCompilerTool': {
+ 'RuntimeLibrary': '2',
+ 'ExceptionHandling': '1',
+ 'RuntimeTypeInfo' : 'true'
+ },
+ },
+ 'msvs_disabled_warnings': [
+ 4018,
+ 4090,
+ 4101,
+ 4102,
+ 4133,
+ 4146,
+ 4244,
+ 4267
+ ]
+ }
+ },
+ 'conditions': [
+ ['OS=="mac"', {
+ 'xcode_settings': {
+ "MACOSX_DEPLOYMENT_TARGET":"10.9",
+ 'OTHER_CFLAGS': [
+ '-fno-common',
+ '-stdlib=libstdc++',
+ '-w'
+ ]
+ }
+ }],
+ ['OS=="linux"', {
+ 'cflags' : [
+ '-fPIC',
+ '-w'
+ ]
+ }]
+ ]
+ }
+ ]
+}
diff --git a/distribution/src/js/zeroc-slice2js/package.json b/distribution/src/js/zeroc-slice2js/package.json
new file mode 100644
index 00000000000..90a2e7a2f4f
--- /dev/null
+++ b/distribution/src/js/zeroc-slice2js/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "zeroc-slice2js",
+ "version": "3.6.0-beta.0",
+ "description": "Ice Slice to JavaScript compiler",
+ "homepage": "https://www.zeroc.com",
+ "repository": "https://github.com/zeroc-inc/zeroc-slice2js.git",
+ "author": "Zeroc, Inc.",
+ "license": "GPL-2.0+",
+ "main": "slice2js.js",
+ "bin": {
+ "slice2js": "bin/slice2js-cli.js"
+ },
+ "scripts": {
+ "test": "slice2js --version"
+ },
+ "keywords": [
+ "Ice",
+ "IceJS",
+ "slice2js"
+ ],
+ "gypfile": true
+}
diff --git a/distribution/src/js/zeroc-slice2js/slice2js.js b/distribution/src/js/zeroc-slice2js/slice2js.js
new file mode 100644
index 00000000000..ed7a8f52226
--- /dev/null
+++ b/distribution/src/js/zeroc-slice2js/slice2js.js
@@ -0,0 +1,28 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+var spawn = require('child_process').spawn;
+var path = require('path');
+var os = require('os');
+var platform = os.platform();
+var arch = os.arch();
+
+module.exports = function(args, options)
+{
+ var bin_dir = path.join(__dirname, 'build', 'Release');
+ var slice2js = platform === 'win32' ? 'slice2js.exe' : 'slice2js';
+ slice2js = path.join(bin_dir, slice2js);
+
+ var slice_dir = path.resolve(path.join(__dirname, 'slice'));
+
+ var slice2js_args = args.slice();
+ slice2js_args.push('-I' + slice_dir);
+
+ return spawn(slice2js, slice2js_args, options);
+};