sgl

annotate configure @ 35:3d6ee9fb9ac1

- added a cflags declaration for modules files
author John Tsiombikas <nuclear@member.fsf.org>
date Fri, 24 Feb 2012 05:17:47 +0200
parents f5e83de47903
children
rev   line source
nuclear@2 1 #!/bin/sh
nuclear@2 2
nuclear@28 3 prefix=/usr/local
nuclear@28 4 ignore=
nuclear@7 5 cfgfile=src/config.h
nuclear@7 6 modfile=src/modules.c
nuclear@19 7 logfile=config.log
nuclear@19 8 echobin=`which echo`
nuclear@19 9
nuclear@19 10 rm -f $logfile
nuclear@19 11 message()
nuclear@19 12 {
nuclear@19 13 $echobin $* | tee -a $logfile
nuclear@19 14 }
nuclear@7 15
nuclear@9 16 extract()
nuclear@9 17 {
nuclear@12 18 grep "$2:" $1 | sed "s/^.*$2: *\(.*\)\*\//\1/"
nuclear@9 19 }
nuclear@9 20
nuclear@7 21 get_depline()
nuclear@2 22 {
nuclear@9 23 extract $1 link-with
nuclear@9 24 }
nuclear@9 25
nuclear@9 26 get_framework()
nuclear@9 27 {
nuclear@9 28 extract $1 mac-framework
nuclear@2 29 }
nuclear@2 30
nuclear@35 31 get_cflags()
nuclear@35 32 {
nuclear@35 33 extract $1 cflags
nuclear@35 34 }
nuclear@35 35
nuclear@7 36 get_usedef()
nuclear@7 37 {
nuclear@7 38 grep '#ifdef *USE_WSYS_MODULE' $1 | sed 's/^.*\(USE_WSYS_MODULE_.*\)/\1/'
nuclear@7 39 }
nuclear@2 40
nuclear@7 41 try_link()
nuclear@7 42 {
nuclear@7 43 srcfile=/tmp/sgl-trylink.c
nuclear@7 44 aout=/tmp/sgl-a.out
nuclear@7 45
nuclear@19 46 echo >>$logfile
nuclear@19 47 echo "trying command line: cc -o $aout $srcfile $*" >>$logfile
nuclear@19 48
nuclear@7 49 echo 'int main(void) { return 0; }' >$srcfile
nuclear@19 50 eval cc -o $aout $srcfile $1 >>$logfile 2>>$logfile
nuclear@13 51 res=$?
nuclear@13 52
nuclear@13 53 rm -f $srcfile $aout
nuclear@13 54 return $res
nuclear@7 55 }
nuclear@7 56
nuclear@28 57 message "configuring SimplyGL ..."
nuclear@28 58
nuclear@28 59 for arg; do
nuclear@28 60 case "$arg" in
nuclear@28 61 --prefix=*)
nuclear@28 62 value=`echo $arg | awk -F= '{print $2}'`
nuclear@28 63 prefix=${value:-$prefix}
nuclear@28 64 ;;
nuclear@28 65
nuclear@28 66 --without-*)
nuclear@28 67 value=`echo $arg | awk -F- '{print $4}'`
nuclear@28 68 ignore="$ignore $value"
nuclear@28 69 message "without: $value"
nuclear@28 70 ;;
nuclear@28 71 esac
nuclear@28 72 done
nuclear@28 73
nuclear@7 74 # write beginning of config.h
nuclear@7 75 echo '#ifndef CONFIG_H_' >$cfgfile
nuclear@7 76 echo '#define CONFIG_H_' >>$cfgfile
nuclear@7 77 echo >>$cfgfile
nuclear@7 78
nuclear@7 79 # write beginning of modules.c
nuclear@7 80 echo "/* this file is generated by $0, do not edit */" >$modfile
nuclear@7 81 echo >>$modfile
nuclear@9 82 echo '#define REGISTER_MODULE(name) \' >>$modfile
nuclear@9 83 echo ' do { void sgl_register_##name(); sgl_register_##name(); } while(0)' >>$modfile
nuclear@9 84 echo >>$modfile
nuclear@7 85 echo 'void sgl_modules_init(void)' >>$modfile
nuclear@7 86 echo '{' >>$modfile
nuclear@7 87
nuclear@7 88
nuclear@7 89 # start scanning for modules
nuclear@19 90 message 'Looking for usable window system modules ...'
nuclear@7 91
nuclear@7 92 # collect all src/wsys_whatever.c files
nuclear@13 93 all_files=`ls src/wsys_*.c src/wsys_*.m 2>/dev/null`
nuclear@7 94
nuclear@7 95 for m in $all_files; do
nuclear@7 96 # extract USE_WSYS_MODULE_* define
nuclear@7 97 def=`get_usedef $m`
nuclear@7 98
nuclear@7 99 # extract link-with line
nuclear@9 100 if [ `uname -s` = Darwin ]; then
nuclear@9 101 dep=`get_framework $m`
nuclear@9 102 if [ -z "$dep" ]; then
nuclear@9 103 dep=`get_depline $m`
nuclear@9 104 fi
nuclear@9 105 else
nuclear@9 106 dep=`get_depline $m`
nuclear@13 107 if [ -z "$dep" ]; then
nuclear@13 108 dep=`get_framework $m`
nuclear@13 109 fi
nuclear@9 110 fi
nuclear@9 111
nuclear@35 112 cfl=`get_cflags $m`
nuclear@35 113
nuclear@15 114 name=`echo $m | sort | sed 's/src\/wsys_//' | sed 's/\.c//' | sed 's/\.m//'`
nuclear@19 115 message -n "-> trying module $name (needs: $dep) ... "
nuclear@7 116
nuclear@28 117 if echo $ignore | grep $name >/dev/null; then
nuclear@28 118 message ignored
nuclear@28 119
nuclear@28 120 elif try_link "$dep"; then
nuclear@19 121 message ok
nuclear@7 122
nuclear@35 123 cflags="$cflags $cfl"
nuclear@7 124 libs="$libs $dep"
nuclear@7 125
nuclear@7 126 # emmit the USE_ define in config.h
nuclear@7 127 echo "#define $def" >>$cfgfile
nuclear@7 128 echo >>$cfgfile
nuclear@7 129
nuclear@7 130 # make the registration call in modules.c
nuclear@9 131 echo " REGISTER_MODULE($name);" >>$modfile
nuclear@7 132 else
nuclear@19 133 message failed
nuclear@7 134 fi
nuclear@7 135 done
nuclear@28 136
nuclear@35 137 if [ -n "$cflags" ]; then
nuclear@35 138 message "will compile with: $cflags"
nuclear@35 139 fi
nuclear@28 140 message "Will link with: $libs"
nuclear@7 141
nuclear@7 142 # wrap up the modules.c file
nuclear@7 143 echo '}' >>$modfile
nuclear@7 144
nuclear@7 145 # wrap up the config.h file
nuclear@7 146 echo '#endif /* CONFIG_H_ */' >>$cfgfile
nuclear@7 147
nuclear@7 148 # generate makefile
nuclear@19 149 message Generating makefile ...
nuclear@7 150
nuclear@28 151 message "install prefix: $prefix"
nuclear@28 152 echo "PREFIX = $prefix" >Makefile
nuclear@35 153 echo "wsys_cflags = $cflags" >>Makefile
nuclear@7 154 echo "wsys_libs = $libs" >>Makefile
nuclear@2 155 cat Makefile.in >>Makefile
nuclear@7 156
nuclear@19 157 message 'Configuration complete. Run make (or gmake) to compile.'