]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | # Copyright (C) 2016 and later: Unicode, Inc. and others. | |
3 | # License & terms of use: http://www.unicode.org/copyright.html | |
4 | # Copyright (c) 1999-2015, International Business Machines Corporation and | |
5 | # others. All Rights Reserved. | |
6 | ||
7 | # runConfigureICU: This script will run the "configure" script for the appropriate platform | |
8 | # Only supported platforms are recognized | |
9 | ||
10 | me=`basename $0` | |
11 | OPTS= | |
12 | ||
13 | usage() | |
14 | { | |
15 | ec=0$1 | |
16 | if test $ec -eq 0 | |
17 | then | |
18 | uletter=U | |
19 | else | |
20 | uletter=u | |
21 | fi | |
22 | ||
23 | echo "${uletter}sage: $me [ -h, --help ] [ --enable-debug | --disable-release ] platform [ configurearg ... ]" | |
24 | if test $ec -eq 0 | |
25 | then | |
26 | cat <<EOE | |
27 | ||
28 | Options: -h, --help Print this message and exit | |
29 | --enable-debug Enable support for debugging | |
30 | --disable-release Disable presetting optimization flags | |
31 | ||
32 | If you want to add custom CFLAGS or CXXFLAGS or similar, provide them _before_ | |
33 | the runConfigureICU command: | |
34 | ||
35 | CXXFLAGS=xyz path/to/runConfigureICU --enable-debug ... | |
36 | ||
37 | The following names can be supplied as the argument for platform: | |
38 | ||
39 | AIX Use the IBM Visual Age xlc_r/xlC_r compilers on AIX | |
40 | AIX/GCC Use the GNU gcc/g++ compilers on AIX | |
41 | Cygwin Use the GNU gcc/g++ compilers on Cygwin | |
42 | Cygwin/MSVC Use the Microsoft Visual C++ compiler on Cygwin | |
43 | Cygwin/MSVC2005 Use the Microsoft Visual C++ 2005 compiler on Cygwin | |
44 | Cygwin/ICL Use the Intel C++ compiler on Cygwin | |
45 | FreeBSD Use the clang/clang++ or GNU gcc/g++ compilers on FreeBSD | |
46 | HP-UX/ACC Use the HP ANSI C/Advanced C++ compilers on HP-UX 11 | |
47 | IBMi Use the iCC compilers on IBM i, i5/OS, OS/400 | |
48 | Linux Use the clang/clang++ or GNU gcc/g++ compilers on Linux | |
49 | Linux/gcc Use the GNU gcc/g++ compilers on Linux | |
50 | Linux/ECC Use the Intel ECC compiler on Linux | |
51 | Linux/ICC Use the Intel ICC compiler on Linux | |
52 | Linux/VA Use the IBM Visual Age compiler on Power PC Linux | |
53 | MacOSX Use the default compilers on MacOS X (Darwin) | |
54 | MacOSX/GCC Use the GNU gcc/g++ compilers on MacOSX (Darwin) | |
55 | MinGW Use the GNU gcc/g++ compilers on MinGW | |
56 | MSYS/MSVC Use the Microsoft Visual C++ computer on MSYS | |
57 | QNX Use the QNX QCC compiler on QNX/Neutrino | |
58 | Solaris Use the Sun cc/CC compilers on Solaris | |
59 | Solaris/GCC Use the GNU gcc/g++ compilers on Solaris | |
60 | SolarisX86 Use the Sun cc/CC compilers on Solaris x86 | |
61 | TRU64V5.1/CXX Use the Compaq cxx compiler on Tru64 (OSF) | |
62 | zOS Use the IBM cxx compiler on z/OS (os/390) | |
63 | zOSV1R2 Use the IBM cxx compiler for z/OS 1.2 | |
64 | EOE | |
65 | fi | |
66 | ||
67 | exit $ec | |
68 | } | |
69 | ||
70 | # Parse arguments | |
71 | ||
72 | platform= | |
73 | debug=0 | |
74 | release=1 | |
75 | ||
76 | while test $# -ne 0 | |
77 | do | |
78 | case "$1" in | |
79 | -h|--help) | |
80 | usage 0 | |
81 | ;; | |
82 | --enable-debug) | |
83 | debug=1 | |
84 | OPTS="$OPTS --enable-debug" | |
85 | ;; | |
86 | --disable-release) | |
87 | release=0 | |
88 | OPTS="$OPTS --disable-release" | |
89 | ;; | |
90 | *) | |
91 | platform="$1" | |
92 | shift | |
93 | break | |
94 | ;; | |
95 | esac | |
96 | shift | |
97 | done | |
98 | ||
99 | if test x$platform = x | |
100 | then | |
101 | usage 1 | |
102 | fi | |
103 | ||
104 | # Go. | |
105 | ||
106 | rm -f config.cache | |
107 | rm -f config.log | |
108 | rm -f config.status | |
109 | ||
110 | DEBUG_CFLAGS='-g' | |
111 | DEBUG_CXXFLAGS='-g' | |
112 | ||
113 | if test x$configure = x | |
114 | then | |
115 | if test -f ./configure | |
116 | then | |
117 | configuredir=. | |
118 | else | |
119 | configuredir=`echo $0 | sed 's,[^/]*$,,'` | |
120 | if test x$configuredir = x$0 | |
121 | then | |
122 | configuredir=. | |
123 | fi | |
124 | fi | |
125 | ||
126 | if test x$configuredir = x | |
127 | then | |
128 | configuredir=. | |
129 | fi | |
130 | ||
131 | configure=$configuredir/configure | |
132 | fi | |
133 | ||
134 | case $platform in | |
135 | AIX) | |
136 | THE_OS=AIX | |
137 | THE_COMP="xlC_r" | |
138 | CC=`which xlc_r`; export CC | |
139 | if [ ! -x $CC ]; then | |
140 | echo "ERROR: xlc_r was not found, please check the PATH to make sure it is correct."; exit 1 | |
141 | fi | |
142 | CXX=`which xlC_r`; export CXX | |
143 | if [ ! -x $CXX ]; then | |
144 | echo "ERROR: xlC_r was not found, please check the PATH to make sure it is correct."; exit 1 | |
145 | fi | |
146 | RELEASE_CFLAGS="-O2 -qmaxmem=-1" | |
147 | RELEASE_CXXFLAGS="-O2 -qmaxmem=-1" | |
148 | ;; | |
149 | AIX/GCC) | |
150 | THE_OS=AIX | |
151 | THE_COMP="the GNU C++" | |
152 | CC=gcc; export CC | |
153 | CXX=g++; export CXX | |
154 | DEBUG_CFLAGS='-g -O0' | |
155 | DEBUG_CXXFLAGS='-g -O0' | |
156 | ;; | |
157 | Solaris) | |
158 | THE_OS=SOLARIS | |
159 | THE_COMP="Sun's CC" | |
160 | CC=`which cc`; export CC | |
161 | CXX=`which CC`; export CXX | |
162 | RELEASE_CFLAGS="-xO1 -xlibmil" | |
163 | RELEASE_CXXFLAGS="-O4 -xlibmil" | |
164 | ;; | |
165 | Solaris/GCC) | |
166 | THE_OS=SOLARIS | |
167 | THE_COMP="the GNU C++" | |
168 | CC=gcc; export CC | |
169 | CXX=g++; export CXX | |
170 | RELEASE_CFLAGS=-O1 | |
171 | RELEASE_CXXFLAGS=-O2 | |
172 | ;; | |
173 | SolarisX86) | |
174 | THE_OS="SOLARIS X86" | |
175 | THE_COMP="Sun's CC" | |
176 | CC=`which cc`; export CC | |
177 | CXX=`which CC`; export CXX | |
178 | LDFLAGS="${LDFLAGS} -lCrun";export LDFLAGS | |
179 | RELEASE_CFLAGS=-xO3 | |
180 | RELEASE_CXXFLAGS=-O3 | |
181 | ;; | |
182 | HP-UX/ACC) | |
183 | THE_OS="HP-UX 11" | |
184 | THE_COMP="aCC" | |
185 | CC=cc; export CC | |
186 | CXX=aCC; export CXX | |
187 | RELEASE_CFLAGS='+O2 +Ofltacc' | |
188 | RELEASE_CXXFLAGS='+O2 +Ofltacc' | |
189 | ;; | |
190 | IBMi) | |
191 | THE_OS="IBM i" | |
192 | THE_COMP="the iCC C++" | |
193 | CC=icc; export CC | |
194 | CXX=icc; export CXX | |
195 | CPP="$CC -c -qpponly"; export CPP | |
196 | MAKE=gmake; export MAKE | |
197 | U_MAKE=gmake; export U_MAKE | |
198 | # gmake is a .pgm and may not be on the path. Don't use a full path, just use gmake. | |
199 | ac_cv_path_U_MAKE=gmake; export ac_cv_path_U_MAKE | |
200 | RELEASE_CFLAGS='-O4' | |
201 | RELEASE_CXXFLAGS='-O4' | |
202 | ;; | |
203 | Linux/ECC) | |
204 | THE_OS="Linux" | |
205 | THE_COMP="Intel ECC 7.1" | |
206 | CC=ecc; export CC | |
207 | CXX=ecpc; export CXX | |
208 | RELEASE_CFLAGS='-O2' | |
209 | RELEASE_CXXFLAGS='-O2' | |
210 | ;; | |
211 | Linux/ICC) | |
212 | THE_OS="Linux" | |
213 | CC=`which icc`; export CC | |
214 | CXX=`which icpc`; export CXX | |
215 | ICC_VER=`${CC} -v 2>&1` | |
216 | RELEASE_CFLAGS='-O' | |
217 | RELEASE_CXXFLAGS='-O' | |
218 | export CFLAGS="-fp-model precise" | |
219 | export CXXFLAGS="-fp-model precise" | |
220 | if [ "${ICC_VER}" = "Version 9.0 " ]; then | |
221 | RELEASE_CFLAGS='' | |
222 | RELEASE_CXXFLAGS='' | |
223 | export CFLAGS="${CFLAGS} -O0" | |
224 | export CXXFLAGS="${CXXFLAGS} -O0" | |
225 | echo "ICC 9.0 does not work with optimization- disabling optimizations" | |
226 | fi | |
227 | THE_COMP="Intel ${ICC_VER}" | |
228 | ;; | |
229 | Linux/VA) | |
230 | THE_OS="Linux" | |
231 | THE_COMP="IBM Visual Age C++ Compiler" | |
232 | CC=`which xlc_r`; export CC | |
233 | CXX=`which xlC_r`; export CXX | |
234 | RELEASE_CFLAGS="-O2 -qmaxmem=-1" | |
235 | RELEASE_CXXFLAGS="-O2 -qmaxmem=-1" | |
236 | ;; | |
237 | Linux/gcc) | |
238 | THE_OS="Linux" | |
239 | THE_COMP="the GNU C++" | |
240 | CC=gcc; export CC | |
241 | CXX=g++; export CXX | |
242 | RELEASE_CFLAGS='-O3' | |
243 | RELEASE_CXXFLAGS='-O3' | |
244 | DEBUG_CFLAGS='-g' | |
245 | DEBUG_CXXFLAGS='-g' | |
246 | ;; | |
247 | Linux*) | |
248 | THE_OS="Linux" | |
249 | THE_COMP="the clang or else GNU C++" | |
250 | RELEASE_CFLAGS='-O3' | |
251 | RELEASE_CXXFLAGS='-O3' | |
252 | DEBUG_CFLAGS='-g' | |
253 | DEBUG_CXXFLAGS='-g' | |
254 | ;; | |
255 | Cygwin) | |
256 | THE_OS="Cygwin" | |
257 | THE_COMP="the GNU C++" | |
258 | RELEASE_CFLAGS='-O3' | |
259 | RELEASE_CXXFLAGS='-O3' | |
260 | ;; | |
261 | Cygwin/MSVC) | |
262 | THE_OS="Windows with Cygwin" | |
263 | THE_COMP="Microsoft Visual C++" | |
264 | CC=cl; export CC | |
265 | CXX=cl; export CXX | |
266 | RELEASE_CFLAGS='-Gy -MD' | |
267 | RELEASE_CXXFLAGS='-Gy -MD' | |
268 | DEBUG_CFLAGS='-FS -Zi -MDd' | |
269 | DEBUG_CXXFLAGS='-FS -Zi -MDd' | |
270 | DEBUG_LDFLAGS='-DEBUG' | |
271 | ;; | |
272 | Cygwin/MSVC2005) | |
273 | THE_OS="Windows with Cygwin" | |
274 | THE_COMP="Microsoft Visual C++ 2005" | |
275 | CC=cl; export CC | |
276 | CXX=cl; export CXX | |
277 | RELEASE_CFLAGS='/Gy /MD' | |
278 | RELEASE_CXXFLAGS='/Gy /MD' | |
279 | DEBUG_CFLAGS='/Zi /MDd' | |
280 | DEBUG_CXXFLAGS='/Zi /MDd' | |
281 | DEBUG_LDFLAGS='/DEBUG' | |
282 | ;; | |
283 | Cygwin/ICL) | |
284 | THE_OS="Windows with Cygwin" | |
285 | THE_COMP="Intel C++" | |
286 | CC=icl; export CC | |
287 | CXX=icl; export CXX | |
288 | # The Intel compiler has optimization bugs. So we disable optimization. | |
289 | RELEASE_CFLAGS='/Od' | |
290 | RELEASE_CXXFLAGS='/Od' | |
291 | DEBUG_CFLAGS='/Zi' | |
292 | DEBUG_CXXFLAGS='/Zi' | |
293 | DEBUG_LDFLAGS='/DEBUG' | |
294 | ;; | |
295 | MacOSX) | |
296 | THE_OS="MacOS X (Darwin)" | |
297 | THE_COMP="the default" | |
298 | RELEASE_CFLAGS='-O2' | |
299 | RELEASE_CXXFLAGS='-O2' | |
300 | DEBUG_CFLAGS='-g -O0' | |
301 | DEBUG_CXXFLAGS='-g -O0' | |
302 | ;; | |
303 | MacOSX/GCC) | |
304 | THE_OS="MacOS X (Darwin)" | |
305 | THE_COMP="the GNU C++" | |
306 | RELEASE_CFLAGS='-O2' | |
307 | RELEASE_CXXFLAGS='-O2' | |
308 | DEBUG_CFLAGS='-g -O0' | |
309 | DEBUG_CXXFLAGS='-g -O0' | |
310 | CC=gcc; export CC | |
311 | CXX=g++; export CXX | |
312 | ;; | |
313 | MinGW) | |
314 | THE_OS="MinGW" | |
315 | THE_COMP="the GNU C++" | |
316 | RELEASE_CFLAGS='-O3' | |
317 | RELEASE_CXXFLAGS='-O3' | |
318 | export CXXFLAGS | |
319 | ;; | |
320 | MSYS/MSVC) | |
321 | THE_OS="MSYS" | |
322 | THE_COMP="Microsoft Visual C++" | |
323 | CC=cl; export CC | |
324 | CXX=cl; export CXX | |
325 | RELEASE_CFLAGS='-Gy -MD' | |
326 | RELEASE_CXXFLAGS='-Gy -MD' | |
327 | DEBUG_CFLAGS='-FS -Zi -MDd' | |
328 | DEBUG_CXXFLAGS='-FS -Zi -MDd' | |
329 | DEBUG_LDFLAGS='-DEBUG' | |
330 | ;; | |
331 | *BSD) | |
332 | THE_OS="BSD" | |
333 | THE_COMP="the GNU C++" | |
334 | DEBUG_CFLAGS='-g -O0' | |
335 | DEBUG_CXXFLAGS='-g -O0' | |
336 | ;; | |
337 | TRU64V5.1/CXX) | |
338 | THE_OS="OSF1" | |
339 | THE_COMP="Compaq cxx" | |
340 | CC=cc; export CC | |
341 | CXX=cxx; export CXX | |
342 | ;; | |
343 | QNX) | |
344 | THE_OS="QNX" | |
345 | THE_COMP="QNX cc" | |
346 | CC=qcc; export CC | |
347 | CXX=QCC; export CXX | |
348 | ;; | |
349 | zOS) | |
350 | THE_OS="z/OS (OS/390)" | |
351 | THE_COMP="z/OS C/C++" | |
352 | CC=xlc; export CC | |
353 | CXX=xlC; export CXX | |
354 | RELEASE_CFLAGS="-O2 -Wc,'inline(AUTO,NOREPORT,1000,8000)'" | |
355 | RELEASE_CXXFLAGS="-O2 -Wc,'inline(AUTO,NOREPORT,1000,8000)'" | |
356 | ;; | |
357 | zOSV1R2) | |
358 | THE_OS="z/OS 1.2" | |
359 | THE_COMP="z/OS 1.2 C/C++" | |
360 | CC=cc; export CC | |
361 | CXX=cxx; export CXX | |
362 | export COMPILE_LINK_ENVVAR='_CXX_CICC_VER}=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000' | |
363 | export _CXX_CVERSION=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000 | |
364 | export LDFLAGS="-Wl,'compat=pm3'" | |
365 | export CFLAGS="-Wc,'target(zOSV1R2)'" | |
366 | export CXXFLAGS="-Wc,'target(zOSV1R2)'" | |
367 | RELEASE_CFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'" | |
368 | RELEASE_CXXFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'" | |
369 | ;; | |
370 | *) | |
371 | >&2 echo "$me: unrecognized platform \"$platform\" (use --help for help)" | |
372 | exit 1;; | |
373 | esac | |
374 | ||
375 | ||
376 | # Tweak flags | |
377 | ||
378 | if test $release -eq 1 | |
379 | then | |
380 | if test "$RELEASE_CFLAGS" = "" | |
381 | then | |
382 | case $CC in | |
383 | gcc|*/gcc|*-gcc-*|*/*-gcc-*) | |
384 | RELEASE_CFLAGS=-O3 | |
385 | ;; | |
386 | esac | |
387 | fi | |
388 | if test "$RELEASE_CFLAGS" != "" | |
389 | then | |
390 | CFLAGS="$RELEASE_CFLAGS $CFLAGS" | |
391 | fi | |
392 | if test "$RELEASE_CXXFLAGS" = "" | |
393 | then | |
394 | case $CXX in | |
395 | g++|*/g++|*-g++-*|*/*-g++-*) | |
396 | RELEASE_CXXFLAGS=-O3 | |
397 | ;; | |
398 | esac | |
399 | fi | |
400 | if test "$RELEASE_CXXFLAGS" != "" | |
401 | then | |
402 | CXXFLAGS="$RELEASE_CXXFLAGS $CXXFLAGS" | |
403 | fi | |
404 | if test "$RELEASE_LDFLAGS" != "" | |
405 | then | |
406 | LDFLAGS="$RELEASE_LDFLAGS $LDFLAGS" | |
407 | fi | |
408 | fi | |
409 | ||
410 | if test $debug -eq 1 | |
411 | then | |
412 | if test "$DEBUG_CFLAGS" != "" | |
413 | then | |
414 | CFLAGS="$DEBUG_CFLAGS $CFLAGS" | |
415 | fi | |
416 | if test "$DEBUG_CXXFLAGS" != "" | |
417 | then | |
418 | CXXFLAGS="$DEBUG_CXXFLAGS $CXXFLAGS" | |
419 | fi | |
420 | if test "$DEBUG_LDFLAGS" != "" | |
421 | then | |
422 | LDFLAGS="$DEBUG_LDFLAGS $LDFLAGS" | |
423 | fi | |
424 | fi | |
425 | ||
426 | export CFLAGS | |
427 | export CXXFLAGS | |
428 | export LDFLAGS | |
429 | ||
430 | # Run configure | |
431 | ||
432 | echo "export CPP=$CPP CC=$CC CXX=$CXX CPPFLAGS=$CPPFLAGS CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS LDFLAGS=$LDFLAGS MAKE=$MAKE" | |
433 | echo "Running ./configure $OPTS $@ for $THE_OS using $THE_COMP compiler" | |
434 | echo | |
435 | if $configure $OPTS $@ | |
436 | then | |
437 | echo | |
438 | echo If the result of the above commands looks okay to you, go to the directory | |
439 | echo source in the ICU distribution to build ICU. Please remember that ICU needs | |
440 | echo GNU make to build properly... | |
441 | else | |
442 | echo $0: ./configure failed | |
443 | exit 1 | |
444 | fi |