change for FST-01 error LED
[gnuk/neug.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, 2012 Free Software Initiative of Japan
7 #
8 # This file is a part of NeuG, a Random Number Generator implementation.
9 #
10 # NeuG is free software: you can redistribute it and/or modify it
11 # under the terms of the GNU General Public License as published by
12 # the Free Software Foundation, either version 3 of the License, or
13 # (at your option) any later version.
14 #
15 # NeuG is distributed in the hope that it will be useful, but WITHOUT
16 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17 # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
18 # License for more details.
19 #
20 # You should have received a copy of the GNU General Public License
21 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
22
23 # Default settings
24 help=no
25 target=STBEE_MINI
26 verbose=no
27 vidpid=none
28 with_dfu=default
29 debug=no
30
31 # Process each option
32 for option; do
33   case $option in
34   *=*)  optarg=`expr "X$option" : '[^=]*=\(.*\)'` ;;
35   *)    optarg=yes ;;
36   esac
37
38   case $option in
39   -h | --help)
40     help=yes ;;
41   --target=*)
42     target=$optarg ;;
43   -v | --verbose)
44     verbose=yes ;;
45   --vidpid=*)
46     vidpid=$optarg ;;
47   --with-dfu)
48     with_dfu=yes ;;
49   --without-dfu)
50     with_dfu=no ;;
51   *)
52     echo "Unrecognized option \`$option'" >&2
53     echo "Try \`$0 --help' for more information." >&2
54     exit 1
55     ;;
56   esac
57 done
58
59 if test "$help" = "yes"; then
60   cat <<EOF
61 Usage: $0 [OPTION]...
62
63 Defaults for the options are specified in brackets.
64
65 Configuration:
66   -h, --help            display this help and exit      [no]
67   --vidpid=VID:PID      specify vendor/product ID       [<NONE>]
68   --target=TARGET       specify target                  [STBEE_MINI]
69                         supported targes are:
70                            OLIMEX_STM32_H103
71                            STBEE_MINI
72                            CQ_STARM
73                            STBEE
74   --with-dfu            build image for DFU             [<target specific>]
75 EOF
76   exit 0
77 fi
78
79 if test "$vidpid" = "none"; then
80   echo "Please specify Vendor ID and Product ID by --vidpid option." 
81   exit 1
82 fi
83
84 BOARD_DIR=../boards/$target
85 if test -d $BOARD_DIR; then
86   echo "Configured for target: $target"
87 else
88   echo "Unsupported target \`$target'" >&2
89   exit 1
90 fi
91
92 # Flash page size in byte
93 FLASH_PAGE_SIZE=1024
94 # Flash memory size in KiB
95 FLASH_SIZE=128
96 # Memory size in KiB
97 MEMORY_SIZE=20
98
99 # Settings for TARGET
100 case $target in
101 CQ_STARM|STBEE_MINI)
102   if test "$with_dfu" = "default"; then
103     with_dfu=yes;
104   fi  ;;
105 STM32_PRIMER2)
106   FLASH_PAGE_SIZE=2048
107   FLASH_SIZE=512
108   MEMORY_SIZE=64
109   ;;
110 STBEE)
111   FLASH_PAGE_SIZE=2048
112   FLASH_SIZE=512
113   MEMORY_SIZE=64
114   if test "$with_dfu" = "default"; then
115     with_dfu=yes;
116   fi  ;;
117 STM8S_DISCOVERY)
118   FLASH_SIZE=64
119   ;;
120 *)
121   ;;
122 esac
123
124 # --with-dfu option
125 if test "$with_dfu" = "yes"; then
126   echo "Configured for DFU"
127   ORIGIN=0x08003000
128   FLASH_SIZE=`expr $FLASH_SIZE - 12`
129   DFU_DEFINE="#define DFU_SUPPORT 1"
130 else
131   echo "Configured for bare system (no-DFU)"
132   ORIGIN=0x08000000
133   DFU_DEFINE="#undef DFU_SUPPORT"
134 fi
135
136 REVISION=`git describe --dirty="-modified"` 
137 CONFIG="$target:dfu=$with_dfu"
138
139 if !(IFS="      "
140   while read VIDPID VERSION PRODUCT VENDOR; do
141     if test "$vidpid" = "$VIDPID"; then
142       (echo $VIDPID | sed -n -e "s%^\([0-9a-f][0-9a-f]\)\([0-9a-f][0-9a-f]\):\([0-9a-f][0-9a-f]\)\([0-9a-f][0-9a-f]\)$%  0x\2, 0x\1, /* idVendor  */\n  0x\4, 0x\3, /* idProduct */%p"
143        echo $VERSION | sed -n -e "s%^\([0-9a-f][0-9a-f]\)\([0-9a-f][0-9a-f]\)$%  0x\2, 0x\1, /* bcdDevice  */%p"
144       ) > usb-vid-pid-ver.c.inc
145       (echo 'static const uint8_t neug_string_vendor[] = {'
146        echo "  ${#VENDOR}*2+2,                  /* bLength */"
147        echo "  USB_STRING_DESCRIPTOR_TYPE,      /* bDescriptorType */"
148        echo "  /* Manufacturer: \"$VENDOR\" */"
149        echo $VENDOR | sed -n -e "s/\(........\)/\1\n/gp" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "s/ $//p"
150        echo '};'
151        echo
152        echo 'static const uint8_t neug_string_product[] = {'
153        echo "  ${#PRODUCT}*2+2,                 /* bLength */"
154        echo "  USB_STRING_DESCRIPTOR_TYPE,      /* bDescriptorType */"
155        echo "  /* Product name: \"$PRODUCT\" */"
156        echo $PRODUCT | sed -n -e "s/\(........\)/\1\n/gp" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "s/ $//p"
157        echo '};'
158        echo
159        echo '#ifdef USB_STRINGS_FOR_NEUG'
160        echo 'static const uint8_t neug_revision_detail[] = {'
161        echo "  ${#REVISION}*2+2,                        /* bLength */"
162        echo "  USB_STRING_DESCRIPTOR_TYPE,      /* bDescriptorType */"
163        echo "  /* revision detail: \"$REVISION\" */"
164        echo $REVISION | sed -n -e "s/\(........\)/\1\n/gp" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "s/ $//p"
165        echo '};'
166        echo
167        echo 'static const uint8_t neug_config_options[] = {'
168        echo "  ${#CONFIG}*2+2,                  /* bLength */"
169        echo "  USB_STRING_DESCRIPTOR_TYPE,      /* bDescriptorType */"
170        echo "  /* configure options: \"$CONFIG\" */"
171        echo $CONFIG | sed -n -e "s/\(........\)/\1\n/gp" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "s/ $//p"
172        echo '};'
173        echo '#endif'
174        ) >usb-strings.c.inc
175       exit 0
176     fi
177   done; exit 1) < ../NEUG_USB_DEVICE_ID
178 then
179   echo "Please specify valid Vendor ID and Product ID." 
180   echo "Check ../NEUG_USB_DEVICE_ID."
181   exit 1
182 fi
183
184 sed -e "s%@BOARD_DIR@%$BOARD_DIR%" \
185         < Makefile.in > Makefile
186 sed -e "s/@ORIGIN@/$ORIGIN/" -e "s/@FLASH_SIZE@/$FLASH_SIZE/" \
187     -e "s/@MEMORY_SIZE@/$MEMORY_SIZE/" \
188     -e "s/@FLASH_PAGE_SIZE@/$FLASH_PAGE_SIZE/" \
189         < neug.ld.in > neug.ld
190 sed -e "s/@DFU_DEFINE@/$DFU_DEFINE/" \
191     -e "s/@FLASH_PAGE_SIZE@/$FLASH_PAGE_SIZE/" \
192         < config.h.in > config.h
193 exit 0