source: roaraudio/build-system/configure.lib @ 5807:1fe766d9dacb

Last change on this file since 5807:1fe766d9dacb was 5787:bff6c671917e, checked in by phi, 11 years ago

added support to handle ckport databases

File size: 10.0 KB
Line 
1#!/bin/false
2# vim:ft=sh
3
4#     Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2012
5#
6# This file is part of roard a part of RoarAudio,
7# a cross-platform sound system for both, home and professional use.
8# See README for details.
9#
10# This file is free software; you can redistribute it and/or modify
11# it under the terms of the GNU General Public License version 3
12# as published by the Free Software Foundation.
13#
14# RoarAudio is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this software; see the file COPYING.  If not, write to
21# the Free Software Foundation, 51 Franklin Street, Fifth Floor,
22# Boston, MA 02110-1301, USA.
23
24# some very basic string functions:
25to_upper() {
26 tr 'a-z' 'A-Z'
27}
28
29to_escaped() {
30 tr 'A-Z/.+-' 'a-z____'
31}
32
33write_help() {
34 echo 'COMMON OPTIONS:'
35 echo
36 echo '--ldpath DIR                - Add DIR to (compile time) search list for libs'
37 echo '--incpath DIR               - Add DIR to search list for headers'
38 echo '--addpath DIR               - Add DIR/lib to lib, DIR/include to header search list'
39 echo '--root DIR                  - The same as "--addpath DIR --prefix DIR"'
40 echo
41 echo '--cflags FLAGS              - Sets additional compiler flags (default: '"$CFLAGS"')'
42 echo '--ldflags FLAGS             - Sets additional linker flags (default: '"$LDFLAGS"')'
43 echo '--opti LEVEL                - Sets optimizer level (default: '"$OPTI_O"')'
44 echo '--link-deps MODE            - Model for linking dependencies: auto, full or indirect'
45 echo
46 echo '--cc CC                     - Set name of C compiler (CC) to CC'
47 echo '--ranlib RANLIB             - Set name of ranlib (RANLIB) to RANLIB'
48 echo
49 echo '--root-uid UID              - Sets User ID (UID) of the root user/superuser'
50 echo
51 echo '--no-LIB                    - disable library LIB'
52 echo '--maybe-LIB                 - autodetect library LIB (default)'
53 echo
54 echo '--prefix DIR                - Set general prefix (default: '"$PREFIX"')'
55 echo '--prefix-bin DIR            - Set prefix for binaries (default: $PREFIX/bin)'
56 echo '--prefix-lib DIR            - Set prefix for libraries (default: $PREFIX/libs)'
57 echo '--prefix-inc DIR            - Set prefix for include files (default: $PREFIX/include)'
58 echo '--prefix-man DIR            - Set prefix for manpages (default: $PREFIX/man)'
59 echo '--prefix-pc DIR             - Set prefix for pkg-config (default: $PREFIX_LIB/pkgconfig)'
60 echo
61 echo '--without-beta              - Disable beta code'
62 echo '--without-experimental      - Disable experimental code'
63 echo
64 echo '--distribution-version-string STRING'
65 echo '                            - Sets distribution part of version string'
66 echo
67 echo '--mmcu MMCU                 - Sets -mmcu compiler/linker option'
68 echo '--target-win32              - Disable everything useful'
69 echo '--exec-helper HELPER        - Exec all test programms using this command (HELPER $cmd $args)'
70 echo '                              use '\''--exec-helper wine'\'' when building win32 binaries'
71 echo
72}
73
74parse_option() {
75 # Options are given via $n.
76 # we can not shift used ones so we tell the caller
77 # how many to shift: shift $SHIFT_COUNT
78 SHIFT_COUNT=0
79 # we also tell if the option was handelt.
80 HANDLED=true # will be reset if not.
81
82 case "$1" in
83  '--ldpath')
84   LDPATH="$LDPATH -L$2"
85   SHIFT_COUNT=1
86  ;;
87  '--incpath')
88   INCPATH="$INCPATH -I$2"
89   SHIFT_COUNT=1
90  ;;
91  '--addpath')
92   LDPATH="$LDPATH -L$2/lib/"
93   INCPATH="$INCPATH -I$2/include/"
94   SHIFT_COUNT=1
95  ;;
96  '--root')
97   LDPATH="$LDPATH -L$2/lib/"
98   INCPATH="$INCPATH -I$2/include/"
99   PREFIX="$2"
100   SHIFT_COUNT=1
101  ;;
102  '--cflags')
103   CFLAGS="$2"
104   SHIFT_COUNT=1
105  ;;
106  '--ldflags')
107   LDFLAGS="$2"
108   SHIFT_COUNT=1
109  ;;
110  '--opti')
111   OPTI_O="$2"
112   SHIFT_COUNT=1
113  ;;
114  '--link-deps')
115   LINK_DEPS="$2"
116   SHIFT_COUNT=1
117  ;;
118  '--cc')
119   CC="$2"
120   SHIFT_COUNT=1
121  ;;
122  '--ranlib')
123   RANLIB="$2"
124   SHIFT_COUNT=1
125  ;;
126  '--root-uid')
127   ROOT_UID="$2"
128   SHIFT_COUNT=1
129  ;;
130  '--no-'*)
131   lib=$(echo "$1" | sed 's/^--no-//' | to_escaped)
132   eval no_lib_$lib=true
133  ;;
134  '--maybe-'*)
135   lib=$(echo "$1" | sed 's/^--maybe-//' | to_escaped)
136   eval unset no_lib_$lib
137  ;;
138  '--distribution-version-string')
139   DISTRIBUTION_VERSION_STRING="$2"
140   SHIFT_COUNT=1
141  ;;
142  '--without-beta')
143   BETA=false
144   EXPERIMENTAL=false
145  ;;
146  '--without-experimental')
147   EXPERIMENTAL=false
148  ;;
149  '--prefix')
150   PREFIX="$2"
151   SHIFT_COUNT=1
152  ;;
153  '--prefix-bin')
154   PREFIX_BIN="$2"
155   SHIFT_COUNT=1
156  ;;
157  '--prefix-lib')
158   PREFIX_LIB="$2"
159   SHIFT_COUNT=1
160  ;;
161  '--prefix-inc')
162   PREFIX_INC="$2"
163   SHIFT_COUNT=1
164  ;;
165  '--prefix-man')
166   PREFIX_MAN="$2"
167   SHIFT_COUNT=1
168  ;;
169  '--prefix-pc')
170   PREFIX_PC="$2"
171   SHIFT_COUNT=1
172  ;;
173  '--prefix-ckport')
174   PREFIX_CKPORT="$2"
175   SHIFT_COUNT=1
176  ;;
177####################################
178# autof* options block:
179  '--prefix='*)
180   PREFIX=$(echo "$1" | cut -d= -f2)
181  ;;
182  '--prefix-bin='*)
183   PREFIX_BIN=$(echo "$1" | cut -d= -f2)
184  ;;
185  '--prefix-lib='*)
186   PREFIX_LIB=$(echo "$1" | cut -d= -f2)
187  ;;
188  '--prefix-inc='*)
189   PREFIX_INC=$(echo "$1" | cut -d= -f2)
190  ;;
191  '--prefix-man='*)
192   PREFIX_MAN=$(echo "$1" | cut -d= -f2)
193  ;;
194  '--prefix-pc='*)
195   PREFIX_PC=$(echo "$1" | cut -d= -f2)
196  ;;
197  '--prefix-ckport='*)
198   PREFIX_CKPORT=$(echo "$1" | cut -d= -f2)
199  ;;
200####################################
201  '--mmcu')
202   MMCU="$2"
203   SHIFT_COUNT=1
204  ;;
205  '--exec-helper')
206   EXEC_HELPER="$2"
207   SHIFT_COUNT=1
208  ;;
209  '--target-win32')
210   TARGET_WIN32=true
211  ;;
212  *)
213   HANDLED=false
214  ;;
215 esac;
216
217 if $HANDLED
218 then
219  SHIFT_COUNT=`expr $SHIFT_COUNT + 1`
220 fi
221}
222
223open_configure_files() {
224 exec 3> config.h 4> Makefile.conf 5> config.log
225}
226
227update_target() {
228 TARGET_CYGWIN=`echo "$SYSNAME" | if grep CYGWIN  > /dev/null; then echo true; else echo false; fi`
229 TARGET_WIN32=`echo  "$SYSNAME" | if grep MINGW32 > /dev/null; then echo true; else echo $TARGET_WIN32; fi`
230
231 if [ "$SYSNAME" = 'Darwin' ]
232 then
233  echo "Adding common $SYSNAME shared lib arguments..."
234  SHARED="$SHARED -fno-common -dynamiclib -compatibility_version 0.1 -current_version 0.1.0"
235  SHARED_CF="$SHARED_CF -fno-common"
236 elif [ "$SYSNAME" = 'NetBSD' ]
237 then
238  echo "Adding common $SYSNAME libpath arguments..."
239  LDPATH="$LDPATH -L/usr/local/lib/"
240 elif [ "$SYSNAME" = 'OpenBSD' ]
241 then
242  echo "Adding common $SYSNAME search path arguments..."
243  LDPATH="$LDPATH -L/usr/local/lib/"
244  INCPATH="$INCPATH -I/usr/local/include/"
245 # echo "Adding $SYSNAME build arguments..."
246 # SNDIO_EMUL=false
247 elif [ "$SYSNAME" = 'FreeBSD' ]
248 then
249  echo "Adding common $SYSNAME search path arguments..."
250  LDPATH="$LDPATH -L/usr/local/lib/"
251  INCPATH="$INCPATH -I/usr/local/include/"
252 elif $TARGET_WIN32
253 then
254  echo "Adding common win32 build arguments..."
255  rdynamic=false
256  fPIC=false
257  SHARED_SUFFIX='.dll'
258  TF_E="$TF_E.exe"
259 elif $TARGET_CYGWIN
260 then
261  echo "Adding common cygwin build arguments..."
262  rdynamic=false
263  fPIC=false
264  SHARED_SUFFIX='.dll'
265  TF_E="$TF_E.exe"
266 fi
267}
268
269update_prefixes() {
270 [ "$PREFIX_BIN"    = '' ] && PREFIX_BIN="$PREFIX/bin/"
271 [ "$PREFIX_LIB"    = '' ] && PREFIX_LIB="$PREFIX/lib/"
272 [ "$PREFIX_INC"    = '' ] && PREFIX_INC="$PREFIX/include/"
273 [ "$PREFIX_MAN"    = '' ] && PREFIX_MAN="$PREFIX/share/man/"
274 [ "$PREFIX_PC"     = '' ] && PREFIX_PC="$PREFIX_LIB/pkgconfig/"
275 [ "$PREFIX_CKPORT" = '' ] && PREFIX_CKPORT="$PREFIX_LIB/ckport/db/"
276}
277
278update_ccft() {
279 CCTF="$CC $CFLAGS $LDFLAGS $LDPATH $INCPATH -Iinclude/ -o $TF_E $TF_C"
280}
281
282cleanup_ccft() {
283 rm -f $TF_C $TF_E
284 if [ "$TARGET_CYGWIN" = 'true' -o "$TARGET_WIN32" = 'true' ]
285 then
286  echo "Deleting win32 specific temp files: $TF_E.exe"
287  rm -f $TF_E.exe
288 fi
289}
290
291update_cc() {
292 if [ "$MMCU" != '' ]
293 then
294  CC="$CC -mmcu=$MMCU"
295 fi
296}
297
298write_header_makefileconf() {
299 {
300  echo "VERSION=$VERSION"
301  echo "DISTRIBUTION_VERSION_STRING=$DISTRIBUTION_VERSION_STRING"
302  echo
303  echo "SHARED=$SHARED"
304  echo "SHARED_CF=$SHARED_CF"
305  echo "SHARED_SUFFIX=$SHARED_SUFFIX"
306  $rdynamic && echo 'rdynamic=-rdynamic'
307  $fPIC     && echo 'fPIC=-fPIC'
308  $Wextra   && echo 'Wextra=-Wextra'
309  echo
310  echo "CC=$CC"
311  echo "RANLIB=$RANLIB"
312  echo "LDPATH=$LDPATH"
313  echo "INCPATH=$INCPATH"
314  echo "ROAR_BUILDSYSTEM_DIR=$ROAR_BUILDSYSTEM_DIR"
315  echo
316  echo "OPTI_O=-O$OPTI_O"
317  echo
318  [ "$CFLAGS"  != '' ] && echo "CFLAGS  += $CFLAGS"
319  [ "$LDFLAGS" != '' ] && echo "LDFLAGS += $LDFLAGS"
320  echo
321  echo "EXEC_HELPER=$EXEC_HELPER"
322  echo "CROSS_COMPILE=$CROSS_COMPILE"
323  echo
324  echo "PREFIX=$PREFIX"
325  echo "PREFIX_BIN=$PREFIX_BIN"
326  echo "PREFIX_LIB=$PREFIX_LIB"
327  echo "PREFIX_INC=$PREFIX_INC"
328  echo "PREFIX_MAN=$PREFIX_MAN"
329  echo "PREFIX_PC=$PREFIX_PC"
330  echo "PREFIX_CKPORT=$PREFIX_CKPORT"
331  echo
332 } >&4
333}
334
335write_footer_makefileconf() {
336 {
337  echo
338  echo '#ll'
339 } >&4
340}
341
342write_header_configlog() {
343 {
344  cat <<'EOF'
345//config.log:
346
347/*
348 * Logfile for configure script $Revision$ of RoarAudio
349 */
350
351EOF
352  echo '/* uname: ' $(uname -a) '*/'
353  echo '/* Date : ' $(date)  '*/'
354  echo
355
356  echo
357  echo
358
359  echo "ARGS(): $_CARGS"
360
361  for i in PATH SHELL CC RANLIB PKG_CONFIG SYSNAME \
362           TARGET_CYGWIN TARGET_WIN32 TARGET_MICROCONTROLLER CROSS_COMPILE \
363           MINIMAL EXEC_HELPER \
364           "$@"
365  do
366   eval echo "BASICCONF\($i\): \$$i";
367  done
368
369  echo
370  echo
371 } >&5
372}
373
374write_footer_configlog() {
375 {
376  echo
377  echo '//ll'
378 } >&5
379}
380
381write_header_configh() {
382 {
383  echo '//config.h:'
384  echo
385  echo "#ifndef $1"
386  echo "#define $1"
387  echo
388  echo '/* uname: ' $(uname -a) '*/'
389  echo '/* Date : ' $(date)  '*/'
390  echo
391 } >&3
392}
393
394write_footer_configh() {
395 {
396  echo
397  echo '#endif'
398  echo
399  echo '//ll'
400 } >&3
401}
402
403write_vars_configh_string() {
404 {
405  for f in "$@"
406  do
407   eval val=\"\$$f\"
408   echo "#define $f \"$val\""
409  done
410 } >&3
411}
412
413write_vars_configh_literal() {
414 {
415  for f in "$@"
416  do
417   eval val=\"\$$f\"
418   echo "#define $f $val"
419  done
420 } >&3
421}
422
423write_header() {
424 write_header_makefileconf
425 write_header_configlog
426 write_header_configh "$@"
427}
428
429write_footer() {
430 write_footer_makefileconf
431 write_footer_configlog
432 write_footer_configh
433}
434
435#ll
Note: See TracBrowser for help on using the repository browser.