Gnuk->NeuG
[gnuk/neug.git] / src / configure
index 0433c34..293ddbb 100755 (executable)
@@ -3,7 +3,7 @@
 #
 # This file is *NOT* generated by GNU Autoconf, but written by NIIBE Yutaka
 #
-# Copyright (C) 2010, 2011 Free Software Initiative of Japan
+# Copyright (C) 2010, 2011, 2012 Free Software Initiative of Japan
 #
 # This file is a part of NeuG, a Random Number Generator implementation.
 #
@@ -24,6 +24,7 @@
 help=no
 target=STBEE_MINI
 verbose=no
+vidpid=none
 with_dfu=default
 debug=no
 
@@ -41,6 +42,8 @@ for option; do
     target=$optarg ;;
   -v | --verbose)
     verbose=yes ;;
+  --vidpid=*)
+    vidpid=$optarg ;;
   --with-dfu)
     with_dfu=yes ;;
   --without-dfu)
@@ -61,15 +64,23 @@ Defaults for the options are specified in brackets.
 
 Configuration:
   -h, --help           display this help and exit      [no]
+  --vidpid=VID:PID     specify vendor/product ID       [<NONE>]
   --target=TARGET      specify target                  [STBEE_MINI]
                        supported targes are:
                           OLIMEX_STM32_H103
                           STBEE_MINI
+                          CQ_STARM
+                          STBEE
   --with-dfu           build image for DFU             [<target specific>]
 EOF
   exit 0
 fi
 
+if test "$vidpid" = "none"; then
+  echo "Please specify Vendor ID and Product ID by --vidpid option." 
+  exit 1
+fi
+
 BOARD_DIR=../boards/$target
 if test -d $BOARD_DIR; then
   echo "Configured for target: $target"
@@ -80,8 +91,10 @@ fi
 
 # Flash page size in byte
 FLASH_PAGE_SIZE=1024
-# Flash memory size in KB
+# Flash memory size in KiB
 FLASH_SIZE=128
+# Memory size in KiB
+MEMORY_SIZE=20
 
 # Settings for TARGET
 case $target in
@@ -92,10 +105,12 @@ CQ_STARM|STBEE_MINI)
 STM32_PRIMER2)
   FLASH_PAGE_SIZE=2048
   FLASH_SIZE=512
+  MEMORY_SIZE=64
   ;;
 STBEE)
   FLASH_PAGE_SIZE=2048
   FLASH_SIZE=512
+  MEMORY_SIZE=64
   if test "$with_dfu" = "default"; then
     with_dfu=yes;
   fi  ;;
@@ -118,11 +133,61 @@ else
   DFU_DEFINE="#undef DFU_SUPPORT"
 fi
 
+REVISION=`git describe --dirty="-modified"` 
+CONFIG="$target:dfu=$with_dfu"
+
+if !(IFS="     "
+  while read VIDPID VERSION PRODUCT VENDOR; do
+    if test "$vidpid" = "$VIDPID"; then
+      (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"
+       echo $VERSION | sed -n -e "s%^\([0-9a-f][0-9a-f]\)\([0-9a-f][0-9a-f]\)$%  0x\2, 0x\1, /* bcdDevice  */%p"
+      ) > usb-vid-pid-ver.c.inc
+      (echo 'static const uint8_t neug_string_vendor[] = {'
+       echo "  ${#VENDOR}*2+2,                 /* bLength */"
+       echo "  USB_STRING_DESCRIPTOR_TYPE,     /* bDescriptorType */"
+       echo "  /* Manufacturer: \"$VENDOR\" */"
+       echo $VENDOR | sed -n -e "s/\(........\)/\1\n/gp" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "s/ $//p"
+       echo '};'
+       echo
+       echo 'static const uint8_t neug_string_product[] = {'
+       echo "  ${#PRODUCT}*2+2,                        /* bLength */"
+       echo "  USB_STRING_DESCRIPTOR_TYPE,     /* bDescriptorType */"
+       echo "  /* Product name: \"$PRODUCT\" */"
+       echo $PRODUCT | sed -n -e "s/\(........\)/\1\n/gp" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "s/ $//p"
+       echo '};'
+       echo
+       echo '#ifdef USB_STRINGS_FOR_NEUG'
+       echo 'static const uint8_t neug_revision_detail[] = {'
+       echo "  ${#REVISION}*2+2,                       /* bLength */"
+       echo "  USB_STRING_DESCRIPTOR_TYPE,     /* bDescriptorType */"
+       echo "  /* revision detail: \"$REVISION\" */"
+       echo $REVISION | sed -n -e "s/\(........\)/\1\n/gp" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "s/ $//p"
+       echo '};'
+       echo
+       echo 'static const uint8_t neug_config_options[] = {'
+       echo "  ${#CONFIG}*2+2,                 /* bLength */"
+       echo "  USB_STRING_DESCRIPTOR_TYPE,     /* bDescriptorType */"
+       echo "  /* configure options: \"$CONFIG\" */"
+       echo $CONFIG | sed -n -e "s/\(........\)/\1\n/gp" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "s/ $//p"
+       echo '};'
+       echo '#endif'
+       ) >usb-strings.c.inc
+      exit 0
+    fi
+  done; exit 1) < ../NEUG_USB_DEVICE_ID
+then
+  echo "Please specify valid Vendor ID and Product ID." 
+  echo "Check ../NEUG_USB_DEVICE_ID."
+  exit 1
+fi
+
 sed -e "s%@BOARD_DIR@%$BOARD_DIR%" \
        < Makefile.in > Makefile
 sed -e "s/@ORIGIN@/$ORIGIN/" -e "s/@FLASH_SIZE@/$FLASH_SIZE/" \
+    -e "s/@MEMORY_SIZE@/$MEMORY_SIZE/" \
     -e "s/@FLASH_PAGE_SIZE@/$FLASH_PAGE_SIZE/" \
        < neug.ld.in > neug.ld
 sed -e "s/@DFU_DEFINE@/$DFU_DEFINE/" \
+    -e "s/@FLASH_PAGE_SIZE@/$FLASH_PAGE_SIZE/" \
        < config.h.in > config.h
 exit 0