|
@@ -601,33 +601,30 @@ AmberC.prototype.compose_js_files = function() {
|
|
|
|
|
|
var defineDefine = function () {
|
|
var defineDefine = function () {
|
|
var path = require('path');
|
|
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;
|
|
|
|
|
|
+ return ($SRC$)(module);
|
|
};
|
|
};
|
|
|
|
|
|
- fileStream.write('var define = ('+(''+defineDefine).replace('$SRC$', ""+amdefine)+')();\n'
|
|
|
|
|
|
+ fileStream.write('var define = ('+(''+defineDefine).replace('$SRC$', ""+amdefine)+')(), requirejs = define.require;\n'
|
|
+ 'define("amber_vm/browser-compatibility", [], {});\n');
|
|
+ 'define("amber_vm/browser-compatibility", [], {});\n');
|
|
|
|
+ var ids = [];
|
|
program_files.forEach(function(file) {
|
|
program_files.forEach(function(file) {
|
|
if(fs.existsSync(file)) {
|
|
if(fs.existsSync(file)) {
|
|
console.log('Adding : ' + file);
|
|
console.log('Adding : ' + file);
|
|
- fileStream.write(fs.readFileSync(file));
|
|
|
|
|
|
+ var buffer = fs.readFileSync(file);
|
|
|
|
+ var match = buffer.toString().match(/^define\("([^"]*)"/);
|
|
|
|
+ if (match /*&& match[1].slice(0,9) !== "amber_vm/"*/) { ids.push(match[1]); }
|
|
|
|
+ fileStream.write(buffer);
|
|
} else {
|
|
} else {
|
|
fileStream.end();
|
|
fileStream.end();
|
|
throw(new Error('Can not find file ' + file));
|
|
throw(new Error('Can not find file ' + file));
|
|
}
|
|
}
|
|
});
|
|
});
|
|
- fileStream.write('define("amber_vm/_init", ["amber_vm/smalltalk"], function (st) { st.initialize(); });\n');
|
|
|
|
|
|
+ fileStream.write('define("amber_vm/_init", ["amber_vm/smalltalk","'+ids.join('","')+'"], function (smalltalk) { smalltalk.initialize();\n');
|
|
if (undefined !== defaults.main) {
|
|
if (undefined !== defaults.main) {
|
|
console.log('Adding call to: %s>>main', defaults.main);
|
|
console.log('Adding call to: %s>>main', defaults.main);
|
|
fileStream.write('smalltalk.' + defaults.main + '._main()');
|
|
fileStream.write('smalltalk.' + defaults.main + '._main()');
|
|
}
|
|
}
|
|
|
|
+ fileStream.write('});\nrequirejs("amber_vm/_init");\n');
|
|
|
|
|
|
if (undefined !== defaults.mainfile && fs.existsSync(defaults.mainfile)) {
|
|
if (undefined !== defaults.mainfile && fs.existsSync(defaults.mainfile)) {
|
|
console.log('Adding main file: ' + defaults.mainfile);
|
|
console.log('Adding main file: ' + defaults.mainfile);
|