revert breaks some stupid old compilers
[oscam.git] / config.sh
blob23f8971f7f3c748bcfdb6abdb34ed91d7954cfd5
1 #!/bin/sh
3 addons="WEBIF WEBIF_LIVELOG WEBIF_JQUERY TOUCH WITH_SSL HAVE_DVBAPI 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_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=y
13 # CONFIG_WITH_SSL=n
14 CONFIG_HAVE_DVBAPI=y
15 CONFIG_READ_SDT_CHARSETS=y
16 CONFIG_IRDETO_GUESSING=y
17 CONFIG_CS_ANTICASC=y
18 CONFIG_WITH_DEBUG=y
19 CONFIG_MODULE_MONITOR=y
20 CONFIG_WITH_LB=y
21 CONFIG_CS_CACHEEX=y
22 CONFIG_CW_CYCLE_CHECK=y
23 # CONFIG_LCDSUPPORT=n
24 # CONFIG_LEDSUPPORT=n
25 CONFIG_CLOCKFIX=y
26 # CONFIG_IPV6SUPPORT=n
27 # CONFIG_MODULE_CAMD33=n
28 CONFIG_MODULE_CAMD35=y
29 CONFIG_MODULE_CAMD35_TCP=y
30 CONFIG_MODULE_NEWCAMD=y
31 CONFIG_MODULE_CCCAM=y
32 CONFIG_MODULE_CCCSHARE=y
33 CONFIG_MODULE_GBOX=y
34 CONFIG_MODULE_RADEGAST=y
35 CONFIG_MODULE_SERIAL=y
36 CONFIG_MODULE_CONSTCW=y
37 CONFIG_MODULE_PANDORA=y
38 CONFIG_MODULE_SCAM=y
39 CONFIG_MODULE_GHTTP=y
40 CONFIG_WITH_CARDREADER=y
41 CONFIG_READER_NAGRA=y
42 CONFIG_READER_IRDETO=y
43 CONFIG_READER_CONAX=y
44 CONFIG_READER_CRYPTOWORKS=y
45 CONFIG_READER_SECA=y
46 CONFIG_READER_VIACCESS=y
47 CONFIG_READER_VIDEOGUARD=y
48 CONFIG_READER_DRE=y
49 CONFIG_READER_TONGFANG=y
50 CONFIG_READER_BULCRYPT=y
51 CONFIG_READER_GRIFFIN=y
52 CONFIG_READER_DGCRYPT=y
53 CARDREADER_PHOENIX=y
54 CARDREADER_DRECAS=y
55 CARDREADER_INTERNAL=y
56 CARDREADER_SC8IN1=y
57 CARDREADER_MP35=y
58 CARDREADER_SMARGO=y
59 CARDREADER_DB2COM=y
60 CARDREADER_STAPI=y
61 # CARDREADER_STAPI5=n
62 CARDREADER_STINGER=y
65 usage() {
66 echo \
67 "OSCam config
68 Usage: `basename $0` [parameters]
70 -g, --gui Start interactive configuration
72 -s, --show-enabled [param] Show enabled configuration options.
73 -Z, --show-disabled [param] Show disabled configuration options.
74 -S, --show-valid [param] Show valid configuration options.
75 Possible params: all, addons, protocols,
76 readers, card_readers
78 -l, --list-config List active configuration variables.
79 -e, --enabled [option] Check if certain option is enabled.
80 -d, --disabled [option] Check if certain option is disabled.
82 -E, --enable [option] Enable config option.
83 -D, --disable [option] Disable config option.
85 The following [option]s enable or disable multiple settings.
86 all - Everything.
87 addons - All addons.
88 protocols - All protocols.
89 readers - All readers.
90 card_readers - All card readers.
92 -R, --restore Restore default config.
94 -v, --oscam-version Display OSCam version.
95 -r, --oscam-revision Display OSCam SVN revision.
97 -O, --detect-osx-sdk-version Find where OS X SDK is located
99 -h, --help Display this help text.
101 Examples:
102 # Enable WEBIF and SSL
103 ./config.sh --enable WEBIF WITH_SSL
105 # Disable WEBIF but enable WITH_SSL
106 ./config.sh --disable WEBIF --enable WITH_SSL
108 # Restore defaults and disable WEBIF and READER_NAGRA
109 ./config.sh --restore --disable WEBIF READER_NAGRA
111 # Use default config with only one enabled reader
112 ./config.sh --restore --disable readers --enable READER_BULCRYPT
114 # Disable everything and enable webif one module and one card reader
115 ./config.sh --disable all --enable WEBIF MODULE_NEWCAMD READER_BULCRYPT
117 # Disable all card readers except INTERNAL
118 ./config.sh -D card_readers -E CARDREADER_INTERNAL
120 Available options:
121 addons: $addons
122 protocols: $protocols
123 readers: $readers
124 card_readers: $card_readers
128 # Output directory for config.mak set by --objdir parameter
129 OBJDIR=.
131 # Use flags set by --use-flags parameter
132 USE_FLAGS=
134 have_flag() {
135 for FLAG in $USE_FLAGS
137 [ "$FLAG" = "$1" ] && return 0
138 done
139 return 1
142 have_all_flags() {
143 for opt ; do
144 have_flag $opt || return 1
145 done
146 return 0
149 have_any_flags() {
150 for opt ; do
151 have_flag $opt && return 0
152 done
153 return 1
156 not_have_flag() {
157 for FLAG in $USE_FLAGS
159 [ "$FLAG" = "$1" ] && return 1
160 done
161 return 0
164 not_have_all_flags() {
165 for opt ; do
166 not_have_flag $opt || return 1
167 done
168 return 0
171 not_have_any_flags() {
172 for opt ; do
173 not_have_flag $opt && return 0
174 done
175 return 1
178 # Config functions
179 enabled() {
180 grep "^\#define $1 1$" config.h >/dev/null 2>/dev/null
181 return $?
184 disabled() {
185 grep "^\#define $1 1$" config.h >/dev/null 2>/dev/null
186 test $? = 0 && return 1
187 return 0
190 enabled_all() {
191 for opt ; do
192 enabled $opt || return 1
193 done
194 return 0
197 disabled_all() {
198 for opt ; do
199 disabled $opt || return 1
200 done
201 return 0
204 enabled_any() {
205 for opt ; do
206 enabled $opt && return 0
207 done
208 return 1
211 disabled_any() {
212 for opt ; do
213 disabled $opt && return 0
214 done
215 return 1
218 list_enabled() {
219 for OPT in $@
221 enabled $OPT && echo $OPT
222 done
225 list_disabled() {
226 for OPT in $@
228 disabled $OPT && echo $OPT
229 done
232 write_enabled() {
233 defined_file="webif/is_defined.txt"
234 pages_c="webif/pages.c"
235 rm -f $defined_file $pages_c 2>/dev/null
236 for OPT in $(get_opts) WITH_CARDREADER
238 enabled $OPT && printf "%s\n" $OPT >> $defined_file
239 done
242 valid_opt() {
243 [ "$1" = "WITH_CARDREADER" ] && return 0 # Special case
244 echo $addons $protocols $readers $card_readers | grep -w "$1" >/dev/null
245 return $?
248 enable_opt() {
249 valid_opt $1 && disabled $1 && {
250 sed -e "s|//#define $1 1$|#define $1 1|g" config.h > config.h.tmp && \
251 mv config.h.tmp config.h
252 echo "Enable $1"
256 enable_opts() {
257 for OPT in $@
259 enable_opt $OPT
260 done
263 disable_opt() {
264 valid_opt $1 && enabled $1 && {
265 sed -e "s|#define $1 1$|//#define $1 1|g" config.h > config.h.tmp && \
266 mv config.h.tmp config.h
267 echo "Disable $1"
271 disable_opts() {
272 for OPT in $@
274 disable_opt $OPT
275 done
278 get_opts() {
279 OPTS=""
280 case "$1" in
281 'addons') OPTS="$addons" ; ;;
282 'protocols') OPTS="$protocols" ; ;;
283 'readers') OPTS="$readers" ; ;;
284 'card_readers') OPTS="$card_readers" ; ;;
285 *) OPTS="$addons $protocols $readers $card_readers" ; ;;
286 esac
287 echo $OPTS
290 update_deps() {
291 # Calculate dependencies
292 enabled_any $(get_opts readers) $(get_opts card_readers) && enable_opt WITH_CARDREADER >/dev/null
293 disabled_all $(get_opts readers) $(get_opts card_readers) && disable_opt WITH_CARDREADER >/dev/null
294 disabled WEBIF && disable_opt WEBIF_LIVELOG >/dev/null
295 disabled WEBIF && disable_opt WEBIF_JQUERY >/dev/null
296 enabled MODULE_CCCSHARE && enable_opt MODULE_CCCAM >/dev/null
297 enabled_any CARDREADER_DB2COM CARDREADER_MP35 CARDREADER_SC8IN1 CARDREADER_STINGER && enable_opt CARDREADER_PHOENIX >/dev/null
300 list_config() {
301 update_deps
302 # Handle use flags
303 have_flag USE_STAPI && echo "CONFIG_WITH_STAPI=y" || echo "# CONFIG_WITH_STAPI=n"
304 have_flag USE_STAPI5 && echo "CONFIG_WITH_STAPI5=y" || echo "# CONFIG_WITH_STAPI5=n"
305 have_flag USE_COOLAPI && echo "CONFIG_WITH_COOLAPI=y" || echo "# CONFIG_WITH_COOLAPI=n"
306 have_flag USE_COOLAPI2 && echo "CONFIG_WITH_COOLAPI2=y" || echo "# CONFIG_WITH_COOLAPI2=n"
307 have_flag USE_SU980 && echo "CONFIG_WITH_SU980=y" || echo "# CONFIG_WITH_SU980=n"
308 have_flag USE_AZBOX && echo "CONFIG_WITH_AZBOX=y" || echo "# CONFIG_WITH_AZBOX=n"
309 have_flag USE_MCA && echo "CONFIG_WITH_MCA=y" || echo "# CONFIG_WITH_MCA=n"
310 have_flag USE_LIBCRYPTO && echo "CONFIG_WITH_LIBCRYPTO=y" || echo "# CONFIG_WITH_LIBCRYPTO=n"
311 for OPT in $addons $protocols WITH_CARDREADER $readers
313 enabled $OPT && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
314 done
315 for OPT in $card_readers
317 if [ $OPT = CARDREADER_INTERNAL ]
318 then
319 # Internal card reader is actually three different readers depending on USE flags
320 enabled $OPT && have_flag USE_AZBOX && echo "CONFIG_${OPT}_AZBOX=y" || echo "# CONFIG_${OPT}_AZBOX=n"
321 enabled $OPT && have_any_flags USE_COOLAPI USE_SU980 && echo "CONFIG_${OPT}_COOLAPI=y" || echo "# CONFIG_${OPT}_COOLAPI=n"
322 enabled $OPT && have_flag USE_COOLAPI2 && echo "CONFIG_${OPT}_COOLAPI2=y" || echo "# CONFIG_${OPT}_COOLAPI2=n"
323 enabled $OPT && not_have_all_flags USE_AZBOX USE_COOLAPI USE_COOLAPI2 USE_SU980 && echo "CONFIG_${OPT}_SCI=y" || echo "# CONFIG_${OPT}_SCI=n"
324 continue
326 if [ $OPT = CARDREADER_STAPI ]
327 then
328 # Enable CARDREADER_STAPI only if USE_STAPI is set
329 enabled $OPT && have_flag USE_STAPI && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
330 continue
332 if [ $OPT = CARDREADER_STAPI5 ]
333 then
334 # Enable CARDREADER_STAPI5 only if USE_STAPI5 is set
335 enabled $OPT && have_flag USE_STAPI5 && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
336 continue
338 enabled $OPT && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
339 done
340 have_flag USE_LIBUSB && echo "CONFIG_CARDREADER_SMART=y" || echo "# CONFIG_CARDREADER_SMART=n"
341 have_flag USE_PCSC && echo "CONFIG_CARDREADER_PCSC=y" || echo "# CONFIG_CARDREADER_PCSC=n"
342 # Extra modules/libraries
343 enabled_any MODULE_GBOX WEBIF && echo "CONFIG_LIB_MINILZO=y" || echo "# CONFIG_LIB_MINILZO=n"
344 not_have_flag USE_LIBCRYPTO && echo "CONFIG_LIB_AES=y" || echo "# CONFIG_LIB_AES=n"
345 enabled MODULE_CCCAM && echo "CONFIG_LIB_RC6=y" || echo "# CONFIG_LIB_RC6=n"
346 not_have_flag USE_LIBCRYPTO && enabled MODULE_CCCAM && echo "CONFIG_LIB_SHA1=y" || echo "# CONFIG_LIB_SHA1=n"
347 enabled_any READER_DRE MODULE_SCAM READER_VIACCESS && echo "CONFIG_LIB_DES=y" || echo "# CONFIG_LIB_DES=n"
348 enabled_any MODULE_CCCAM READER_NAGRA READER_SECA && echo "CONFIG_LIB_IDEA=y" || echo "# CONFIG_LIB_IDEA=n"
349 not_have_flag USE_LIBCRYPTO && enabled_any READER_CONAX READER_CRYPTOWORKS READER_NAGRA && echo "CONFIG_LIB_BIGNUM=y" || echo "# CONFIG_LIB_BIGNUM=n"
352 make_config_c() {
353 OPENSSL=$(which openssl 2>/dev/null)
354 if [ "$OPENSSL" = "" ]
355 then
356 echo "// openssl not found!"
357 echo "const char *config_mak = \"CFG: openssl not found in PATH!\";"
358 else
359 echo "// This file is generated by ./config.sh --objdir $OBJDIR --make-config.mak"
360 echo "const char *config_mak ="
361 printf " \"\\\nCFG: strings FILE | sed -n 's/^CFG~//p' | openssl enc -d -base64 | gzip -d\\\n\"\n"
362 gzip -9 < $OBJDIR/config.mak | $OPENSSL enc -base64 | while read LINE
364 printf " \"CFG~%s\\\\n\"\n" "$LINE"
365 done
366 echo " ;"
370 make_config_mak() {
371 TMPFILE=$(mktemp -t config.mak.XXXXXX) || exit 1
372 list_config > $TMPFILE
373 [ ! -d $OBJDIR ] && mkdir -p $OBJDIR 2>/dev/null
374 cmp $TMPFILE $OBJDIR/config.mak >/dev/null 2>/dev/null
375 if [ $? != 0 ]
376 then
377 cat $TMPFILE > $OBJDIR/config.mak
378 make_config_c > $OBJDIR/config.c
379 else
380 make_config_c > $TMPFILE
381 cmp $TMPFILE $OBJDIR/config.c >/dev/null 2>/dev/null
382 [ $? != 0 ] && cat $TMPFILE > $OBJDIR/config.c
384 rm -rf $TMPFILE
387 check_test() {
388 if [ "$(cat $tempfileconfig | grep "^#define $1 1$")" != "" ]; then
389 echo "on"
390 else
391 echo "off"
395 disable_all() {
396 for i in $1; do
397 sed -e "s/^#define ${i} 1$/\/\/#define ${i} 1/g" $tempfileconfig > ${tempfileconfig}.tmp && \
398 mv ${tempfileconfig}.tmp $tempfileconfig
399 done
402 enable_package() {
403 for i in $(cat $tempfile); do
404 strip=$(echo $i | sed "s/\"//g")
405 sed -e "s/\/\/#define ${strip} 1$/#define ${strip} 1/g" $tempfileconfig > ${tempfileconfig}.tmp && \
406 mv ${tempfileconfig}.tmp $tempfileconfig
407 done
410 print_components() {
411 clear
412 echo "You have selected the following components:"
413 echo
414 echo "Add-ons:"
415 for i in $addons; do
416 printf "\t%-20s: %s\n" $i $(check_test "$i")
417 done
419 echo
420 echo "Protocols:"
421 for i in $protocols; do
422 printf "\t%-20s: %s\n" $i $(check_test "$i")
423 done
425 echo
426 echo "Readers:"
427 for i in $readers; do
428 printf "\t%-20s: %s\n" $i $(check_test "$i")
429 done
431 echo
432 echo "Card readers:"
433 for i in $card_readers; do
434 printf "\t%-20s: %s\n" $i $(check_test "$i")
435 done
437 cp -f $tempfileconfig $configfile
440 menu_addons() {
441 ${DIALOG} --checklist "\nChoose add-ons:\n " $height $width $listheight \
442 WEBIF "Web Interface" $(check_test "WEBIF") \
443 WEBIF_LIVELOG "LiveLog" $(check_test "WEBIF_LIVELOG") \
444 WEBIF_JQUERY "Jquery onboard (if disabled webload)" $(check_test "WEBIF_JQUERY") \
445 TOUCH "Touch Web Interface" $(check_test "TOUCH") \
446 WITH_SSL "OpenSSL support" $(check_test "WITH_SSL") \
447 HAVE_DVBAPI "DVB API" $(check_test "HAVE_DVBAPI") \
448 READ_SDT_CHARSETS "DVB API read-sdt charsets" $(check_test "READ_SDT_CHARSETS") \
449 IRDETO_GUESSING "Irdeto guessing" $(check_test "IRDETO_GUESSING") \
450 CS_ANTICASC "Anti cascading" $(check_test "CS_ANTICASC") \
451 WITH_DEBUG "Debug messages" $(check_test "WITH_DEBUG") \
452 MODULE_MONITOR "Monitor" $(check_test "MODULE_MONITOR") \
453 WITH_LB "Loadbalancing" $(check_test "WITH_LB") \
454 CS_CACHEEX "Cache exchange" $(check_test "CS_CACHEEX") \
455 CW_CYCLE_CHECK "CW Cycle Check" $(check_test "CW_CYCLE_CHECK") \
456 LCDSUPPORT "LCD support" $(check_test "LCDSUPPORT") \
457 LEDSUPPORT "LED support" $(check_test "LEDSUPPORT") \
458 CLOCKFIX "Clockfix (disable on old systems!)" $(check_test "CLOCKFIX") \
459 IPV6SUPPORT "IPv6 support (experimental)" $(check_test "IPV6SUPPORT") \
460 2> ${tempfile}
462 opt=${?}
463 if [ $opt != 0 ]; then return; fi
465 disable_all "$addons"
466 enable_package
469 menu_protocols() {
470 ${DIALOG} --checklist "\nChoose protocols:\n " $height $width $listheight \
471 MODULE_CAMD33 "camd 3.3" $(check_test "MODULE_CAMD33") \
472 MODULE_CAMD35 "camd 3.5 UDP" $(check_test "MODULE_CAMD35") \
473 MODULE_CAMD35_TCP "camd 3.5 TCP" $(check_test "MODULE_CAMD35_TCP") \
474 MODULE_NEWCAMD "newcamd" $(check_test "MODULE_NEWCAMD") \
475 MODULE_CCCAM "CCcam" $(check_test "MODULE_CCCAM") \
476 MODULE_CCCSHARE "CCcam share" $(check_test "MODULE_CCCSHARE") \
477 MODULE_GBOX "gbox" $(check_test "MODULE_GBOX") \
478 MODULE_RADEGAST "radegast" $(check_test "MODULE_RADEGAST") \
479 MODULE_SERIAL "Serial" $(check_test "MODULE_SERIAL") \
480 MODULE_CONSTCW "constant CW" $(check_test "MODULE_CONSTCW") \
481 MODULE_PANDORA "Pandora" $(check_test "MODULE_PANDORA") \
482 MODULE_GHTTP "Ghttp" $(check_test "MODULE_GHTTP") \
483 MODULE_SCAM "scam" $(check_test "MODULE_SCAM") \
484 2> ${tempfile}
486 opt=${?}
487 if [ $opt != 0 ]; then return; fi
489 disable_all "$protocols"
490 enable_package
493 menu_readers() {
494 ${DIALOG} --checklist "\nChoose readers (CA systems):\n " $height $width $listheight \
495 READER_NAGRA "Nagravision" $(check_test "READER_NAGRA") \
496 READER_IRDETO "Irdeto" $(check_test "READER_IRDETO") \
497 READER_CONAX "Conax" $(check_test "READER_CONAX") \
498 READER_CRYPTOWORKS "Cryptoworks" $(check_test "READER_CRYPTOWORKS") \
499 READER_SECA "Seca" $(check_test "READER_SECA") \
500 READER_VIACCESS "Viaccess" $(check_test "READER_VIACCESS") \
501 READER_VIDEOGUARD "NDS Videoguard" $(check_test "READER_VIDEOGUARD") \
502 READER_DRE "DRE Crypt" $(check_test "READER_DRE") \
503 READER_TONGFANG "Tongfang" $(check_test "READER_TONGFANG") \
504 READER_BULCRYPT "Bulcrypt" $(check_test "READER_BULCRYPT") \
505 READER_GRIFFIN "Griffin" $(check_test "READER_GRIFFIN") \
506 READER_DGCRYPT "DGCrypt" $(check_test "READER_DGCRYPT") \
507 2> ${tempfile}
509 opt=${?}
510 if [ $opt != 0 ]; then return; fi
512 disable_all "$readers"
513 enable_package
516 menu_card_readers() {
517 ${DIALOG} --checklist "\nChoose card reader drivers:\n " $height $width $listheight \
518 CARDREADER_PHOENIX "Phoenix/mouse" $(check_test "CARDREADER_PHOENIX") \
519 CARDREADER_INTERNAL "Internal (Sci,Azbox,Cool)" $(check_test "CARDREADER_INTERNAL") \
520 CARDREADER_SC8IN1 "SC8in1" $(check_test "CARDREADER_SC8IN1") \
521 CARDREADER_MP35 "AD-Teknik MP 3.6/USB Phoenix" $(check_test "CARDREADER_MP35") \
522 CARDREADER_SMARGO "Argolis Smargo Smartreader" $(check_test "CARDREADER_SMARGO") \
523 CARDREADER_DB2COM "dbox2" $(check_test "CARDREADER_DB2COM") \
524 CARDREADER_STAPI "STAPI" $(check_test "CARDREADER_STAPI") \
525 CARDREADER_STAPI5 "STAPI5" $(check_test "CARDREADER_STAPI5") \
526 CARDREADER_STINGER "STINGER" $(check_test "CARDREADER_STINGER") \
527 CARDREADER_DRECAS "DRECAS" $(check_test "CARDREADER_DRECAS") \
528 2> ${tempfile}
530 opt=${?}
531 if [ $opt != 0 ]; then return; fi
533 disable_all "$card_readers"
534 enable_package
538 config_dialog() {
539 height=30
540 width=65
541 listheight=16
543 DIALOG=${DIALOG:-`which dialog`}
544 if [ -z "${DIALOG}" ]; then
545 echo "Please install dialog package." 1>&2
546 exit 1
549 configfile=config.h
550 tempfile=$(mktemp -t oscam-config.dialog.XXXXXX) || exit 1
551 tempfileconfig=$(mktemp -t oscam-config.h.XXXXXX) || exit 1
552 trap 'rm -f $tempfile $tempfileconfig $tempfileconfig.bak 2>/dev/null' INT TERM EXIT
553 cp -f $configfile $tempfileconfig
555 while true; do
556 ${DIALOG} --menu "\nSelect category:\n " $height $width $listheight \
557 Add-ons "Add-ons" \
558 Protocols "Network protocols" \
559 Readers "Readers (CA systems)" \
560 CardReaders "Card reader drivers" \
561 Save "Save" \
562 2> ${tempfile}
564 opt=${?}
565 if [ $opt != 0 ]; then clear; exit; fi
567 menuitem=$(cat $tempfile)
568 case $menuitem in
569 Add-ons) menu_addons ;;
570 Protocols) menu_protocols ;;
571 Readers) menu_readers ;;
572 CardReaders) menu_card_readers ;;
573 Save)
574 print_components
575 update_deps
576 write_enabled
577 exit 0
579 esac
580 done
583 # Change working directory to the directory where the script is
584 cd $(dirname $0)
586 if [ $# = 0 ]
587 then
588 usage
589 exit 1
592 while [ $# -gt 0 ]
594 case "$1" in
595 '-g'|'--gui'|'--config'|'--menuconfig')
596 config_dialog
597 break
599 '-s'|'--show-enabled'|'--show')
600 shift
601 list_enabled $(get_opts $1)
602 # Take special care of USE_xxx flags
603 if [ "$1" = "card_readers" ]
604 then
605 have_flag USE_LIBUSB && echo "CARDREADER_SMART"
606 have_flag USE_PCSC && echo "CARDREADER_PCSC"
608 break
610 '-Z'|'--show-disabled')
611 shift
612 list_disabled $(get_opts $1)
613 break
615 '-S'|'--show-valid')
616 shift
617 for OPT in $(get_opts $1)
619 echo $OPT
620 done
621 break
623 '-E'|'--enable')
624 shift
625 while [ "$1" != "" ]
627 case "$1" in
629 update_deps
630 continue 2
632 all|addons|protocols|readers|card_readers)
633 enable_opts $(get_opts $1)
636 enable_opt "$1"
638 esac
639 shift
640 done
641 update_deps
642 write_enabled
644 '-D'|'--disable')
645 shift
646 while [ "$1" != "" ]
648 case "$1" in
650 update_deps
651 continue 2
653 all|addons|protocols|readers|card_readers)
654 disable_opts $(get_opts $1)
657 disable_opt "$1"
659 esac
660 shift
661 done
662 update_deps
663 write_enabled
665 '-R'|'--restore')
666 echo $defconfig | sed -e 's|# ||g' | xargs printf "%s\n" | grep "=y$" | sed -e 's|^CONFIG_||g;s|=.*||g' |
667 while read OPT
669 enable_opt "$OPT"
670 done
671 echo $defconfig | sed -e 's|# ||g' | xargs printf "%s\n" | grep "=n$" | sed -e 's|^CONFIG_||g;s|=.*||g' |
672 while read OPT
674 disable_opt "$OPT"
675 done
676 update_deps
677 write_enabled
679 '-e'|'--enabled')
680 enabled $2 && echo "Y" && exit 0 || echo "N" && exit 1
681 break
683 '-d'|'--disabled')
684 disabled $2 && echo "Y" && exit 0 || echo "N" && exit 1
685 break
687 '-v'|'--oscam-version')
688 grep CS_VERSION globals.h | cut -d\" -f2
689 break
691 '-r'|'--oscam-revision')
692 revision=`(svnversion -n . 2>/dev/null || printf 0) | sed 's/.*://; s/[^0-9]*$//; s/^$/0/'`
693 if [ "$revision" = "0" ]
694 then
695 which git > /dev/null 2>&1 && revision=`git log -1 --pretty=%B | grep git-svn-id | sed -n -e 's/^.*trunk@\([0-9]*\) .*$/\1/p'`
697 echo $revision
698 break
700 '-O'|'--detect-osx-sdk-version')
701 shift
702 OSX_VER=${1:-10.10}
703 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
706 if test -d $DIR
707 then
708 echo $DIR
709 exit 0
711 done
712 echo Cant_find_OSX_SDK
713 break
715 '-l'|'--list-config')
716 list_config
717 exit 0
719 '-m'|'--make-config.mak')
720 make_config_mak
721 exit 0
723 '--use-flags')
724 shift
725 USE_FLAGS=$1
727 '--objdir')
728 shift
729 OBJDIR=$1
731 '-h'|'--help')
732 usage
733 break
736 echo "[WARN] Unknown parameter: $1" >&2
738 esac
739 # Some shells complain when there are no more parameters to shift
740 test $# -gt 0 && shift
741 done
743 exit 0