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