Use chopstx
[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=FST_01
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                  [FST_01]
69                         supported targes are:
70                            FST_01
71                            STM8S_DISCOVERY
72   --with-dfu            build image for DFU             [<target specific>]
73 EOF
74   exit 0
75 fi
76
77 if test "$vidpid" = "none"; then
78   echo "Please specify Vendor ID and Product ID by --vidpid option." 
79   exit 1
80 fi
81
82 # BOARD_DIR=../boards/$target
83 # if test -d $BOARD_DIR; then
84 #   echo "Configured for target: $target"
85 # else
86 #   echo "Unsupported target \`$target'" >&2
87 #   exit 1
88 # fi
89
90 # Flash page size in byte
91 FLASH_PAGE_SIZE=1024
92 # Flash memory size in KiB
93 FLASH_SIZE=128
94 # Memory size in KiB
95 MEMORY_SIZE=20
96
97 # Settings for TARGET
98 case $target in
99 CQ_STARM|STBEE_MINI)
100   if test "$with_dfu" = "default"; then
101     with_dfu=yes;
102   fi  ;;
103 STM32_PRIMER2)
104   FLASH_PAGE_SIZE=2048
105   FLASH_SIZE=512
106   MEMORY_SIZE=64
107   ;;
108 STBEE)
109   FLASH_PAGE_SIZE=2048
110   FLASH_SIZE=512
111   MEMORY_SIZE=64
112   if test "$with_dfu" = "default"; then
113     with_dfu=yes;
114   fi  ;;
115 STM8S_DISCOVERY)
116   FLASH_SIZE=64
117   ;;
118 *)
119   ;;
120 esac
121
122 # --with-dfu option
123 if test "$with_dfu" = "yes"; then
124   echo "Configured for DFU"
125   ORIGIN=0x08003000
126   FLASH_SIZE=`expr $FLASH_SIZE - 12`
127   DFU_DEFINE="#define DFU_SUPPORT 1"
128 else
129   echo "Configured for bare system (no-DFU)"
130   ORIGIN=0x08000000
131   DFU_DEFINE="#undef DFU_SUPPORT"
132 fi
133
134 REVISION=`git describe --dirty="-modified"` 
135 CONFIG="$target:dfu=$with_dfu"
136
137 if !(IFS="      "
138   while read VIDPID VERSION PRODUCT VENDOR; do
139     if test "$vidpid" = "$VIDPID"; then
140       (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"
141        echo $VERSION | sed -n -e "s%^\([0-9a-f][0-9a-f]\)\([0-9a-f][0-9a-f]\)$%  0x\2, 0x\1, /* bcdDevice  */%p"
142       ) > usb-vid-pid-ver.c.inc
143       (echo 'static const uint8_t neug_string_vendor[] = {'
144        echo "  ${#VENDOR}*2+2,                  /* bLength */"
145        echo "  USB_STRING_DESCRIPTOR_TYPE,      /* bDescriptorType */"
146        echo "  /* Manufacturer: \"$VENDOR\" */"
147        echo $VENDOR | sed -n -e "s/\(........\)/\1\n/gp" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "s/ $//p"
148        echo '};'
149        echo
150        echo 'static const uint8_t neug_string_product[] = {'
151        echo "  ${#PRODUCT}*2+2,                 /* bLength */"
152        echo "  USB_STRING_DESCRIPTOR_TYPE,      /* bDescriptorType */"
153        echo "  /* Product name: \"$PRODUCT\" */"
154        echo $PRODUCT | sed -n -e "s/\(........\)/\1\n/gp" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "s/ $//p"
155        echo '};'
156        echo
157        echo '#ifdef USB_STRINGS_FOR_NEUG'
158        echo 'static const uint8_t neug_revision_detail[] = {'
159        echo "  ${#REVISION}*2+2,                        /* bLength */"
160        echo "  USB_STRING_DESCRIPTOR_TYPE,      /* bDescriptorType */"
161        echo "  /* revision detail: \"$REVISION\" */"
162        echo $REVISION | sed -n -e "s/\(........\)/\1\n/gp" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "s/ $//p"
163        echo '};'
164        echo
165        echo 'static const uint8_t neug_config_options[] = {'
166        echo "  ${#CONFIG}*2+2,                  /* bLength */"
167        echo "  USB_STRING_DESCRIPTOR_TYPE,      /* bDescriptorType */"
168        echo "  /* configure options: \"$CONFIG\" */"
169        echo $CONFIG | sed -n -e "s/\(........\)/\1\n/gp" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "s/ $//p"
170        echo '};'
171        echo '#endif'
172        ) >usb-strings.c.inc
173       exit 0
174     fi
175   done; exit 1) < ../NEUG_USB_DEVICE_ID
176 then
177   echo "Please specify valid Vendor ID and Product ID." 
178   echo "Check ../NEUG_USB_DEVICE_ID."
179   exit 1
180 fi
181
182 sed -e "s/@ORIGIN@/$ORIGIN/" -e "s/@FLASH_SIZE@/$FLASH_SIZE/" \
183     -e "s/@MEMORY_SIZE@/$MEMORY_SIZE/" \
184     -e "s/@FLASH_PAGE_SIZE@/$FLASH_PAGE_SIZE/" \
185         < neug.ld.in > neug.ld
186 sed -e "s/@DFU_DEFINE@/$DFU_DEFINE/" \
187     -e "s/@FLASH_PAGE_SIZE@/$FLASH_PAGE_SIZE/" \
188         < config.h.in > config.h
189 exit 0