1<?xml version="1.0" ?> 2 3<project name="libphonenumber-javascript" default="compile"> 4 <property name="closure-compiler.dir" 5 value="${basedir}/../../closure-compiler" /> 6 <property name="closure-compiler.jar" 7 value="${closure-compiler.dir}/target/closure-compiler-1.0-SNAPSHOT.jar" /> 8 <property name="closure-library.dir" 9 value="${basedir}/../../closure-library" /> 10 <property name="closure-linter.dir" 11 value="${basedir}/../../closure-linter" /> 12 <property name="python-gflags.dir" 13 value="${basedir}/../../python-gflags" /> 14 15 <macrodef name="closure-compile"> 16 <attribute name="inputfile" /> 17 <attribute name="outputfile" /> 18 <attribute name="compilationlevel" default="ADVANCED_OPTIMIZATIONS" /> 19 <attribute name="outputmode" default="compiled" /> 20 <attribute name="outputwrapper" default="(function(){%output%})();" /> 21 <element name="extraflags" optional="yes" /> 22 <sequential> 23 <exec executable="python" failonerror="true" logError="true"> 24 <arg value="${closure-library.dir}/closure/bin/calcdeps.py" /> 25 <arg line='-i "@{inputfile}"' /> 26 <arg line='--output_file "@{outputfile}"' /> 27 <arg line='-p "${closure-library.dir}"' /> 28 <arg line="-o @{outputmode}" /> 29 <arg line='-c "${closure-compiler.jar}"' /> 30 <arg line='-f "--output_wrapper=@{outputwrapper}"' /> 31 <arg line='-f "--compilation_level=@{compilationlevel}"' /> 32 <arg line='-f "--warning_level=VERBOSE"' /> 33 <arg line='-f "--jscomp_error=accessControls"' /> 34 <arg line='-f "--jscomp_error=checkDebuggerStatement"' /> 35 <arg line='-f "--jscomp_error=checkRegExp"' /> 36 <arg line='-f "--jscomp_error=checkTypes"' /> 37 <arg line='-f "--jscomp_error=checkVars"' /> 38 <arg line='-f "--jscomp_error=const"' /> 39 <arg line='-f "--jscomp_error=constantProperty"' /> 40 <arg line='-f "--jscomp_error=duplicate"' /> 41 <arg line='-f "--jscomp_error=duplicateMessage"' /> 42 <arg line='-f "--jscomp_error=es5Strict"' /> 43 <arg line='-f "--jscomp_error=externsValidation"' /> 44 <arg line='-f "--jscomp_error=extraRequire"' /> 45 <arg line='-f "--jscomp_error=globalThis"' /> 46 <arg line='-f "--jscomp_error=invalidCasts"' /> 47 <arg line='-f "--jscomp_error=misplacedTypeAnnotation"' /> 48 <arg line='-f "--jscomp_error=missingProperties"' /> 49 <arg line='-f "--jscomp_error=missingRequire"' /> 50 <arg line='-f "--jscomp_error=strictMissingRequire"' /> 51 <arg line='-f "--jscomp_error=nonStandardJsDocs"' /> 52 <arg line='-f "--jscomp_error=strictModuleDepCheck"' /> 53 <arg line='-f "--jscomp_error=suspiciousCode"' /> 54 <arg line='-f "--jscomp_error=typeInvalidation"' /> 55 <arg line='-f "--jscomp_error=undefinedNames"' /> 56 <arg line='-f "--jscomp_error=undefinedVars"' /> 57 <arg line='-f "--jscomp_error=unknownDefines"' /> 58 <arg line='-f "--jscomp_error=uselessCode"' /> 59 <arg line='-f "--jscomp_error=visibility"' /> 60 <extraflags /> 61 </exec> 62 </sequential> 63 </macrodef> 64 65 <macrodef name="gjslint"> 66 <attribute name="inputfile" /> 67 <sequential> 68 <exec executable="python" failonerror="false" logError="true"> 69 <env key="PYTHONPATH" 70 value="${closure-linter.dir}:${python-gflags.dir}"/> 71 <arg value="${closure-linter.dir}/closure_linter/gjslint.py" /> 72 <arg line='--strict' /> 73 <arg line='"@{inputfile}"' /> 74 </exec> 75 </sequential> 76 </macrodef> 77 78 <condition property="os.iswindows"> 79 <os family="windows" /> 80 </condition> 81 <condition property="os.isunix"> 82 <os family="unix" /> 83 </condition> 84 <target name="nul" if="os.iswindows"> 85 <property name="null.device" value="NUL" /> 86 </target> 87 <target name="devnull" if="os.isunix"> 88 <property name="null.device" value="/dev/null" /> 89 </target> 90 <target name="setnulldevice" depends="nul,devnull" /> 91 92 <target name="clean" description="deletes all generated files"> 93 <delete file="i18n/phonenumbers/demo-compiled.js" /> 94 </target> 95 96 <target name="compile-demo" 97 description="generates demo-compiled.js"> 98 <closure-compile inputfile="i18n/phonenumbers/demo.js" 99 outputfile="i18n/phonenumbers/demo-compiled.js"> 100 <extraflags> 101 <arg line='-p "i18n/phonenumbers"' /> 102 <arg line='-e "i18n/phonenumbers/metadatafortesting.js"' /> 103 <arg line='-e "i18n/phonenumbers/metadatalite.js"' /> 104 <arg line='-e "i18n/phonenumbers/regioncodefortesting.js"' /> 105 </extraflags> 106 </closure-compile> 107 </target> 108 109 <target name="compile-tests" depends="setnulldevice"> 110 <closure-compile inputfile="i18n/phonenumbers/asyoutypeformatter_test.js" 111 outputfile="${null.device}"> 112 <extraflags> 113 <arg line='-p "i18n/phonenumbers"' /> 114 <arg line='-e "i18n/phonenumbers/metadata.js"' /> 115 <arg line='-e "i18n/phonenumbers/metadatalite.js"' /> 116 </extraflags> 117 </closure-compile> 118 <closure-compile inputfile="i18n/phonenumbers/phonenumberutil_test.js" 119 outputfile="${null.device}"> 120 <extraflags> 121 <arg line='-p "i18n/phonenumbers"' /> 122 <arg line='-e "i18n/phonenumbers/metadata.js"' /> 123 <arg line='-e "i18n/phonenumbers/metadatalite.js"' /> 124 </extraflags> 125 </closure-compile> 126 <closure-compile inputfile="i18n/phonenumbers/shortnumberinfo_test.js" 127 outputfile="${null.device}"> 128 <extraflags> 129 <arg line='-p "i18n/phonenumbers"' /> 130 <arg line='-e "i18n/phonenumbers/metadata.js"' /> 131 <arg line='-e "i18n/phonenumbers/metadatalite.js"' /> 132 </extraflags> 133 </closure-compile> 134 </target> 135 136 <target name="compile" depends="compile-demo,compile-tests" /> 137 138 <target name="lint" description="lints all javascript files"> 139 <gjslint inputfile="i18n/phonenumbers/asyoutypeformatter*.js" /> 140 <gjslint inputfile="i18n/phonenumbers/demo.js" /> 141 <gjslint inputfile="i18n/phonenumbers/phonenumberutil*.js" /> 142 <gjslint inputfile="i18n/phonenumbers/shortnumberinfo*.js" /> 143 </target> 144 145</project> 146