STBEE support
[gnuk/gnuk.git] / src / configure
1 #! /bin/bash
2
3 #
4 # This file is *NOT* generated by GNU Autoconf, but written by NIIBE Yutaka
5 #
6 # Copyright (C) 2010, 2011 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_fixed_serial=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   --enable-pinpad=*)
58     pinpad=$optarg ;;
59   --disable-pinpad)
60     pinpad=no ;;
61   --with-dfu)
62     with_dfu=yes ;;
63   --without-dfu)
64     with_dfu=no ;;
65   --with-fixed-serial)
66     with_fixed_serial=yes ;;
67   --without-fixed-serial)
68     with_fixed_serial=no ;;
69   *)
70     echo "Unrecognized option \`$option'" >&2
71     echo "Try \`$0 --help' for more information." >&2
72     exit 1
73     ;;
74   esac
75 done
76
77 if test "$help" = "yes"; then
78   cat <<EOF
79 Usage: $0 [OPTION]...
80
81 Defaults for the options are specified in brackets.
82
83 Configuration:
84   -h, --help            display this help and exit      [no]
85   --target=TARGET       specify target                  [OLIMEX_STM32_H103]
86                         supported targes are:
87                            OLIMEX_STM32_H103
88                            STM32_PRIMER2
89                            CQ_STARM
90                            STBEE_MINI
91                            STM8S_DISCOVERY
92                            STBEE
93   --enable-debug        debug with virtual COM port     [no]
94   --enable-pinpad={cir,dial}
95                         PIN input device support        [no]
96   --with-dfu            build image for DFU             [<target specific>]
97   --with-fixed-serial   Use fixed serial number         [no: chip unique ID]
98 EOF
99   exit 0
100 fi
101
102 BOARD_MAKEFILE=../boards/$target/board.mk
103 if test -f $BOARD_MAKEFILE; then
104   echo "Configured for target: $target"
105 else
106   echo "Unsupported target \`$target'" >&2
107   exit 1
108 fi
109
110 # Flash page size in byte
111 FLASH_PAGE_SIZE=1024
112 # Flash memory size in KB
113 FLASH_SIZE=128
114
115 # Settings for TARGET
116 case $target in
117 CQ_STARM|STBEE_MINI)
118   if test "$with_dfu" = "default"; then
119     with_dfu=yes;
120   fi  ;;
121 STM32_PRIMER2)
122   FLASH_PAGE_SIZE=2048
123   FLASH_SIZE=512
124   ;;
125 STBEE)
126   FLASH_PAGE_SIZE=2048
127   FLASH_SIZE=512
128   if test "$with_dfu" = "default"; then
129     with_dfu=yes;
130   fi  ;;
131 STM8S_DISCOVERY)
132   FLASH_SIZE=64
133   ;;
134 *)
135   ;;
136 esac
137
138 # --with-fixed-serial option
139 if test "$with_fixed_serial" = "no"; then
140   echo "Using chip unique ID for card AID"
141   SERIAL_DEFINE="#undef SERIAL_NUMBER_IN_AID"
142 else
143   echo "Using fixed serial number (at compile time) for card AID"
144   if test "x$MAIL" = "x"; then
145     echo "ERROR: Please set MAIL shell variable to select FSIJ serial number" >&2
146     exit 1
147   fi
148   SERIAL=`sed -n -e "/^$MAIL/s/^.* \(..\):\(..\):\(..\):\(..\)/0x\1, 0x\2, 0x\3, 0x\4/p" ../FSIJ_SERIAL_NUMBER`
149   SERIAL_DEFINE="#define SERIAL_NUMBER_IN_AID $SERIAL"
150 fi
151
152 # --enable-debug option
153 if test "$debug" = "yes"; then
154   DEBUG_MAKE_OPTION="ENABLE_DEBUG=1"
155   DEBUG_DEFINE="#define DEBUG 1"
156   echo "Debug option enabled"
157 else
158   DEBUG_MAKE_OPTION="# ENABLE_DEBUG=1"
159   DEBUG_DEFINE="#undef DEBUG"
160   echo "Debug option disabled"
161 fi
162
163 # --with-dfu option
164 if test "$with_dfu" = "yes"; then
165   echo "Configured for DFU"
166   ORIGIN=0x08003000
167   FLASH_SIZE=`expr $FLASH_SIZE - 12`
168   DFU_DEFINE="#define DFU_SUPPORT 1"
169 else
170   echo "Configured for bare system (no-DFU)"
171   ORIGIN=0x08000000
172   DFU_DEFINE="#undef DFU_SUPPORT"
173 fi
174
175 # --enable-pinpad option
176 if test "$pinpad" = "no"; then
177   PINPAD_MAKE_OPTION="# ENABLE_PINPAD="
178   PINPAD_DEFINE="#undef PINPAD_SUPPORT"
179   PINPAD_MORE_DEFINE=""
180   echo "PIN pad option disabled"
181 elif test "$pinpad" = "yes"; then
182   PINPAD_MAKE_OPTION="ENABLE_PINPAD=cir"
183   PINPAD_DEFINE="#define PINPAD_SUPPORT 1"
184   PINPAD_MORE_DEFINE="#define PINPAD_CIR_SUPPORT 1"
185   echo "PIN pad option enabled (cir)"
186 else
187   PINPAD_MAKE_OPTION="ENABLE_PINPAD=$pinpad"
188   PINPAD_DEFINE="#define PINPAD_SUPPORT 1"
189   PINPAD_MORE_DEFINE="#define PINPAD_${pinpad^^[a-z]}_SUPPORT 1"
190   echo "PIN pad option enabled ($pinpad)"
191 fi
192
193 sed -e "s%@BOARD_MAKEFILE@%$BOARD_MAKEFILE%" \
194     -e "s%@DEBUG_MAKE_OPTION@%$DEBUG_MAKE_OPTION%" \
195     -e "s%@PINPAD_MAKE_OPTION@%$PINPAD_MAKE_OPTION%" \
196         < Makefile.in > Makefile
197 sed -e "s/@ORIGIN@/$ORIGIN/" -e "s/@FLASH_SIZE@/$FLASH_SIZE/" \
198     -e "s/@FLASH_PAGE_SIZE@/$FLASH_PAGE_SIZE/" \
199         < gnuk.ld.in > gnuk.ld
200 sed -e "s/@DEBUG_DEFINE@/$DEBUG_DEFINE/" \
201     -e "s/@PINPAD_DEFINE@/$PINPAD_DEFINE/" \
202     -e "s/@PINPAD_MORE_DEFINE@/$PINPAD_MORE_DEFINE/" \
203     -e "s/@DFU_DEFINE@/$DFU_DEFINE/" \
204     -e "s/@SERIAL_DEFINE@/$SERIAL_DEFINE/" \
205         < config.h.in > config.h
206 exit 0