rev |
line source |
nuclear@2
|
1 #!/bin/sh
|
nuclear@2
|
2
|
nuclear@7
|
3 cfgfile=src/config.h
|
nuclear@7
|
4 modfile=src/modules.c
|
nuclear@19
|
5 logfile=config.log
|
nuclear@19
|
6 echobin=`which echo`
|
nuclear@19
|
7
|
nuclear@19
|
8 rm -f $logfile
|
nuclear@19
|
9
|
nuclear@19
|
10 message()
|
nuclear@19
|
11 {
|
nuclear@19
|
12 $echobin $* | tee -a $logfile
|
nuclear@19
|
13 }
|
nuclear@7
|
14
|
nuclear@9
|
15 extract()
|
nuclear@9
|
16 {
|
nuclear@12
|
17 grep "$2:" $1 | sed "s/^.*$2: *\(.*\)\*\//\1/"
|
nuclear@9
|
18 }
|
nuclear@9
|
19
|
nuclear@7
|
20 get_depline()
|
nuclear@2
|
21 {
|
nuclear@9
|
22 extract $1 link-with
|
nuclear@9
|
23 }
|
nuclear@9
|
24
|
nuclear@9
|
25 get_framework()
|
nuclear@9
|
26 {
|
nuclear@9
|
27 extract $1 mac-framework
|
nuclear@2
|
28 }
|
nuclear@2
|
29
|
nuclear@7
|
30 get_usedef()
|
nuclear@7
|
31 {
|
nuclear@7
|
32 grep '#ifdef *USE_WSYS_MODULE' $1 | sed 's/^.*\(USE_WSYS_MODULE_.*\)/\1/'
|
nuclear@7
|
33 }
|
nuclear@2
|
34
|
nuclear@7
|
35 try_link()
|
nuclear@7
|
36 {
|
nuclear@7
|
37 srcfile=/tmp/sgl-trylink.c
|
nuclear@7
|
38 aout=/tmp/sgl-a.out
|
nuclear@7
|
39
|
nuclear@19
|
40 echo >>$logfile
|
nuclear@19
|
41 echo "trying command line: cc -o $aout $srcfile $*" >>$logfile
|
nuclear@19
|
42
|
nuclear@7
|
43 echo 'int main(void) { return 0; }' >$srcfile
|
nuclear@19
|
44 eval cc -o $aout $srcfile $1 >>$logfile 2>>$logfile
|
nuclear@13
|
45 res=$?
|
nuclear@13
|
46
|
nuclear@13
|
47 rm -f $srcfile $aout
|
nuclear@13
|
48 return $res
|
nuclear@7
|
49 }
|
nuclear@7
|
50
|
nuclear@7
|
51 # write beginning of config.h
|
nuclear@7
|
52 echo '#ifndef CONFIG_H_' >$cfgfile
|
nuclear@7
|
53 echo '#define CONFIG_H_' >>$cfgfile
|
nuclear@7
|
54 echo >>$cfgfile
|
nuclear@7
|
55
|
nuclear@7
|
56 # write beginning of modules.c
|
nuclear@7
|
57 echo "/* this file is generated by $0, do not edit */" >$modfile
|
nuclear@7
|
58 echo >>$modfile
|
nuclear@9
|
59 echo '#define REGISTER_MODULE(name) \' >>$modfile
|
nuclear@9
|
60 echo ' do { void sgl_register_##name(); sgl_register_##name(); } while(0)' >>$modfile
|
nuclear@9
|
61 echo >>$modfile
|
nuclear@7
|
62 echo 'void sgl_modules_init(void)' >>$modfile
|
nuclear@7
|
63 echo '{' >>$modfile
|
nuclear@7
|
64
|
nuclear@7
|
65
|
nuclear@7
|
66 # start scanning for modules
|
nuclear@19
|
67 message 'Looking for usable window system modules ...'
|
nuclear@7
|
68
|
nuclear@7
|
69 # collect all src/wsys_whatever.c files
|
nuclear@13
|
70 all_files=`ls src/wsys_*.c src/wsys_*.m 2>/dev/null`
|
nuclear@7
|
71
|
nuclear@7
|
72 for m in $all_files; do
|
nuclear@7
|
73 # extract USE_WSYS_MODULE_* define
|
nuclear@7
|
74 def=`get_usedef $m`
|
nuclear@7
|
75
|
nuclear@7
|
76 # extract link-with line
|
nuclear@9
|
77 if [ `uname -s` = Darwin ]; then
|
nuclear@9
|
78 dep=`get_framework $m`
|
nuclear@9
|
79 if [ -z "$dep" ]; then
|
nuclear@9
|
80 dep=`get_depline $m`
|
nuclear@9
|
81 fi
|
nuclear@9
|
82 else
|
nuclear@9
|
83 dep=`get_depline $m`
|
nuclear@13
|
84 if [ -z "$dep" ]; then
|
nuclear@13
|
85 dep=`get_framework $m`
|
nuclear@13
|
86 fi
|
nuclear@9
|
87 fi
|
nuclear@9
|
88
|
nuclear@15
|
89 name=`echo $m | sort | sed 's/src\/wsys_//' | sed 's/\.c//' | sed 's/\.m//'`
|
nuclear@19
|
90 message -n "-> trying module $name (needs: $dep) ... "
|
nuclear@7
|
91
|
nuclear@12
|
92 if try_link "$dep"; then
|
nuclear@19
|
93 message ok
|
nuclear@7
|
94
|
nuclear@7
|
95 libs="$libs $dep"
|
nuclear@7
|
96
|
nuclear@7
|
97 # emmit the USE_ define in config.h
|
nuclear@7
|
98 echo "#define $def" >>$cfgfile
|
nuclear@7
|
99 echo >>$cfgfile
|
nuclear@7
|
100
|
nuclear@7
|
101 # make the registration call in modules.c
|
nuclear@9
|
102 echo " REGISTER_MODULE($name);" >>$modfile
|
nuclear@7
|
103 else
|
nuclear@19
|
104 message failed
|
nuclear@7
|
105 fi
|
nuclear@7
|
106 done
|
nuclear@7
|
107 echo "Will link with: $libs"
|
nuclear@7
|
108
|
nuclear@7
|
109 # wrap up the modules.c file
|
nuclear@7
|
110 echo '}' >>$modfile
|
nuclear@7
|
111
|
nuclear@7
|
112 # wrap up the config.h file
|
nuclear@7
|
113 echo '#endif /* CONFIG_H_ */' >>$cfgfile
|
nuclear@7
|
114
|
nuclear@7
|
115 # generate makefile
|
nuclear@19
|
116 message Generating makefile ...
|
nuclear@7
|
117
|
nuclear@7
|
118 # hardcode prefix for now, too lazy to actually add an option...
|
nuclear@2
|
119 echo 'PREFIX = /usr/local' >Makefile
|
nuclear@7
|
120 echo "wsys_libs = $libs" >>Makefile
|
nuclear@2
|
121 cat Makefile.in >>Makefile
|
nuclear@7
|
122
|
nuclear@19
|
123 message 'Configuration complete. Run make (or gmake) to compile.'
|