Timo Sirainen wrote:
On Wed, 2006-02-08 at 16:09 +0000, Chris Wakelin wrote:
The problem seems to be in src/lib-sql/Makefile[.in]
When there are no sql drivers to build, the shell-script for making sql-drivers-register.c fails.
Thanks, fixed. It's only a problem with Solaris's /bin/sh though. bash and zsh can handle it.
Darn! Solaris still doesn't like it (and it appears to be using bash as the shell)
make sql-drivers-register.c
rm -f sql-drivers-register.c echo '/* this file automatically generated by Makefile */'
sql-drivers-register.c echo '#include "lib.h"' >>sql-drivers-register.c echo '#include "sql-api.h"' >>sql-drivers-register.c if [ "" != "" ]; then
for i in ; do
echo "extern struct sql_db driver_${i}_db;"sql-drivers-register.c ;
done
fi bash: -c: line 2: syntax error near unexpected token;' *** Error code 2 make: Fatal error: Command failed for target
sql-drivers-register.c'
How about :-
sql-drivers-register.c: Makefile
rm -f $@
echo '/* this file automatically generated by Makefile */' >$@
echo '#include "lib.h"' >>$@
echo '#include "sql-api.h"' >>$@
for i in $(sql_drivers) null ; do
if [ "$${i}" != "null" ]; then
echo "extern struct sql_db driver_$${i}_db;" >>$@ ;
fi
done
echo 'void sql_drivers_register_all(void) {' >>$@
for i in $(sql_drivers) null ; do
if [ "$${i}" != "null" ]; then
echo "sql_driver_register(&driver_$${i}_db);" >>$@ ;
fi
done
echo '}' >>$@
I'm not too good at Makefiles (what needs escaping etc.) but it seems to work, at least on Solaris when $(sql_drivers) is empty ...
Best Wishes, Chris
-- --+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+- Christopher Wakelin, c.d.wakelin@reading.ac.uk IT Services Centre, The University of Reading, Tel: +44 (0)118 378 8439 Whiteknights, Reading, RG6 2AF, UK Fax: +44 (0)118 975 3094