source: roaraudio/build-system/configure.lib @ 5878:3b92b0d6ef9b

Last change on this file since 5878:3b92b0d6ef9b was 5878:3b92b0d6ef9b, checked in by phi, 11 years ago

make config.h more friendly to other langs

File size: 14.8 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
33error_missing() {
34 _object="$1"
35 [ "$_object" = '' ] && _object="$last_tested_object"
36 echo "Error: $_object is missing but required."
37 exit 1
38}
39
40write_help() {
41 echo 'COMMON OPTIONS:'
42 echo
43 echo '--ldpath DIR                - Add DIR to (compile time) search list for libs'
44 echo '--incpath DIR               - Add DIR to search list for headers'
45 echo '--addpath DIR               - Add DIR/lib to lib, DIR/include to header search list'
46 echo '--root DIR                  - The same as "--addpath DIR --prefix DIR"'
47 echo
48 echo '--cflags FLAGS              - Sets additional compiler flags (default: '"$CFLAGS"')'
49 echo '--ldflags FLAGS             - Sets additional linker flags (default: '"$LDFLAGS"')'
50 echo '--opti LEVEL                - Sets optimizer level (default: '"$OPTI_O"')'
51 echo '--without-debugging         - Disable compiling debug information into binaries'
52 echo '--link-deps MODE            - Model for linking dependencies: auto, full or indirect'
53 echo
54 echo '--cc CC                     - Set name of C compiler (CC) to CC'
55 echo '--ranlib RANLIB             - Set name of ranlib (RANLIB) to RANLIB'
56 echo
57 echo '--root-uid UID              - Sets User ID (UID) of the root user/superuser'
58 echo
59 echo '--no-LIB                    - disable library LIB'
60 echo '--maybe-LIB                 - autodetect library LIB (default)'
61 echo
62 echo '--prefix DIR                - Set general prefix (default: '"$PREFIX"')'
63 echo '--prefix-bin DIR            - Set prefix for binaries (default: $PREFIX/bin)'
64 echo '--prefix-sbin DIR           - Set prefix for system binaries (default: $PREFIX/sbin)'
65 echo '--prefix-lib DIR            - Set prefix for libraries (default: $PREFIX/libs)'
66 echo '--prefix-inc DIR            - Set prefix for include files (default: $PREFIX/include)'
67 echo '--prefix-man DIR            - Set prefix for manpages (default: $PREFIX/share/man)'
68 echo '--prefix-pc DIR             - Set prefix for pkg-config (default: $PREFIX_LIB/pkgconfig)'
69 echo '--prefix-sysconf DIR        - Set prefix for system configuration (default: '"$PREFIX_SYSCONF"')'
70 echo '--prefix-dev DIR            - Set prefix for devices (default: '"$PREFIX_DEV"')'
71 echo '--prefix-doc DIR            - Set prefix for documentation (default: $PREFIX/share/doc)'
72 echo '--prefix-tmp DIR            - Set prefix for temporary files (default: '"$PREFIX_TMP"')'
73 echo '--prefix-var DIR            - Set prefix for variable files (default: '"$PREFIX_VAR"')'
74 echo '--prefix-cache DIR          - Set prefix for application caches (default: $PREFIX_VAR/cache)'
75 echo '--prefix-data DIR           - Set prefix for variable application data (default: $PREFIX_VAR/lib)'
76 echo '--prefix-lock DIR           - Set prefix for lock files (locked resources) (default: $PREFIX_VAR/lock)'
77 echo '--prefix-log DIR            - Set prefix for log files (default: $PREFIX_VAR/log)'
78 echo '--prefix-mail DIR           - Set prefix for user'\''s mailboxes (default: $PREFIX_VAR/mail)'
79 echo '--prefix-run DIR            - Set prefix for information about the running system (default: $PREFIX_VAR/run)'
80 echo '--prefix-spool DIR          - Set prefix for spools (queued jobs) (default: $PREFIX_VAR/spool)'
81 echo
82 echo '--without-beta              - Disable beta code'
83 echo '--without-experimental      - Disable experimental code'
84 echo
85 echo '--distribution-version-string STRING'
86 echo '                            - Sets distribution part of version string'
87 echo
88 echo '--mmcu MMCU                 - Sets -mmcu compiler/linker option'
89 echo '--target-win32              - Disable everything useful'
90 echo '--exec-helper HELPER        - Exec all test programms using this command (HELPER $cmd $args)'
91 echo '                              use '\''--exec-helper wine'\'' when building win32 binaries'
92 echo
93}
94
95parse_option() {
96 # Options are given via $n.
97 # we can not shift used ones so we tell the caller
98 # how many to shift: shift $SHIFT_COUNT
99 SHIFT_COUNT=0
100 # we also tell if the option was handelt.
101 HANDLED=true # will be reset if not.
102
103 case "$1" in
104  '--ldpath')
105   LDPATH="$LDPATH -L$2"
106   SHIFT_COUNT=1
107  ;;
108  '--incpath')
109   INCPATH="$INCPATH -I$2"
110   SHIFT_COUNT=1
111  ;;
112  '--addpath')
113   LDPATH="$LDPATH -L$2/lib/"
114   INCPATH="$INCPATH -I$2/include/"
115   SHIFT_COUNT=1
116  ;;
117  '--root')
118   LDPATH="$LDPATH -L$2/lib/"
119   INCPATH="$INCPATH -I$2/include/"
120   PREFIX="$2"
121   SHIFT_COUNT=1
122  ;;
123  '--cflags')
124   CFLAGS="$2"
125   SHIFT_COUNT=1
126  ;;
127  '--ldflags')
128   LDFLAGS="$2"
129   SHIFT_COUNT=1
130  ;;
131  '--opti')
132   OPTI_O="$2"
133   SHIFT_COUNT=1
134  ;;
135  '--without-debugging')
136   DEBUG_g=''
137  ;;
138  '--link-deps')
139   LINK_DEPS="$2"
140   SHIFT_COUNT=1
141  ;;
142  '--cc')
143   CC="$2"
144   SHIFT_COUNT=1
145  ;;
146  '--ranlib')
147   RANLIB="$2"
148   SHIFT_COUNT=1
149  ;;
150  '--root-uid')
151   ROOT_UID="$2"
152   SHIFT_COUNT=1
153  ;;
154  '--no-'*)
155   lib=$(echo "$1" | sed 's/^--no-//' | to_escaped)
156   eval no_lib_$lib=true
157  ;;
158  '--maybe-'*)
159   lib=$(echo "$1" | sed 's/^--maybe-//' | to_escaped)
160   eval unset no_lib_$lib
161  ;;
162  '--distribution-version-string')
163   DISTRIBUTION_VERSION_STRING="$2"
164   SHIFT_COUNT=1
165  ;;
166  '--without-beta')
167   BETA=false
168   EXPERIMENTAL=false
169  ;;
170  '--without-experimental')
171   EXPERIMENTAL=false
172  ;;
173  '--prefix')
174   PREFIX="$2"
175   SHIFT_COUNT=1
176  ;;
177  '--prefix-bin')
178   PREFIX_BIN="$2"
179   SHIFT_COUNT=1
180  ;;
181  '--prefix-sbin')
182   PREFIX_SBIN="$2"
183   SHIFT_COUNT=1
184  ;;
185  '--prefix-lib')
186   PREFIX_LIB="$2"
187   SHIFT_COUNT=1
188  ;;
189  '--prefix-inc')
190   PREFIX_INC="$2"
191   SHIFT_COUNT=1
192  ;;
193  '--prefix-man')
194   PREFIX_MAN="$2"
195   SHIFT_COUNT=1
196  ;;
197  '--prefix-pc')
198   PREFIX_PC="$2"
199   SHIFT_COUNT=1
200  ;;
201  '--prefix-ckport')
202   PREFIX_CKPORT="$2"
203   SHIFT_COUNT=1
204  ;;
205  '--prefix-sysconf')
206   PREFIX_SYSCONF="$2"
207   SHIFT_COUNT=1
208  ;;
209  '--prefix-dev')
210   PREFIX_DEV="$2"
211   SHIFT_COUNT=1
212  ;;
213  '--prefix-doc')
214   PREFIX_DOC="$2"
215   SHIFT_COUNT=1
216  ;;
217  '--prefix-tmp')
218   PREFIX_TMP="$2"
219   SHIFT_COUNT=1
220  ;;
221  '--prefix-var')
222   PREFIX_VAR="$2"
223   SHIFT_COUNT=1
224  ;;
225  '--prefix-cache')
226   PREFIX_CACHE="$2"
227   SHIFT_COUNT=1
228  ;;
229  '--prefix-data')
230   PREFIX_DATA="$2"
231   SHIFT_COUNT=1
232  ;;
233  '--prefix-lock')
234   PREFIX_LOCK="$2"
235   SHIFT_COUNT=1
236  ;;
237  '--prefix-log')
238   PREFIX_LOG="$2"
239   SHIFT_COUNT=1
240  ;;
241  '--prefix-mail')
242   PREFIX_MAIL="$2"
243   SHIFT_COUNT=1
244  ;;
245  '--prefix-run')
246   PREFIX_RUN="$2"
247   SHIFT_COUNT=1
248  ;;
249  '--prefix-spool')
250   PREFIX_SPOOL="$2"
251   SHIFT_COUNT=1
252  ;;
253####################################
254# autof* options block:
255  '--prefix='*)
256   PREFIX=$(echo "$1" | cut -d= -f2)
257  ;;
258  '--prefix-bin='*)
259   PREFIX_BIN=$(echo "$1" | cut -d= -f2)
260  ;;
261  '--prefix-sbin='*)
262   PREFIX_SBIN=$(echo "$1" | cut -d= -f2)
263  ;;
264  '--prefix-lib='*)
265   PREFIX_LIB=$(echo "$1" | cut -d= -f2)
266  ;;
267  '--prefix-inc='*)
268   PREFIX_INC=$(echo "$1" | cut -d= -f2)
269  ;;
270  '--prefix-man='*)
271   PREFIX_MAN=$(echo "$1" | cut -d= -f2)
272  ;;
273  '--prefix-pc='*)
274   PREFIX_PC=$(echo "$1" | cut -d= -f2)
275  ;;
276  '--prefix-ckport='*)
277   PREFIX_CKPORT=$(echo "$1" | cut -d= -f2)
278  ;;
279  '--prefix-sysconf='*)
280   PREFIX_SYSCONF=$(echo "$1" | cut -d= -f2)
281  ;;
282  '--prefix-dev='*)
283   PREFIX_DEV=$(echo "$1" | cut -d= -f2)
284  ;;
285  '--prefix-doc='*)
286   PREFIX_DOC=$(echo "$1" | cut -d= -f2)
287  ;;
288  '--prefix-tmp='*)
289   PREFIX_TMP=$(echo "$1" | cut -d= -f2)
290  ;;
291  '--prefix-var='*)
292   PREFIX_VAR=$(echo "$1" | cut -d= -f2)
293  ;;
294  '--prefix-cache='*)
295   PREFIX_CACHE=$(echo "$1" | cut -d= -f2)
296  ;;
297  '--prefix-data='*)
298   PREFIX_DATA=$(echo "$1" | cut -d= -f2)
299  ;;
300  '--prefix-lock='*)
301   PREFIX_LOCK=$(echo "$1" | cut -d= -f2)
302  ;;
303  '--prefix-log='*)
304   PREFIX_LOG=$(echo "$1" | cut -d= -f2)
305  ;;
306  '--prefix-mail='*)
307   PREFIX_MAIL=$(echo "$1" | cut -d= -f2)
308  ;;
309  '--prefix-run='*)
310   PREFIX_RUN=$(echo "$1" | cut -d= -f2)
311  ;;
312  '--prefix-spool='*)
313   PREFIX_SPOOL=$(echo "$1" | cut -d= -f2)
314  ;;
315####################################
316  '--mmcu')
317   MMCU="$2"
318   SHIFT_COUNT=1
319  ;;
320  '--exec-helper')
321   EXEC_HELPER="$2"
322   SHIFT_COUNT=1
323  ;;
324  '--target-win32')
325   TARGET_WIN32=true
326  ;;
327  *)
328   HANDLED=false
329  ;;
330 esac;
331
332 if $HANDLED
333 then
334  SHIFT_COUNT=`expr $SHIFT_COUNT + 1`
335 fi
336}
337
338open_configure_files() {
339 exec 3> config.h 4> Makefile.conf 5> config.log
340}
341
342update_target() {
343 TARGET_CYGWIN=`echo "$SYSNAME" | if grep CYGWIN  > /dev/null; then echo true; else echo false; fi`
344 TARGET_WIN32=`echo  "$SYSNAME" | if grep MINGW32 > /dev/null; then echo true; else echo $TARGET_WIN32; fi`
345
346 if $TARGET_WIN32
347 then
348  TARGET_TYPE='win32'
349 elif $TARGET_MICROCONTROLLER
350 then
351  TARGET_TYPE='microcontroller'
352 elif $TARGET_CYGWIN
353 then
354  TARGET_TYPE='cygwin'
355 else
356  TARGET_TYPE='generic'
357 fi
358
359 if [ "$SYSNAME" = 'Darwin' ]
360 then
361  echo "Adding common $SYSNAME shared lib arguments..."
362  SHARED="$SHARED -fno-common -dynamiclib -compatibility_version 0.1 -current_version 0.1.0"
363  SHARED_CF="$SHARED_CF -fno-common"
364 elif [ "$SYSNAME" = 'NetBSD' ]
365 then
366  echo "Adding common $SYSNAME libpath arguments..."
367  LDPATH="$LDPATH -L/usr/local/lib/"
368 elif [ "$SYSNAME" = 'OpenBSD' ]
369 then
370  echo "Adding common $SYSNAME search path arguments..."
371  LDPATH="$LDPATH -L/usr/local/lib/"
372  INCPATH="$INCPATH -I/usr/local/include/"
373 # echo "Adding $SYSNAME build arguments..."
374 # SNDIO_EMUL=false
375 elif [ "$SYSNAME" = 'FreeBSD' ]
376 then
377  echo "Adding common $SYSNAME search path arguments..."
378  LDPATH="$LDPATH -L/usr/local/lib/"
379  INCPATH="$INCPATH -I/usr/local/include/"
380 elif $TARGET_WIN32
381 then
382  echo "Adding common win32 build arguments..."
383  rdynamic=false
384  fPIC=false
385  SHARED_SUFFIX='.dll'
386  TF_E="$TF_E.exe"
387
388  # should those be also in the cygwin port?
389  IMPLIB='$(BASENAME)$(SHARED_SUFFIX).a'
390  LDFLAGS="$LDFLAGS -Wl,--out-implib=\$@.a"
391 elif $TARGET_CYGWIN
392 then
393  echo "Adding common cygwin build arguments..."
394  rdynamic=false
395  fPIC=false
396  SHARED_SUFFIX='.dll'
397  TF_E="$TF_E.exe"
398 fi
399}
400
401update_prefixes() {
402 [ "$PREFIX_BIN"    = '' ] && PREFIX_BIN="$PREFIX/bin/"
403 [ "$PREFIX_SBIN"   = '' ] && PREFIX_SBIN="$PREFIX/sbin/"
404 [ "$PREFIX_LIB"    = '' ] && PREFIX_LIB="$PREFIX/lib/"
405 [ "$PREFIX_INC"    = '' ] && PREFIX_INC="$PREFIX/include/"
406 [ "$PREFIX_MAN"    = '' ] && PREFIX_MAN="$PREFIX/share/man/"
407 [ "$PREFIX_PC"     = '' ] && PREFIX_PC="$PREFIX_LIB/pkgconfig/"
408 [ "$PREFIX_CKPORT" = '' ] && PREFIX_CKPORT="$PREFIX_LIB/ckport/db/"
409 [ "$PREFIX_SYSCONF" = '' ] && PREFIX_SYSCONF="/etc/"
410 [ "$PREFIX_DEV"    = '' ] && PREFIX_DEV="/dev/"
411 [ "$PREFIX_DOC"    = '' ] && PREFIX_DOC="$PREFIX/share/doc/"
412 [ "$PREFIX_TMP"    = '' ] && PREFIX_TMP="/tmp/"
413 [ "$PREFIX_VAR"    = '' ] && PREFIX_VAR="/var/"
414 [ "$PREFIX_CACHE"  = '' ] && PREFIX_CACHE="$PREFIX_VAR/cache/"
415 [ "$PREFIX_DATA"   = '' ] && PREFIX_DATA="$PREFIX_VAR/lib/"
416 [ "$PREFIX_LOCK"   = '' ] && PREFIX_LOCK="$PREFIX_VAR/lock/"
417 [ "$PREFIX_LOG"    = '' ] && PREFIX_LOG="$PREFIX_VAR/log/"
418 [ "$PREFIX_MAIL"   = '' ] && PREFIX_MAIL="$PREFIX_VAR/mail/"
419 [ "$PREFIX_RUN"    = '' ] && PREFIX_RUN="$PREFIX_VAR/run/"
420 [ "$PREFIX_SPOOL"  = '' ] && PREFIX_SPOOL="$PREFIX_VAR/spool/"
421}
422
423update_ccft() {
424 CCTF="$CC $CFLAGS $LDFLAGS $LDPATH $INCPATH -Iinclude/ -o $TF_E $TF_C"
425}
426
427cleanup_ccft() {
428 rm -f $TF_C $TF_E
429}
430
431update_cc() {
432 if [ "$MMCU" != '' ]
433 then
434  CC="$CC -mmcu=$MMCU"
435 fi
436}
437
438write_header_makefileconf() {
439 {
440  echo "VERSION=$VERSION"
441  echo "DISTRIBUTION_VERSION_STRING=$DISTRIBUTION_VERSION_STRING"
442  echo
443  echo "TARGET_TYPE=$TARGET_TYPE"
444  echo "SHARED=$SHARED"
445  echo "SHARED_CF=$SHARED_CF"
446  echo "SHARED_SUFFIX=$SHARED_SUFFIX"
447  $rdynamic && echo 'rdynamic=-rdynamic'
448  $fPIC     && echo 'fPIC=-fPIC'
449  $Wextra   && echo 'Wextra=-Wextra'
450  echo "Wall=-Wall"
451  echo
452  echo "CC=$CC"
453  echo "RANLIB=$RANLIB"
454  echo "LDPATH=$LDPATH"
455  echo "INCPATH=$INCPATH"
456  echo "ROAR_BUILDSYSTEM_DIR=$ROAR_BUILDSYSTEM_DIR"
457  echo
458  echo "OPTI_O=-O$OPTI_O"
459  echo "DEBUG_g=$DEBUG_g"
460  echo "IMPLIB=$IMPLIB"
461  echo
462  [ "$CFLAGS"  != '' ] && echo "CFLAGS  += $CFLAGS"
463  [ "$LDFLAGS" != '' ] && echo "LDFLAGS += $LDFLAGS"
464  echo
465  echo "EXEC_HELPER=$EXEC_HELPER"
466  echo "CROSS_COMPILE=$CROSS_COMPILE"
467  echo
468  echo "PREFIX=$PREFIX"
469  echo "PREFIX_BIN=$PREFIX_BIN"
470  echo "PREFIX_SBIN=$PREFIX_SBIN"
471  echo "PREFIX_LIB=$PREFIX_LIB"
472  echo "PREFIX_INC=$PREFIX_INC"
473  echo "PREFIX_MAN=$PREFIX_MAN"
474  echo "PREFIX_PC=$PREFIX_PC"
475  echo "PREFIX_CKPORT=$PREFIX_CKPORT"
476  echo "PREFIX_SYSCONF=$PREFIX_SYSCONF"
477  echo "PREFIX_DEV=$PREFIX_DEV"
478  echo "PREFIX_DOC=$PREFIX_DOC"
479  echo "PREFIX_TMP=$PREFIX_TMP"
480  echo "PREFIX_VAR=$PREFIX_VAR"
481  echo "PREFIX_CACHE=$PREFIX_CACHE"
482  echo "PREFIX_DATA=$PREFIX_DATA"
483  echo "PREFIX_LOCK=$PREFIX_LOCK"
484  echo "PREFIX_LOG=$PREFIX_LOG"
485  echo "PREFIX_MAIL=$PREFIX_MAIL"
486  echo "PREFIX_RUN=$PREFIX_RUN"
487  echo "PREFIX_SPOOL=$PREFIX_SPOOL"
488  echo
489 } >&4
490}
491
492write_footer_makefileconf() {
493 {
494  echo
495  echo '#ll'
496 } >&4
497}
498
499write_header_configlog() {
500 {
501  cat <<'EOF'
502//config.log:
503
504/*
505 * Logfile for configure script $Revision$ of RoarAudio
506 */
507
508EOF
509  echo '/* uname: ' $(uname -a) '*/'
510  echo '/* Date : ' $(date)  '*/'
511  echo
512
513  echo
514  echo
515
516  echo "ARGS(): $_CARGS"
517
518  for i in PATH SHELL CC RANLIB PKG_CONFIG SYSNAME \
519           TARGET_TYPE TARGET_CYGWIN TARGET_WIN32 TARGET_MICROCONTROLLER CROSS_COMPILE \
520           MINIMAL EXEC_HELPER \
521           "$@"
522  do
523   eval echo "BASICCONF\($i\): \$$i";
524  done
525
526  echo
527  echo
528 } >&5
529}
530
531write_footer_configlog() {
532 {
533  echo
534  echo '//ll'
535 } >&5
536}
537
538write_header_configh() {
539 {
540  echo '#ifdef __RABS_COMMENT__'
541  echo '//config.h:'
542  echo '#endif'
543  echo
544  echo "#ifndef $1"
545  echo "#define $1"
546  echo
547  echo '#ifdef __RABS_COMMENT__'
548  echo '/* uname: ' $(uname -a) '*/'
549  echo '/* Date : ' $(date)  '*/'
550  echo '#endif'
551  echo
552 } >&3
553}
554
555write_footer_configh() {
556 {
557  echo
558  echo '#endif'
559  echo
560  echo '#ifdef __RABS_COMMENT__'
561  echo 'End of File.'
562  echo '#endif'
563 } >&3
564}
565
566write_vars_configh_string() {
567 {
568  for f in "$@"
569  do
570   eval val=\"\$$f\"
571   echo "#define $f \"$val\""
572  done
573 } >&3
574}
575
576write_vars_configh_literal() {
577 {
578  for f in "$@"
579  do
580   eval val=\"\$$f\"
581   echo "#define $f $val"
582  done
583 } >&3
584}
585
586write_header() {
587 write_header_makefileconf
588 write_header_configlog
589 write_header_configh "$@"
590}
591
592write_footer() {
593 write_footer_makefileconf
594 write_footer_configlog
595 write_footer_configh
596}
597
598#ll
Note: See TracBrowser for help on using the repository browser.