Add README
[platform/upstream/libphonenumber.git] / javascript / build.xml
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}/build/compiler.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=ambiguousFunctionDecl"' />
35         <arg line='-f "--jscomp_error=checkDebuggerStatement"' />
36         <arg line='-f "--jscomp_error=checkRegExp"' />
37         <arg line='-f "--jscomp_error=checkTypes"' />
38         <arg line='-f "--jscomp_error=checkVars"' />
39         <arg line='-f "--jscomp_error=const"' />
40         <arg line='-f "--jscomp_error=constantProperty"' />
41         <arg line='-f "--jscomp_error=deprecated"' />
42         <arg line='-f "--jscomp_error=duplicate"' />
43         <arg line='-f "--jscomp_error=duplicateMessage"' />
44         <arg line='-f "--jscomp_error=es5Strict"' />
45         <arg line='-f "--jscomp_error=externsValidation"' />
46         <arg line='-f "--jscomp_error=fileoverviewTags"' />
47         <arg line='-f "--jscomp_error=globalThis"' />
48         <arg line='-f "--jscomp_error=internetExplorerChecks"' />
49         <arg line='-f "--jscomp_error=invalidCasts"' />
50         <arg line='-f "--jscomp_error=misplacedTypeAnnotation"' />
51         <arg line='-f "--jscomp_error=missingProperties"' />
52         <arg line='-f "--jscomp_error=nonStandardJsDocs"' />
53         <arg line='-f "--jscomp_error=strictModuleDepCheck"' />
54         <arg line='-f "--jscomp_error=suspiciousCode"' />
55         <arg line='-f "--jscomp_error=typeInvalidation"' />
56         <arg line='-f "--jscomp_error=undefinedNames"' />
57         <arg line='-f "--jscomp_error=undefinedVars"' />
58         <arg line='-f "--jscomp_error=unknownDefines"' />
59         <arg line='-f "--jscomp_error=uselessCode"' />
60         <arg line='-f "--jscomp_error=visibility"' />
61         <extraflags />
62       </exec>
63     </sequential>
64   </macrodef>
65
66   <macrodef name="gjslint">
67     <attribute name="inputfile" />
68     <sequential>
69       <exec executable="python" failonerror="false" logError="true">
70         <env key="PYTHONPATH"
71              value="${closure-linter.dir}:${python-gflags.dir}"/>
72         <arg value="${closure-linter.dir}/closure_linter/gjslint.py" />
73         <arg line='--strict' />
74         <arg line='"@{inputfile}"' />
75       </exec>
76     </sequential>
77   </macrodef>
78
79   <condition property="os.iswindows">
80     <os family="windows" />
81   </condition>
82   <condition property="os.isunix">
83     <os family="unix" />
84   </condition>
85   <target name="nul" if="os.iswindows">
86     <property name="null.device" value="NUL" />
87   </target>
88   <target name="devnull" if="os.isunix">
89     <property name="null.device" value="/dev/null" />
90   </target>
91   <target name="setnulldevice" depends="nul,devnull" />
92
93   <target name="clean" description="deletes all generated files">
94     <delete file="i18n/phonenumbers/demo-compiled.js" />
95   </target>
96
97   <target name="compile-demo"
98           description="generates demo-compiled.js">
99     <closure-compile inputfile="i18n/phonenumbers/demo.js"
100                      outputfile="i18n/phonenumbers/demo-compiled.js">
101       <extraflags>
102         <arg line='-p "i18n/phonenumbers"' />
103         <arg line='-e "i18n/phonenumbers/metadatafortesting.js"' />
104         <arg line='-e "i18n/phonenumbers/metadatalite.js"' />
105         <arg line='-e "i18n/phonenumbers/regioncodefortesting.js"' />
106       </extraflags>
107     </closure-compile>
108   </target>
109
110   <target name="compile-tests" depends="setnulldevice">
111     <closure-compile inputfile="i18n/phonenumbers/asyoutypeformatter_test.js"
112                      outputfile="${null.device}">
113       <extraflags>
114         <arg line='-p "i18n/phonenumbers"' />
115         <arg line='-e "i18n/phonenumbers/metadata.js"' />
116         <arg line='-e "i18n/phonenumbers/metadatalite.js"' />
117       </extraflags>
118     </closure-compile>
119     <closure-compile inputfile="i18n/phonenumbers/phonenumberutil_test.js"
120                      outputfile="${null.device}">
121       <extraflags>
122         <arg line='-p "i18n/phonenumbers"' />
123         <arg line='-e "i18n/phonenumbers/metadata.js"' />
124         <arg line='-e "i18n/phonenumbers/metadatalite.js"' />
125       </extraflags>
126     </closure-compile>
127   </target>
128
129   <target name="compile" depends="compile-demo,compile-tests" />
130
131   <target name="lint" description="lints all javascript files">
132     <gjslint inputfile="i18n/phonenumbers/asyoutypeformatter*.js" />
133     <gjslint inputfile="i18n/phonenumbers/demo.js" />
134     <gjslint inputfile="i18n/phonenumbers/phonenumberutil*.js" />
135   </target>
136
137 </project>