//#!/usr/bin/env narwhal var FILE = require("file"), OS = require("os"), Jake = require("jake"); require(FILE.absolute("../common.jake")); $PRODUCT = FILE.join($PRODUCT_DIR, "Objective-J") $COMMONJS_PRODUCT = FILE.join($PRODUCT_DIR, "CommonJS", "objective-j"); $COMMONJS_FRAMEWORK_PRODUCT = FILE.join($COMMONJS_PRODUCT, "lib", "Frameworks", "Objective-J"); $LICENSE_PRODUCT = FILE.join($PRODUCT, 'LICENSE') $LICENSE_FILE = FILE.join($HOME_DIR, 'Tools', 'Rake', 'lib', 'licenses', 'LGPL-v2.1') $BROWSER_FILE = FILE.join($PRODUCT, 'Objective-J.js') $RHINO_FILE = FILE.join($PRODUCT, 'CommonJS.platform', 'Objective-J.js') Files = ["Runtime/constants.js", "Runtime/utilities.js", "Runtime/json2.js", "Runtime/runtime.js", "Runtime/dictionary.js", "Runtime/plist.js", "Runtime/file.js", "Runtime/exception.js", "Runtime/preprocess.js", "Runtime/evaluate.js", "Runtime/bootstrap.js"]; //Files = new FileList("constants.js", "utilities.js", "json2.js", "runtime.js", "dictionary.js", "plist.js", "file.js", "exception.js", "preprocess.js", "evaluate.js", "bootstrap.js"); if ($CONFIGURATION === "Debug") Files.push("Runtime/debug.js")//Files.add('debug.js'); task ("build", [$BROWSER_FILE, $RHINO_FILE, $LICENSE_PRODUCT, $COMMONJS_PRODUCT, $COMMONJS_FRAMEWORK_PRODUCT]); filedir ($BROWSER_FILE, Files, function(aTask) { build_product(aTask.name(), platform_flags('Browser', 'ObjJ')); }); filedir ($RHINO_FILE, Files, function(aTask) { flags = platform_flags('CommonJS', 'ObjJ'); flags += ' -DRHINO' build_product(aTask.name(), flags) }); filedir ($LICENSE_PRODUCT, [$LICENSE_FILE], function() { FILE.copy($LICENSE_FILE, $LICENSE_PRODUCT); }); filedir ($COMMONJS_PRODUCT, FILE.glob("CommonJS/objective-j/**/*"), function() { rm_rf($COMMONJS_PRODUCT); cp_r(FILE.join("CommonJS", "objective-j"), $COMMONJS_PRODUCT); }); filedir ($COMMONJS_FRAMEWORK_PRODUCT, function() { cp_r(FILE.join($BUILD_DIR, $CONFIGURATION, "Objective-J"), $COMMONJS_FRAMEWORK_PRODUCT); }); //CLOBBER.include($ENVIRONMENT_OBJJ_PRODUCT) function platform_flags() { return "-DPLATFORMS=\"[" + Array.prototype.map.apply(arguments, [function(aPlatform) { return "\\\"" + aPlatform + "\\\""; }]).join(", ") + "]\""; } function build_product(path, flags) { OS.system("cat Runtime/header.txt > " + OS.enquote(path)); OS.system("cat " + Files.filter(function(aName) { return !!aName.match(/\.js$/); }).map(function(aName) { return OS.enquote(aName); }).join(' ') + " | gcc " + flags + " -E -x c -P - >> " + OS.enquote(path)); // rake abort if ($? != 0) } //CLEAN.include() no temporary files. //CLOBBER.include($PRODUCT, $ENVIRONMENT_PRODUCT);