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