Skip to content

Commit 1aff2ca

Browse files
committed
Merge branch 'nodejsbuildsystem' of git://github.com/gero3/three.js into dev
2 parents 8f968de + 47010c1 commit 1aff2ca

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+35951
-0
lines changed

utils/build.js

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
var fs = require("fs");
2+
var path = require("path");
3+
var argsparser = require( "argsparser" );
4+
var uglify = require("uglify-js");
5+
6+
7+
function merge(files){
8+
"use strict";
9+
var buffer = [];
10+
for (var i = 0,il = files.length;i<il;i++){
11+
var fileName = path.join("src", files[i]);
12+
buffer.push(fs.readFileSync(fileName,'utf8'));
13+
}
14+
15+
return buffer.join("");
16+
17+
}
18+
19+
function output(text, filename){
20+
"use strict";
21+
var file = path.join('build', filename);
22+
fs.writeFileSync(file,text,'utf8');
23+
}
24+
25+
26+
function compress(text, fname_externs){
27+
/*
28+
29+
externs = ""
30+
if fname_externs:
31+
externs = "--externs %s.js" % fname_externs
32+
33+
in_tuple = tempfile.mkstemp()
34+
with os.fdopen(in_tuple[0], 'w') as handle:
35+
handle.write(text)
36+
37+
out_tuple = tempfile.mkstemp()
38+
39+
os.system("java -jar compiler/compiler.jar --warning_level=VERBOSE --jscomp_off=globalThis --jscomp_off=checkTypes --externs externs_common.js %s --language_in=ECMASCRIPT5_STRICT --js %s --js_output_file %s" % (externs, in_tuple[1], out_tuple[1]))
40+
41+
with os.fdopen(out_tuple[0], 'r') as handle:
42+
compressed = handle.read()
43+
44+
os.unlink(in_tuple[1])
45+
os.unlink(out_tuple[1])
46+
47+
return compressed*/
48+
"use strict";
49+
return uglify(text);
50+
}
51+
52+
function addHeader(text, endFilename){
53+
"use strict";
54+
return "// " + endFilename + " - http://github.com/mrdoob/three.js\n" + text;
55+
56+
}
57+
58+
function makeDebug(text){
59+
"use strict";
60+
var position = 0;
61+
while (true){
62+
position = text.indexOf("/* DEBUG", position);
63+
if (position == -1){
64+
break;
65+
}
66+
text = text.substring(0,position) + text.substring(position+8);
67+
position = text.find("*/", position);
68+
text = text.substring(0,position) + text.substring(position+2);
69+
}
70+
return text;
71+
}
72+
73+
function buildLib(files, debug, minified, filename, fname_externs){
74+
"use strict";
75+
var text = merge(files);
76+
77+
if (debug){
78+
text = makeDebug(text);
79+
filename = filename + 'Debug';
80+
}
81+
82+
var folder;
83+
if (filename == "Three"){
84+
folder = '';
85+
} else {
86+
folder = 'custom/';
87+
}
88+
89+
filename = filename + '.js';
90+
91+
//print("=" * 40)
92+
console.log("========================================");
93+
console.log("Compiling " + filename);
94+
//print("=" * 40)
95+
console.log("========================================");
96+
97+
if (minified){
98+
text = compress(text, fname_externs);
99+
}
100+
101+
output(addHeader(text, filename), folder + filename);
102+
103+
}
104+
105+
function buildIncludes(files, filename){
106+
"use strict";
107+
//var template = "\t\t<script src='../src/%s'></script>";
108+
//var text = "\n".join(template % f for f in files)
109+
var text = [];
110+
for (var i = 0,il = files.length;i<il;i++){
111+
text.push("\t\t<script src='../src/" + files[i] + "'></script>");
112+
}
113+
114+
output(text.join("\n"), filename + '.js');
115+
}
116+
117+
function getFileNames(){
118+
"use strict";
119+
var fileName = "utils/files.json";
120+
var data = JSON.parse(fs.readFileSync(fileName,'utf8'));
121+
return data;
122+
}
123+
124+
function parse_args(){
125+
"use strict";
126+
//parse
127+
var returnValue = argsparser.parse();
128+
/*
129+
# If no arguments have been passed, show the help message and exit
130+
if len(sys.argv) == 1:
131+
parser.print_help()
132+
sys.exit(1)
133+
*/
134+
for (var i in returnValue){
135+
if (i.substring(0,2) == "--"){
136+
returnValue[i.substring(2)] = returnValue[i];
137+
delete returnValue[i];
138+
} else {
139+
delete returnValue[i];
140+
}
141+
}
142+
return returnValue;
143+
}
144+
145+
function main(){
146+
"use strict";
147+
var args = parse_args();
148+
var debug = args.debug;
149+
var minified = args.minified;
150+
var files = getFileNames();
151+
152+
var config = [
153+
['Three', 'includes', '', files["COMMON"].concat(files["EXTRAS"]), args.common],
154+
['ThreeCanvas', 'includes_canvas', '', files["CANVAS"], args.canvas],
155+
['ThreeWebGL', 'includes_webgl', '', files["WEBGL"], args.webgl],
156+
['ThreeExtras', 'includes_extras', 'externs_extras', files["EXTRAS"], args.extras]
157+
];
158+
159+
160+
for (var i = 0,il = config.length;i<il;i++){
161+
var chosenConfig = config[i],
162+
fname_lib = chosenConfig[0],
163+
fname_inc = chosenConfig[1],
164+
fname_externs = chosenConfig[2],
165+
files = chosenConfig[3],
166+
enabled = chosenConfig[4];
167+
if (enabled || args.all){
168+
buildLib(files, debug, minified, fname_lib, fname_externs);
169+
if (args.includes){
170+
buildIncludes(files, fname_inc);
171+
}
172+
}
173+
}
174+
}
175+
main();
176+
177+

utils/node_modules/argsparser/.gitignore

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

utils/node_modules/argsparser/Makefile

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

utils/node_modules/argsparser/index.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

utils/node_modules/argsparser/lib/argsparser.js

Lines changed: 41 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

utils/node_modules/argsparser/package.json

Lines changed: 19 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

utils/node_modules/argsparser/readme.md

Lines changed: 34 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

utils/node_modules/argsparser/test/test.js

Lines changed: 39 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

utils/node_modules/uglify-js/.npmignore

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)