Initialize Tizen 2.3
[external/icu.git] / 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