Files
cappuccino/Objective-J/Jakefile
T

111 lines
3.0 KiB
JavaScript

//#!/usr/bin/env narwhal
var FILE = require("file"),
OS = require("os"),
Jake = require("jake");
require(FILE.absolute("../common.jake"));
task = Jake.task;
file = Jake.file;
filedir = Jake.filedir;
FileList = Jake.FileList;
/*
require '../common'
require 'objective-j'
require 'rake'
require 'rake/clean'
*/
$PRODUCT = FILE.join($PRODUCT_DIR, 'Objective-J')
$ENVIRONMENT_PRODUCT = FILE.join($ENVIRONMENT_FRAMEWORKS_DIR, '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, 'rhino.platform', 'Objective-J.js')
task ("Products", [$BROWSER_FILE, $RHINO_FILE, $LICENSE_PRODUCT]);
Files = ["constants.js", "utilities.js", "json2.js", "runtime.js", "dictionary.js", "plist.js", "file.js", "exception.js", "preprocess.js", "evaluate.js", "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("debug.js")//Files.add('debug.js');
filedir ($BROWSER_FILE, Files, function(aTask)
{
build_product(aTask.name(), platform_flags('browser', 'objj'));//ObjectiveJ::Platform::Browser, ObjectiveJ::Platform::ObjJ))
});
filedir ($RHINO_FILE, Files, function(aTask)
{
flags = platform_flags('rhino', 'objj');//ObjectiveJ::Platform::Rhino, ObjectiveJ::Platform::ObjJ)
flags += ' -DRHINO'
build_product(aTask.name(), flags)
});
// Framework in environment directory
filedir ($ENVIRONMENT_PRODUCT, ["Products"], function()
{
rm_rf($ENVIRONMENT_PRODUCT);
cp_r($PRODUCT, $ENVIRONMENT_PRODUCT);
});
filedir ($LICENSE_PRODUCT, [$LICENSE_FILE], function()
{
FILE.copy($LICENSE_FILE, $LICENSE_PRODUCT);
});
function platform_flags()
{
return "-DPLATFORMS=\"[" + Array.prototype.map.apply(arguments, [function(aPlatform)
{
return "\\\"" + aPlatform + "\\\"";
}]).join(", ") + "]\"";
}
function build_product(path, flags)
{
var preprocessor = OS.popen("gcc " + flags + " -E -x c -P -");
OS.system("cat 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 -E -x c -P - >> " + OS.enquote(path));
// rake abort if ($? != 0)
}
task ("build", ["Products", "build_subprojects", $ENVIRONMENT_PRODUCT]);
task ("clean", ["clean_suprojects"]);
task ("clobber", ["clobber_subprojects"]);
subprojects = ["CommonJS"];
task ("build_subprojects", function()
{
subjake(subprojects, "build");
});
task ("clean_suprojects", function()
{
subjake(subprojects, "clean");
});
task ("clobber_subprojects", function()
{
subjake(subprojects, "clobber");
});
//CLEAN.include() no temporary files.
//CLOBBER.include($PRODUCT, $ENVIRONMENT_PRODUCT);