diff --git a/acinclude.m4 b/acinclude.m4 index 92eef4c..792ed0a 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -10,18 +10,36 @@ AC_ARG_ENABLE(drivers, [ joy,lb216,lcdm001,lcterm,lirc,ms6931,mtc_s16209x,] [ MtxOrb,NoritakeVFD,pylcd,sed1330,sed1520,serialVFD,] [ sli,stv5730,svga,t6963,text,tyan,ula200,xosd] - [ \"all\" compiles all drivers], + [ 'all' compiles all drivers;] + [ 'all,!xxx,!yyy' de-selects previously selected drivers], drivers="$enableval", drivers=[bayrad,CFontz,CFontz633,curses,CwLnx,glk,lb216,lcdm001,MtxOrb,pylcd,text]) - if test "$drivers" = "all"; then - drivers=[bayrad,CFontz,CFontz633,CFontzPacket,curses,CwLnx,glcdlib,glk,hd44780,icp_a106,imon,IOWarrior,irman,joy,lb216,lcdm001,lcterm,lirc,ms6931,mtc_s16209x,MtxOrb,NoritakeVFD,pylcd,sed1330,sed1520,serialVFD,sli,stv5730,svga,t6963,text,tyan,ula200,xosd] - fi +allDrivers=[bayrad,CFontz,CFontz633,CFontzPacket,curses,CwLnx,glcdlib,glk,hd44780,icp_a106,imon,IOWarrior,irman,joy,lb216,lcdm001,lcterm,lirc,ms6931,mtc_s16209x,MtxOrb,NoritakeVFD,pylcd,sed1330,sed1520,serialVFD,sli,stv5730,svga,t6963,text,tyan,ula200,xosd] - drivers=`echo $drivers | sed 's/,/ /g'` - for driver in $drivers - do +drivers=`echo $drivers | sed -e 's/,/ /g'` +dnl replace special keyword "all" in a secure manner +drivers=[" $drivers "] +drivers=`echo " $drivers " | sed -e "s/ all / ${allDrivers} /"` +drivers=`echo $drivers | sed -e 's/,/ /g'` + +dnl ignore unwanted drivers +selectdrivers=" " +for driver in $drivers ; do + case $driver in + !*) + driver=`echo $driver | sed -e 's/^.//'` + selectdrivers=[`echo $selectdrivers | sed -r -e "s/ $driver / /"`] + ;; + *) + selectdrivers=["$selectdrivers $driver "] + ;; + esac +done + +dnl check for wanted drivers and their dependencies +for driver in $selectdrivers ; do case "$driver" in bayrad) DRIVERS="$DRIVERS bayrad${SO}" @@ -318,10 +336,10 @@ dnl else *) AC_MSG_ERROR([Unknown driver $driver]) ;; - esac - done + esac +done -actdrivers=`echo $actdrivers | sed 's/ /,/g'` +actdrivers=`echo $actdrivers | sed -e 's/ /,/g'` AC_MSG_RESULT([Will compile drivers: $actdrivers]) AC_SUBST(LIBCURSES) diff --git a/docs/lcdproc-dev/add-your-driver.docbook b/docs/lcdproc-dev/add-your-driver.docbook index 023df28..19b4002 100644 --- a/docs/lcdproc-dev/add-your-driver.docbook +++ b/docs/lcdproc-dev/add-your-driver.docbook @@ -51,7 +51,8 @@ AC_ARG_ENABLE(drivers, [ joy,lb216,lcdm001,lcterm,lirc,ms6931,mtc_s16209x,] [ MtxOrb,NoritakeVFD,pylcd,sed1330,sed1520,serialVFD,] [ sli,stv5730,svga,t6963,text,tyan,ula200,xosd] - [ \"all\" compiles all drivers], + [ 'all' compiles all drivers;] + [ 'all,!xxx,!yyy' de-selects previously selected drivers], drivers="$enableval", becomes: @@ -65,7 +66,8 @@ AC_ARG_ENABLE(drivers, [ joy,lb216,lcdm001,lcterm,lirc,ms6931,mtc_s16209x,] [ MtxOrb,NoritakeVFD,pylcd,sed1330,sed1520,serialVFD,] [ sli,stv5730,svga,t6963,text,tyan,ula200,xosd,myDriver] - [ \"all\" compiles all drivers], + [ 'all' compiles all drivers;] + [ 'all,!xxx,!yyy' de-selects previously selected drivers], drivers="$enableval", @@ -77,15 +79,11 @@ AC_ARG_ENABLE(drivers, This: - if test "$drivers" = "all"; then - drivers=[bayrad,CFontz,...(big list)...,ula200,xosd] - fi +allDrivers=[bayrad,CFontz,CFontz633,...(big list)...,tyan,ula200,xosd] becomes: - if test "$drivers" = "all"; then - drivers=[bayrad,CFontz,...(big list)...,ula200,xosd,myDriver] - fi +allDrivers=[bayrad,CFontz,CFontz633,...(big list)...,tyan,ula200,xosd,myDriver]