|
@@ -8,6 +8,8 @@
|
|
|
* Execute 'node compiler.js' without arguments or with -h / --help for help.
|
|
|
*/
|
|
|
|
|
|
+var amdefine = require("amdefine");
|
|
|
+
|
|
|
/**
|
|
|
* Map the async filter function onto array and evaluate callback, once all have finished.
|
|
|
* Taken from: http://howtonode.org/control-flow-part-iii
|
|
@@ -415,7 +417,7 @@ AmberC.prototype.resolve_init = function(compilerFiles) {
|
|
|
AmberC.prototype.create_compiler = function(compilerFilesArray) {
|
|
|
var self = this;
|
|
|
var compiler_files = new Combo(function() {
|
|
|
- var define = require('amdefine')(module), requirejs = define.require;
|
|
|
+ var define = amdefine(module), requirejs = define.require;
|
|
|
define("amber_vm/browser-compatibility", [], {});
|
|
|
|
|
|
var content = '(function() {';
|
|
@@ -597,6 +599,21 @@ AmberC.prototype.compose_js_files = function() {
|
|
|
self.optimize();
|
|
|
});
|
|
|
|
|
|
+ var defineDefine = function () {
|
|
|
+ var path = require('path');
|
|
|
+ var amdefine = $SRC$;
|
|
|
+ var define = amdefine(module);
|
|
|
+ var result = function () {
|
|
|
+ var id = arguments[0];
|
|
|
+ setTimeout(function () { define.require(id); }, 0);
|
|
|
+ return define.apply(this, arguments);
|
|
|
+ };
|
|
|
+ result.amd = {};
|
|
|
+ return result;
|
|
|
+ };
|
|
|
+
|
|
|
+ fileStream.write('var define = ('+(''+defineDefine).replace('$SRC$', ""+amdefine)+')();\n'
|
|
|
+ + 'define("amber_vm/browser-compatibility", [], {});\n');
|
|
|
program_files.forEach(function(file) {
|
|
|
if(fs.existsSync(file)) {
|
|
|
console.log('Adding : ' + file);
|
|
@@ -606,6 +623,7 @@ AmberC.prototype.compose_js_files = function() {
|
|
|
throw(new Error('Can not find file ' + file));
|
|
|
}
|
|
|
});
|
|
|
+ fileStream.write('define("amber_vm/_init", ["amber_vm/smalltalk"], function (st) { st.initialize(); });\n');
|
|
|
if (undefined !== defaults.main) {
|
|
|
console.log('Adding call to: %s>>main', defaults.main);
|
|
|
fileStream.write('smalltalk.' + defaults.main + '._main()');
|