configure

changeset 515
2c3fe06a9210
parent 511
a5a142fea2ae
equal deleted inserted replaced
514:922bfe380c8e 515:2c3fe06a9210
1 #!/bin/sh 1 #!/bin/sh
2 2
3 HOST=`uname -n` 3 # create temporary directory
4 PREFIX=`pwd`/work
5 INSTALL_DIR=$PREFIX
6
7 EPREFIX=$PREFIX
8
9 BINDIR=
10 SBINDIR=
11 LIBDIR=
12 LIBEXECDIR=
13 DATADIR=
14 SYSCONFDIR=
15 SHAREDSTATEDIR=
16 LOCALSTATEDIR=
17 INCLUDEDIR=
18 INFODIR=
19 MANDIR=
20
21 OS=`uname -s`
22 OS_VERSION=`uname -r`
23
24 TEMP_DIR=".tmp-`uname -n`" 4 TEMP_DIR=".tmp-`uname -n`"
25 mkdir -p "$TEMP_DIR" 5 rm -Rf "$TEMP_DIR"
26 if [ $? -ne 0 ]; then 6 if mkdir -p "$TEMP_DIR"; then
27 echo "Cannot create tmp dir" 7 :
8 else
9 echo "Cannot create tmp dir $TEMP_DIR"
28 echo "Abort" 10 echo "Abort"
11 exit 1
29 fi 12 fi
30 touch "$TEMP_DIR/options" 13 touch "$TEMP_DIR/options"
31 touch "$TEMP_DIR/features" 14 touch "$TEMP_DIR/features"
32 15
16 # define standard variables
17 # also define standard prefix (this is where we will search for config.site)
18 prefix=/usr
19 exec_prefix=
20 bindir=
21 sbindir=
22 libdir=
23 libexecdir=
24 datarootdir=
25 datadir=
26 sysconfdir=
27 sharedstatedir=
28 localstatedir=
29 runstatedir=
30 includedir=
31 infodir=
32 localedir=
33 mandir=
34
35 # custom variables
36 HOST=`uname -n`
37 PREFIX="`pwd`/work"
38 INSTALL_DIR="$PREFIX"
39
33 # features 40 # features
41
42 # clean abort
43 abort_configure()
44 {
45 rm -Rf "$TEMP_DIR"
46 exit 1
47 }
34 48
35 # help text 49 # help text
36 printhelp() 50 printhelp()
37 { 51 {
38 echo "Usage: $0 [OPTIONS]..." 52 echo "Usage: $0 [OPTIONS]..."
47 --sbindir=DIR system admin executables [EPREFIX/sbin] 61 --sbindir=DIR system admin executables [EPREFIX/sbin]
48 --libexecdir=DIR program executables [EPREFIX/libexec] 62 --libexecdir=DIR program executables [EPREFIX/libexec]
49 --sysconfdir=DIR system configuration files [PREFIX/etc] 63 --sysconfdir=DIR system configuration files [PREFIX/etc]
50 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] 64 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
51 --localstatedir=DIR modifiable single-machine data [PREFIX/var] 65 --localstatedir=DIR modifiable single-machine data [PREFIX/var]
66 --runstatedir=DIR run-time variable data [LOCALSTATEDIR/run]
52 --libdir=DIR object code libraries [EPREFIX/lib] 67 --libdir=DIR object code libraries [EPREFIX/lib]
53 --includedir=DIR C header files [PREFIX/include] 68 --includedir=DIR C header files [PREFIX/include]
54 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] 69 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
55 --datadir=DIR read-only architecture-independent data [DATAROOTDIR] 70 --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
56 --infodir=DIR info documentation [DATAROOTDIR/info] 71 --infodir=DIR info documentation [DATAROOTDIR/info]
57 --mandir=DIR man documentation [DATAROOTDIR/man] 72 --mandir=DIR man documentation [DATAROOTDIR/man]
73 --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
58 74
59 Optional Features: 75 Optional Features:
60 --enable-postgresql 76 --enable-postgresql
61 77
62 __EOF__ 78 __EOF__
63 } 79 }
64 80
65 # 81 #
66 # parse arguments 82 # parse arguments
67 # 83 #
84 BUILD_TYPE="default"
68 for ARG in "$@" 85 for ARG in "$@"
69 do 86 do
70 case "$ARG" in 87 case "$ARG" in
71 "--prefix="*) PREFIX=${ARG#--prefix=} ;; 88 "--prefix="*) prefix=${ARG#--prefix=} ;;
72 "--exec-prefix="*) EPREFIX=${ARG#--exec-prefix=} ;; 89 "--exec-prefix="*) exec_prefix=${ARG#--exec-prefix=} ;;
73 "--bindir="*) BINDIR=${ARG#----bindir=} ;; 90 "--bindir="*) bindir=${ARG#----bindir=} ;;
74 "--sbindir="*) SBINDIR=${ARG#--sbindir=} ;; 91 "--sbindir="*) sbindir=${ARG#--sbindir=} ;;
75 "--libdir="*) LIBDIR=${ARG#--libdir=} ;; 92 "--libdir="*) libdir=${ARG#--libdir=} ;;
76 "--libexecdir="*) LIBEXECDIR=${ARG#--libexecdir=} ;; 93 "--libexecdir="*) libexecdir=${ARG#--libexecdir=} ;;
77 "--datadir="*) DATADIR=${ARG#--datadir=} ;; 94 "--datarootdir="*) datarootdir=${ARG#--datarootdir=} ;;
78 "--sysconfdir="*) SYSCONFDIR=${ARG#--sysconfdir=} ;; 95 "--datadir="*) datadir=${ARG#--datadir=} ;;
79 "--sharedstatedir="*) SHAREDSTATEDIR=${ARG#--sharedstatedir=} ;; 96 "--sysconfdir="*) sysconfdir=${ARG#--sysconfdir=} ;;
80 "--localstatedir="*) LOCALSTATEDIR=${ARG#--localstatedir=} ;; 97 "--sharedstatedir="*) sharedstatedir=${ARG#--sharedstatedir=} ;;
81 "--includedir="*) INCLUDEDIR=${ARG#--includedir=} ;; 98 "--localstatedir="*) localstatedir=${ARG#--localstatedir=} ;;
82 "--infodir="*) INFODIR=${ARG#--infodir=} ;; 99 "--includedir="*) includedir=${ARG#--includedir=} ;;
83 "--mandir"*) MANDIR=${ARG#--mandir} ;; 100 "--infodir="*) infodir=${ARG#--infodir=} ;;
84 "--help"*) printhelp; rm -Rf "$TEMP_DIR"; exit 1 ;; 101 "--mandir"*) mandir=${ARG#--mandir} ;;
102 "--localedir"*) localedir=${ARG#--localedir} ;;
103 "--help"*) printhelp; abort_configure ;;
104 "--debug") BUILD_TYPE="debug" ;;
105 "--release") BUILD_TYPE="release" ;;
85 "--enable-postgresql") FEATURE_POSTGRESQL=on ;; 106 "--enable-postgresql") FEATURE_POSTGRESQL=on ;;
86 "--disable-postgresql") unset FEATURE_POSTGRESQL ;; 107 "--disable-postgresql") unset FEATURE_POSTGRESQL ;;
87 "-"*) echo "unknown option: $ARG"; rm -Rf "$TEMP_DIR"; exit 1 ;; 108 "-"*) echo "unknown option: $ARG"; abort_configure ;;
88 esac 109 esac
89 done 110 done
90 111
91 # set dir variables 112
92 if [ -z "$BINDIR" ]; then 113
93 BINDIR=$EPREFIX/bin 114 # set defaults for dir variables
94 fi 115 : ${exec_prefix:="$prefix"}
95 if [ -z "$SBINDIR" ]; then 116 : ${bindir:='${exec_prefix}/bin'}
96 SBINDIR=$EPREFIX/sbin 117 : ${sbindir:='${exec_prefix}/sbin'}
97 fi 118 : ${libdir:='${exec_prefix}/lib'}
98 if [ -z "$LIBDIR" ]; then 119 : ${libexecdir:='${exec_prefix}/libexec'}
99 LIBDIR=$EPREFIX/lib 120 : ${datarootdir:='${prefix}/share'}
100 fi 121 : ${datadir:='${datarootdir}'}
101 if [ -z "$LIBEXEC" ]; then 122 : ${sysconfdir:='${prefix}/etc'}
102 LIBEXECDIR=$EPREFIX/libexec 123 : ${sharedstatedir:='${prefix}/com'}
103 fi 124 : ${localstatedir:='${prefix}/var'}
104 if [ -z "$DATADIR" ]; then 125 : ${runstatedir:='${localstatedir}/run'}
105 DATADIR=$PREFIX/share 126 : ${includedir:='${prefix}/include'}
106 fi 127 : ${infodir:='${datarootdir}/info'}
107 if [ -z "$SYSCONFDIR" ]; then 128 : ${mandir:='${datarootdir}/man'}
108 SYSCONFDIR=$PREFIX/etc 129 : ${localedir:='${datarootdir}/locale'}
109 fi 130
110 if [ -z "$SHAREDSTATEDIR" ]; then 131 # check if a config.site exists and load it
111 SHAREDSTATEDIR=$PREFIX/com 132 if [ -n "$CONFIG_SITE" ]; then
112 fi 133 # CONFIG_SITE may contain space separated file names
113 if [ -z "$LOCALSTATEDIR" ]; then 134 for cs in $CONFIG_SITE; do
114 LOCALSTATEDIR=$PREFIX/var 135 printf "loading defaults from $cs... "
115 fi 136 . "$cs"
116 if [ -z "$INCLUDEDIR" ]; then 137 echo ok
117 INCLUDEDIR=$PREFIX/include 138 done
118 fi 139 elif [ -f "$prefix/share/config.site" ]; then
119 if [ -z "$INFODIR" ]; then 140 printf "loading site defaults... "
120 INFODIR=$PREFIX/info 141 . "$prefix/share/config.site"
121 fi 142 echo ok
122 if [ -z "$MANDIR" ]; then 143 elif [ -f "$prefix/etc/config.site" ]; then
123 MANDIR=$PREFIX/man 144 printf "loading site defaults... "
124 fi 145 . "$prefix/etc/config.site"
125 146 echo ok
126 which pkg-config > /dev/null 147 fi
127 if [ $? -eq 0 ]; then 148
128 PKG_CONFIG=pkg-config 149 # Test for availability of pkg-config
129 else 150 PKG_CONFIG=`command -v pkg-config`
130 PKG_CONFIG=false 151 : ${PKG_CONFIG:="false"}
131 fi
132 152
133 # Simple uname based platform detection 153 # Simple uname based platform detection
134 # $PLATFORM is used for platform dependent dependency selection 154 # $PLATFORM is used for platform dependent dependency selection
155 OS=`uname -s`
156 OS_VERSION=`uname -r`
135 printf "detect platform... " 157 printf "detect platform... "
136 if [ "$OS" = "SunOS" ]; then 158 if [ "$OS" = "SunOS" ]; then
137 PLATFORM="solaris sunos unix svr4" 159 PLATFORM="solaris sunos unix svr4"
138 fi 160 elif [ "$OS" = "Linux" ]; then
139 if [ "$OS" = "Linux" ]; then
140 PLATFORM="linux unix" 161 PLATFORM="linux unix"
141 fi 162 elif [ "$OS" = "FreeBSD" ]; then
142 if [ "$OS" = "FreeBSD" ]; then
143 PLATFORM="freebsd bsd unix" 163 PLATFORM="freebsd bsd unix"
144 fi 164 elif [ "$OS" = "OpenBSD" ]; then
145 if [ "$OS" = "Darwin" ]; then 165 PLATFORM="openbsd bsd unix"
166 elif [ "$OS" = "NetBSD" ]; then
167 PLATFORM="netbsd bsd unix"
168 elif [ "$OS" = "Darwin" ]; then
146 PLATFORM="macos osx bsd unix" 169 PLATFORM="macos osx bsd unix"
147 fi 170 elif echo "$OS" | grep -i "MINGW" > /dev/null; then
148 echo "$OS" | grep -i "MINGW" > /dev/null
149 if [ $? -eq 0 ]; then
150 PLATFORM="windows mingw" 171 PLATFORM="windows mingw"
151 fi 172 fi
152 173 : ${PLATFORM:="unix"}
153 if [ -z "$PLATFORM" ]; then 174
154 PLATFORM="unix" 175 PLATFORM_NAME=`echo "$PLATFORM" | cut -f1 -d' ' -`
155 fi 176 echo "$PLATFORM_NAME"
156
157 for p in $PLATFORM
158 do
159 PLATFORM_NAME=$p
160 break
161 done
162 echo $PLATFORM_NAME
163 177
164 isplatform() 178 isplatform()
165 { 179 {
166 for p in $PLATFORM 180 for p in $PLATFORM
167 do 181 do
169 return 0 183 return 0
170 fi 184 fi
171 done 185 done
172 return 1 186 return 1
173 } 187 }
174 isnotplatform() 188 notisplatform()
175 { 189 {
176 for p in $PLATFORM 190 for p in $PLATFORM
177 do 191 do
178 if [ "$p" = "$1" ]; then 192 if [ "$p" = "$1" ]; then
179 return 1 193 return 1
180 fi 194 fi
181 done 195 done
182 return 0 196 return 0
183 } 197 }
184 198 istoolchain()
185 # generate config.mk and config.h 199 {
186 cat > "$TEMP_DIR/config.mk" << __EOF__ 200 for t in $TOOLCHAIN
187 # 201 do
188 # config.mk generated by configure 202 if [ "$t" = "$1" ]; then
189 # 203 return 0
190 204 fi
191 # general vars 205 done
206 return 1
207 }
208 notistoolchain()
209 {
210 for t in $TOOLCHAIN
211 do
212 if [ "$t" = "$1" ]; then
213 return 1
214 fi
215 done
216 return 0
217 }
218
219
220 # generate vars.mk
221 cat > "$TEMP_DIR/vars.mk" << __EOF__
222 prefix=$prefix
223 exec_prefix=$exec_prefix
224 bindir=$bindir
225 sbindir=$sbindir
226 libdir=$libdir
227 libexecdir=$libexecdir
228 datarootdir=$datarootdir
229 datadir=$datadir
230 sysconfdir=$sysconfdir
231 sharedstatedir=$sharedstatedir
232 localstatedir=$localstatedir
233 runstatedir=$runstatedir
234 includedir=$includedir
235 infodir=$infodir
236 mandir=$mandir
237 localedir=$localedir
192 HOST=$HOST 238 HOST=$HOST
193 PREFIX=$PREFIX 239 PREFIX=$PREFIX
194 INSTALL_DIR=$INSTALL_DIR 240 INSTALL_DIR=$INSTALL_DIR
195 241 __EOF__
196 EPREFIX=$EPREFIX 242
197 243 # toolchain detection utilities
198 BINDIR=$BINDIR 244 . make/toolchain.sh
199 SBINDIR=$SBINDIR 245
200 LIBDIR=$LIBDIR 246 #
201 LIBEXECDIR=$LIBEXECDIR 247 # DEPENDENCIES
202 DATADIR=$DATADIR 248 #
203 SYSCONFDIR=$SYSCONFDIR 249
204 SHAREDSTATEDIR=$SHAREDSTATEDIR 250 # check languages
205 LOCALSTATEDIR=$LOCALSTATEDIR 251 lang_c=
206 INCLUDEDIR=$INCLUDEDIR 252 lang_cpp=
207 INFODIR=$INFODIR 253 if detect_c_compiler ; then
208 MANDIR=$MANDIR 254 lang_c=1
209 255 fi
210 __EOF__ 256
211 257 # create buffer for make variables required by dependencies
212 echo > "$TEMP_DIR/make.mk" 258 echo > "$TEMP_DIR/make.mk"
213 259
214 ENV_CFLAGS=$CFLAGS 260 test_pkg_config()
215 ENV_LDFLAGS=$LDFLAGS 261 {
216 ENV_CXXFLAGS=$CXXFLAGS 262 if "$PKG_CONFIG" --exists "$1" ; then :
217 263 else return 1 ; fi
218 # Toolchain detection 264 if [ -z "$2" ] || "$PKG_CONFIG" --atleast-version="$2" "$1" ; then :
219 # this will insert make vars to config.mk 265 else return 1 ; fi
220 . make/toolchain.sh 266 if [ -z "$3" ] || "$PKG_CONFIG" --exact-version="$3" "$1" ; then :
221 267 else return 1 ; fi
222 # add user specified flags to config.mk 268 if [ -z "$4" ] || "$PKG_CONFIG" --max-version="$4" "$1" ; then :
223 echo "# project specific flags" >> "$TEMP_DIR/config.mk" 269 else return 1 ; fi
224 if [ -n "${ENV_CFLAGS}" ]; then 270 return 0
225 echo "CFLAGS += $ENV_CFLAGS" >> "$TEMP_DIR/config.mk" 271 }
226 fi 272
227 if [ -n "${ENV_CXXFLAGS}" ]; then 273 print_check_msg()
228 echo "CXXFLAGS += $ENV_CXXFLAGS" >> "$TEMP_DIR/config.mk" 274 {
229 fi 275 if [ -z "$1" ]; then
230 if [ -n "${ENV_LDFLAGS}" ]; then 276 shift
231 echo "LDFLAGS += $ENV_LDFLAGS" >> "$TEMP_DIR/config.mk" 277 printf "$@"
232 fi 278 fi
233 279 }
234 # 280
235 # DEPENDENCIES 281 dependency_error_libpq()
236 # 282 {
237 283 print_check_msg "$dep_checked_libpq" "checking for libpq... "
238 dependency_libpq()
239 {
240 printf "checking for libpq... "
241 # dependency libpq 284 # dependency libpq
242 while true 285 while true
243 do 286 do
244 if [ -z "$PKG_CONFIG" ]; then 287 if [ -z "$PKG_CONFIG" ]; then
245 break 288 break
246 fi 289 fi
247 $PKG_CONFIG libpq 290 if test_pkg_config "libpq" "" "" "" ; then
248 if [ $? -ne 0 ] ; then 291 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags libpq`"
249 break 292 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs libpq`"
250 fi 293 else
251 TEMP_CFLAGS="$TEMP_CFLAGS `$PKG_CONFIG --cflags libpq`" 294 break
252 TEMP_LDFLAGS="$TEMP_LDFLAGS `$PKG_CONFIG --libs libpq`" 295 fi
253 cat >> $TEMP_DIR/make.mk << __EOF__ 296 cat >> $TEMP_DIR/make.mk << __EOF__
254 # Dependency: libpq 297 # Dependency: libpq
255 CFLAGS += -DENABLE_POSTGRESQL 298 CFLAGS += -DENABLE_POSTGRESQL
256 PLUGINS += postgresql 299 PLUGINS += postgresql
257 TEST_PLUGIN_LDFLAGS += -lwspgtest 300 TEST_PLUGIN_LDFLAGS += -lwspgtest
258 301 __EOF__
259 __EOF__ 302 print_check_msg "$dep_checked_libpq" "yes\n"
260 echo yes 303 dep_checked_libpq=1
261 return 0 304 return 1
262 done 305 done
263 306
264 echo no 307 print_check_msg "$dep_checked_libpq" "no\n"
265 return 1 308 dep_checked_libpq=1
266 } 309 return 0
267 dependency_openssl() 310 }
268 { 311 dependency_error_openssl()
269 printf "checking for openssl... " 312 {
313 print_check_msg "$dep_checked_openssl" "checking for openssl... "
270 # dependency openssl 314 # dependency openssl
271 while true 315 while true
272 do 316 do
273 if [ -z "$PKG_CONFIG" ]; then 317 if [ -z "$PKG_CONFIG" ]; then
274 break 318 break
275 fi 319 fi
276 $PKG_CONFIG openssl 320 if test_pkg_config "openssl" "" "" "" ; then
277 if [ $? -ne 0 ] ; then 321 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags openssl`"
278 break 322 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs openssl`"
279 fi 323 else
280 TEMP_CFLAGS="$TEMP_CFLAGS `$PKG_CONFIG --cflags openssl`" 324 break
281 TEMP_LDFLAGS="$TEMP_LDFLAGS `$PKG_CONFIG --libs openssl`" 325 fi
282 echo yes 326 print_check_msg "$dep_checked_openssl" "yes\n"
283 return 0 327 dep_checked_openssl=1
328 return 1
284 done 329 done
285 330
286 # dependency openssl 331 # dependency openssl
287 while true 332 while true
288 do 333 do
289 TEMP_LDFLAGS="$TEMP_LDFLAGS -lssl -lcrypto" 334 TEMP_LDFLAGS="$TEMP_LDFLAGS -lssl -lcrypto"
290 echo yes 335 print_check_msg "$dep_checked_openssl" "yes\n"
291 return 0 336 dep_checked_openssl=1
292 done 337 return 1
293 338 done
294 echo no 339
295 return 1 340 print_check_msg "$dep_checked_openssl" "no\n"
296 } 341 dep_checked_openssl=1
297 dependency_libxml2() 342 return 0
298 { 343 }
299 printf "checking for libxml2... " 344 dependency_error_libxml2()
345 {
346 print_check_msg "$dep_checked_libxml2" "checking for libxml2... "
300 # dependency libxml2 347 # dependency libxml2
301 while true 348 while true
302 do 349 do
303 if [ -z "$PKG_CONFIG" ]; then 350 if [ -z "$PKG_CONFIG" ]; then
304 break 351 break
305 fi 352 fi
306 $PKG_CONFIG libxml-2.0 353 if test_pkg_config "libxml-2.0" "" "" "" ; then
307 if [ $? -ne 0 ] ; then 354 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags libxml-2.0`"
308 break 355 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs libxml-2.0`"
309 fi 356 else
310 TEMP_CFLAGS="$TEMP_CFLAGS `$PKG_CONFIG --cflags libxml-2.0`" 357 break
311 TEMP_LDFLAGS="$TEMP_LDFLAGS `$PKG_CONFIG --libs libxml-2.0`" 358 fi
312 echo yes 359 print_check_msg "$dep_checked_libxml2" "yes\n"
313 return 0 360 dep_checked_libxml2=1
361 return 1
314 done 362 done
315 363
316 # dependency libxml2 364 # dependency libxml2
317 while true 365 while true
318 do 366 do
319 xml2-config --cflags > /dev/null 367 if tmp_flags=`xml2-config --cflags` ; then
320 if [ $? -eq 0 ]; then 368 TEMP_CFLAGS="$TEMP_CFLAGS $tmp_flags"
321 TEMP_CFLAGS="$TEMP_CFLAGS `xml2-config --cflags`"
322 else 369 else
323 break 370 break
324 fi 371 fi
325 echo yes 372 if tmp_flags=`xml2-config --libs` ; then
326 return 0 373 TEMP_LDFLAGS="$TEMP_LDFLAGS $tmp_flags"
327 done 374 else
328 375 break
329 echo no 376 fi
330 return 1 377 print_check_msg "$dep_checked_libxml2" "yes\n"
331 } 378 dep_checked_libxml2=1
379 return 1
380 done
381
382 print_check_msg "$dep_checked_libxml2" "no\n"
383 dep_checked_libxml2=1
384 return 0
385 }
386
387 # start collecting dependency information
388 echo > "$TEMP_DIR/flags.mk"
332 389
333 DEPENDENCIES_FAILED= 390 DEPENDENCIES_FAILED=
334 ERROR=0 391 ERROR=0
335 # general dependencies 392 # unnamed dependencies
336 TEMP_CFLAGS= 393 TEMP_CFLAGS=
394 TEMP_CXXFLAGS=
337 TEMP_LDFLAGS= 395 TEMP_LDFLAGS=
338 while true 396 while true
339 do 397 do
340 if isnotplatform "linux"; then 398 while true
399 do
400 if [ -z "$lang_c" ] ; then
401 ERROR=1
402 break
403 fi
404
405 break
406 done
407 break
408 done
409 while true
410 do
411 if notisplatform "linux"; then
341 break 412 break
342 fi 413 fi
343 while true 414 while true
344 do 415 do
345 416
355 APP_EXT = 426 APP_EXT =
356 427
357 # ld flags 428 # ld flags
358 UCX_SO_NAME = 429 UCX_SO_NAME =
359 RPATH_WS_LIB_FLAG = -Wl,-rpath,'\$\$ORIGIN/../lib' 430 RPATH_WS_LIB_FLAG = -Wl,-rpath,'\$\$ORIGIN/../lib'
360 431 __EOF__
361 __EOF__ 432 break
362 433 done
363 break
364 done
365
366 break 434 break
367 done 435 done
368 while true 436 while true
369 do 437 do
370 if isnotplatform "bsd"; then 438 if notisplatform "bsd"; then
371 break 439 break
372 fi 440 fi
373 if isplatform "macos"; then 441 if isplatform "macos" || istoolchain "macos"; then
374 break 442 break
375 fi 443 fi
376 while true 444 while true
377 do 445 do
378 446
388 APP_EXT = 456 APP_EXT =
389 457
390 # ld flags 458 # ld flags
391 UCX_SO_NAME = 459 UCX_SO_NAME =
392 RPATH_WS_LIB_FLAG = -Wl,-rpath,'\$\$ORIGIN/../lib' 460 RPATH_WS_LIB_FLAG = -Wl,-rpath,'\$\$ORIGIN/../lib'
393 461 __EOF__
394 __EOF__ 462 break
395 463 done
396 break
397 done
398
399 break 464 break
400 done 465 done
401 while true 466 while true
402 do 467 do
403 if isnotplatform "macos"; then 468 if notisplatform "macos"; then
404 break 469 break
405 fi 470 fi
406 while true 471 while true
407 do 472 do
408 473
418 APP_EXT = 483 APP_EXT =
419 484
420 # ld flags 485 # ld flags
421 UCX_SO_NAME = -install_name @rpath/libucx.dylib 486 UCX_SO_NAME = -install_name @rpath/libucx.dylib
422 RPATH_WS_LIB_FLAG = -rpath @loader_path/../lib 487 RPATH_WS_LIB_FLAG = -rpath @loader_path/../lib
423 488 __EOF__
424 __EOF__ 489 break
425 490 done
426 break
427 done
428
429 break 491 break
430 done 492 done
431 while true 493 while true
432 do 494 do
433 if isnotplatform "solaris"; then 495 if notisplatform "solaris"; then
434 break 496 break
435 fi 497 fi
436 while true 498 while true
437 do 499 do
438 500
444 506
445 # platform dependend vars 507 # platform dependend vars
446 OBJ_EXT = .o 508 OBJ_EXT = .o
447 LIB_EXT = .so 509 LIB_EXT = .so
448 APP_EXT = 510 APP_EXT =
449 511 __EOF__
450 __EOF__ 512 break
451 513 done
452 break
453 done
454
455 break 514 break
456 done 515 done
457 516
458 # add general dependency flags to config.mk 517 # add general dependency flags to flags.mk
459 echo >> "$TEMP_DIR/config.mk" 518 echo "# general flags" >> "$TEMP_DIR/flags.mk"
460 if [ -n "${TEMP_CFLAGS}" ]; then 519 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then
461 echo "CFLAGS += $TEMP_CFLAGS" >> $TEMP_DIR/config.mk 520 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"
462 fi 521 fi
463 if [ -n "${TEMP_CXXFLAGS}" ]; then 522 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then
464 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> $TEMP_DIR/config.mk 523 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk"
465 fi 524 fi
466 if [ -n "${TEMP_LDFLAGS}" ]; then 525 if [ -n "${TEMP_LDFLAGS}" ]; then
467 echo "LDFLAGS += $TEMP_LDFLAGS" >> $TEMP_DIR/config.mk 526 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk"
468 fi 527 fi
469 528
470 # 529 #
471 # OPTION VALUES 530 # OPTION VALUES
472 # 531 #
473 532
474 # 533 #
475 # TARGETS 534 # TARGETS
476 # 535 #
536
537 echo >> "$TEMP_DIR/flags.mk"
538 echo "configuring global target"
539 echo "# flags for unnamed target" >> "$TEMP_DIR/flags.mk"
477 TEMP_CFLAGS= 540 TEMP_CFLAGS=
478 TEMP_CXXFLAGS= 541 TEMP_CXXFLAGS=
479 TEMP_LDFLAGS= 542 TEMP_LDFLAGS=
480 543
481 # Target 544 if dependency_error_libxml2; then
482 TEMP_CFLAGS=
483 TEMP_LDFLAGS=
484 TEMP_CXXFLAGS=
485
486 dependency_libxml2
487 if [ $? -ne 0 ]; then
488 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED libxml2 " 545 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED libxml2 "
489 ERROR=1 546 ERROR=1
490 fi 547 fi
491 dependency_openssl 548 if dependency_error_openssl; then
492 if [ $? -ne 0 ]; then
493 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED openssl " 549 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED openssl "
494 ERROR=1 550 ERROR=1
495 fi 551 fi
496 552
497 # Features 553 # Features
498 554
499 555
500 echo >> "$TEMP_DIR/config.mk" 556 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then
501 if [ -n "${TEMP_CFLAGS}" ]; then 557 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"
502 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/config.mk" 558 fi
503 fi 559 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then
504 if [ -n "${TEMP_CXXFLAGS}" ]; then 560 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk"
505 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/config.mk" 561 fi
562 if [ "$BUILD_TYPE" = "debug" ]; then
563 if [ -n "$lang_c" ]; then
564 echo 'CFLAGS += ${DEBUG_CC_FLAGS}' >> "$TEMP_DIR/flags.mk"
565 fi
566 if [ -n "$lang_cpp" ]; then
567 echo 'CXXFLAGS += ${DEBUG_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk"
568 fi
569 fi
570 if [ "$BUILD_TYPE" = "release" ]; then
571 if [ -n "$lang_c" ]; then
572 echo 'CFLAGS += ${RELEASE_CC_FLAGS}' >> "$TEMP_DIR/flags.mk"
573 fi
574 if [ -n "$lang_cpp" ]; then
575 echo 'CXXFLAGS += ${RELEASE_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk"
576 fi
506 fi 577 fi
507 if [ -n "${TEMP_LDFLAGS}" ]; then 578 if [ -n "${TEMP_LDFLAGS}" ]; then
508 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/config.mk" 579 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk"
509 fi 580 fi
510 581
511 # Target: postgresql 582 echo >> "$TEMP_DIR/flags.mk"
583 echo "configuring target: postgresql"
584 echo "# flags for target postgresql" >> "$TEMP_DIR/flags.mk"
512 TEMP_CFLAGS= 585 TEMP_CFLAGS=
586 TEMP_CXXFLAGS=
513 TEMP_LDFLAGS= 587 TEMP_LDFLAGS=
514 TEMP_CXXFLAGS=
515 588
516 589
517 # Features 590 # Features
518 if [ -n "$FEATURE_POSTGRESQL" ]; then 591 if [ -n "$FEATURE_POSTGRESQL" ]; then
519 # check dependency 592 # check dependency
520 dependency_libpq 593 if dependency_error_libpq ; then
521 if [ $? -ne 0 ]; then
522 # "auto" features can fail and are just disabled in this case 594 # "auto" features can fail and are just disabled in this case
523 if [ "$FEATURE_POSTGRESQL" != "auto" ]; then 595 if [ "$FEATURE_POSTGRESQL" = "auto" ]; then
596 DISABLE_FEATURE_POSTGRESQL=1
597 else
524 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED libpq " 598 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED libpq "
525 ERROR=1 599 ERROR=1
526 fi 600 fi
527 fi 601 fi
528 fi 602 if [ -n "$DISABLE_FEATURE_POSTGRESQL" ]; then
529 603 unset FEATURE_POSTGRESQL
530 604 fi
531 echo >> "$TEMP_DIR/config.mk" 605 fi
532 if [ -n "${TEMP_CFLAGS}" ]; then 606
533 echo "POSTGRESQL_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/config.mk" 607
534 fi 608 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then
535 if [ -n "${TEMP_CXXFLAGS}" ]; then 609 echo "POSTGRESQL_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"
536 echo "POSTGRESQL_CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/config.mk" 610 fi
611 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then
612 echo "POSTGRESQL_CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk"
613 fi
614 if [ "$BUILD_TYPE" = "debug" ]; then
615 if [ -n "$lang_c" ]; then
616 echo 'POSTGRESQL_CFLAGS += ${DEBUG_CC_FLAGS}' >> "$TEMP_DIR/flags.mk"
617 fi
618 if [ -n "$lang_cpp" ]; then
619 echo 'POSTGRESQL_CXXFLAGS += ${DEBUG_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk"
620 fi
621 fi
622 if [ "$BUILD_TYPE" = "release" ]; then
623 if [ -n "$lang_c" ]; then
624 echo 'POSTGRESQL_CFLAGS += ${RELEASE_CC_FLAGS}' >> "$TEMP_DIR/flags.mk"
625 fi
626 if [ -n "$lang_cpp" ]; then
627 echo 'POSTGRESQL_CXXFLAGS += ${RELEASE_CXX_FLAGS}' >> "$TEMP_DIR/flags.mk"
628 fi
537 fi 629 fi
538 if [ -n "${TEMP_LDFLAGS}" ]; then 630 if [ -n "${TEMP_LDFLAGS}" ]; then
539 echo "POSTGRESQL_LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/config.mk" 631 echo "POSTGRESQL_LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk"
540 fi 632 fi
541 633
634
635 # final result
542 if [ $ERROR -ne 0 ]; then 636 if [ $ERROR -ne 0 ]; then
543 echo 637 echo
544 echo "Error: Unresolved dependencies" 638 echo "Error: Unresolved dependencies"
545 echo "$DEPENDENCIES_FAILED" 639 echo "$DEPENDENCIES_FAILED"
546 rm -Rf "$TEMP_DIR" 640 abort_configure
547 exit 1
548 fi 641 fi
549 642
550 echo "configure finished" 643 echo "configure finished"
551 echo 644 echo
552 echo "Build Config:" 645 echo "Build Config:"
553 echo " PREFIX: $PREFIX" 646 echo " PREFIX: $prefix"
554 echo " TOOLCHAIN: $TOOLCHAIN_NAME" 647 echo " TOOLCHAIN: $TOOLCHAIN_NAME"
648 echo "Features:"
649 if [ -n "$FEATURE_POSTGRESQL" ]; then
650 echo " postgresql: on"
651 else
652 echo " postgresql: off"
653 fi
555 echo 654 echo
556 cat "$TEMP_DIR/config.mk" "$TEMP_DIR/make.mk" > config.mk 655
656 # generate the config.mk file
657 cat > "$TEMP_DIR/config.mk" << __EOF__
658 #
659 # config.mk generated by configure
660 #
661
662 __EOF__
663 write_toolchain_defaults "$TEMP_DIR/toolchain.mk"
664 cat "$TEMP_DIR/vars.mk" "$TEMP_DIR/toolchain.mk" "$TEMP_DIR/flags.mk" "$TEMP_DIR/make.mk" > config.mk
557 rm -Rf "$TEMP_DIR" 665 rm -Rf "$TEMP_DIR"
558
559

mercurial