]> git.saurik.com Git - apple/icu.git/blob - icuSources/runConfigureICU
ICU-64243.0.1.tar.gz
[apple/icu.git] / icuSources / runConfigureICU
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