mirror of https://github.com/CesiumGS/cesium.git
377 lines
14 KiB
XML
377 lines
14 KiB
XML
<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}" />
|
|
</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/**" />
|
|
<include name="CHANGES" />
|
|
<include name="index.html" />
|
|
<include name="LICENSE" />
|
|
<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="b5" />
|
|
<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("'" + 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>
|
|
|
|
<server proxyContextPath="/proxy" allowedHostList="server.arcgisonline.com,tile.openstreetmap.org,otile1.mqcdn.com,oatile1.mqcdn.com,tile.stamen.com,dev.virtualearth.net" port="8080" baseDir="${basedir}" />
|
|
</target>
|
|
</project>
|