Files
cappuccino/Objective-J/Jakefile
T
2009-10-16 11:50:28 -07:00

85 lines
2.8 KiB
JavaScript

//#!/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("CommonJS", "objective-j", "lib-js", "objective-j", "jake", "LICENSES", "LGPL-v2.1");
$BROWSER_FILE = FILE.join($PRODUCT, 'Objective-J.js')
$RHINO_FILE = FILE.join($PRODUCT, 'CommonJS.platform', 'Objective-J.js')
Files = new FileList("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");
if ($CONFIGURATION === "Debug")
Files.add("Runtime/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);
FILE.chmod(FILE.join($COMMONJS_PRODUCT, "bin", "objj"), 0755);
FILE.chmod(FILE.join($COMMONJS_PRODUCT, "bin", "objjc"), 0755);
FILE.chmod(FILE.join($COMMONJS_PRODUCT, "bin", "cplutil"), 0755);
});
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);