Imported Upstream version 58.1
[platform/upstream/icu.git] / source / 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='-Zi -MDd'
269         DEBUG_CXXFLAGS='-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         CXXFLAGS="--std=c++03"
319         export CXXFLAGS
320         ;;
321     MSYS/MSVC)
322         THE_OS="MSYS"
323         THE_COMP="Microsoft Visual C++"
324         CC=cl; export CC
325         CXX=cl; export CXX
326         RELEASE_CFLAGS='-Gy -MD'
327         RELEASE_CXXFLAGS='-Gy -MD'
328         DEBUG_CFLAGS='-Zi -MDd'
329         DEBUG_CXXFLAGS='-Zi -MDd'
330         DEBUG_LDFLAGS='-DEBUG'
331         ;;
332     *BSD)
333         THE_OS="BSD"
334         THE_COMP="the GNU C++"
335         DEBUG_CFLAGS='-g -O0'
336         DEBUG_CXXFLAGS='-g -O0'
337         ;;
338     TRU64V5.1/CXX)
339         THE_OS="OSF1"
340         THE_COMP="Compaq cxx"
341         CC=cc; export CC
342         CXX=cxx; export CXX
343         ;;
344     QNX)
345         THE_OS="QNX"
346         THE_COMP="QNX cc"
347         CC=qcc; export CC
348         CXX=QCC; export CXX
349         ;;
350     zOS)
351         THE_OS="z/OS (OS/390)"
352         THE_COMP="z/OS C/C++"
353         CC=xlc; export CC
354         CXX=xlC; export CXX
355         RELEASE_CFLAGS="-O2 -Wc,'inline(AUTO,NOREPORT,1000,8000)'"
356         RELEASE_CXXFLAGS="-O2 -Wc,'inline(AUTO,NOREPORT,1000,8000)'"
357         ;;
358     zOSV1R2)
359         THE_OS="z/OS 1.2"
360         THE_COMP="z/OS 1.2 C/C++"
361         CC=cc; export CC
362         CXX=cxx; export CXX
363         export COMPILE_LINK_ENVVAR='_CXX_CICC_VER}=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000'
364         export _CXX_CVERSION=0x41020000 _C89_CVERSION=0x41020000 _CC_CVERSION=0x41020000 _CXX_PVERSION=0x41020000 _C89_PVERSION=0x41020000 _CC_PVERSION=0x41020000
365         export LDFLAGS="-Wl,'compat=pm3'"
366         export CFLAGS="-Wc,'target(zOSV1R2)'"
367         export CXXFLAGS="-Wc,'target(zOSV1R2)'"
368         RELEASE_CFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'"
369         RELEASE_CXXFLAGS="-2 -Wc,'inline(auto,noreport,500,4000)'"
370         ;;
371     *)
372         >&2 echo "$me: unrecognized platform \"$platform\" (use --help for help)"
373         exit 1;;
374 esac
375
376
377 # Tweak flags
378
379 if test $release -eq 1
380 then
381     if test "$RELEASE_CFLAGS" = ""
382     then
383         case $CC in
384             gcc|*/gcc|*-gcc-*|*/*-gcc-*)
385                 RELEASE_CFLAGS=-O3
386                 ;;
387         esac
388     fi
389     if test "$RELEASE_CFLAGS" != ""
390     then
391         CFLAGS="$RELEASE_CFLAGS $CFLAGS"
392     fi
393     if test "$RELEASE_CXXFLAGS" = ""
394     then
395         case $CXX in
396             g++|*/g++|*-g++-*|*/*-g++-*)
397                 RELEASE_CXXFLAGS=-O3
398                 ;;
399         esac
400     fi
401     if test "$RELEASE_CXXFLAGS" != ""
402     then
403         CXXFLAGS="$RELEASE_CXXFLAGS $CXXFLAGS"
404     fi
405     if test "$RELEASE_LDFLAGS" != ""
406     then
407         LDFLAGS="$RELEASE_LDFLAGS $LDFLAGS"
408     fi
409 fi
410
411 if test $debug -eq 1
412 then
413     if test "$DEBUG_CFLAGS" != ""
414     then
415         CFLAGS="$DEBUG_CFLAGS $CFLAGS"
416     fi
417     if test "$DEBUG_CXXFLAGS" != ""
418     then
419         CXXFLAGS="$DEBUG_CXXFLAGS $CXXFLAGS"
420     fi
421     if test "$DEBUG_LDFLAGS" != ""
422     then
423         LDFLAGS="$DEBUG_LDFLAGS $LDFLAGS"
424     fi
425 fi
426
427 export CFLAGS
428 export CXXFLAGS
429 export LDFLAGS
430
431 # Run configure
432
433 echo "export CPP=$CPP CC=$CC CXX=$CXX CPPFLAGS=$CPPFLAGS CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS LDFLAGS=$LDFLAGS MAKE=$MAKE"
434 echo "Running ./configure $OPTS $@ for $THE_OS using $THE_COMP compiler"
435 echo
436 if $configure $OPTS $@
437 then
438         echo
439         echo If the result of the above commands looks okay to you, go to the directory
440         echo source in the ICU distribution to build ICU. Please remember that ICU needs
441         echo GNU make to build properly...
442 else
443         echo $0: ./configure failed
444         exit 1
445 fi