added Streamrelay libdvbcsa - thanks to lpm11 <lpm11@lpm11>, fegol, icb, loka, kitte8...
[oscam.git] / config.sh
bloba53a2dccde5aaf43b402d55654c4fbf3c5f4b186
1 #!/bin/sh
3 addons="WEBIF WEBIF_LIVELOG WEBIF_JQUERY TOUCH WITH_SSL HAVE_DVBAPI WITH_EXTENDED_CW WITH_NEUTRINO READ_SDT_CHARSETS CS_ANTICASC WITH_DEBUG MODULE_MONITOR WITH_LB CS_CACHEEX CS_CACHEEX_AIO CW_CYCLE_CHECK LCDSUPPORT LEDSUPPORT CLOCKFIX IPV6SUPPORT WITH_ARM_NEON"
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 MODULE_STREAMRELAY"
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_EXTENDED_CW=n
16 # CONFIG_WITH_NEUTRINO=n
17 CONFIG_READ_SDT_CHARSETS=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_CS_CACHEEX_AIO=n
24 # CONFIG_CW_CYCLE_CHECK=n
25 # CONFIG_LCDSUPPORT=n
26 # CONFIG_LEDSUPPORT=n
27 # CONFIG_CLOCKFIX=n
28 # CONFIG_IPV6SUPPORT=n
29 # CONFIG_WITH_ARM_NEON=n
30 # CONFIG_MODULE_CAMD33=n
31 CONFIG_MODULE_CAMD35=y
32 CONFIG_MODULE_CAMD35_TCP=y
33 CONFIG_MODULE_NEWCAMD=y
34 CONFIG_MODULE_CCCAM=y
35 CONFIG_MODULE_CCCSHARE=y
36 CONFIG_MODULE_GBOX=y
37 # CONFIG_MODULE_RADEGAST=n
38 # CONFIG_MODULE_SERIAL=n
39 # CONFIG_MODULE_CONSTCW=n
40 # CONFIG_MODULE_PANDORA=n
41 CONFIG_MODULE_SCAM=y
42 # CONFIG_MODULE_GHTTP=n
43 # CONFIG_MODULE_STREAMRELAY=n
44 CONFIG_WITH_CARDREADER=y
45 CONFIG_READER_NAGRA_COMMON=y
46 CONFIG_READER_NAGRA=y
47 CONFIG_READER_NAGRA_MERLIN=y
48 CONFIG_READER_IRDETO=y
49 CONFIG_READER_CONAX=y
50 CONFIG_READER_CRYPTOWORKS=y
51 CONFIG_READER_SECA=y
52 CONFIG_READER_VIACCESS=y
53 CONFIG_READER_VIDEOGUARD=y
54 CONFIG_READER_DRE=y
55 CONFIG_READER_TONGFANG=y
56 CONFIG_READER_BULCRYPT=y
57 CONFIG_READER_GRIFFIN=y
58 CONFIG_READER_DGCRYPT=y
59 CARDREADER_PHOENIX=y
60 # CARDREADER_DRECAS=n
61 CARDREADER_INTERNAL=y
62 # CARDREADER_SC8IN1=n
63 # CARDREADER_MP35=n
64 # CARDREADER_SMARGO=n
65 # CARDREADER_DB2COM=n
66 # CARDREADER_STAPI=n
67 # CARDREADER_STAPI5=n
68 CARDREADER_STINGER=y
71 usage() {
72 echo \
73 "OSCam config
74 Usage: `basename $0` [parameters]
76 -g, --gui Start interactive configuration
78 -s, --show-enabled [param] Show enabled configuration options.
79 -Z, --show-disabled [param] Show disabled configuration options.
80 -S, --show-valid [param] Show valid configuration options.
81 Possible params: all, addons, protocols,
82 readers, card_readers
84 -l, --list-config List active configuration variables.
85 -e, --enabled [option] Check if certain option is enabled.
86 -d, --disabled [option] Check if certain option is disabled.
88 -E, --enable [option] Enable config option.
89 -D, --disable [option] Disable config option.
91 The following [option]s enable or disable multiple settings.
92 all - Everything.
93 addons - All addons.
94 protocols - All protocols.
95 readers - All readers.
96 card_readers - All card readers.
98 -R, --restore Restore default config.
100 -v, --oscam-version Display OSCam version.
101 -r, --oscam-revision Display OSCam SVN revision.
103 -O, --detect-osx-sdk-version Find where OS X SDK is located
105 -h, --help Display this help text.
107 Examples:
108 # Enable WEBIF and SSL
109 ./config.sh --enable WEBIF WITH_SSL
111 # Disable WEBIF but enable WITH_SSL
112 ./config.sh --disable WEBIF --enable WITH_SSL
114 # Restore defaults and disable WEBIF and READER_NAGRA
115 ./config.sh --restore --disable WEBIF READER_NAGRA
117 # Use default config with only one enabled reader
118 ./config.sh --restore --disable readers --enable READER_BULCRYPT
120 # Disable everything and enable webif one module and one card reader
121 ./config.sh --disable all --enable WEBIF MODULE_NEWCAMD READER_BULCRYPT
123 # Disable all card readers except INTERNAL
124 ./config.sh -D card_readers -E CARDREADER_INTERNAL
126 Available options:
127 addons: $addons
128 protocols: $protocols
129 readers: $readers
130 card_readers: $card_readers
134 # Output directory for config.mak set by --objdir parameter
135 OBJDIR=.
137 # Use flags set by --use-flags parameter
138 USE_FLAGS=
140 have_flag() {
141 for FLAG in $USE_FLAGS
143 [ "$FLAG" = "$1" ] && return 0
144 done
145 return 1
148 have_all_flags() {
149 for opt ; do
150 have_flag $opt || return 1
151 done
152 return 0
155 have_any_flags() {
156 for opt ; do
157 have_flag $opt && return 0
158 done
159 return 1
162 not_have_flag() {
163 for FLAG in $USE_FLAGS
165 [ "$FLAG" = "$1" ] && return 1
166 done
167 return 0
170 not_have_all_flags() {
171 for opt ; do
172 not_have_flag $opt || return 1
173 done
174 return 0
177 not_have_any_flags() {
178 for opt ; do
179 not_have_flag $opt && return 0
180 done
181 return 1
184 # Config functions
185 enabled() {
186 grep "^\#define $1 1$" config.h >/dev/null 2>/dev/null
187 return $?
190 disabled() {
191 grep "^\#define $1 1$" config.h >/dev/null 2>/dev/null
192 test $? = 0 && return 1
193 return 0
196 enabled_all() {
197 for opt ; do
198 enabled $opt || return 1
199 done
200 return 0
203 disabled_all() {
204 for opt ; do
205 disabled $opt || return 1
206 done
207 return 0
210 enabled_any() {
211 for opt ; do
212 enabled $opt && return 0
213 done
214 return 1
217 disabled_any() {
218 for opt ; do
219 disabled $opt && return 0
220 done
221 return 1
224 list_enabled() {
225 for OPT in $@
227 enabled $OPT && echo $OPT
228 done
231 list_disabled() {
232 for OPT in $@
234 disabled $OPT && echo $OPT
235 done
238 write_enabled() {
239 defined_file="webif/is_defined.txt"
240 pages_c="webif/pages.c"
241 rm -f $defined_file $pages_c 2>/dev/null
242 for OPT in $(get_opts) WITH_CARDREADER
244 enabled $OPT && printf "%s\n" $OPT >> $defined_file
245 done
248 valid_opt() {
249 [ "$1" = "WITH_CARDREADER" ] && return 0 # Special case
250 echo $addons $protocols $readers $card_readers | grep -w "$1" >/dev/null
251 return $?
254 enable_opt() {
255 valid_opt $1 && disabled $1 && {
256 sed -e "s|//#define $1 1$|#define $1 1|g" config.h > config.h.tmp && \
257 mv config.h.tmp config.h
258 echo "Enable $1"
262 enable_opts() {
263 for OPT in $@
265 enable_opt $OPT
266 done
269 disable_opt() {
270 valid_opt $1 && enabled $1 && {
271 sed -e "s|#define $1 1$|//#define $1 1|g" config.h > config.h.tmp && \
272 mv config.h.tmp config.h
273 echo "Disable $1"
277 disable_opts() {
278 for OPT in $@
280 disable_opt $OPT
281 done
284 get_opts() {
285 OPTS=""
286 case "$1" in
287 'addons') OPTS="$addons" ; ;;
288 'protocols') OPTS="$protocols" ; ;;
289 'readers') OPTS="$readers" ; ;;
290 'card_readers') OPTS="$card_readers" ; ;;
291 *) OPTS="$addons $protocols $readers $card_readers" ; ;;
292 esac
293 echo $OPTS
296 update_deps() {
297 # Calculate dependencies
298 enabled_any $(get_opts readers) $(get_opts card_readers) && enable_opt WITH_CARDREADER >/dev/null
299 disabled_all $(get_opts readers) $(get_opts card_readers) && disable_opt WITH_CARDREADER >/dev/null
300 disabled WEBIF && disable_opt WEBIF_LIVELOG >/dev/null
301 disabled WEBIF && disable_opt WEBIF_JQUERY >/dev/null
302 enabled MODULE_CCCSHARE && enable_opt MODULE_CCCAM >/dev/null
303 enabled_any CARDREADER_DB2COM CARDREADER_MP35 CARDREADER_SC8IN1 CARDREADER_STINGER && enable_opt CARDREADER_PHOENIX >/dev/null
304 enabled CS_CACHEEX_AIO && enable_opt CS_CACHEEX >/dev/null
307 list_config() {
308 update_deps
309 # Handle use flags
310 have_flag USE_STAPI && echo "CONFIG_WITH_STAPI=y" || echo "# CONFIG_WITH_STAPI=n"
311 have_flag USE_STAPI5 && echo "CONFIG_WITH_STAPI5=y" || echo "# CONFIG_WITH_STAPI5=n"
312 have_flag USE_COOLAPI && echo "CONFIG_WITH_COOLAPI=y" || echo "# CONFIG_WITH_COOLAPI=n"
313 have_flag USE_COOLAPI2 && echo "CONFIG_WITH_COOLAPI2=y" || echo "# CONFIG_WITH_COOLAPI2=n"
314 have_flag USE_SU980 && echo "CONFIG_WITH_SU980=y" || echo "# CONFIG_WITH_SU980=n"
315 have_flag USE_AZBOX && echo "CONFIG_WITH_AZBOX=y" || echo "# CONFIG_WITH_AZBOX=n"
316 have_flag USE_MCA && echo "CONFIG_WITH_MCA=y" || echo "# CONFIG_WITH_MCA=n"
317 have_flag USE_LIBCRYPTO && echo "CONFIG_WITH_LIBCRYPTO=y" || echo "# CONFIG_WITH_LIBCRYPTO=n"
318 for OPT in $addons $protocols WITH_CARDREADER $readers
320 enabled $OPT && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
321 done
322 for OPT in $card_readers
324 if [ $OPT = CARDREADER_INTERNAL ]
325 then
326 # Internal card reader is actually three different readers depending on USE flags
327 enabled $OPT && have_flag USE_AZBOX && echo "CONFIG_${OPT}_AZBOX=y" || echo "# CONFIG_${OPT}_AZBOX=n"
328 enabled $OPT && have_any_flags USE_COOLAPI USE_SU980 && echo "CONFIG_${OPT}_COOLAPI=y" || echo "# CONFIG_${OPT}_COOLAPI=n"
329 enabled $OPT && have_flag USE_COOLAPI2 && echo "CONFIG_${OPT}_COOLAPI2=y" || echo "# CONFIG_${OPT}_COOLAPI2=n"
330 enabled $OPT && not_have_all_flags USE_AZBOX USE_COOLAPI USE_COOLAPI2 USE_SU980 && echo "CONFIG_${OPT}_SCI=y" || echo "# CONFIG_${OPT}_SCI=n"
331 continue
333 if [ $OPT = CARDREADER_STAPI ]
334 then
335 # Enable CARDREADER_STAPI only if USE_STAPI is set
336 enabled $OPT && have_flag USE_STAPI && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
337 continue
339 if [ $OPT = CARDREADER_STAPI5 ]
340 then
341 # Enable CARDREADER_STAPI5 only if USE_STAPI5 is set
342 enabled $OPT && have_flag USE_STAPI5 && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
343 continue
345 enabled $OPT && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
346 done
347 have_flag USE_LIBUSB && echo "CONFIG_CARDREADER_SMART=y" || echo "# CONFIG_CARDREADER_SMART=n"
348 have_flag USE_PCSC && echo "CONFIG_CARDREADER_PCSC=y" || echo "# CONFIG_CARDREADER_PCSC=n"
349 # Extra modules/libraries
350 enabled_any MODULE_GBOX WEBIF && echo "CONFIG_LIB_MINILZO=y" || echo "# CONFIG_LIB_MINILZO=n"
351 not_have_flag USE_LIBCRYPTO && echo "CONFIG_LIB_AES=y" || echo "# CONFIG_LIB_AES=n"
352 enabled MODULE_CCCAM && echo "CONFIG_LIB_RC6=y" || echo "# CONFIG_LIB_RC6=n"
353 not_have_flag USE_LIBCRYPTO && enabled MODULE_CCCAM && echo "CONFIG_LIB_SHA1=y" || echo "# CONFIG_LIB_SHA1=n"
354 enabled_any READER_DRE MODULE_SCAM READER_VIACCESS READER_NAGRA READER_NAGRA_MERLIN READER_VIDEOGUARD READER_CONAX && echo "CONFIG_LIB_DES=y" || echo "# CONFIG_LIB_DES=n"
355 enabled_any MODULE_CCCAM READER_NAGRA READER_NAGRA_MERLIN READER_SECA && echo "CONFIG_LIB_IDEA=y" || echo "# CONFIG_LIB_IDEA=n"
356 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"
357 enabled READER_NAGRA_MERLIN && echo "CONFIG_LIB_MDC2=y" || echo "# CONFIG_LIB_MDC2=n"
358 enabled READER_NAGRA_MERLIN && echo "CONFIG_LIB_FAST_AES=y" || echo "# CONFIG_LIB_FAST_AES=n"
359 enabled READER_NAGRA_MERLIN && echo "CONFIG_LIB_SHA256=y" || echo "# CONFIG_LIB_SHA256=n"
360 enabled_any READER_NAGRA READER_NAGRA_MERLIN && echo "CONFIG_READER_NAGRA_COMMON=y" || echo "# CONFIG_READER_NAGRA_COMMON=n"
363 make_config_c() {
364 OPENSSL=$(which openssl 2>/dev/null)
365 if [ "$OPENSSL" = "" ]
366 then
367 echo "// openssl not found!"
368 echo "const char *config_mak = \"CFG: openssl not found in PATH!\";"
369 else
370 echo "// This file is generated by ./config.sh --objdir $OBJDIR --make-config.mak"
371 echo "const char *config_mak ="
372 printf " \"\\\nCFG: strings FILE | sed -n 's/^CFG~//p' | openssl enc -d -base64 | gzip -d\\\n\"\n"
373 gzip -9 < $OBJDIR/config.mak | $OPENSSL enc -base64 | while read LINE
375 printf " \"CFG~%s\\\\n\"\n" "$LINE"
376 done
377 echo " ;"
381 make_config_mak() {
382 TMPFILE=$(mktemp -t config.mak.XXXXXX) || exit 1
383 list_config > $TMPFILE
384 [ ! -d $OBJDIR ] && mkdir -p $OBJDIR 2>/dev/null
385 cmp $TMPFILE $OBJDIR/config.mak >/dev/null 2>/dev/null
386 if [ $? != 0 ]
387 then
388 cat $TMPFILE > $OBJDIR/config.mak
389 make_config_c > $OBJDIR/config.c
390 else
391 make_config_c > $TMPFILE
392 cmp $TMPFILE $OBJDIR/config.c >/dev/null 2>/dev/null
393 [ $? != 0 ] && cat $TMPFILE > $OBJDIR/config.c
395 rm -rf $TMPFILE
398 check_test() {
399 if [ "$(cat $tempfileconfig | grep "^#define $1 1$")" != "" ]; then
400 echo "on"
401 else
402 echo "off"
406 disable_all() {
407 for i in $1; do
408 sed -e "s/^#define ${i} 1$/\/\/#define ${i} 1/g" $tempfileconfig > ${tempfileconfig}.tmp && \
409 mv ${tempfileconfig}.tmp $tempfileconfig
410 done
413 enable_package() {
414 for i in $(cat $tempfile); do
415 strip=$(echo $i | sed "s/\"//g")
416 sed -e "s/\/\/#define ${strip} 1$/#define ${strip} 1/g" $tempfileconfig > ${tempfileconfig}.tmp && \
417 mv ${tempfileconfig}.tmp $tempfileconfig
418 done
421 print_components() {
422 clear
423 echo "You have selected the following components:"
424 echo
425 echo "Add-ons:"
426 for i in $addons; do
427 printf "\t%-20s: %s\n" $i $(check_test "$i")
428 done
430 echo
431 echo "Protocols:"
432 for i in $protocols; do
433 printf "\t%-20s: %s\n" $i $(check_test "$i")
434 done
436 echo
437 echo "Readers:"
438 for i in $readers; do
439 printf "\t%-20s: %s\n" $i $(check_test "$i")
440 done
442 echo
443 echo "Card readers:"
444 for i in $card_readers; do
445 printf "\t%-20s: %s\n" $i $(check_test "$i")
446 done
448 cp -f $tempfileconfig $configfile
451 menu_addons() {
452 ${DIALOG} --checklist "\nChoose add-ons:\n " $height $width $listheight \
453 WEBIF "Web Interface" $(check_test "WEBIF") \
454 WEBIF_LIVELOG "LiveLog" $(check_test "WEBIF_LIVELOG") \
455 WEBIF_JQUERY "Jquery onboard (if disabled webload)" $(check_test "WEBIF_JQUERY") \
456 TOUCH "Touch Web Interface" $(check_test "TOUCH") \
457 WITH_SSL "OpenSSL support" $(check_test "WITH_SSL") \
458 HAVE_DVBAPI "DVB API" $(check_test "HAVE_DVBAPI") \
459 WITH_EXTENDED_CW "DVB API EXTENDED CW API" $(check_test "WITH_EXTENDED_CW") \
460 WITH_NEUTRINO "Neutrino support" $(check_test "WITH_NEUTRINO") \
461 READ_SDT_CHARSETS "DVB API read-sdt charsets" $(check_test "READ_SDT_CHARSETS") \
462 CS_ANTICASC "Anti cascading" $(check_test "CS_ANTICASC") \
463 WITH_DEBUG "Debug messages" $(check_test "WITH_DEBUG") \
464 MODULE_MONITOR "Monitor" $(check_test "MODULE_MONITOR") \
465 WITH_LB "Loadbalancing" $(check_test "WITH_LB") \
466 CS_CACHEEX "Cache exchange" $(check_test "CS_CACHEEX") \
467 CS_CACHEEX_AIO "Cache exchange aio (depend on Cache exchange)" $(check_test "CS_CACHEEX_AIO") \
468 CW_CYCLE_CHECK "CW Cycle Check" $(check_test "CW_CYCLE_CHECK") \
469 LCDSUPPORT "LCD support" $(check_test "LCDSUPPORT") \
470 LEDSUPPORT "LED support" $(check_test "LEDSUPPORT") \
471 CLOCKFIX "Clockfix (disable on old systems!)" $(check_test "CLOCKFIX") \
472 IPV6SUPPORT "IPv6 support (experimental)" $(check_test "IPV6SUPPORT") \
473 WITH_ARM_NEON "ARM NEON (SIMD/MPE) support" $(check_test "WITH_ARM_NEON") \
474 2> ${tempfile}
476 opt=${?}
477 if [ $opt != 0 ]; then return; fi
479 disable_all "$addons"
480 enable_package
483 menu_protocols() {
484 ${DIALOG} --checklist "\nChoose protocols:\n " $height $width $listheight \
485 MODULE_CAMD33 "camd 3.3" $(check_test "MODULE_CAMD33") \
486 MODULE_CAMD35 "camd 3.5 UDP" $(check_test "MODULE_CAMD35") \
487 MODULE_CAMD35_TCP "camd 3.5 TCP" $(check_test "MODULE_CAMD35_TCP") \
488 MODULE_NEWCAMD "newcamd" $(check_test "MODULE_NEWCAMD") \
489 MODULE_CCCAM "CCcam" $(check_test "MODULE_CCCAM") \
490 MODULE_CCCSHARE "CCcam share" $(check_test "MODULE_CCCSHARE") \
491 MODULE_GBOX "gbox" $(check_test "MODULE_GBOX") \
492 MODULE_RADEGAST "radegast" $(check_test "MODULE_RADEGAST") \
493 MODULE_SERIAL "Serial" $(check_test "MODULE_SERIAL") \
494 MODULE_CONSTCW "constant CW" $(check_test "MODULE_CONSTCW") \
495 MODULE_PANDORA "Pandora" $(check_test "MODULE_PANDORA") \
496 MODULE_GHTTP "Ghttp" $(check_test "MODULE_GHTTP") \
497 MODULE_SCAM "scam" $(check_test "MODULE_SCAM") \
498 MODULE_STREAMRELAY "Stream Relay" $(check_test "MODULE_STREAMRELAY") \
499 2> ${tempfile}
501 opt=${?}
502 if [ $opt != 0 ]; then return; fi
504 disable_all "$protocols"
505 enable_package
508 menu_readers() {
509 ${DIALOG} --checklist "\nChoose readers (CA systems):\n " $height $width $listheight \
510 READER_NAGRA "Nagravision" $(check_test "READER_NAGRA") \
511 READER_NAGRA_MERLIN "Nagra Merlin" $(check_test "READER_NAGRA_MERLIN") \
512 READER_IRDETO "Irdeto" $(check_test "READER_IRDETO") \
513 READER_CONAX "Conax" $(check_test "READER_CONAX") \
514 READER_CRYPTOWORKS "Cryptoworks" $(check_test "READER_CRYPTOWORKS") \
515 READER_SECA "Seca" $(check_test "READER_SECA") \
516 READER_VIACCESS "Viaccess" $(check_test "READER_VIACCESS") \
517 READER_VIDEOGUARD "NDS Videoguard" $(check_test "READER_VIDEOGUARD") \
518 READER_DRE "DRE Crypt" $(check_test "READER_DRE") \
519 READER_TONGFANG "Tongfang" $(check_test "READER_TONGFANG") \
520 READER_BULCRYPT "Bulcrypt" $(check_test "READER_BULCRYPT") \
521 READER_GRIFFIN "Griffin" $(check_test "READER_GRIFFIN") \
522 READER_DGCRYPT "DGCrypt" $(check_test "READER_DGCRYPT") \
523 2> ${tempfile}
525 opt=${?}
526 if [ $opt != 0 ]; then return; fi
528 disable_all "$readers"
529 enable_package
532 menu_card_readers() {
533 ${DIALOG} --checklist "\nChoose card reader drivers:\n " $height $width $listheight \
534 CARDREADER_PHOENIX "Phoenix/mouse" $(check_test "CARDREADER_PHOENIX") \
535 CARDREADER_INTERNAL "Internal (Sci,Azbox,Cool)" $(check_test "CARDREADER_INTERNAL") \
536 CARDREADER_SC8IN1 "SC8in1" $(check_test "CARDREADER_SC8IN1") \
537 CARDREADER_MP35 "AD-Teknik MP 3.6/USB Phoenix" $(check_test "CARDREADER_MP35") \
538 CARDREADER_SMARGO "Argolis Smargo Smartreader" $(check_test "CARDREADER_SMARGO") \
539 CARDREADER_DB2COM "dbox2" $(check_test "CARDREADER_DB2COM") \
540 CARDREADER_STAPI "STAPI" $(check_test "CARDREADER_STAPI") \
541 CARDREADER_STAPI5 "STAPI5" $(check_test "CARDREADER_STAPI5") \
542 CARDREADER_STINGER "STINGER" $(check_test "CARDREADER_STINGER") \
543 CARDREADER_DRECAS "DRECAS" $(check_test "CARDREADER_DRECAS") \
544 2> ${tempfile}
546 opt=${?}
547 if [ $opt != 0 ]; then return; fi
549 disable_all "$card_readers"
550 enable_package
554 config_dialog() {
555 height=30
556 width=65
557 listheight=16
559 DIALOG=${DIALOG:-`which dialog`}
560 if [ -z "${DIALOG}" ]; then
561 echo "Please install dialog package." 1>&2
562 exit 1
565 configfile=config.h
566 tempfile=$(mktemp -t oscam-config.dialog.XXXXXX) || exit 1
567 tempfileconfig=$(mktemp -t oscam-config.h.XXXXXX) || exit 1
568 trap 'rm -f $tempfile $tempfileconfig $tempfileconfig.bak 2>/dev/null' INT TERM EXIT
569 cp -f $configfile $tempfileconfig
571 while true; do
572 ${DIALOG} --menu "\nSelect category:\n " $height $width $listheight \
573 Add-ons "Add-ons" \
574 Protocols "Network protocols" \
575 Readers "Readers (CA systems)" \
576 CardReaders "Card reader drivers" \
577 Save "Save" \
578 2> ${tempfile}
580 opt=${?}
581 if [ $opt != 0 ]; then clear; exit; fi
583 menuitem=$(cat $tempfile)
584 case $menuitem in
585 Add-ons) menu_addons ;;
586 Protocols) menu_protocols ;;
587 Readers) menu_readers ;;
588 CardReaders) menu_card_readers ;;
589 Save)
590 print_components
591 update_deps
592 write_enabled
593 exit 0
595 esac
596 done
599 # Change working directory to the directory where the script is
600 cd $(dirname $0)
602 if [ $# = 0 ]
603 then
604 usage
605 exit 1
608 while [ $# -gt 0 ]
610 case "$1" in
611 '-g'|'--gui'|'--config'|'--menuconfig')
612 config_dialog
613 break
615 '-s'|'--show-enabled'|'--show')
616 shift
617 list_enabled $(get_opts $1)
618 # Take special care of USE_xxx flags
619 if [ "$1" = "card_readers" ]
620 then
621 have_flag USE_LIBUSB && echo "CARDREADER_SMART"
622 have_flag USE_PCSC && echo "CARDREADER_PCSC"
624 break
626 '-Z'|'--show-disabled')
627 shift
628 list_disabled $(get_opts $1)
629 break
631 '-S'|'--show-valid')
632 shift
633 for OPT in $(get_opts $1)
635 echo $OPT
636 done
637 break
639 '-E'|'--enable')
640 shift
641 while [ "$1" != "" ]
643 case "$1" in
645 update_deps
646 continue 2
648 all|addons|protocols|readers|card_readers)
649 enable_opts $(get_opts $1)
652 enable_opt "$1"
654 esac
655 shift
656 done
657 update_deps
658 write_enabled
660 '-D'|'--disable')
661 shift
662 while [ "$1" != "" ]
664 case "$1" in
666 update_deps
667 continue 2
669 all|addons|protocols|readers|card_readers)
670 disable_opts $(get_opts $1)
673 disable_opt "$1"
675 esac
676 shift
677 done
678 update_deps
679 write_enabled
681 '-R'|'--restore')
682 echo $defconfig | sed -e 's|# ||g' | xargs printf "%s\n" | grep "=y$" | sed -e 's|^CONFIG_||g;s|=.*||g' |
683 while read OPT
685 enable_opt "$OPT"
686 done
687 echo $defconfig | sed -e 's|# ||g' | xargs printf "%s\n" | grep "=n$" | sed -e 's|^CONFIG_||g;s|=.*||g' |
688 while read OPT
690 disable_opt "$OPT"
691 done
692 update_deps
693 write_enabled
695 '-e'|'--enabled')
696 enabled $2 && echo "Y" && exit 0 || echo "N" && exit 1
697 break
699 '-d'|'--disabled')
700 disabled $2 && echo "Y" && exit 0 || echo "N" && exit 1
701 break
703 '-v'|'--oscam-version')
704 grep CS_VERSION globals.h | cut -d\" -f2
705 break
707 '-r'|'--oscam-revision')
708 revision=`(svnversion -n . 2>/dev/null || printf 0) | sed 's/.*://; s/[^0-9]*$//; s/^$/0/'`
709 if [ "$revision" = "0" ]
710 then
711 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'`
713 echo $revision
714 break
716 '-O'|'--detect-osx-sdk-version')
717 shift
718 OSX_VER=${1:-10.10}
719 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
722 if test -d $DIR
723 then
724 echo $DIR
725 exit 0
727 done
728 echo Cant_find_OSX_SDK
729 break
731 '-l'|'--list-config')
732 list_config
733 exit 0
735 '-m'|'--make-config.mak')
736 make_config_mak
737 exit 0
739 '--use-flags')
740 shift
741 USE_FLAGS=$1
743 '--objdir')
744 shift
745 OBJDIR=$1
747 '-h'|'--help')
748 usage
749 break
752 echo "[WARN] Unknown parameter: $1" >&2
754 esac
755 # Some shells complain when there are no more parameters to shift
756 test $# -gt 0 && shift
757 done
759 exit 0