added PINPAD option to configure
[gnuk/gnuk.git] / src / configure
1 #! /bin/sh
2
3 #
4 # This file is *NOT* generated by GNU Autoconf, but written by NIIBE Yutaka
5 #
6 # Copyright (C) 2010 Free Software Initiative of Japan
7 #
8 # This file is a part of Gnuk, a GnuPG USB Token implementation.
9 # Gnuk is free software: you can redistribute it and/or modify it
10 # under the terms of the GNU General Public License as published by
11 # the Free Software Foundation, either version 3 of the License, or
12 # (at your option) any later version.
13 #
14 # Gnuk is distributed in the hope that it will be useful, but WITHOUT
15 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
17 # License for more details.
18 #
19 # You should have received a copy of the GNU General Public License
20 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
22 # Default settings
23 help=no
24 target=OLIMEX_STM32_H103
25 verbose=no
26 with_dfu=default
27 with_fsij=no
28 debug=no
29 pinpad=no
30
31 # check /dev/random
32 if test ! -e /dev/random; then
33   echo "/dev/random is required." >&2
34   exit 1
35 fi
36
37 # Process each option
38 for option; do
39   case $option in
40   *=*)  optarg=`expr "X$option" : '[^=]*=\(.*\)'` ;;
41   *)    optarg=yes ;;
42   esac
43
44   case $option in
45   -h | --help)
46     help=yes ;;
47   --target=*)
48     target=$optarg ;;
49   -v | --verbose)
50     verbose=yes ;;
51   --enable-debug)
52     debug=yes;;
53   --disable-debug)
54     debug=no;;
55   --enable-pinpad)
56     pinpad=yes;;
57   --disable-pinpad)
58     pinpad=no;;
59   --with-dfu)
60     with_dfu=yes ;;
61   --without-dfu)
62     with_dfu=no ;;
63   --with-fsij)
64     with_fsij=yes ;;
65   --without-fsij)
66     with_fsij=no ;;
67   *)
68     echo "Unrecognized option \`$option'" >&2
69     echo "Try \`$0 --help' for more information." >&2
70     exit 1
71     ;;
72   esac
73 done
74
75 if test "$help" = "yes"; then
76   cat <<EOF
77 Usage: $0 [OPTION]...
78
79 Defaults for the options are specified in brackets.
80
81 Configuration:
82   -h, --help            display this help and exit      [no]
83   --target=TARGET       specify target                  [OLIMEX_STM32_H103]
84                         supported targes are:
85                            OLIMEX_STM32_H103
86                            STM32_PRIMER2
87                            CQ_STARM
88                            STBEE_MINI
89   --enable-debug        debug with virtual COM port     [no]
90   --enable-pinpad       PIN input device support        [no]
91   --with-dfu            build image for DFU             [<target specific>]
92   --with-fsij           Use FSIJ serial number          [no: random number]
93 EOF
94   exit 0
95 fi
96
97 BOARD_MAKEFILE=../boards/$target/board.mk
98 if test -f $BOARD_MAKEFILE; then
99   echo "Configured for target: $target"
100 else
101   echo "Unsupported target \`$target'" >&2
102   exit 1
103 fi
104
105 # Flash page size in byte
106 FLASH_PAGE_SIZE=1024
107 # Flash memory size in KB
108 FLASH_SIZE=128
109
110 # Settings for TARGET
111 case $target in
112 CQ_STARM|STBEE_MINI)
113   if test "$with_dfu" = "default"; then
114     with_dfu=yes;
115   fi  ;;
116 STM32_PRIMER2)
117   FLASH_PAGE_SIZE=2048
118   ;;
119 STM8S_DISCOVERY)
120   FLASH_SIZE=64
121   ;;
122 *)
123   ;;
124 esac
125
126 # --with-fsij option
127 if test "$with_fsij" = "no"; then
128   echo "Using random serial number for card AID"
129   FSIJ_DEFINE="#undef WITH_FSIJ_SERIAL_NUMBER"
130   SERIAL_NUMBER_FOUR_BYTES=`od -t u1 -N 4 /dev/random | sed -n -e '/^0000000/s/^0000000  *//' -e 's/  */,/gp'`
131 else
132   echo "Using FSIJ assigned serial number for card AID"
133   if test "x$MAIL" = "x"; then
134     echo "ERROR: Please set MAIL shell variable to select FSIJ serial number" >&2
135     exit 1
136   fi
137   FSIJ_DEFINE="#define WITH_FSIJ_SERIAL_NUMBER 1"
138   SERIAL_NUMBER_FOUR_BYTES=`sed -n -e "/^$MAIL/s/^.* \(..\):\(..\):\(..\):\(..\)/0x\1, 0x\2, 0x\3, 0x\4/p" ../FSIJ_SERIAL_NUMBER`
139 fi
140
141 # --enable-debug option
142 if test "$debug" = "yes"; then
143   DEBUG_MAKE_OPTION="ENABLE_DEBUG=1"
144   DEBUG_DEFINE="#define DEBUG 1"
145   echo "Debug option enabled"
146 else
147   DEBUG_MAKE_OPTION="# ENABLE_DEBUG=1"
148   DEBUG_DEFINE="#undef DEBUG"
149   echo "Debug option disabled"
150 fi
151
152 # --with-dfu option
153 if test "$with_dfu" = "yes"; then
154   echo "Configured for DFU"
155   ORIGIN=0x08003000
156   FLASH_SIZE=`expr $FLASH_SIZE - 12`
157   DFU_DEFINE="#define DFU_SUPPORT 1"
158 else
159   echo "Configured for bare system (no-DFU)"
160   ORIGIN=0x08000000
161   DFU_DEFINE="#undef DFU_SUPPORT"
162 fi
163
164 # --enable-pinpad option
165 if test "$pinpad" = "yes"; then
166   PINPAD_MAKE_OPTION="ENABLE_PINPAD=1"
167   PINPAD_DEFINE="#define PINPAD_SUPPORT 1"
168   echo "PIN pad option enabled"
169 else
170   PINPAD_MAKE_OPTION="# ENABLE_PINPAD=1"
171   PINPAD_DEFINE="#undef PINPAD_SUPPORT"
172   echo "PIN pad option disabled"
173 fi
174
175 sed -e "s%@BOARD_MAKEFILE@%$BOARD_MAKEFILE%" \
176     -e "s%@DEBUG_MAKE_OPTION@%$DEBUG_MAKE_OPTION%" \
177     -e "s%@PINPAD_MAKE_OPTION@%$PINPAD_MAKE_OPTION%" \
178         < Makefile.in > Makefile
179 sed -e "s/@ORIGIN@/$ORIGIN/" -e "s/@FLASH_SIZE@/$FLASH_SIZE/" \
180     -e "s/@FLASH_PAGE_SIZE@/$FLASH_PAGE_SIZE/" \
181         < gnuk.ld.in > gnuk.ld
182 sed -e "s/@DEBUG_DEFINE@/$DEBUG_DEFINE/" \
183     -e "s/@PINPAD_DEFINE@/$PINPAD_DEFINE/" \
184     -e "s/@DFU_DEFINE@/$DFU_DEFINE/" \
185     -e "s/@FSIJ_DEFINE@/$FSIJ_DEFINE/" \
186     -e "s/@SERIAL_NUMBER_FOUR_BYTES@/$SERIAL_NUMBER_FOUR_BYTES/" \
187         < config.h.in > config.h
188 exit 0