Attempt to count descramblers used properly
[oscam.git] / config.sh
blobbee5052cea78761882848ef835edef66a16ac677
1 #!/bin/sh
3 addons="WEBIF WEBIF_LIVELOG WEBIF_JQUERY TOUCH WITH_SSL HAVE_DVBAPI WITH_NEUTRINO READ_SDT_CHARSETS IRDETO_GUESSING CS_ANTICASC WITH_DEBUG MODULE_MONITOR WITH_LB CS_CACHEEX CW_CYCLE_CHECK LCDSUPPORT LEDSUPPORT CLOCKFIX IPV6SUPPORT"
4 protocols="MODULE_CAMD33 MODULE_CAMD35 MODULE_CAMD35_TCP MODULE_NEWCAMD MODULE_CCCAM MODULE_CCCSHARE MODULE_GBOX MODULE_RADEGAST MODULE_SCAM MODULE_SERIAL MODULE_CONSTCW MODULE_PANDORA MODULE_GHTTP"
5 readers="READER_NAGRA READER_NAGRA_MERLIN READER_IRDETO READER_CONAX READER_CRYPTOWORKS READER_SECA READER_VIACCESS READER_VIDEOGUARD READER_DRE READER_TONGFANG READER_BULCRYPT READER_GRIFFIN READER_DGCRYPT"
6 card_readers="CARDREADER_PHOENIX CARDREADER_INTERNAL CARDREADER_SC8IN1 CARDREADER_MP35 CARDREADER_SMARGO CARDREADER_DB2COM CARDREADER_STAPI CARDREADER_STAPI5 CARDREADER_STINGER CARDREADER_DRECAS"
8 defconfig="
9 CONFIG_WEBIF=y
10 CONFIG_WEBIF_LIVELOG=y
11 CONFIG_WEBIF_JQUERY=y
12 # CONFIG_TOUCH=n
13 # CONFIG_WITH_SSL=n
14 CONFIG_HAVE_DVBAPI=y
15 # CONFIG_WITH_NEUTRINO=n
16 CONFIG_READ_SDT_CHARSETS=y
17 CONFIG_IRDETO_GUESSING=y
18 # CONFIG_CS_ANTICASC=n
19 CONFIG_WITH_DEBUG=y
20 CONFIG_MODULE_MONITOR=y
21 CONFIG_WITH_LB=y
22 # CONFIG_CS_CACHEEX=n
23 # CONFIG_CW_CYCLE_CHECK=n
24 # CONFIG_LCDSUPPORT=n
25 # CONFIG_LEDSUPPORT=n
26 # CONFIG_CLOCKFIX=n
27 # CONFIG_IPV6SUPPORT=n
28 # CONFIG_MODULE_CAMD33=n
29 CONFIG_MODULE_CAMD35=y
30 CONFIG_MODULE_CAMD35_TCP=y
31 CONFIG_MODULE_NEWCAMD=y
32 CONFIG_MODULE_CCCAM=y
33 CONFIG_MODULE_CCCSHARE=y
34 CONFIG_MODULE_GBOX=y
35 # CONFIG_MODULE_RADEGAST=n
36 # CONFIG_MODULE_SERIAL=n
37 # CONFIG_MODULE_CONSTCW=n
38 # CONFIG_MODULE_PANDORA=n
39 CONFIG_MODULE_SCAM=y
40 # CONFIG_MODULE_GHTTP=n
41 CONFIG_WITH_CARDREADER=y
42 CONFIG_READER_NAGRA_COMMON=y
43 CONFIG_READER_NAGRA=y
44 CONFIG_READER_NAGRA_MERLIN=y
45 CONFIG_READER_IRDETO=y
46 CONFIG_READER_CONAX=y
47 CONFIG_READER_CRYPTOWORKS=y
48 CONFIG_READER_SECA=y
49 CONFIG_READER_VIACCESS=y
50 CONFIG_READER_VIDEOGUARD=y
51 CONFIG_READER_DRE=y
52 CONFIG_READER_TONGFANG=y
53 CONFIG_READER_BULCRYPT=y
54 CONFIG_READER_GRIFFIN=y
55 CONFIG_READER_DGCRYPT=y
56 CARDREADER_PHOENIX=y
57 # CARDREADER_DRECAS=n
58 CARDREADER_INTERNAL=y
59 # CARDREADER_SC8IN1=n
60 # CARDREADER_MP35=n
61 # CARDREADER_SMARGO=n
62 # CARDREADER_DB2COM=n
63 # CARDREADER_STAPI=n
64 # CARDREADER_STAPI5=n
65 CARDREADER_STINGER=y
68 usage() {
69 echo \
70 "OSCam config
71 Usage: `basename $0` [parameters]
73 -g, --gui Start interactive configuration
75 -s, --show-enabled [param] Show enabled configuration options.
76 -Z, --show-disabled [param] Show disabled configuration options.
77 -S, --show-valid [param] Show valid configuration options.
78 Possible params: all, addons, protocols,
79 readers, card_readers
81 -l, --list-config List active configuration variables.
82 -e, --enabled [option] Check if certain option is enabled.
83 -d, --disabled [option] Check if certain option is disabled.
85 -E, --enable [option] Enable config option.
86 -D, --disable [option] Disable config option.
88 The following [option]s enable or disable multiple settings.
89 all - Everything.
90 addons - All addons.
91 protocols - All protocols.
92 readers - All readers.
93 card_readers - All card readers.
95 -R, --restore Restore default config.
97 -v, --oscam-version Display OSCam version.
98 -r, --oscam-revision Display OSCam SVN revision.
100 -O, --detect-osx-sdk-version Find where OS X SDK is located
102 -h, --help Display this help text.
104 Examples:
105 # Enable WEBIF and SSL
106 ./config.sh --enable WEBIF WITH_SSL
108 # Disable WEBIF but enable WITH_SSL
109 ./config.sh --disable WEBIF --enable WITH_SSL
111 # Restore defaults and disable WEBIF and READER_NAGRA
112 ./config.sh --restore --disable WEBIF READER_NAGRA
114 # Use default config with only one enabled reader
115 ./config.sh --restore --disable readers --enable READER_BULCRYPT
117 # Disable everything and enable webif one module and one card reader
118 ./config.sh --disable all --enable WEBIF MODULE_NEWCAMD READER_BULCRYPT
120 # Disable all card readers except INTERNAL
121 ./config.sh -D card_readers -E CARDREADER_INTERNAL
123 Available options:
124 addons: $addons
125 protocols: $protocols
126 readers: $readers
127 card_readers: $card_readers
131 # Output directory for config.mak set by --objdir parameter
132 OBJDIR=.
134 # Use flags set by --use-flags parameter
135 USE_FLAGS=
137 have_flag() {
138 for FLAG in $USE_FLAGS
140 [ "$FLAG" = "$1" ] && return 0
141 done
142 return 1
145 have_all_flags() {
146 for opt ; do
147 have_flag $opt || return 1
148 done
149 return 0
152 have_any_flags() {
153 for opt ; do
154 have_flag $opt && return 0
155 done
156 return 1
159 not_have_flag() {
160 for FLAG in $USE_FLAGS
162 [ "$FLAG" = "$1" ] && return 1
163 done
164 return 0
167 not_have_all_flags() {
168 for opt ; do
169 not_have_flag $opt || return 1
170 done
171 return 0
174 not_have_any_flags() {
175 for opt ; do
176 not_have_flag $opt && return 0
177 done
178 return 1
181 # Config functions
182 enabled() {
183 grep "^\#define $1 1$" config.h >/dev/null 2>/dev/null
184 return $?
187 disabled() {
188 grep "^\#define $1 1$" config.h >/dev/null 2>/dev/null
189 test $? = 0 && return 1
190 return 0
193 enabled_all() {
194 for opt ; do
195 enabled $opt || return 1
196 done
197 return 0
200 disabled_all() {
201 for opt ; do
202 disabled $opt || return 1
203 done
204 return 0
207 enabled_any() {
208 for opt ; do
209 enabled $opt && return 0
210 done
211 return 1
214 disabled_any() {
215 for opt ; do
216 disabled $opt && return 0
217 done
218 return 1
221 list_enabled() {
222 for OPT in $@
224 enabled $OPT && echo $OPT
225 done
228 list_disabled() {
229 for OPT in $@
231 disabled $OPT && echo $OPT
232 done
235 write_enabled() {
236 defined_file="webif/is_defined.txt"
237 pages_c="webif/pages.c"
238 rm -f $defined_file $pages_c 2>/dev/null
239 for OPT in $(get_opts) WITH_CARDREADER
241 enabled $OPT && printf "%s\n" $OPT >> $defined_file
242 done
245 valid_opt() {
246 [ "$1" = "WITH_CARDREADER" ] && return 0 # Special case
247 echo $addons $protocols $readers $card_readers | grep -w "$1" >/dev/null
248 return $?
251 enable_opt() {
252 valid_opt $1 && disabled $1 && {
253 sed -e "s|//#define $1 1$|#define $1 1|g" config.h > config.h.tmp && \
254 mv config.h.tmp config.h
255 echo "Enable $1"
259 enable_opts() {
260 for OPT in $@
262 enable_opt $OPT
263 done
266 disable_opt() {
267 valid_opt $1 && enabled $1 && {
268 sed -e "s|#define $1 1$|//#define $1 1|g" config.h > config.h.tmp && \
269 mv config.h.tmp config.h
270 echo "Disable $1"
274 disable_opts() {
275 for OPT in $@
277 disable_opt $OPT
278 done
281 get_opts() {
282 OPTS=""
283 case "$1" in
284 'addons') OPTS="$addons" ; ;;
285 'protocols') OPTS="$protocols" ; ;;
286 'readers') OPTS="$readers" ; ;;
287 'card_readers') OPTS="$card_readers" ; ;;
288 *) OPTS="$addons $protocols $readers $card_readers" ; ;;
289 esac
290 echo $OPTS
293 update_deps() {
294 # Calculate dependencies
295 enabled_any $(get_opts readers) $(get_opts card_readers) && enable_opt WITH_CARDREADER >/dev/null
296 disabled_all $(get_opts readers) $(get_opts card_readers) && disable_opt WITH_CARDREADER >/dev/null
297 disabled WEBIF && disable_opt WEBIF_LIVELOG >/dev/null
298 disabled WEBIF && disable_opt WEBIF_JQUERY >/dev/null
299 enabled MODULE_CCCSHARE && enable_opt MODULE_CCCAM >/dev/null
300 enabled_any CARDREADER_DB2COM CARDREADER_MP35 CARDREADER_SC8IN1 CARDREADER_STINGER && enable_opt CARDREADER_PHOENIX >/dev/null
303 list_config() {
304 update_deps
305 # Handle use flags
306 have_flag USE_STAPI && echo "CONFIG_WITH_STAPI=y" || echo "# CONFIG_WITH_STAPI=n"
307 have_flag USE_STAPI5 && echo "CONFIG_WITH_STAPI5=y" || echo "# CONFIG_WITH_STAPI5=n"
308 have_flag USE_COOLAPI && echo "CONFIG_WITH_COOLAPI=y" || echo "# CONFIG_WITH_COOLAPI=n"
309 have_flag USE_COOLAPI2 && echo "CONFIG_WITH_COOLAPI2=y" || echo "# CONFIG_WITH_COOLAPI2=n"
310 have_flag USE_SU980 && echo "CONFIG_WITH_SU980=y" || echo "# CONFIG_WITH_SU980=n"
311 have_flag USE_AZBOX && echo "CONFIG_WITH_AZBOX=y" || echo "# CONFIG_WITH_AZBOX=n"
312 have_flag USE_MCA && echo "CONFIG_WITH_MCA=y" || echo "# CONFIG_WITH_MCA=n"
313 have_flag USE_LIBCRYPTO && echo "CONFIG_WITH_LIBCRYPTO=y" || echo "# CONFIG_WITH_LIBCRYPTO=n"
314 for OPT in $addons $protocols WITH_CARDREADER $readers
316 enabled $OPT && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
317 done
318 for OPT in $card_readers
320 if [ $OPT = CARDREADER_INTERNAL ]
321 then
322 # Internal card reader is actually three different readers depending on USE flags
323 enabled $OPT && have_flag USE_AZBOX && echo "CONFIG_${OPT}_AZBOX=y" || echo "# CONFIG_${OPT}_AZBOX=n"
324 enabled $OPT && have_any_flags USE_COOLAPI USE_SU980 && echo "CONFIG_${OPT}_COOLAPI=y" || echo "# CONFIG_${OPT}_COOLAPI=n"
325 enabled $OPT && have_flag USE_COOLAPI2 && echo "CONFIG_${OPT}_COOLAPI2=y" || echo "# CONFIG_${OPT}_COOLAPI2=n"
326 enabled $OPT && not_have_all_flags USE_AZBOX USE_COOLAPI USE_COOLAPI2 USE_SU980 && echo "CONFIG_${OPT}_SCI=y" || echo "# CONFIG_${OPT}_SCI=n"
327 continue
329 if [ $OPT = CARDREADER_STAPI ]
330 then
331 # Enable CARDREADER_STAPI only if USE_STAPI is set
332 enabled $OPT && have_flag USE_STAPI && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
333 continue
335 if [ $OPT = CARDREADER_STAPI5 ]
336 then
337 # Enable CARDREADER_STAPI5 only if USE_STAPI5 is set
338 enabled $OPT && have_flag USE_STAPI5 && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
339 continue
341 enabled $OPT && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
342 done
343 have_flag USE_LIBUSB && echo "CONFIG_CARDREADER_SMART=y" || echo "# CONFIG_CARDREADER_SMART=n"
344 have_flag USE_PCSC && echo "CONFIG_CARDREADER_PCSC=y" || echo "# CONFIG_CARDREADER_PCSC=n"
345 # Extra modules/libraries
346 enabled_any MODULE_GBOX WEBIF && echo "CONFIG_LIB_MINILZO=y" || echo "# CONFIG_LIB_MINILZO=n"
347 not_have_flag USE_LIBCRYPTO && echo "CONFIG_LIB_AES=y" || echo "# CONFIG_LIB_AES=n"
348 enabled MODULE_CCCAM && echo "CONFIG_LIB_RC6=y" || echo "# CONFIG_LIB_RC6=n"
349 not_have_flag USE_LIBCRYPTO && enabled MODULE_CCCAM && echo "CONFIG_LIB_SHA1=y" || echo "# CONFIG_LIB_SHA1=n"
350 enabled_any READER_DRE MODULE_SCAM READER_VIACCESS READER_NAGRA_MERLIN && echo "CONFIG_LIB_DES=y" || echo "# CONFIG_LIB_DES=n"
351 enabled_any MODULE_CCCAM READER_NAGRA READER_NAGRA_MERLIN READER_SECA && echo "CONFIG_LIB_IDEA=y" || echo "# CONFIG_LIB_IDEA=n"
352 not_have_flag USE_LIBCRYPTO && enabled_any READER_CONAX READER_CRYPTOWORKS READER_NAGRA READER_NAGRA_MERLIN && echo "CONFIG_LIB_BIGNUM=y" || echo "# CONFIG_LIB_BIGNUM=n"
353 enabled READER_NAGRA_MERLIN && echo "CONFIG_LIB_MDC2=y" || echo "# CONFIG_LIB_MDC2=n"
354 enabled READER_NAGRA_MERLIN && echo "CONFIG_LIB_FAST_AES=y" || echo "# CONFIG_LIB_FAST_AES=n"
355 enabled READER_NAGRA_MERLIN && echo "CONFIG_LIB_SHA256=y" || echo "# CONFIG_LIB_SHA256=n"
356 enabled_any READER_NAGRA READER_NAGRA_MERLIN && echo "CONFIG_READER_NAGRA_COMMON=y" || echo "# CONFIG_READER_NAGRA_COMMON=n"
359 make_config_c() {
360 OPENSSL=$(which openssl 2>/dev/null)
361 if [ "$OPENSSL" = "" ]
362 then
363 echo "// openssl not found!"
364 echo "const char *config_mak = \"CFG: openssl not found in PATH!\";"
365 else
366 echo "// This file is generated by ./config.sh --objdir $OBJDIR --make-config.mak"
367 echo "const char *config_mak ="
368 printf " \"\\\nCFG: strings FILE | sed -n 's/^CFG~//p' | openssl enc -d -base64 | gzip -d\\\n\"\n"
369 gzip -9 < $OBJDIR/config.mak | $OPENSSL enc -base64 | while read LINE
371 printf " \"CFG~%s\\\\n\"\n" "$LINE"
372 done
373 echo " ;"
377 make_config_mak() {
378 TMPFILE=$(mktemp -t config.mak.XXXXXX) || exit 1
379 list_config > $TMPFILE
380 [ ! -d $OBJDIR ] && mkdir -p $OBJDIR 2>/dev/null
381 cmp $TMPFILE $OBJDIR/config.mak >/dev/null 2>/dev/null
382 if [ $? != 0 ]
383 then
384 cat $TMPFILE > $OBJDIR/config.mak
385 make_config_c > $OBJDIR/config.c
386 else
387 make_config_c > $TMPFILE
388 cmp $TMPFILE $OBJDIR/config.c >/dev/null 2>/dev/null
389 [ $? != 0 ] && cat $TMPFILE > $OBJDIR/config.c
391 rm -rf $TMPFILE
394 check_test() {
395 if [ "$(cat $tempfileconfig | grep "^#define $1 1$")" != "" ]; then
396 echo "on"
397 else
398 echo "off"
402 disable_all() {
403 for i in $1; do
404 sed -e "s/^#define ${i} 1$/\/\/#define ${i} 1/g" $tempfileconfig > ${tempfileconfig}.tmp && \
405 mv ${tempfileconfig}.tmp $tempfileconfig
406 done
409 enable_package() {
410 for i in $(cat $tempfile); do
411 strip=$(echo $i | sed "s/\"//g")
412 sed -e "s/\/\/#define ${strip} 1$/#define ${strip} 1/g" $tempfileconfig > ${tempfileconfig}.tmp && \
413 mv ${tempfileconfig}.tmp $tempfileconfig
414 done
417 print_components() {
418 clear
419 echo "You have selected the following components:"
420 echo
421 echo "Add-ons:"
422 for i in $addons; do
423 printf "\t%-20s: %s\n" $i $(check_test "$i")
424 done
426 echo
427 echo "Protocols:"
428 for i in $protocols; do
429 printf "\t%-20s: %s\n" $i $(check_test "$i")
430 done
432 echo
433 echo "Readers:"
434 for i in $readers; do
435 printf "\t%-20s: %s\n" $i $(check_test "$i")
436 done
438 echo
439 echo "Card readers:"
440 for i in $card_readers; do
441 printf "\t%-20s: %s\n" $i $(check_test "$i")
442 done
444 cp -f $tempfileconfig $configfile
447 menu_addons() {
448 ${DIALOG} --checklist "\nChoose add-ons:\n " $height $width $listheight \
449 WEBIF "Web Interface" $(check_test "WEBIF") \
450 WEBIF_LIVELOG "LiveLog" $(check_test "WEBIF_LIVELOG") \
451 WEBIF_JQUERY "Jquery onboard (if disabled webload)" $(check_test "WEBIF_JQUERY") \
452 TOUCH "Touch Web Interface" $(check_test "TOUCH") \
453 WITH_SSL "OpenSSL support" $(check_test "WITH_SSL") \
454 HAVE_DVBAPI "DVB API" $(check_test "HAVE_DVBAPI") \
455 WITH_NEUTRINO "Neutrino support" $(check_test "WITH_NEUTRINO") \
456 READ_SDT_CHARSETS "DVB API read-sdt charsets" $(check_test "READ_SDT_CHARSETS") \
457 IRDETO_GUESSING "Irdeto guessing" $(check_test "IRDETO_GUESSING") \
458 CS_ANTICASC "Anti cascading" $(check_test "CS_ANTICASC") \
459 WITH_DEBUG "Debug messages" $(check_test "WITH_DEBUG") \
460 MODULE_MONITOR "Monitor" $(check_test "MODULE_MONITOR") \
461 WITH_LB "Loadbalancing" $(check_test "WITH_LB") \
462 CS_CACHEEX "Cache exchange" $(check_test "CS_CACHEEX") \
463 CW_CYCLE_CHECK "CW Cycle Check" $(check_test "CW_CYCLE_CHECK") \
464 LCDSUPPORT "LCD support" $(check_test "LCDSUPPORT") \
465 LEDSUPPORT "LED support" $(check_test "LEDSUPPORT") \
466 CLOCKFIX "Clockfix (disable on old systems!)" $(check_test "CLOCKFIX") \
467 IPV6SUPPORT "IPv6 support (experimental)" $(check_test "IPV6SUPPORT") \
468 2> ${tempfile}
470 opt=${?}
471 if [ $opt != 0 ]; then return; fi
473 disable_all "$addons"
474 enable_package
477 menu_protocols() {
478 ${DIALOG} --checklist "\nChoose protocols:\n " $height $width $listheight \
479 MODULE_CAMD33 "camd 3.3" $(check_test "MODULE_CAMD33") \
480 MODULE_CAMD35 "camd 3.5 UDP" $(check_test "MODULE_CAMD35") \
481 MODULE_CAMD35_TCP "camd 3.5 TCP" $(check_test "MODULE_CAMD35_TCP") \
482 MODULE_NEWCAMD "newcamd" $(check_test "MODULE_NEWCAMD") \
483 MODULE_CCCAM "CCcam" $(check_test "MODULE_CCCAM") \
484 MODULE_CCCSHARE "CCcam share" $(check_test "MODULE_CCCSHARE") \
485 MODULE_GBOX "gbox" $(check_test "MODULE_GBOX") \
486 MODULE_RADEGAST "radegast" $(check_test "MODULE_RADEGAST") \
487 MODULE_SERIAL "Serial" $(check_test "MODULE_SERIAL") \
488 MODULE_CONSTCW "constant CW" $(check_test "MODULE_CONSTCW") \
489 MODULE_PANDORA "Pandora" $(check_test "MODULE_PANDORA") \
490 MODULE_GHTTP "Ghttp" $(check_test "MODULE_GHTTP") \
491 MODULE_SCAM "scam" $(check_test "MODULE_SCAM") \
492 2> ${tempfile}
494 opt=${?}
495 if [ $opt != 0 ]; then return; fi
497 disable_all "$protocols"
498 enable_package
501 menu_readers() {
502 ${DIALOG} --checklist "\nChoose readers (CA systems):\n " $height $width $listheight \
503 READER_NAGRA "Nagravision" $(check_test "READER_NAGRA") \
504 READER_NAGRA_MERLIN "Nagra Merlin" $(check_test "READER_NAGRA_MERLIN") \
505 READER_IRDETO "Irdeto" $(check_test "READER_IRDETO") \
506 READER_CONAX "Conax" $(check_test "READER_CONAX") \
507 READER_CRYPTOWORKS "Cryptoworks" $(check_test "READER_CRYPTOWORKS") \
508 READER_SECA "Seca" $(check_test "READER_SECA") \
509 READER_VIACCESS "Viaccess" $(check_test "READER_VIACCESS") \
510 READER_VIDEOGUARD "NDS Videoguard" $(check_test "READER_VIDEOGUARD") \
511 READER_DRE "DRE Crypt" $(check_test "READER_DRE") \
512 READER_TONGFANG "Tongfang" $(check_test "READER_TONGFANG") \
513 READER_BULCRYPT "Bulcrypt" $(check_test "READER_BULCRYPT") \
514 READER_GRIFFIN "Griffin" $(check_test "READER_GRIFFIN") \
515 READER_DGCRYPT "DGCrypt" $(check_test "READER_DGCRYPT") \
516 2> ${tempfile}
518 opt=${?}
519 if [ $opt != 0 ]; then return; fi
521 disable_all "$readers"
522 enable_package
525 menu_card_readers() {
526 ${DIALOG} --checklist "\nChoose card reader drivers:\n " $height $width $listheight \
527 CARDREADER_PHOENIX "Phoenix/mouse" $(check_test "CARDREADER_PHOENIX") \
528 CARDREADER_INTERNAL "Internal (Sci,Azbox,Cool)" $(check_test "CARDREADER_INTERNAL") \
529 CARDREADER_SC8IN1 "SC8in1" $(check_test "CARDREADER_SC8IN1") \
530 CARDREADER_MP35 "AD-Teknik MP 3.6/USB Phoenix" $(check_test "CARDREADER_MP35") \
531 CARDREADER_SMARGO "Argolis Smargo Smartreader" $(check_test "CARDREADER_SMARGO") \
532 CARDREADER_DB2COM "dbox2" $(check_test "CARDREADER_DB2COM") \
533 CARDREADER_STAPI "STAPI" $(check_test "CARDREADER_STAPI") \
534 CARDREADER_STAPI5 "STAPI5" $(check_test "CARDREADER_STAPI5") \
535 CARDREADER_STINGER "STINGER" $(check_test "CARDREADER_STINGER") \
536 CARDREADER_DRECAS "DRECAS" $(check_test "CARDREADER_DRECAS") \
537 2> ${tempfile}
539 opt=${?}
540 if [ $opt != 0 ]; then return; fi
542 disable_all "$card_readers"
543 enable_package
547 config_dialog() {
548 height=30
549 width=65
550 listheight=16
552 DIALOG=${DIALOG:-`which dialog`}
553 if [ -z "${DIALOG}" ]; then
554 echo "Please install dialog package." 1>&2
555 exit 1
558 configfile=config.h
559 tempfile=$(mktemp -t oscam-config.dialog.XXXXXX) || exit 1
560 tempfileconfig=$(mktemp -t oscam-config.h.XXXXXX) || exit 1
561 trap 'rm -f $tempfile $tempfileconfig $tempfileconfig.bak 2>/dev/null' INT TERM EXIT
562 cp -f $configfile $tempfileconfig
564 while true; do
565 ${DIALOG} --menu "\nSelect category:\n " $height $width $listheight \
566 Add-ons "Add-ons" \
567 Protocols "Network protocols" \
568 Readers "Readers (CA systems)" \
569 CardReaders "Card reader drivers" \
570 Save "Save" \
571 2> ${tempfile}
573 opt=${?}
574 if [ $opt != 0 ]; then clear; exit; fi
576 menuitem=$(cat $tempfile)
577 case $menuitem in
578 Add-ons) menu_addons ;;
579 Protocols) menu_protocols ;;
580 Readers) menu_readers ;;
581 CardReaders) menu_card_readers ;;
582 Save)
583 print_components
584 update_deps
585 write_enabled
586 exit 0
588 esac
589 done
592 # Change working directory to the directory where the script is
593 cd $(dirname $0)
595 if [ $# = 0 ]
596 then
597 usage
598 exit 1
601 while [ $# -gt 0 ]
603 case "$1" in
604 '-g'|'--gui'|'--config'|'--menuconfig')
605 config_dialog
606 break
608 '-s'|'--show-enabled'|'--show')
609 shift
610 list_enabled $(get_opts $1)
611 # Take special care of USE_xxx flags
612 if [ "$1" = "card_readers" ]
613 then
614 have_flag USE_LIBUSB && echo "CARDREADER_SMART"
615 have_flag USE_PCSC && echo "CARDREADER_PCSC"
617 break
619 '-Z'|'--show-disabled')
620 shift
621 list_disabled $(get_opts $1)
622 break
624 '-S'|'--show-valid')
625 shift
626 for OPT in $(get_opts $1)
628 echo $OPT
629 done
630 break
632 '-E'|'--enable')
633 shift
634 while [ "$1" != "" ]
636 case "$1" in
638 update_deps
639 continue 2
641 all|addons|protocols|readers|card_readers)
642 enable_opts $(get_opts $1)
645 enable_opt "$1"
647 esac
648 shift
649 done
650 update_deps
651 write_enabled
653 '-D'|'--disable')
654 shift
655 while [ "$1" != "" ]
657 case "$1" in
659 update_deps
660 continue 2
662 all|addons|protocols|readers|card_readers)
663 disable_opts $(get_opts $1)
666 disable_opt "$1"
668 esac
669 shift
670 done
671 update_deps
672 write_enabled
674 '-R'|'--restore')
675 echo $defconfig | sed -e 's|# ||g' | xargs printf "%s\n" | grep "=y$" | sed -e 's|^CONFIG_||g;s|=.*||g' |
676 while read OPT
678 enable_opt "$OPT"
679 done
680 echo $defconfig | sed -e 's|# ||g' | xargs printf "%s\n" | grep "=n$" | sed -e 's|^CONFIG_||g;s|=.*||g' |
681 while read OPT
683 disable_opt "$OPT"
684 done
685 update_deps
686 write_enabled
688 '-e'|'--enabled')
689 enabled $2 && echo "Y" && exit 0 || echo "N" && exit 1
690 break
692 '-d'|'--disabled')
693 disabled $2 && echo "Y" && exit 0 || echo "N" && exit 1
694 break
696 '-v'|'--oscam-version')
697 grep CS_VERSION globals.h | cut -d\" -f2
698 break
700 '-r'|'--oscam-revision')
701 revision=`(svnversion -n . 2>/dev/null || printf 0) | sed 's/.*://; s/[^0-9]*$//; s/^$/0/'`
702 if [ "$revision" = "0" ]
703 then
704 which git > /dev/null 2>&1 && revision=`git log -10 --pretty=%B | grep git-svn-id | head -n 1 | sed -n -e 's/^.*trunk@\([0-9]*\) .*$/\1/p'`
706 echo $revision
707 break
709 '-O'|'--detect-osx-sdk-version')
710 shift
711 OSX_VER=${1:-10.10}
712 for DIR in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX{$OSX_VER,10.10,10.9,10.8,10.7}.sdk /Developer/SDKs/MacOSX{$OSX_VER,10.6,10.5}.sdk
715 if test -d $DIR
716 then
717 echo $DIR
718 exit 0
720 done
721 echo Cant_find_OSX_SDK
722 break
724 '-l'|'--list-config')
725 list_config
726 exit 0
728 '-m'|'--make-config.mak')
729 make_config_mak
730 exit 0
732 '--use-flags')
733 shift
734 USE_FLAGS=$1
736 '--objdir')
737 shift
738 OBJDIR=$1
740 '-h'|'--help')
741 usage
742 break
745 echo "[WARN] Unknown parameter: $1" >&2
747 esac
748 # Some shells complain when there are no more parameters to shift
749 test $# -gt 0 && shift
750 done
752 exit 0