886721027a6bb1554ed17e858e8c041bd0be84f0
[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
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   --with-dfu)
55     with_dfu=yes ;;
56   --without-dfu)
57     with_dfu=no ;;
58   --with-fsij)
59     with_fsij=yes ;;
60   --without-fsij)
61     with_fsij=no ;;
62   *)
63     echo "Unrecognized option \`$option'" >&2
64     echo "Try \`$0 --help' for more information." >&2
65     exit 1
66     ;;
67   esac
68 done
69
70 if test "$help" = "yes"; then
71   cat <<EOF
72 Usage: $0 [OPTION]...
73
74 Defaults for the options are specified in brackets.
75
76 Configuration:
77   -h, --help            display this help and exit      [no]
78   --target=TARGET       specify target                  [OLIMEX_STM32_H103]
79                         supported targes are:
80                            OLIMEX_STM32_H103
81                            STM32_PRIMER2
82                            CQ_STARM
83                            STBEE_MINI
84   --enable-debug        debug with virtual COM port     [no]
85   --with-dfu            build image for DFU             [<target specific>]
86   --with-fsij           Use FSIJ serial number          [no: random number]
87 EOF
88   exit 0
89 fi
90
91 BOARD_MAKEFILE=../boards/$target/board.mk
92 if test -f $BOARD_MAKEFILE; then
93   echo "Configured for target: $target"
94 else
95   echo "Unsupported target \`$target'" >&2
96   exit 1
97 fi
98
99 # --with-dfu option
100 case $target in
101 CQ_STARM|STBEE_MINI)
102   if test "$with_dfu" = "default"; then
103     with_dfu=yes;
104   fi  ;;
105 *)
106   if test "$with_dfu" = "default"; then
107     with_dfu=no;
108   fi  ;;
109 esac
110
111 # --with-fsij option
112 if test "$with_fsij" = "no"; then
113   echo "Using random serial number for card AID"
114   FSIJ_DEFINE="#undef WITH_FSIJ_SERIAL_NUMBER"
115   SERIAL_NUMBER_FOUR_BYTES=`od -t u1 -N 4 /dev/random | sed -n -e '/^0000000/s/^0000000  *//' -e 's/  */,/gp'`
116 else
117   echo "Using FSIJ assigned serial number for card AID"
118   if test "x$MAIL" = "x"; then
119     echo "ERROR: Please set MAIL shell variable to select FSIJ serial number" >&2
120     exit 1
121   fi
122   FSIJ_DEFINE="#define WITH_FSIJ_SERIAL_NUMBER 1"
123   SERIAL_NUMBER_FOUR_BYTES=`sed -n -e "/^$MAIL/s/^.* \(..\):\(..\):\(..\):\(..\)/0x\1, 0x\2, 0x\3, 0x\4/p" ../FSIJ_SERIAL_NUMBER`
124 fi
125
126 if test "$debug" = "yes"; then
127   DEBUG_MAKE_OPTION="ENABLE_DEBUG=1"
128   DEBUG_DEFINE="#define DEBUG 1"
129   echo "Debug option enabled"
130 else
131   DEBUG_MAKE_OPTION="# ENABLE_DEBUG=1"
132   DEBUG_DEFINE="#undef DEBUG"
133   echo "Debug option disabled"
134 fi
135
136 if test "$with_dfu" = "yes"; then
137   echo "Configured for DFU"
138   ORIGIN=0x08003000
139   FLASH_SIZE=116k
140   DFU_DEFINE="#define DFU_SUPPORT 1"
141 else
142   echo "Configured for bare system (no-DFU)"
143   ORIGIN=0x08000000
144   if test "$target" = "STM8S_DISCOVERY"; then
145     FLASH_SIZE=64k
146   else
147     FLASH_SIZE=128k
148   fi
149   DFU_DEFINE="#undef DFU_SUPPORT"
150 fi
151
152 if test "$target" = "STM32_PRIMER2"; then
153   FLASH_PAGE_SIZE=2048
154 else
155   FLASH_PAGE_SIZE=1024
156 fi
157
158 sed -e "s%@BOARD_MAKEFILE@%$BOARD_MAKEFILE%" \
159     -e "s%@DEBUG_MAKE_OPTION@%$DEBUG_MAKE_OPTION%" \
160         < Makefile.in > Makefile
161 sed -e "s/@ORIGIN@/$ORIGIN/" -e "s/@FLASH_SIZE@/$FLASH_SIZE/" \
162     -e "s/@FLASH_PAGE_SIZE@/$FLASH_PAGE_SIZE/" \
163         < gnuk.ld.in > gnuk.ld
164 sed -e "s/@DEBUG_DEFINE@/$DEBUG_DEFINE/" \
165     -e "s/@DFU_DEFINE@/$DFU_DEFINE/" \
166     -e "s/@FSIJ_DEFINE@/$FSIJ_DEFINE/" \
167     -e "s/@SERIAL_NUMBER_FOUR_BYTES@/$SERIAL_NUMBER_FOUR_BYTES/" \
168         < config.h.in > config.h
169 exit 0