Split up objective-j and cappuccino CommonJS packages, and added ability to include Objective-J frameworks in CommonJS packages.

Reviewed by me.
This commit is contained in:
Francisco Ryan Tolmasky I
2009-11-02 14:49:58 -08:00
parent fddf3d70ff
commit 0c13138a20
34 changed files with 330 additions and 173 deletions
+9 -9
View File
@@ -1,4 +1,3 @@
#!/usr/bin/env narwhal
require("../common.jake");
@@ -10,12 +9,13 @@ AppKitFiles = new FileList("**/*.j").exclude('CoreGraphics/CGContextCanvas.j', '
appKitTask = framework ("AppKit", function(appKitTask)
{
appKitTask.setBuildIntermediatesPath(FILE.join($BUILD_DIR, "AppKit.build", $CONFIGURATION))
appKitTask.setBuildPath(FILE.join($BUILD_DIR, $CONFIGURATION));
appKitTask.setBuildPath($BUILD_CONFIGURATION_DIR);
appKitTask.setAuthor("280 North, Inc.");
appKitTask.setEmail("feedback @nospam@ 280north.com");
appKitTask.setSummary("AppKit classes for Cappuccino");
appKitTask.setIdentifier("com.280n.AppKit");
appKitTask.setVersion("0.7.9");
appKitTask.setLicense(BundleTask.License.LGPL_v2_1);
appKitTask.setSources(AppKitFiles);
appKitTask.setResources(new FileList("Resources/**/*"));
@@ -28,23 +28,23 @@ appKitTask = framework ("AppKit", function(appKitTask)
appKitTask.setCompilerFlags("-DDEBUG -g");
});
$COMMONJS_PRODUCT_APPKIT = FILE.join($COMMONJS_PRODUCT_FRAMEWORKS, "AppKit");
$BUILD_CJS_CAPPUCCINO_APPKIT = FILE.join($BUILD_CJS_CAPPUCCINO_FRAMEWORKS, "AppKit");
filedir ($COMMONJS_PRODUCT_APPKIT, ["AppKit"], function()
filedir ($BUILD_CJS_CAPPUCCINO_APPKIT, ["AppKit"], function()
{
cp_r(appKitTask.buildProductPath(), $COMMONJS_PRODUCT_APPKIT);
cp_r(appKitTask.buildProductPath(), $BUILD_CJS_CAPPUCCINO_APPKIT);
});
subtasks (["Themes"], ["clean", "clobber"]);
task ("Theme", [$COMMONJS_PRODUCT_APPKIT], function()
task ("Theme", [$BUILD_CJS_CAPPUCCINO_APPKIT], function()
{
subjake(["Themes"], "build");
cp_r(FILE.join($BUILD_DIR, $CONFIGURATION, 'Aristo.blend'), FILE.join($BUILD_PATH, 'Resources', 'Aristo.blend'));
cp_r(FILE.join($BUILD_DIR, $CONFIGURATION, 'Aristo.blend'), FILE.join($COMMONJS_PRODUCT_APPKIT, "Resources", "Aristo.blend"));
cp_r(FILE.join($BUILD_DIR, $CONFIGURATION, 'Aristo.blend'), FILE.join($BUILD_CJS_CAPPUCCINO_APPKIT, "Resources", "Aristo.blend"));
});
task ("build", ["AppKit", $COMMONJS_PRODUCT_APPKIT, "Theme"]);
task ("build", ["AppKit", $BUILD_CJS_CAPPUCCINO_APPKIT, "Theme"]);
CLOBBER.include($COMMONJS_PRODUCT_APPKIT);
CLOBBER.include($BUILD_CJS_CAPPUCCINO_APPKIT);
+1 -2
View File
@@ -1,9 +1,8 @@
#!/usr/bin/env narwhal
require("../../../common.jake");
blend("Aristo.blend", function(aristoTask)
blend ("Aristo.blend", function(aristoTask)
{
aristoTask.setBuildIntermediatesPath(FILE.join($BUILD_DIR, "Aristo.build", $CONFIGURATION))
aristoTask.setBuildPath(FILE.join($BUILD_DIR, $CONFIGURATION));
+12 -13
View File
@@ -1,4 +1,3 @@
#!/usr/bin/env narwhal
require("../../../common.jake");
@@ -9,11 +8,11 @@ blendKitTask = framework ("BlendKit", function(blendKitTask)
blendKitTask.setBuildPath(FILE.join($BUILD_DIR, $CONFIGURATION));
blendKitTask.setIdentifier("com.280n.BlendKit");
blendKitTask.setVersion("0.7.1");
// t.author = '280 North, Inc.'
// t.email = 'feedback @nospam@ 280north.com'
// t.summary = 'BlendKit classes for Cappuccino'
blendKitTask.setSources(FILE.glob("*.j")); //t.sources = FileList['*.j']
blendKitTask.setVersion("0.7.9");
blendKitTask.setAuthor("280 North, Inc.");
blendKitTask.setEmail("feedback @nospam@ 280north.com");
blendKitTask.setSummary("BlendKit classes for Cappuccino");
blendKitTask.setSources(FILE.glob("*.j"));
blendKitTask.setResources(FILE.glob("Resources/*"));
blendKitTask.setLicense(BundleTask.License.LGPL_v2_1);
blendKitTask.setFlattensSources(true); // FIXME: how do we non flatten?
@@ -24,13 +23,13 @@ blendKitTask = framework ("BlendKit", function(blendKitTask)
blendKitTask.setCompilerFlags("-DDEBUG -g");
});
$COMMONJS_PRODUCT_BLENDKIT = FILE.join($COMMONJS_PRODUCT_FRAMEWORKS, "BlendKit");
$BUILD_CJS_PRODUCT_BLENDKIT = FILE.join($BUILD_CJS_CAPPUCCINO_FRAMEWORKS, "BlendKit");
filedir ($COMMONJS_PRODUCT_BLENDKIT, ["BlendKit"], function()
{print("copying...");
cp_r(blendKitTask.buildProductPath(), $COMMONJS_PRODUCT_BLENDKIT);
filedir ($BUILD_CJS_PRODUCT_BLENDKIT, ["BlendKit"], function()
{
cp_r(blendKitTask.buildProductPath(), $BUILD_CJS_PRODUCT_BLENDKIT);
});
print("here?...");
task ("build", ["BlendKit", $COMMONJS_PRODUCT_BLENDKIT]);
CLOBBER.include( $COMMONJS_PRODUCT_BLENDKIT);
task ("build", ["BlendKit", $BUILD_CJS_PRODUCT_BLENDKIT]);
CLOBBER.include( $BUILD_CJS_PRODUCT_BLENDKIT);
+7 -8
View File
@@ -1,18 +1,17 @@
#!/usr/bin/env narwhal
require("../../../common.jake");
var FILE = require("file");
print("???");
$BLENDTASK = "blendtask.j";
$COMMONJS_BLENDTASK_PRODUCT = FILE.join($COMMONJS_PRODUCT, "lib-js", "objective-j", "jake", "blendtask.j");
filedir($COMMONJS_BLENDTASK_PRODUCT, [$BLENDTASK], function()
$BLENDTASK = "blendtask.j";
$BUILD_CJS_BLENDTASK = FILE.join($BUILD_CJS_CAPPUCCINO, "lib", "cappuccino", "jake", "blendtask.j");
filedir($BUILD_CJS_BLENDTASK, [$BLENDTASK], function()
{
cp_r($BLENDTASK, $COMMONJS_BLENDTASK_PRODUCT);
cp_r($BLENDTASK, $BUILD_CJS_BLENDTASK);
});
task("build", [$COMMONJS_BLENDTASK_PRODUCT]);
task("build", [$BUILD_CJS_BLENDTASK]);
CLOBBER.include($COMMONJS_BLENDTASK_PRODUCT);
CLOBBER.include($BUILD_CJS_BLENDTASK);
+2 -1
View File
@@ -5,7 +5,8 @@
@import <BlendKit/BlendKit.j>
var Jake = require("jake"),
var FILE = require("file"),
Jake = require("jake"),
BundleTask = require("objective-j/jake/bundletask").BundleTask;
+21
View File
@@ -0,0 +1,21 @@
require("../common.jake");
var FILE = require("file");
new FileList("**/*").exclude("Jakefile").forEach(function(aFilename)
{
if (!FILE.isFile(aFilename))
return;
var buildFilename = FILE.join($BUILD_CONFIGURATION_DIR, "CommonJS", "cappuccino", aFilename);
filedir (buildFilename, [aFilename], function ()
{
cp(aFilename, buildFilename);
});
task ("build", buildFilename);
CLOBBER.include(buildFilename);
});
+8
View File
@@ -0,0 +1,8 @@
// This check is only necessary because during the build process blendtask gets created much later.
if (FILE.exists(FILE.join(FILE.dirname(module.path), "jake", "blendtask.j")))
{
var BLEND_TASK = require("cappuccino/jake/blendtask");
exports.BlendTask = BLEND_TASK.BlendTask;
exports.blend = BLEND_TASK.blend;
}
+16
View File
@@ -0,0 +1,16 @@
{
"name": "cappuccino",
"dependencies": ["narwhal", "jack", "browserjs"],
"description": "Cappuccino module",
"keywords": ["objective-j", "objj", "objective j", "capp", "cappuccino"],
"author": "280 North, Inc. (http://280north.com/)",
"version": "0.7.9",
"objj-frameworks": ["Frameworks"],
"objj-debug-frameworks": ["Frameworks/Debug"],
"contributors": [
"Francisco Tolmasky (http://tolmasky.com/)",
"Ross Boucher (http://rossboucher.com/)",
"Tom Robinson (http://tlrobinson.net/)",
"Numerous others (http://contributors.cappuccino.org/)"
]
}
+29 -8
View File
@@ -1,4 +1,24 @@
#!/usr/bin/env narwhal
/*
* Jakefile
* Foundation
*
* Created by Francisco Tolmasky.
* Copyright 2009, 280 North, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
require("../common.jake");
@@ -6,14 +26,15 @@ require("../common.jake");
foundationTask = framework ("Foundation", function(foundationTask)
{
foundationTask.setBuildIntermediatesPath(FILE.join($BUILD_DIR, "Foundation.build", $CONFIGURATION))
foundationTask.setBuildPath(FILE.join($BUILD_DIR, $CONFIGURATION));
foundationTask.setBuildPath($BUILD_CONFIGURATION_DIR);
foundationTask.setAuthor("280 North, Inc.");
foundationTask.setEmail("feedback @nospam@ 280north.com");
foundationTask.setSummary("Foundation classes for Cappuccino");
foundationTask.setIdentifier("com.280n.Foundation");
foundationTask.setVersion("0.7.9");
foundationTask.setLicense(BundleTask.License.LGPL_v2_1);
foundationTask.setSources(new FileList("**/*.j"));//terrible!
foundationTask.setSources(new FileList("**/*.j"));
foundationTask.setResources(new FileList("Resources/**/*"));
foundationTask.setFlattensSources(true);
@@ -23,13 +44,13 @@ foundationTask = framework ("Foundation", function(foundationTask)
foundationTask.setCompilerFlags("-DDEBUG -g");
});
$COMMONJS_PRODUCT_FOUNDATION = FILE.join($COMMONJS_PRODUCT_FRAMEWORKS, "Foundation");
$BUILD_CJS_FOUNDATION = FILE.join($BUILD_CJS_CAPPUCCINO_FRAMEWORKS, "Foundation");
filedir ($COMMONJS_PRODUCT_FOUNDATION, ["Foundation"], function()
filedir ($BUILD_CJS_FOUNDATION, ["Foundation"], function()
{
cp_r(foundationTask.buildProductPath(), $COMMONJS_PRODUCT_FOUNDATION);
cp_r(foundationTask.buildProductPath(), $BUILD_CJS_FOUNDATION);
});
task ("build", ["Foundation", $COMMONJS_PRODUCT_FOUNDATION]);
task ("build", ["Foundation", $BUILD_CJS_FOUNDATION]);
CLOBBER.include($COMMONJS_PRODUCT_FOUNDATION);
CLOBBER.include($BUILD_CJS_FOUNDATION);
+10 -11
View File
@@ -7,7 +7,7 @@ var FILE = require("file"),
require(FILE.absolute("common.jake"));
var subprojects = ["Objective-J", "Foundation", "AppKit", "Tools", "External/ojunit"];
var subprojects = ["Objective-J", "CommonJS", "Foundation", "AppKit", "Tools", "External/ojunit"];
["build", "clean", "clobber"].forEach(function(aTaskName)
{
@@ -17,20 +17,19 @@ var subprojects = ["Objective-J", "Foundation", "AppKit", "Tools", "External/oju
});
});
global.$COMMONJS = FILE.join($BUILD_DIR, "Release", "CommonJS", "objective-j");
global.$COMMONJS_DEBUG_FRAMEWORKS = FILE.join($COMMONJS, "lib", "Frameworks", "Debug");
$BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS = FILE.join($BUILD_CJS_CAPPUCCINO, "Frameworks", "Debug");
filedir ($COMMONJS_DEBUG_FRAMEWORKS, ["debug", "release"], function()
filedir ($BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, ["debug", "release"], function()
{
FILE.mkdirs($COMMONJS_DEBUG_FRAMEWORKS);
FILE.mkdirs($BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS);
cp_r(FILE.join($BUILD_DIR, "Debug", "Objective-J"), FILE.join($COMMONJS_DEBUG_FRAMEWORKS, "Objective-J"));
cp_r(FILE.join($BUILD_DIR, "Debug", "Foundation"), FILE.join($COMMONJS_DEBUG_FRAMEWORKS, "Foundation"));
cp_r(FILE.join($BUILD_DIR, "Debug", "AppKit"), FILE.join($COMMONJS_DEBUG_FRAMEWORKS, "AppKit"));
cp_r(FILE.join($BUILD_DIR, "Debug", "BlendKit"), FILE.join($COMMONJS_DEBUG_FRAMEWORKS, "BlendKit"));
cp_r(FILE.join($BUILD_DIR, "Debug", "Objective-J"), FILE.join($BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, "Objective-J"));
cp_r(FILE.join($BUILD_DIR, "Debug", "Foundation"), FILE.join($BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, "Foundation"));
cp_r(FILE.join($BUILD_DIR, "Debug", "AppKit"), FILE.join($BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, "AppKit"));
cp_r(FILE.join($BUILD_DIR, "Debug", "BlendKit"), FILE.join($BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, "BlendKit"));
});
task ("CommonJS", [$COMMONJS_DEBUG_FRAMEWORKS, "debug", "release"], function()
task ("CommonJS", [$BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, "debug", "release"], function()
{
// We have a complete CommonJS, so redo this.
setupEnvironment();
@@ -40,7 +39,7 @@ task ("install", ["CommonJS"], function()
{
// FIXME: require("narwhal/tusk/install").install({}, $COMMONJS);
// Doesn't work due to some weird this.print business.
OS.system("tusk install --force " + $COMMONJS);
OS.system("tusk install --force " + $BUILD_CJS_OBJECTIVE_J + " " + $BUILD_CJS_CAPPUCCINO);
});
// Documentation
@@ -1,4 +1,4 @@
var file = require("file"),
var FILE = require("file"),
readline = require("readline").readline;
var window = require("browser/window");
@@ -10,12 +10,63 @@ if (system.engine === "rhino")
}
// setup OBJJ_HOME, OBJJ_INCLUDE_PATHS, etc
window.OBJJ_HOME = exports.OBJJ_HOME = file.resolve(module.path, "..");
window.OBJJ_HOME = exports.OBJJ_HOME = FILE.resolve(module.path, "..");
var frameworksPath = file.resolve(window.OBJJ_HOME, "lib/", "Frameworks/"),
objectivejPath = file.resolve(frameworksPath, "Objective-J/", "CommonJS.platform/", "Objective-J.js");
var frameworksPath = FILE.resolve(window.OBJJ_HOME, "Frameworks/"),
objectivejPath = FILE.resolve(frameworksPath, "Objective-J/", "CommonJS.platform/", "Objective-J.js");
window.OBJJ_INCLUDE_PATHS = [frameworksPath];
// Find all narwhal packages with Objective-J frameworks.
var name = null,
catalog = require("packages").catalog;
for (name in catalog)
{
if (!catalog.hasOwnProperty(name))
return;
var info = catalog[name];
if (!info)
continue;
var frameworks = info["objective-j-frameworks"] ||
info["objj-frameworks"] ||
info["cappuccino-frameworks"] ||
info["capp-frameworks"] ||
info["frameworks"];
if (frameworks)
{
if (!Array.isArray(frameworks))
frameworks = [frameworks + ""];
window.OBJJ_INCLUDE_PATHS = window.OBJJ_INCLUDE_PATHS.concat(frameworks.map(function(aFrameworkPath)
{
return FILE.join(info.directory, aFrameworkPath);
}));
}
var debugFrameworks = info["objective-j-debug-frameworks"] ||
info["objj-debug-frameworks"] ||
info["cappuccino-debug-frameworks"] ||
info["capp-debug-frameworks"] ||
info["debug-frameworks"];
if (debugFrameworks)
{
if (!Array.isArray(debugFrameworks))
debugFrameworks = [debugFrameworks + ""];
window.OBJJ_INCLUDE_PATHS = window.OBJJ_INCLUDE_PATHS.concat(debugFrameworks.map(function(aFrameworkPath)
{
return FILE.join(info.directory, aFrameworkPath);
}));
}
}
if (system.env["OBJJ_INCLUDE_PATHS"])
window.OBJJ_INCLUDE_PATHS = system.env["OBJJ_INCLUDE_PATHS"].split(":").concat(window.OBJJ_INCLUDE_PATHS);
@@ -25,9 +76,9 @@ with (window)
{
// read and eval Objective-J.js with the module's scope
if (system.engine === "rhino")
Packages.org.mozilla.javascript.Context.getCurrentContext().evaluateString(window, file.read(objectivejPath, { charset:"UTF-8" }), "Objective-J.js", 0, null);
Packages.org.mozilla.javascript.Context.getCurrentContext().evaluateString(window, FILE.read(objectivejPath, { charset:"UTF-8" }), "Objective-J.js", 0, null);
else
eval(file.read(objectivejPath, { charset:"UTF-8" }));
eval(FILE.read(objectivejPath, { charset:"UTF-8" }));
// export desired variables. must eval variable name to obtain a reference.
[
@@ -90,7 +141,7 @@ exports.run = function(args)
while (args.length && args[0].indexOf('-I') === 0)
OBJJ_INCLUDE_PATHS = args.shift().substr(2).split(':').concat(OBJJ_INCLUDE_PATHS);
var mainFilePath = file.canonical(args.shift());
var mainFilePath = FILE.canonical(args.shift());
objj_import(mainFilePath, YES, function() {
if (typeof main === "function")
@@ -145,7 +196,7 @@ window.objj_preprocess_sync = function(code, path)
if (fragment.type & FRAGMENT_CODE)
preprocessed.push(fragment.info);
else if (fragment.type & FRAGMENT_LOCAL)
preprocessed.push("objj_import_sync('"+(path ? file.join(file.dirname(path), fragment.info) : fragment.info)+"',YES);");
preprocessed.push("objj_import_sync('"+(path ? FILE.join(FILE.dirname(path), fragment.info) : fragment.info)+"',YES);");
else
preprocessed.push("objj_import_sync('"+fragment.info+"',NO);");
});
@@ -37,12 +37,3 @@ var APPLICATION_TASK = require("objective-j/jake/applicationtask");
exports.ApplicationTask = APPLICATION_TASK.ApplicationTask;
exports.app = APPLICATION_TASK.app;
// This check is only necessary because during the build process blendtask gets created much later.
if (FILE.exists(FILE.join(FILE.dirname(module.path), "jake", "blendtask.j")))
{
var BLEND_TASK = require("objective-j/jake/blendtask");
exports.BlendTask = BLEND_TASK.BlendTask;
exports.blend = BLEND_TASK.blend;
}
@@ -1,5 +1,5 @@
var objj = null;
print("objj loader~");
function ObjectiveJLoader() {
var loader = {};
var factories = {};
+3 -2
View File
@@ -11,12 +11,13 @@ while [ -h "$SELF_PATH" ]; do
done
SELF_DIR=`dirname $SELF_PATH`
SELF_HOME=`dirname $SELF_DIR`
export SELF_HOME=`dirname $SELF_DIR`
SELF_LIB="$SELF_HOME/lib"
FRAMEWORKS="$SELF_LIB/Frameworks"
FRAMEWORKS="$SELF_HOME/Frameworks"
MAIN="$SELF_LIB/$(basename $SELF_PATH)/main.j"
# convert paths for Cygwin
if [[ `uname` == CYGWIN* ]]; then
FRAMEWORKS=`cygpath -w "$FRAMEWORKS"`
@@ -1,11 +1,11 @@
{
"name": "objective-j",
"dependencies": ["narwhal", "jack", "browserjs"],
"lib": "lib-js",
"preload": ["objective-j/loader"],
"description": "Objective-J and Cappuccino module",
"keywords": ["objective-j", "objj", "objective j", "cappuccino"],
"author": "280 North, Inc. (http://280north.com/)",
"version": "0.7.9",
"contributors": [
"Francisco Tolmasky (http://tolmasky.com/)",
"Ross Boucher (http://rossboucher.com/)",
+60 -29
View File
@@ -1,34 +1,47 @@
//#!/usr/bin/env narwhal
/*
* Jakefile
* Objective-J
*
* Created by Francisco Tolmasky.
* Copyright 2009, 280 North, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
var FILE = require("file"),
OS = require("os"),
Jake = require("jake");
OS = require("os");
require(FILE.absolute("../common.jake"));
require("../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')
$BUILD_OBJECTIVE_J = FILE.join($BUILD_CONFIGURATION_DIR, "Objective-J");
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");
Files.include("Runtime/debug.js");
task ("build", [$BROWSER_FILE, $RHINO_FILE, $LICENSE_PRODUCT, $COMMONJS_PRODUCT, $COMMONJS_FRAMEWORK_PRODUCT]);
$BUILD_BROWSER_FILE = FILE.join($BUILD_OBJECTIVE_J, "Objective-J.js");
$BUILD_CJS_FILE = FILE.join($BUILD_OBJECTIVE_J, "CommonJS.platform", "Objective-J.js");
filedir ($BROWSER_FILE, Files, function(aTask)
filedir ($BUILD_BROWSER_FILE, Files, function(aTask)
{
build_product(aTask.name(), platform_flags('Browser', 'ObjJ'));
});
filedir ($RHINO_FILE, Files, function(aTask)
filedir ($BUILD_CJS_FILE, Files, function(aTask)
{
flags = platform_flags('CommonJS', 'ObjJ');
flags += ' -DRHINO'
@@ -36,27 +49,46 @@ filedir ($RHINO_FILE, Files, function(aTask)
build_product(aTask.name(), flags)
});
filedir ($LICENSE_PRODUCT, [$LICENSE_FILE], function()
$LICENSE = FILE.join("CommonJS", "lib", "objective-j", "jake", "LICENSES", "LGPL-v2.1");
$BUILD_LICENSE = FILE.join($BUILD_OBJECTIVE_J, "LICENSE");
filedir ($BUILD_LICENSE, [$LICENSE], function()
{
FILE.copy($LICENSE_FILE, $LICENSE_PRODUCT);
FILE.copy($LICENSE, $BUILD_LICENSE);
});
filedir ($COMMONJS_PRODUCT, FILE.glob("CommonJS/objective-j/**/*"), function()
new FileList("CommonJS/**/*").forEach(function(aFilename)
{
rm_rf($COMMONJS_PRODUCT);
cp_r(FILE.join("CommonJS", "objective-j"), $COMMONJS_PRODUCT);
if (!FILE.isFile(aFilename))
return;
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);
var buildFilename = FILE.join($BUILD_CJS_OBJECTIVE_J, FILE.relative("CommonJS/", aFilename));
filedir (buildFilename, [aFilename], function ()
{
cp(aFilename, buildFilename);
});
if (FILE.dirname(aFilename) === FILE.join("CommonJS", "bin"))
{
filedir (buildFilename, function ()
{
FILE.chmod(buildFilename, 0755);
});
}
task ("build", buildFilename);
CLOBBER.include(buildFilename);
});
filedir ($COMMONJS_FRAMEWORK_PRODUCT, function()
$BUILD_CJS_OBJECTIVE_J_FRAMEWORK = FILE.join($BUILD_CJS_OBJECTIVE_J, "Frameworks", "Objective-J");
filedir ($BUILD_CJS_OBJECTIVE_J_FRAMEWORK, function()
{
cp_r(FILE.join($BUILD_DIR, $CONFIGURATION, "Objective-J"), $COMMONJS_FRAMEWORK_PRODUCT);
cp_r($BUILD_OBJECTIVE_J, $BUILD_CJS_OBJECTIVE_J_FRAMEWORK);
});
//CLOBBER.include($ENVIRONMENT_OBJJ_PRODUCT)
CLOBBER.include($BUILD_OBJECTIVE_J);
function platform_flags()
{
@@ -80,5 +112,4 @@ function build_product(path, flags)
// rake abort if ($? != 0)
}
//CLEAN.include() no temporary files.
//CLOBBER.include($PRODUCT, $ENVIRONMENT_PRODUCT);
task ("build", [$BUILD_BROWSER_FILE, $BUILD_CJS_FILE, $BUILD_LICENSE, $BUILD_CJS_OBJECTIVE_J_FRAMEWORK]);
+2 -2
View File
@@ -56,8 +56,8 @@ function gen(/*va_args*/)
if (FILE.isAbsolute(template))
sourceTemplate = FILE.join(template);
else
sourceTemplate = FILE.join(OBJJ.OBJJ_HOME, "lib", "capp", "Resources", "Templates", template);
sourceTemplate = FILE.join(SYSTEM.env["SELF_HOME"], "lib", "capp", "Resources", "Templates", template);
var configFile = FILE.join(sourceTemplate, "template.config"),
config = {};
+7 -9
View File
@@ -1,4 +1,4 @@
#!/usr/bin/env narwhal
require ("../../common.jake");
@@ -6,7 +6,7 @@ require ("../../common.jake");
app ("capp", function(cappTask)
{
cappTask.setBuildIntermediatesPath(FILE.join($BUILD_DIR, "capp.build", $CONFIGURATION))
cappTask.setBuildPath($COMMONJS_PRODUCT_LIB);
cappTask.setBuildPath($BUILD_CJS_CAPPUCCINO_LIB);
cappTask.setAuthor("280 North, Inc.");
cappTask.setEmail("feedback @nospam@ 280north.com");
@@ -27,16 +27,14 @@ app ("capp", function(cappTask)
cappTask.setCompilerFlags("-DDEBUG -g");
});
$COMMONJS_CAPP_BIN_PRODUCT = FILE.join($COMMONJS_PRODUCT_BIN, "capp");
$BUILD_CJS_CAPP = FILE.join($BUILD_CJS_CAPPUCCINO_BIN, "capp");
// executable in environment directory
filedir($COMMONJS_CAPP_BIN_PRODUCT, ["capp"], function()
filedir($BUILD_CJS_CAPP, ["capp"], function()
{
make_objj_executable($COMMONJS_CAPP_BIN_PRODUCT);
make_objj_executable($BUILD_CJS_CAPP);
});
task ("build", ["capp", $COMMONJS_CAPP_BIN_PRODUCT]);
task ("build", ["capp", $BUILD_CJS_CAPP]);
/*
CLOBBER.include($ENVIRONMENT_BIN_PRODUCT, $ENVIRONMENT_LIB_PRODUCT)
*/
CLOBBER.include($BUILD_CJS_CAPPUCCINO_BIN);
+11 -12
View File
@@ -1,4 +1,4 @@
#!/usr/bin/env narwhal
var FILE = require("file");
@@ -8,14 +8,14 @@ require("../../common.jake");
app ("nib2cib", function(nib2cibTask)
{
nib2cibTask.setBuildIntermediatesPath(FILE.join($BUILD_DIR, "nib2cib.build", $CONFIGURATION))
nib2cibTask.setBuildPath($COMMONJS_PRODUCT_LIB);
nib2cibTask.setBuildPath($BUILD_CJS_CAPPUCCINO_LIB);
nib2cibTask.setIdentifier("com.280n.nib2cib");
nib2cibTask.setLicense(BundleTask.License.LGPL_v2_1);
nib2cibTask.setVersion("0.7.1");
// t.author = '280 North, Inc.'
// t.email = 'feedback @nospam@ 280north.com'
// t.summary = 'nib2cib converts Cocoa nib and xibs to Cappuccino cibs'
nib2cibTask.setVersion("0.7.9");
nib2cibTask.setAuthor("280 North, Inc.");
nib2cibTask.setEmail("feedback @nospam@ 280north.com");
nib2cibTask.setSummary("nib2cib converts Cocoa nib and xibs to Cappuccino cibs");
nib2cibTask.setSources(FILE.glob("*.j"));// t.sources = FileList['**/*.j']
nib2cibTask.setResources(FILE.glob("Resources/*"));
nib2cibTask.setPlatforms([BundleTask.Platform.CommonJS]);
@@ -27,15 +27,14 @@ app ("nib2cib", function(nib2cibTask)
nib2cibTask.setCompilerFlags("-DDEBUG -g");
});
$COMMONJS_NIB2CIB_BIN_PRODUCT = FILE.join($COMMONJS_PRODUCT_BIN, 'nib2cib');
$BUILD_CJS_NIB2CIB = FILE.join($BUILD_CJS_CAPPUCCINO_BIN, 'nib2cib');
// executable in environment directory
filedir($COMMONJS_NIB2CIB_BIN_PRODUCT, ["nib2cib"], function()
filedir($BUILD_CJS_NIB2CIB, ["nib2cib"], function()
{
make_objj_executable($COMMONJS_NIB2CIB_BIN_PRODUCT);
make_objj_executable($BUILD_CJS_NIB2CIB);
});
task ("build", ["nib2cib", $COMMONJS_NIB2CIB_BIN_PRODUCT]);
task ("build", ["nib2cib", $BUILD_CJS_NIB2CIB]);
/*
CLOBBER.include($ENVIRONMENT_BIN_PRODUCT, $ENVIRONMENT_LIB_PRODUCT )*/
CLOBBER.include($BUILD_CJS_NIB2CIB);
+7 -14
View File
@@ -6,14 +6,14 @@ require ("../../common.jake");
app ("press", function(pressTask)
{
pressTask.setBuildIntermediatesPath(FILE.join($BUILD_DIR, "press.build", $CONFIGURATION))
pressTask.setBuildPath($COMMONJS_PRODUCT_LIB);
pressTask.setBuildPath($BUILD_CJS_CAPPUCCINO_LIB);
pressTask.setAuthor("280 North, Inc.");
pressTask.setEmail("feedback @nospam@ 280north.com");
pressTask.setSummary("Deployment tool for Cappuccino applications");
pressTask.setIdentifier("com.280n.press");
pressTask.setLicense(BundleTask.License.LGPL_v2_1);
pressTask.setVersion("0.7.1");
pressTask.setVersion("0.7.9");
pressTask.setSources(FILE.glob("*.j"));
pressTask.setResources(FILE.glob("Resources/*"));
pressTask.setPlatforms([BundleTask.Platform.CommonJS]);
@@ -24,21 +24,14 @@ app ("press", function(pressTask)
pressTask.setCompilerFlags("-DDEBUG -g");
});
$COMMONJS_PRESS_BIN_PRODUCT = FILE.join($COMMONJS_PRODUCT_BIN, 'press');
$BUILD_CJS_PRESS = FILE.join($BUILD_CJS_CAPPUCCINO_BIN, 'press');
// executable in environment directory
filedir($COMMONJS_PRESS_BIN_PRODUCT, ["press"], function()
filedir($BUILD_CJS_PRESS, ["press"], function()
{
make_objj_executable($COMMONJS_PRESS_BIN_PRODUCT);
make_objj_executable($BUILD_CJS_PRESS);
});
task ("build", ["press", $COMMONJS_PRESS_BIN_PRODUCT]);
task ("build", ["press", $BUILD_CJS_PRESS]);
/*
file_d $ENVIRONMENT_BRIDGE => [File.join($HOME_DIR, 'Tools', 'Utilities', 'bridge.js')] do
cp(File.join($HOME_DIR, 'Tools', 'Utilities', 'bridge.js'), $ENVIRONMENT_BRIDGE)
end
CLOBBER.include($ENVIRONMENT_BIN_PRODUCT, $ENVIRONMENT_LIB_PRODUCT)
*/
CLOBBER.include($BUILD_CJS_PRESS);
+64 -34
View File
@@ -37,57 +37,86 @@ ENV["BUILD_PATH"] = FILE.absolute(ENV["BUILD_PATH"]);
if (!ENV["CONFIG"])
ENV["CONFIG"] = "Release";
global.$CONFIGURATION = ENV['CONFIG'];
global.$BUILD_DIR = ENV['BUILD_PATH'];
global.$COMMONJS_PRODUCT = FILE.join($BUILD_DIR, $CONFIGURATION, "CommonJS", "objective-j");
global.$COMMONJS_PRODUCT_BIN = FILE.join($COMMONJS_PRODUCT, "bin");
global.$COMMONJS_PRODUCT_LIB = FILE.join($COMMONJS_PRODUCT, "lib");
global.$COMMONJS_PRODUCT_FRAMEWORKS = FILE.join($COMMONJS_PRODUCT_LIB, "Frameworks");
global.$CONFIGURATION = ENV['CONFIG'];
global.$BUILD_DIR = ENV['BUILD_PATH'];
global.$BUILD_CONFIGURATION_DIR = FILE.join($BUILD_DIR, $CONFIGURATION);
global.$BUILD_CJS_OBJECTIVE_J = FILE.join($BUILD_CONFIGURATION_DIR, "CommonJS", "objective-j");
global.$PRODUCT_DIR = FILE.join($BUILD_DIR, $CONFIGURATION);
global.$ENVIRONMENT_DIR = FILE.join($BUILD_DIR, $CONFIGURATION, 'env');
global.$ENVIRONMENT_NARWHAL_BIN_DIR= FILE.join($ENVIRONMENT_DIR, 'bin', '');
global.$ENVIRONMENT_BIN_DIR = FILE.join($ENVIRONMENT_DIR, 'packages', 'objj', 'bin');
global.$ENVIRONMENT_LIB_DIR = FILE.join($ENVIRONMENT_DIR, 'packages', 'objj', 'lib') ;
global.$ENVIRONMENT_FRAMEWORKS_DIR = FILE.join($ENVIRONMENT_LIB_DIR, 'Frameworks');
global.$BUILD_CJS_CAPPUCCINO = FILE.join($BUILD_DIR, $CONFIGURATION, "CommonJS", "cappuccino");
global.$BUILD_CJS_CAPPUCCINO_BIN = FILE.join($BUILD_CJS_CAPPUCCINO, "bin");
global.$BUILD_CJS_CAPPUCCINO_LIB = FILE.join($BUILD_CJS_CAPPUCCINO, "lib");
global.$BUILD_CJS_CAPPUCCINO_FRAMEWORKS = FILE.join($BUILD_CJS_CAPPUCCINO, "Frameworks");
global.$HOME_DIR = FILE.absolute(FILE.dirname(module.path));
global.$LICENSE_FILE = FILE.absolute(FILE.join(FILE.dirname(module.path), 'LICENSE'));
global.setupEnvironment = function()
function partial_require(path, exports)
{
var objectiveJLibJS = FILE.join($BUILD_DIR, $CONFIGURATION, "CommonJS", "objective-j", "lib-js");
var lib = FILE.join(path, "lib");
if (!FILE.exists(objectiveJLibJS))
objectiveJLibJS = FILE.join($HOME_DIR, "Objective-J", "CommonJS", "objective-j", "lib-js");
if (!FILE.exists(lib))
return false;
require.paths.unshift(objectiveJLibJS);
require.paths.unshift(lib);
require("objective-j/loader");
if (FILE.exists(FILE.join(path, "package.json")))
{
var catalog = require("json").parse(FILE.read(FILE.join(path, "package.json"), { charset:"UTF8" }));
var OBJECTIVE_J_JAKE = require("objective-j/jake");
if (catalog.preload)
{
if (!Array.isArray(catalog.preload))
catalog.preload = [catalog.preload];
global.app = OBJECTIVE_J_JAKE.app;
global.bundle = OBJECTIVE_J_JAKE.bundle;
global.framework = OBJECTIVE_J_JAKE.framework;
catalog.preload.forEach(function(preload)
{
require(preload);
});
}
}
if (OBJECTIVE_J_JAKE.blend)
global.blend = OBJECTIVE_J_JAKE.blend;
global.BundleTask = OBJECTIVE_J_JAKE.BundleTask;
var objectiveJBin = FILE.join($BUILD_DIR, $CONFIGURATION, "CommonJS", "objective-j", "bin")
if (!FILE.exists(objectiveJBin))
objectiveJBin = FILE.join($HOME_DIR, "Objective-J", "CommonJS", "objective-j", "bin");
var system = OS.system;
var bin = FILE.join(path, "bin"),
system = OS.system;
// FIXME: is there a better way to do this???
OS.system = function(aCommand)
{
return system("PATH=" + OS.enquote(objectiveJBin) + ":$PATH " + aCommand);
return system("PATH=" + OS.enquote(bin) + ":$PATH " + aCommand);
}
return true;
}
global.setupEnvironment = function()
{
if (partial_require(FILE.join($BUILD_CONFIGURATION_DIR, "CommonJS", "objective-j")) ||
partial_require(FILE.join($HOME_DIR, "Objective-J", "CommonJS", "objective-j")))
{
var OBJECTIVE_J_JAKE = require("objective-j/jake");
global.app = OBJECTIVE_J_JAKE.app;
global.bundle = OBJECTIVE_J_JAKE.bundle;
global.framework = OBJECTIVE_J_JAKE.framework;
global.BundleTask = OBJECTIVE_J_JAKE.BundleTask;
}
if (partial_require(FILE.join($BUILD_CONFIGURATION_DIR, "CommonJS", "cappuccino")))
{
require("objective-j");
require("browser/window").OBJJ_INCLUDE_PATHS.push(FILE.join($BUILD_CONFIGURATION_DIR, "CommonJS", "cappuccino", "Frameworks"));
try
{
var CAPPUCCINO_JAKE = require("cappuccino/jake");
if (CAPPUCCINO_JAKE.blend)
global.blend = CAPPUCCINO_JAKE.blend;
}
catch (anException)
{
}
}
}
@@ -113,6 +142,7 @@ global.cp_r = function(/*String*/ from, /*String*/ to)
global.cp = function(/*String*/ from, /*String*/ to)
{
FILE.copy(from, to);
// FILE.chmod(to, FILE.mod(from));
}
global.mv = function(/*String*/ from, /*String*/ to)