Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

388 lines (327 sloc) 14.507 kB
<project name="Cesium" default="combine">
<target name="build" description="A developer build that runs in-place.">
<parallel>
<glslToJavascript destination="${shadersDirectory}" stripcomments="${build.minification}">
<fileset dir="${shadersDirectory}" includes="*.glsl" />
</glslToJavascript>
<createCesiumJs output="${sourceDirectory}/Cesium.js">
<fileset dir="${sourceDirectory}" includes="**/*.js" excludes="Cesium.js,main.js" />
</createCesiumJs>
<createSpecList output="${specsDirectory}/SpecList.js">
<fileset dir="${specsDirectory}" includes="**/*.js" excludes="*.js" />
</createSpecList>
</parallel>
</target>
<target name="combine" description="Combines all source files into a single stand-alone script." depends="build, combineJavaScript, concatenateSandboxSnippets" />
<target name="minify" description="Combines all source files into a single stand-alone, minified script.">
<antcall target="combine">
<param name="build.minification" value="true" />
</antcall>
</target>
<target name="release" description="A full release build that creates a shippable product, including documentation.">
<antcall target="combine">
<param name="build.minification" value="true" />
</antcall>
<antcall target="generateDocumentation" />
</target>
<target name="instrumentForCoverage" description="A debug build instrumented for JSCoverage (currently Windows only)." depends="build">
<exec executable="${jscoveragePath}">
<arg line="${sourceDirectory} ${instrumentedDirectory}" />
<arg line="--no-instrument=./ThirdParty" />
</exec>
</target>
<target name="makeZipFile" description="Builds a zip file containing all release files." depends="release">
<zip destfile="Cesium-${version}.zip" basedir="${basedir}">
<include name="Build/**" />
<include name="Examples/**" />
<include name="Images/**" />
<include name="Source/**" />
<include name="Specs/**" />
<include name="ThirdParty/**" />
<!-- Remove this once we're upgraded to 1.7.2 -->
<exclude name="ThirdParty/dojo-release-1.7.2-src/**" />
<include name="index.html" />
<include name="LICENSE.md" />
<include name="CHANGES.md" />
<include name="README.md" />
</zip>
</target>
<target name="clean" description="Cleans the build.">
<delete includeEmptyDirs="true" failonerror="false">
<fileset dir="${buildDirectory}" defaultexcludes="false" />
<fileset dir="${instrumentedDirectory}" defaultexcludes="false" />
<fileset dir="${shadersDirectory}" includes="*.js" />
<fileset dir="${specsDirectory}" includes="SpecList.js" />
<fileset dir="." includes="Cesium-*.zip" />
</delete>
</target>
<!-- properties controlling which steps get run -->
<property name="build.minification" value="false" />
<!-- Inputs -->
<property name="version" value="b6a" />
<property name="sourceDirectory" location="Source" />
<property name="shadersDirectory" location="${sourceDirectory}/Shaders" />
<property name="examplesDirectory" location="Examples" />
<property name="specsDirectory" location="Specs" />
<property name="imagesDirectory" location="Images" />
<property name="toolsDirectory" location="Tools" />
<property name="thirdPartyDirectory" location="ThirdParty" />
<property name="rjsPath" location="${thirdPartyDirectory}/requirejs-1.0.8/r.js" />
<property name="almondPath" location="${thirdPartyDirectory}/almond-0.0.3/almond.js" />
<property name="jscoveragePath" location="${toolsDirectory}/jscoverage-0.5.1/jscoverage.exe" />
<property name="documentationImagesDirectory" location="Documentation/Images" />
<property name="jsdoc3Directory" location="${toolsDirectory}/jsdoc3" />
<property name="webProxyDirectory" location="${toolsDirectory}/proxy" />
<!-- Outputs -->
<property name="buildDirectory" location="Build" />
<property name="instrumentedDirectory" location="Instrumented" />
<property name="buildOutputDirectory" location="${buildDirectory}/Cesium" />
<property name="buildDocumentationDirectory" location="${buildDirectory}/Documentation" />
<property name="buildDocumentationImagesDirectory" location="${buildDocumentationDirectory}/images" />
<property name="builtCesiumFile" location="${buildDirectory}/Cesium.js" />
<!-- ********************************************************************** -->
<scriptdef name="glslToJavascript" language="javascript">
<!-- Scott Hunter is my hero. - Cozzi -->
<attribute name="destination" />
<attribute name="stripcomments" />
<element name="fileset" type="fileset" />
<![CDATA[
importClass(java.io.File);
importClass(java.io.FileReader);
importClass(java.io.FileWriter);
importClass(java.io.StringReader);
importClass(Packages.org.apache.tools.ant.util.FileUtils);
importClass(Packages.org.apache.tools.ant.filters.StripJavaComments);
var stripComments = attributes.get("stripcomments");
var destination = attributes.get("destination");
var filesets = elements.get("fileset");
for (var i = 0; i < filesets.size(); i++) {
var fileset = filesets.get(i);
var basedir = fileset.getDir(project);
var filenames = fileset.getDirectoryScanner(project).getIncludedFiles();
for (var j = 0; j < filenames.length; j++) {
var filename = filenames[j];
var file = new File(basedir, filename);
var targetFile = new File(destination, file.getName().replace('.glsl', '.js'));
if (file.lastModified() < targetFile.lastModified()) {
continue;
}
var reader = new FileReader(file);
var contents = String(FileUtils.readFully(reader));
reader.close();
contents = contents.replace(/\r\n/gm, '\n');
var copyrightComments = contents.match(/\/\*\!(?:.|\n)*?\*\//gm) || [];
if (stripComments) {
contents = String(FileUtils.readFully(new StripJavaComments(new StringReader(contents))));
contents = contents.replace(/\s+$/gm, '').replace(/^\s+/gm, '').replace(/\n+/gm, '\n');
contents += '\n';
}
contents = contents.split('"').join('\\"').replace(/\n/gm, '\\n" +\n"');
contents = copyrightComments.join('\n') + '\n' +
'/*global define*/\n' +
'define(function() {\n' +
' "use strict";\n' +
' return "' + contents + '";\n' +
'});'
var writer = new FileWriter(targetFile);
writer.write(contents);
writer.close();
}
}
]]>
</scriptdef>
<scriptdef name="createCesiumJs" language="javascript">
<attribute name="output" />
<element name="fileset" type="fileset" />
<![CDATA[
importClass(java.io.File);
importClass(java.io.FileReader);
importClass(java.io.FileWriter);
importClass(Packages.org.apache.tools.ant.util.FileUtils);
var moduleIDs = [];
var parameters = [];
var assignments = [];
var filesets = elements.get("fileset");
for (var i = 0, len = filesets.size(); i < len; i++) {
var fileset = filesets.get(i);
var basedir = fileset.getDir(project);
var filenames = fileset.getDirectoryScanner(project).getIncludedFiles();
for (var j = 0, len2 = filenames.length; j < len2; j++) {
var relativePath = filenames[j];
var file = new File(basedir, relativePath);
var moduleID = relativePath.replace('\\', '/');
moduleID = moduleID.substring(0, moduleID.lastIndexOf('.'));
var baseName = file.getName();
var assignmentName = baseName.substring(0, baseName.lastIndexOf('.'));
if (/Shaders\//.test(moduleID)) {
assignmentName = '_shaders.' + assignmentName;
}
var parameterName = moduleID.replace('/', '_');
moduleIDs.push("'" + moduleID + "'");
parameters.push(parameterName);
assignments.push('Cesium.' + assignmentName + ' = ' + parameterName + ';');
}
}
var output = attributes.get("output");
if (new File(output).exists()) {
var reader = new FileReader(output);
var oldContents = String(FileUtils.readFully(reader));
reader.close();
}
var contents = '/*global define*/\n' +
'define([' + moduleIDs.join(', ') + '], function (' + parameters.join(', ') + ') {\n' +
' "use strict";\n' +
' var Cesium = { _shaders : {} };\n ' +
assignments.join('\n ') + '\n' +
' return Cesium;\n' +
'});';
if (oldContents !== contents) {
var writer = new FileWriter(output);
writer.write(contents);
writer.close();
}
]]>
</scriptdef>
<scriptdef name="createSpecList" language="javascript">
<attribute name="output" />
<element name="fileset" type="fileset" />
<![CDATA[
importClass(java.io.File);
importClass(java.io.FileReader);
importClass(java.io.FileWriter);
importClass(Packages.org.apache.tools.ant.util.FileUtils);
var specs = [];
var filesets = elements.get("fileset");
for (var i = 0, len = filesets.size(); i < len; i++) {
var fileset = filesets.get(i);
var basedir = fileset.getDir(project);
var filenames = fileset.getDirectoryScanner(project).getIncludedFiles();
for (var j = 0, len2 = filenames.length; j < len2; j++) {
var relativePath = filenames[j];
var spec = relativePath.substring(0, relativePath.lastIndexOf('.')).replace('\\', '/');
specs.push("'Specs/" + spec + "'");
}
}
var output = attributes.get("output");
if (new File(output).exists()) {
var reader = new FileReader(output);
var oldContents = String(FileUtils.readFully(reader));
reader.close();
}
var contents = 'var specs = [' + specs.join(',') + '];';
if (oldContents !== contents) {
var writer = new FileWriter(output);
writer.write(contents);
writer.close();
}
]]>
</scriptdef>
<target name="combineJavaScript.setNodePathValue">
<condition property="nodePathValue" value="${toolsDirectory}/nodejs-0.6.17/windows/node.exe">
<os family="windows" />
</condition>
<condition property="nodePathValue" value="${toolsDirectory}/nodejs-0.6.17/mac/node">
<os family="mac" />
</condition>
<condition property="nodePathValue" value="${toolsDirectory}/nodejs-0.6.17/linux/node">
<os family="unix" />
</condition>
</target>
<target name="combineJavaScript.setNodePathLocation" if="nodePathValue">
<property name="nodePath" location="${nodePathValue}" />
</target>
<target name="combineJavaScript.setNodePath" depends="combineJavaScript.setNodePathValue,combineJavaScript.setNodePathLocation">
<condition property="nodePath" value="node">
<not>
<isset property="nodePath" />
</not>
</condition>
</target>
<target name="combineJavaScript.runrjs">
<!-- create relative paths because r.js can't handle full Windows paths -->
<property name="relativeAlmondPath" location="${almondPath}" relative="true" basedir="${sourceDirectory}" />
<property name="relativeCesiumFilePath" location="${buildDirectory}\temp.js" relative="true" basedir="${sourceDirectory}" />
<exec executable="${nodePath}" dir="${sourceDirectory}">
<arg line="${rjsPath} -o optimize=${optimize} wrap=true baseUrl=. name=${relativeAlmondPath} include=main out=${relativeCesiumFilePath}" />
</exec>
<concat destfile="${builtCesiumFile}">
<header trimleading="true">
/*!
* Copyright 2011-2012 Cesium Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Columbus View (Pat. Pend.)
*/
</header>
<fileset file="${buildDirectory}\temp.js" />
</concat>
<delete file="${buildDirectory}\temp.js" />
</target>
<target name="combineJavaScript.createUnminified" depends="combineJavaScript.setNodePath">
<antcall target="combineJavaScript.runrjs">
<param name="optimize" value="none" />
</antcall>
<copy file="${builtCesiumFile}" tofile="${buildDirectory}/CesiumUnminified.js" />
</target>
<target name="combineJavaScript.createMinified" if="${build.minification}">
<antcall target="combineJavaScript.runrjs">
<param name="optimize" value="uglify" />
</antcall>
</target>
<target name="combineJavaScript" depends="combineJavaScript.createUnminified,combineJavaScript.createMinified" />
<target name="concatenateSandboxSnippets">
<concat destfile="${examplesDirectory}/Sandbox/CodeSnippetsConcatenated.js" fixLastLine="true">
<fileset dir="${examplesDirectory}/Sandbox/CodeSnippets" includes="**/*.js" />
</concat>
<copy todir="${examplesDirectory}/Sandbox/Images">
<fileset dir="${imagesDirectory}" />
</copy>
</target>
<target name="copyIndexHtml">
<copy file="index.html" todir="${buildDirectory}" />
</target>
<target name="generateDocumentation">
<!--
These needs to be a relative path because Rhino doesn't work properly with Windows
absolute paths:
https://github.com/mozilla/rhino/issues/10
-->
<property name="relativeDocOutputDirectory" location="${buildDocumentationDirectory}" relative="true" basedir="${jsdoc3Directory}" />
<property name="relativeSourceFilesPath" location="${sourceDirectory}" relative="true" basedir="${jsdoc3Directory}" />
<java jar="${jsdoc3Directory}/lib/js.jar" dir="${jsdoc3Directory}" fork="true">
<arg line="-modules node_modules -modules rhino_modules -modules ." />
<arg line="jsdoc.js" />
<arg line="-r" />
<arg line="-d ${relativeDocOutputDirectory}" />
<arg line="${relativeSourceFilesPath}" />
</java>
<copy todir="${buildDocumentationImagesDirectory}">
<fileset dir="${documentationImagesDirectory}" />
</copy>
</target>
<target name="runServer">
<taskdef name="server" classname="com.agi.ServerTask">
<classpath>
<fileset dir="${webProxyDirectory}" includes="**/*.jar" />
</classpath>
</taskdef>
<!--
Other server options:
upstreamProxyHost: a standard proxy server that the local server will use to retrieve data
upstreamProxyPort: the port number of the upstream proxy, default 80
noUpstreamProxyHostList: A comma-separated list of hosts that will not use the upstreamProxy
-->
<server proxyContextPath="/proxy" allowedHostList="server.arcgisonline.com,tile.openstreetmap.org,otile1.mqcdn.com,oatile1.mqcdn.com,tile.stamen.com,*.virtualearth.net" port="8080" baseDir="${basedir}" />
</target>
</project>
Jump to Line
Something went wrong with that request. Please try again.