More reformatting.
[ahxm.git] / config.sh
blob4c24584025a10ffea033ff07c966b72fcc49f689
1 #!/bin/sh
3 # Configuration shell script
5 BIN="ahxm midiin"
7 # gets program version
8 VERSION=`cut -f2 -d\" VERSION`
10 # default installation prefix
11 PREFIX=/usr/local
13 # parse arguments
14 while [ $# -gt 0 ] ; do
16 case $1 in
17 --help) CONFIG_HELP=1 ;;
19 --with-pthreads) WITH_PTHREADS=1 ;;
21 --prefix) PREFIX=$2 ; shift ;;
22 --prefix=*) PREFIX=`echo $1 | sed -e 's/--prefix=//'` ;;
23 esac
25 shift
26 done
28 if [ "$CONFIG_HELP" = "1" ] ; then
30 echo "Available options:"
31 echo "--prefix=PREFIX Installation prefix ($PREFIX)."
32 echo "--with-pthreads Activate POSIX threads support."
34 echo
35 echo "Environment variables:"
36 echo "CC C Compiler."
37 echo "CFLAGS Compile flags (i.e., -O3)."
38 echo "AR Archiver."
39 echo "LEX Lexer."
40 echo "YACC Parser."
42 exit 1
45 echo "Configuring..."
47 echo "/* automatically created by config.sh - do not modify */" > config.h
48 echo "# automatically created by config.sh - do not modify" > makefile.opts
49 > config.ldflags
50 > config.cflags
51 > .config.log
53 # set compiler
54 if [ "$CC" = "" ] ; then
55 CC=cc
56 # if CC is unset, try if gcc is available
57 which gcc > /dev/null 2>&1
59 if [ $? = 0 ] ; then
60 CC=gcc
64 echo "CC=$CC" >> makefile.opts
66 # set cflags
67 if [ "$CFLAGS" = "" -a "$CC" = "gcc" ] ; then
68 CFLAGS="-g -Wall"
71 echo "CFLAGS=$CFLAGS" >> makefile.opts
73 # Add CFLAGS to CC
74 CC="$CC $CFLAGS"
76 # set archiver
77 if [ "$AR" = "" ] ; then
78 AR=ar
81 echo "AR=$AR" >> makefile.opts
83 # set lexer
84 if [ "$LEX" = "" ] ; then
85 LEX=lex
88 echo "LEX=$LEX" >> makefile.opts
90 # set parser
91 if [ "$YACC" = "" ] ; then
92 YACC=yacc
95 echo "YACC=$YACC" >> makefile.opts
97 # add version
98 cat VERSION >> config.h
100 # add installation prefix
101 echo "#define CONFOPT_PREFIX \"$PREFIX\"" >> config.h
103 #########################################################
105 # configuration directives
107 # Win32
108 echo -n "Testing for win32... "
109 if [ "$WITHOUT_WIN32" = "1" ] ; then
110 echo "Disabled by user"
111 else
112 echo "#include <windows.h>" > .tmp.c
113 echo "#include <commctrl.h>" >> .tmp.c
114 echo "int STDCALL WinMain(HINSTANCE h, HINSTANCE p, LPSTR c, int m)" >> .tmp.c
115 echo "{ return 0; }" >> .tmp.c
117 TMP_LDFLAGS="-lwinmm"
118 $CC .tmp.c $TMP_LDFLAGS -o .tmp.o 2>> .config.log
120 if [ $? = 0 ] ; then
121 echo "#define CONFOPT_WIN32 1" >> config.h
122 echo "OK"
123 WITHOUT_UNIX_GLOB=1
124 WITH_WIN32=1
125 echo $TMP_LDFLAGS >> config.ldflags
126 else
127 echo "No"
131 # test for Linux OSS
132 echo -n "Testing for Linux OSS... "
133 echo "#include <linux/soundcard.h>" > .tmp.c
134 echo "int main(void) {" >> .tmp.c
135 echo "int i=open(\"/dev/dsp\",0);" >> .tmp.c
136 echo "ioctl(i,SNDCTL_DSP_SETFRAGMENT,&i);" >> .tmp.c
137 echo "return 0; } " >>.tmp.c
139 $CC .tmp.c -o .tmp.o 2> /dev/null
140 if [ $? = 0 ] ; then
141 echo "#define CONFOPT_LINUX_OSS 1" >> config.h
142 echo "OK"
143 else
144 echo "No"
147 # test for IRIX audio library
148 echo -n "Testing for IRIX audio library... "
149 echo "#include <dmedia/audio.h>" > .tmp.c
150 echo "int main(void) { alNewConfig(); return 0; }" >> .tmp.c
152 $CC .tmp.c -laudio -o .tmp.o 2> /dev/null
153 if [ $? = 0 ] ; then
154 echo "#define CONFOPT_SGI 1" >> config.h
155 echo "-laudio" >> config.ldflags
156 echo "OK"
157 else
158 echo "No"
161 # test for esound library
162 echo -n "Testing for esound development libraries... "
163 echo "#include <esd.h>" > .tmp.c
164 echo "int main(void) { return 0; }" >> .tmp.c
166 $CC -I/usr/local/include -L/usr/local/lib -lesd .tmp.c -o .tmp.o 2> /dev/null
167 if [ $? = 0 ] ; then
168 echo "#define CONFOPT_ESD 1" >> config.h
169 echo "-lesd" >> config.ldflags
170 echo "OK"
171 else
172 echo "No"
175 # test for artsc library
176 echo -n "Testing for aRts development libraries... "
177 echo "#include <artsc.h>" > .tmp.c
178 echo "int main(void) { arts_init(); return 0; }" >> .tmp.c
180 TMP_CFLAGS=`artsc-config --cflags 2>/dev/null`
181 TMP_LDFLAGS=`artsc-config --libs 2>/dev/null`
183 $CC $TMP_CFLAGS .tmp.c $TMP_LDFLAGS -o .tmp.o 2> /dev/null
184 if [ $? = 0 ] ; then
185 echo "#define CONFOPT_ARTS 1" >> config.h
186 echo $TMP_CFLAGS >> config.cflags
187 echo $TMP_LDFLAGS >> config.ldflags
188 echo "OK"
189 else
190 echo "No"
193 # test for pulseaudio libraries
194 echo -n "Testing for Pulseaudio development libraries... "
195 echo "#include <pulse/simple.h>" > .tmp.c
196 echo "#include <pulse/error.h>" >> .tmp.c
197 echo "int main(void) { return 0; }" >> .tmp.c
199 TMP_CFLAGS=$(pkg-config libpulse-simple --cflags 2>/dev/null)
200 TMP_LDFLAGS=$(pkg-config libpulse-simple --libs 2>/dev/null)
202 $CC $TMP_CFLAGS .tmp.c $TMP_LDFLAGS -o .tmp.o 2> /dev/null
203 if [ $? = 0 ] ; then
204 echo "#define CONFOPT_PULSEAUDIO 1" >> config.h
205 echo $TMP_CFLAGS >> config.cflags
206 echo $TMP_LDFLAGS >> config.ldflags
207 echo "OK"
208 else
209 echo "No"
212 # test for getuid() availability
213 echo -n "Testing for getuid() existence... "
214 echo "#include <unistd.h>" > .tmp.c
215 echo "#include <sys/types.h>" >> .tmp.c
216 echo "int main(void) { getuid(); return 0; }" >> .tmp.c
218 TMP_CFLAGS=""
219 TMP_LDFLAGS=""
220 $CC $TMP_CFLAGS .tmp.c $TMP_LDFLAGS -o .tmp.o 2> /dev/null
221 if [ $? = 0 ] ; then
222 echo "OK"
223 else
224 echo "No; activating workaround"
225 echo "#define getuid() 1000" >> config.h
228 # test for number of arguments in mkdir()
229 echo -n "Testing for number of arguments in mkdir()... "
230 echo "#include <stdio.h>" > .tmp.c
231 echo "#include <string.h>" >> .tmp.c
232 echo "#include <stdlib.h>" >> .tmp.c
233 echo "#include <unistd.h>" >> .tmp.c
234 echo "#include <sys/stat.h>" >> .tmp.c
235 echo "#include <sys/types.h>" >> .tmp.c
236 echo "int main(void) { mkdir(\"testdir\"); return 0; }" >> .tmp.c
238 $CC $TMP_CFLAGS .tmp.c $TMP_LDFLAGS -o .tmp.o 2> /dev/null
239 if [ $? = 0 ] ; then
240 echo "1"
241 echo "#define CONFOPT_MKDIR_ARGS 1" >> config.h
242 else
243 echo "2"
244 echo "#define CONFOPT_MKDIR_ARGS 2" >> config.h
247 echo -n "Testing for nanosleep() support... "
248 echo "#include <time.h>" > .tmp.c
249 echo "int main(void) { struct timespec ts; nanosleep(&ts, NULL); return 0; }" >> .tmp.c
251 TMP_CFLAGS=""
252 TMP_LDFLAGS=""
253 $CC $TMP_CFLAGS .tmp.c $TMP_LDFLAGS -o .tmp.o 2> /dev/null
254 if [ $? = 0 ] ; then
255 echo "OK"
256 echo "#define CONFOPT_NANOSLEEP 1" >> config.h
257 else
258 echo "No; MIDI output will not be available"
259 BIN="ahxm"
262 # pthreads support
263 if [ "$WITH_PTHREADS" = 1 ] ; then
264 echo "#define CONFOPT_PTHREADS 1" >> config.h
265 echo "-pthread" >> config.ldflags
268 # test for Grutatxt
269 echo -n "Testing if Grutatxt is installed... "
271 DOCS="\$(ADD_DOCS)"
273 if which grutatxt > /dev/null 2>&1 ; then
274 echo "OK"
275 echo "GRUTATXT=yes" >> makefile.opts
276 DOCS="\$(GRUTATXT_DOCS)"
277 else
278 echo "No"
279 echo "GRUTATXT=no" >> makefile.opts
282 # test for mp_doccer
283 echo -n "Testing if mp_doccer is installed... "
284 MP_DOCCER=$(which mp_doccer||which mp-doccer)
286 if [ $? = 0 ] ; then
288 if ${MP_DOCCER} --help | grep grutatxt > /dev/null ; then
290 echo "OK"
292 echo "MP_DOCCER=yes" >> makefile.opts
293 DOCS="$DOCS \$(MP_DOCCER_DOCS)"
295 grep GRUTATXT=yes makefile.opts > /dev/null && DOCS="$DOCS \$(G_AND_MP_DOCS)"
296 else
297 echo "Outdated (No)"
298 echo "MP_DOCCER=no" >> makefile.opts
300 else
301 echo "No"
302 echo "MP_DOCCER=no" >> makefile.opts
305 #########################################################
307 # final setup
309 echo "BIN=$BIN" >> makefile.opts
310 echo "DOCS=$DOCS" >> makefile.opts
311 echo "VERSION=$VERSION" >> makefile.opts
312 echo "PREFIX=$PREFIX" >> makefile.opts
313 echo >> makefile.opts
315 cat makefile.opts makefile.in makefile.depend > Makefile
317 #########################################################
319 # cleanup
321 rm -f .tmp.c .tmp.o
323 exit 0