source: release-kits/rk3/ant-scripts/wrap.xml@ 20335

Last change on this file since 20335 was 20335, checked in by oranfry, 15 years ago

a new os-non-specific greenstone3 release kit, to replace lirk3, wirk3 and mark3

File size: 8.6 KB
Line 
1<?xml version="1.0" encoding="utf-8" ?>
2<project name="rk3-wrap" default="wrap">
3
4 <target name="wrap">
5 <!-- windows -->
6 <if><bool><equals arg1="${rk.os}" arg2="windows"/></bool>
7 <antcall target="windows-wrap"/>
8 <!-- linux -->
9 <else><if><bool><equals arg1="${rk.os}" arg2="linux"/></bool>
10 <antcall target="linux-wrap"/>
11 <!-- mac -->
12 <else><if><bool><equals arg1="${rk.os}" arg2="mac"/></bool>
13 <antcall target="mac-wrap"/>
14 </if></else></if></else></if>
15
16 </target>
17
18 <target name="linux-wrap">
19 <antcall target="linux-setup-for-wrapping"/>
20 <antcall target="linux-compile-wrapper"/>
21 </target>
22
23 <target name="windows-wrap">
24 <antcall target="windows-copy-files-for-wrapping"/>
25 <antcall target="windows-tweak-files-for-wrapping"/>
26 <antcall target="windows-compile-resources"/>
27 <antcall target="windows-compile-wrapper"/>
28 <antcall target="windows-link-wrapper"/>
29 </target>
30
31
32
33 <target name="linux-setup-for-wrapping">
34
35 <!-- create and setup the build directory -->
36 <mkdir dir="${basedir}/wrapped-installer/build"/>
37 <copy todir="${basedir}/wrapped-installer/build" file="${rk3.home}/linux/wrapper.cpp" overwrite="true" />
38 <copy todir="${basedir}/wrapped-installer/build" file="${rk3.home}/core/search4j/libsearch4j.cpp" overwrite="true" />
39 <copy todir="${basedir}/wrapped-installer/build" file="${rk3.home}/core/search4j/libsearch4j.h" overwrite="true" />
40
41 <!-- copy bundled files -->
42 <copy todir="${basedir}/wrapped-installer/build" file="${rk3.home}/linux/${linux-java.installer}"/>
43 <copy tofile="${basedir}/wrapped-installer/build/greenstone3.jar" file="${basedir}/installer/Greenstone-${version}-${os.suffix}.jar"/>
44
45 <!-- substitute the real java installer filename and min version into various files -->
46 <rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@java.installer@" replacement="${linux-java.installer}"/>
47 <rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@installer.name@" replacement="greenstone3"/>
48 <rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@java.extracted@" replacement="${linux-java.extracted}"/>
49 <rsr file="${basedir}/wrapped-installer/build/wrapper.cpp" pattern="@java.min.version@" replacement="${java.min.version}"/>
50
51 </target>
52
53 <target name="linux-compile-wrapper">
54 <mkdir dir="products"/>
55 <echo level="info">create an object file (extension .o) for each file to bundle</echo>
56 <exec executable="/usr/bin/objcopy" dir="${basedir}/wrapped-installer/build">
57 <arg line="-I binary -O elf32-i386 -B i386 --redefine-sym _binary_greenstone3_jar_start=greenstone3jar --readonly-text greenstone3.jar greenstone3.jar.o"/>
58 </exec>
59 <exec executable="/usr/bin/objcopy" dir="${basedir}/wrapped-installer/build">
60 <arg line="-I binary -O elf32-i386 -B i386 --redefine-sym _binary_${linux-java.installer}_start=java --readonly-text ${linux-java.installer} java.o"/>
61 </exec>
62
63 <!-- get size of greenstone.jar -->
64 <exec executable="ls" dir="${basedir}/wrapped-installer/build" outputproperty="greenstone3.jar.ls"><arg line="-l greenstone3.jar"/></exec>
65 <exec executable="sed" inputstring="${greenstone3.jar.ls}" outputproperty="greenstone3.jar.size"><arg line="-e 's/^[^\ ]*\ *[^\ ]*\ *[^\ ]*\ *[^\ ]*\ *\([0-9]*\).*$/\1/g'"/></exec>
66
67 <!-- get size of java -->
68 <exec executable="ls" dir="${basedir}/wrapped-installer/build" outputproperty="java.ls"><arg line="-l ${linux-java.installer}"/></exec>
69 <exec executable="sed" inputstring="${java.ls}" outputproperty="java.size"><arg line="-e 's/^[^\ ]*\ *[^\ ]*\ *[^\ ]*\ *[^\ ]*\ *\([0-9]*\).*$/\1/g'"/></exec>
70
71 <echo level="info">compile libsearch4j</echo>
72 <exec executable="g++" dir="${basedir}/wrapped-installer/build">
73 <arg line="-Wall -static -static-libgcc -c -o libsearch4j.o libsearch4j.cpp"/>
74 </exec>
75
76 <echo level="info">creating the header file for bundled java version</echo>
77 <delete file="wrapper.h"/>
78 <exec executable="echo" output="${basedir}/wrapped-installer/build/wrapper.h"><arg line="extern const char greenstone3jar[${greenstone3.jar.size}];"/></exec>
79 <exec executable="echo" output="${basedir}/wrapped-installer/build/wrapper.h" append="true"><arg line="extern const char java[${java.size}];"/></exec>
80 <exec executable="echo" output="${basedir}/wrapped-installer/build/wrapper.h" append="true"><arg line="#define java_is_bundled yes"/></exec>
81
82 <echo level="info">recompile the wrapper program</echo>
83 <exec executable="g++" dir="${basedir}/wrapped-installer/build">
84 <arg line="-Wall -static -static-libgcc -c -o wrapper.o wrapper.cpp"/>
85 </exec>
86
87 <echo level="info">relink, bundling the files to be bundled</echo>
88 <exec executable="g++" dir="${basedir}/wrapped-installer/build">
89 <arg line="-static -static-libgcc -o ../../products/Greenstone-${version}-${os.suffix} wrapper.o libsearch4j.o greenstone3.jar.o java.o"/>
90 </exec>
91
92 </target>
93
94 <target name="windows-copy-files-for-wrapping">
95 <echo>Copying wrapper source files</echo>
96 <mkdir dir="${basedir}/wrapped-installer"/>
97 <copy todir="${basedir}/wrapped-installer" file="${rk3.home}/windows/wrapper/wrapper.cpp"/>
98 <copy todir="${basedir}/wrapped-installer" file="${rk3.home}/core/search4j/libsearch4j.cpp"/>
99 <copy todir="${basedir}/wrapped-installer" file="${rk3.home}/core/search4j/libsearch4j.h"/>
100 </target>
101
102 <target name="windows-tweak-files-for-wrapping">
103 <echo>Substituting concrete values into source files</echo>
104 <rsr file="${basedir}/wrapped-installer/wrapper.cpp" pattern="@java.min.version@" replacement="${java.min.version}"/>
105 <rsr file="${basedir}/wrapped-installer/wrapper.cpp" pattern="@java.installer@" replacement="${windows-java.installer}"/>
106 <rsr file="${basedir}/wrapped-installer/wrapper.cpp" pattern="@java.extracted@" replacement="${windows-java.extracted}"/>
107 <rsr file="${basedir}/wrapped-installer/wrapper.cpp" pattern="@bundled.version.java@" replacement="${bundled.version.windows-java}"/>
108 </target>
109
110 <target name="windows-compile-resources">
111 <if>
112 <bool>
113 <not>
114 <uptodate targetfile="${basedir}/wrapped-installer/wrapper.RES">
115 <srcfiles dir="${rk3.home}/greenstone3/icon" includes="icon.ico"/>
116 <srcfiles dir="${rk3.home}/windows/wrapper" includes="${windows-java.installer}"/>
117 <srcfiles dir="${rk3.home}/windows/wrapper" includes="*.bmp"/>
118 <srcfiles dir="${rk3.home}/windows/wrapper" includes="*.rc"/>
119 <srcfiles dir="${rk3.home}/greenstone3/wrapper" includes="*.bmp"/>
120 <srcfiles dir="${basedir}/installer" includes="Greenstone-${version}-win32.jar"/>
121 </uptodate>
122 </not>
123 </bool>
124
125 <echo>Compiling resources</echo>
126
127 <echo>getting the template resource script</echo>
128 <copy todir="${basedir}/wrapped-installer" file="${rk3.home}/windows/wrapper/wrapper.rc" overwrite="true"/>
129
130 <echo>copying the small resource files into place</echo>
131 <copy todir="${basedir}/wrapped-installer">
132 <fileset dir="${rk3.home}/windows/wrapper" includes="*.bmp"/>
133 <fileset dir="${rk3.home}/greenstone3/wrapper" includes="*.bmp"/>
134 <fileset dir="${rk3.home}/greenstone3/icon" includes="icon.ico"/>
135 </copy>
136
137 <echo>adding greenstone3.jar to the resource script as chunks</echo>
138 <rsplit
139 resource="${basedir}/installer/Greenstone-${version}-win32.jar"
140 outputDir="${basedir}/wrapped-installer"
141 resourceScript="${basedir}/wrapped-installer/wrapper.rc"
142 resourceName="JAR"
143 resourceType="JAR"
144 chunkSize="${resources.chunksize}"
145 />
146
147 <echo>adding ${windows-java.installer} to the copy as chunks</echo>
148 <rsplit
149 resource="${rk3.home}/windows/wrapper/${windows-java.installer}"
150 outputDir="${basedir}/wrapped-installer"
151 resourceScript="${basedir}/wrapped-installer/wrapper.rc"
152 resourceName="JAVA"
153 resourceType="EXE"
154 chunkSize="${resources.chunksize}"
155 />
156
157 <echo>resource compiling the generated resource script</echo>
158 <exec executable="rc" dir="${basedir}/wrapped-installer">
159 <arg line="wrapper.rc"/>
160 </exec>
161
162 <else>
163 <echo>Resourses are up-to-date, will not compile</echo>
164 </else>
165 </if>
166 </target>
167
168 <target name="windows-compile-wrapper">
169 <exec executable="cl" dir="${basedir}/wrapped-installer">
170 <arg line="/c -GX /DWINDOWS=yes libsearch4j.cpp /out:libsearch4j.obj"/>
171 </exec>
172 <exec executable="cl" dir="${basedir}/wrapped-installer">
173 <arg line="/c -GX /DWINDOWS=yes /DWEB wrapper.cpp /out:wrapper.obj"/>
174 </exec>
175 </target>
176
177 <target name="windows-link-wrapper">
178 <mkdir dir="products"/>
179 <exec executable="link" dir="${basedir}/wrapped-installer">
180 <arg line="/OUT:..\products\Greenstone-${version}-win32.exe gdi32.lib advapi32.lib shell32.lib user32.lib libsearch4j.obj wrapper.obj wrapper.res"/>
181 </exec>
182 </target>
183
184
185</project>
Note: See TracBrowser for help on using the repository browser.