mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-09-07 19:27:12 +00:00
111 lines
3.0 KiB
JavaScript
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);
|