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