Version 0.10
[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 debug=no
28 pinpad=no
29
30 # check /dev/random
31 if test ! -e /dev/random; then
32   echo "/dev/random is required." >&2
33   exit 1
34 fi
35
36 # Process each option
37 for option; do
38   case $option in
39   *=*)  optarg=`expr "X$option" : '[^=]*=\(.*\)'` ;;
40   *)    optarg=yes ;;
41   esac
42
43   case $option in
44   -h | --help)
45     help=yes ;;
46   --target=*)
47     target=$optarg ;;
48   -v | --verbose)
49     verbose=yes ;;
50   --enable-debug)
51     debug=yes ;;
52   --disable-debug)
53     debug=no ;;
54   --enable-pinpad)
55     pinpad=yes ;;
56   --enable-pinpad=*)
57     pinpad=$optarg ;;
58   --disable-pinpad)
59     pinpad=no ;;
60   --with-dfu)
61     with_dfu=yes ;;
62   --without-dfu)
63     with_dfu=no ;;
64   *)
65     echo "Unrecognized option \`$option'" >&2
66     echo "Try \`$0 --help' for more information." >&2
67     exit 1
68     ;;
69   esac
70 done
71
72 if test "$help" = "yes"; then
73   cat <<EOF
74 Usage: $0 [OPTION]...
75
76 Defaults for the options are specified in brackets.
77
78 Configuration:
79   -h, --help            display this help and exit      [no]
80   --target=TARGET       specify target                  [OLIMEX_STM32_H103]
81                         supported targes are:
82                            OLIMEX_STM32_H103
83                            STM32_PRIMER2
84                            CQ_STARM
85                            STBEE_MINI
86                            STM8S_DISCOVERY
87                            STBEE
88   --enable-debug        debug with virtual COM port     [no]
89   --enable-pinpad={cir,dial}
90                         PIN input device support        [no]
91   --with-dfu            build image for DFU             [<target specific>]
92 EOF
93   exit 0
94 fi
95
96 BOARD_DIR=../boards/$target
97 if test -d $BOARD_DIR; then
98   echo "Configured for target: $target"
99 else
100   echo "Unsupported target \`$target'" >&2
101   exit 1
102 fi
103
104 # Flash page size in byte
105 FLASH_PAGE_SIZE=1024
106 # Flash memory size in KB
107 FLASH_SIZE=128
108
109 # Settings for TARGET
110 case $target in
111 CQ_STARM|STBEE_MINI)
112   if test "$with_dfu" = "default"; then
113     with_dfu=yes;
114   fi  ;;
115 STM32_PRIMER2)
116   FLASH_PAGE_SIZE=2048
117   FLASH_SIZE=512
118   ;;
119 STBEE)
120   FLASH_PAGE_SIZE=2048
121   FLASH_SIZE=512
122   if test "$with_dfu" = "default"; then
123     with_dfu=yes;
124   fi  ;;
125 STM8S_DISCOVERY)
126   FLASH_SIZE=64
127   ;;
128 *)
129   ;;
130 esac
131
132 # --enable-debug option
133 if test "$debug" = "yes"; then
134   DEBUG_MAKE_OPTION="ENABLE_DEBUG=1"
135   DEBUG_DEFINE="#define DEBUG 1"
136   echo "Debug option enabled"
137 else
138   DEBUG_MAKE_OPTION="# ENABLE_DEBUG=1"
139   DEBUG_DEFINE="#undef DEBUG"
140   echo "Debug option disabled"
141 fi
142
143 # --with-dfu option
144 if test "$with_dfu" = "yes"; then
145   echo "Configured for DFU"
146   ORIGIN=0x08003000
147   FLASH_SIZE=`expr $FLASH_SIZE - 12`
148   DFU_DEFINE="#define DFU_SUPPORT 1"
149 else
150   echo "Configured for bare system (no-DFU)"
151   ORIGIN=0x08000000
152   DFU_DEFINE="#undef DFU_SUPPORT"
153 fi
154
155 # --enable-pinpad option
156 if test "$pinpad" = "no"; then
157   PINPAD_MAKE_OPTION="# ENABLE_PINPAD="
158   PINPAD_DEFINE="#undef PINPAD_SUPPORT"
159   PINPAD_MORE_DEFINE=""
160   echo "PIN pad option disabled"
161 elif test "$pinpad" = "yes"; then
162   PINPAD_MAKE_OPTION="ENABLE_PINPAD=cir"
163   PINPAD_DEFINE="#define PINPAD_SUPPORT 1"
164   PINPAD_MORE_DEFINE="#define PINPAD_CIR_SUPPORT 1"
165   echo "PIN pad option enabled (cir)"
166 else
167   PINPAD_MAKE_OPTION="ENABLE_PINPAD=$pinpad"
168   PINPAD_DEFINE="#define PINPAD_SUPPORT 1"
169   PINPAD_MORE_DEFINE="#define PINPAD_${pinpad^^[a-z]}_SUPPORT 1"
170   echo "PIN pad option enabled ($pinpad)"
171 fi
172
173 sed -e "s%@BOARD_DIR@%$BOARD_DIR%" \
174     -e "s%@DEBUG_MAKE_OPTION@%$DEBUG_MAKE_OPTION%" \
175     -e "s%@PINPAD_MAKE_OPTION@%$PINPAD_MAKE_OPTION%" \
176         < Makefile.in > Makefile
177 sed -e "s/@ORIGIN@/$ORIGIN/" -e "s/@FLASH_SIZE@/$FLASH_SIZE/" \
178     -e "s/@FLASH_PAGE_SIZE@/$FLASH_PAGE_SIZE/" \
179         < gnuk.ld.in > gnuk.ld
180 sed -e "s/@DEBUG_DEFINE@/$DEBUG_DEFINE/" \
181     -e "s/@PINPAD_DEFINE@/$PINPAD_DEFINE/" \
182     -e "s/@PINPAD_MORE_DEFINE@/$PINPAD_MORE_DEFINE/" \
183     -e "s/@DFU_DEFINE@/$DFU_DEFINE/" \
184         < config.h.in > config.h
185 exit 0