Update chopstx and fraucheky
[gnuk/neug.git] / src / configure
index c4f1f3f..cac7291 100755 (executable)
@@ -1,5 +1,8 @@
 #! /bin/bash
 
 #! /bin/bash
 
+# This is bash which supports ANSI-C Quoting
+nl=$'\n'
+
 #
 # This file is *NOT* generated by GNU Autoconf, but written by NIIBE Yutaka
 #
 #
 # This file is *NOT* generated by GNU Autoconf, but written by NIIBE Yutaka
 #
@@ -23,9 +26,9 @@
 
 # Default settings
 help=no
 
 # Default settings
 help=no
+vidpid=none
 target=FST_01
 verbose=no
 target=FST_01
 verbose=no
-vidpid=none
 with_dfu=default
 debug=no
 sys1_compat=yes
 with_dfu=default
 debug=no
 sys1_compat=yes
@@ -53,12 +56,12 @@ for option; do
   case $option in
   -h | --help)
     help=yes ;;
   case $option in
   -h | --help)
     help=yes ;;
-  --target=*)
-    target=$optarg ;;
   -v | --verbose)
     verbose=yes ;;
   --vidpid=*)
     vidpid=$optarg ;;
   -v | --verbose)
     verbose=yes ;;
   --vidpid=*)
     vidpid=$optarg ;;
+  --target=*)
+    target=$optarg ;;
   --enable-sys1-compat)
     sys1_compat=yes ;;
   --disable-sys1-compat)
   --enable-sys1-compat)
     sys1_compat=yes ;;
   --disable-sys1-compat)
@@ -91,7 +94,7 @@ Configuration:
   -h, --help           display this help and exit      [no]
   --vidpid=VID:PID     specify vendor/product ID       [<NONE>]
   --target=TARGET      specify target                  [FST_01]
   -h, --help           display this help and exit      [no]
   --vidpid=VID:PID     specify vendor/product ID       [<NONE>]
   --target=TARGET      specify target                  [FST_01]
-                       supported targes are:
+                       supported targets are:
                           FST_01
                           STM8S_DISCOVERY
                           OLIMEX_STM32_H103
                           FST_01
                           STM8S_DISCOVERY
                           OLIMEX_STM32_H103
@@ -100,7 +103,9 @@ Configuration:
                           STBEE_MINI
                           MAPLE_MINI
                           CQ_STARM
                           STBEE_MINI
                           MAPLE_MINI
                           CQ_STARM
-                          FST_01_00  (unreleased version with 8MHz XTAL)
+                          ST_DONGLE
+                          ST_NUCLEO_F103
+                          FST_01_00 (unreleased version with 8MHz XTAL)
   --enable-sys1-compat enable SYS 1.0 compatibility    [yes]
                           executable is target dependent
   --disable-sys1-compat        disable SYS 1.0 compatibility   [no]
   --enable-sys1-compat enable SYS 1.0 compatibility    [yes]
                           executable is target dependent
   --disable-sys1-compat        disable SYS 1.0 compatibility   [no]
@@ -131,7 +136,6 @@ else
   FRAUCHEKY_MSC_DEFINE="#undef MSC_INTERFACE_NO"
 fi
 
   FRAUCHEKY_MSC_DEFINE="#undef MSC_INTERFACE_NO"
 fi
 
-TARGET_DEFINE="#define BOARD_$target 1"
 BOARD_HEADER_FILE=board-`echo $target | tr '_[:upper:]' '-[:lower:]'`.h
 echo Header file is: $BOARD_HEADER_FILE
 ln -sf ../chopstx/board/$BOARD_HEADER_FILE board.h
 BOARD_HEADER_FILE=board-`echo $target | tr '_[:upper:]' '-[:lower:]'`.h
 echo Header file is: $BOARD_HEADER_FILE
 ln -sf ../chopstx/board/$BOARD_HEADER_FILE board.h
@@ -170,14 +174,21 @@ esac
 
 # --with-dfu option
 if test "$with_dfu" = "yes"; then
 
 # --with-dfu option
 if test "$with_dfu" = "yes"; then
+  if test "$target" = "FST_01" -o "$target" = "FST_01_00"; then
+      echo "FST-01 doesn't have DFU loader, you should not use --with-dfu."
+      exit 1
+  fi
   echo "Configured for DFU"
   ORIGIN=0x08003000
   FLASH_SIZE=`expr $FLASH_SIZE - 12`
   DFU_DEFINE="#define DFU_SUPPORT 1"
   echo "Configured for DFU"
   ORIGIN=0x08003000
   FLASH_SIZE=`expr $FLASH_SIZE - 12`
   DFU_DEFINE="#define DFU_SUPPORT 1"
+  HEXOUTPUT_MAKE_OPTION="ENABLE_OUTPUT_HEX=yes"
 else
 else
+  with_dfu=no
   echo "Configured for bare system (no-DFU)"
   ORIGIN=0x08000000
   DFU_DEFINE="#undef DFU_SUPPORT"
   echo "Configured for bare system (no-DFU)"
   ORIGIN=0x08000000
   DFU_DEFINE="#undef DFU_SUPPORT"
+  HEXOUTPUT_MAKE_OPTION=""
 fi
 
 ### !!! Replace following string of "FSIJ" to yours !!! ####
 fi
 
 ### !!! Replace following string of "FSIJ" to yours !!! ####
@@ -186,11 +197,23 @@ SERIALNO="FSIJ-`cat ../VERSION | sed -e 's%^[^/]*/%%'`-"
 SERIALNO_STR_LEN_DEFINE="#define SERIALNO_STR_LEN ${#SERIALNO}"
 
 
 SERIALNO_STR_LEN_DEFINE="#define SERIALNO_STR_LEN ${#SERIALNO}"
 
 
-CONFIG="$target:dfu=$with_dfu"
+if test "$sys1_compat" = "yes"; then
+  CONFIG="$target:dfu=$with_dfu"
+else
+  if test "$with_dfu" = "yes"; then
+    echo "Common binary can't support DFU loader, don't use --with-dfu."
+    exit 1
+  fi
+  # Override settings for common binary.  Safer side.
+  FLASH_PAGE_SIZE=2048
+  FLASH_SIZE=128
+  MEMORY_SIZE=20
+  CONFIG="common"
+fi
 
 output_vid_pid_version () {
 
 output_vid_pid_version () {
-  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"
+  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  */\\${nl}  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"
 }
 
 output_vendor_product_serial_strings () {
 }
 
 output_vendor_product_serial_strings () {
@@ -200,14 +223,14 @@ output_vendor_product_serial_strings () {
   echo "  ${#VENDOR}*2+2,                      /* bLength */"
   echo "  USB_STRING_DESCRIPTOR_TYPE,  /* bDescriptorType */"
   echo "  /* Manufacturer: \"$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 $VENDOR | sed -e "s/\(........\)/\1\\${nl}/g" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "/^  ./s/ $//p"
   echo '};'
   echo
   echo "static const uint8_t ${prefix}string_product[] = {"
   echo "  ${#PRODUCT}*2+2,                     /* bLength */"
   echo "  USB_STRING_DESCRIPTOR_TYPE,  /* bDescriptorType */"
   echo "  /* Product name: \"$PRODUCT\" */"
   echo '};'
   echo
   echo "static const uint8_t ${prefix}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 $PRODUCT | sed -e "s/\(........\)/\1\\${nl}/g" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "/^  ./s/ $//p"
   echo '};'
 
   if test -n "$prefix"; then
   echo '};'
 
   if test -n "$prefix"; then
@@ -216,10 +239,24 @@ output_vendor_product_serial_strings () {
   echo "  ${#SERIALNO}*2+2+16,                 /* bLength */"
   echo "  USB_STRING_DESCRIPTOR_TYPE,  /* bDescriptorType */"
   echo "  /* Serial number: \"$SERIALNO\" */"
   echo "  ${#SERIALNO}*2+2+16,                 /* bLength */"
   echo "  USB_STRING_DESCRIPTOR_TYPE,  /* bDescriptorType */"
   echo "  /* Serial number: \"$SERIALNO\" */"
-  echo $SERIALNO | sed -n -e "s/\(........\)/\1\n/gp" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "s/ $//p"
+  echo $SERIALNO | sed -e "s/\(........\)/\1\\${nl}/g" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "/^  ./s/ $//p"
   echo "  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,"
   echo "  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,"
   echo '};'
   echo "  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,"
   echo "  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,"
   echo '};'
+  echo
+  echo "static const uint8_t ${prefix}revision_detail[] = {"
+  echo "  ${#REVISION}*2+2,                    /* bLength */"
+  echo "  USB_STRING_DESCRIPTOR_TYPE,  /* bDescriptorType */"
+  echo "  /* revision detail: \"$REVISION\" */"
+  echo $REVISION | sed -e "s/\(........\)/\1\\${nl}/g" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "/^  ./s/ $//p"
+  echo '};'
+  echo
+  echo "static const uint8_t ${prefix}config_options[] = {"
+  echo "  ${#CONFIG}*2+2,                      /* bLength */"
+  echo "  USB_STRING_DESCRIPTOR_TYPE,  /* bDescriptorType */"
+  echo "  /* configure options: \"$CONFIG\" */"
+  echo $CONFIG | sed -e "s/\(........\)/\1\\${nl}/g" | sed -n -e "s/\(.\)/'\1', 0, /g" -e "s/^/  /" -e "/^  ./s/ $//p"
+  echo '};'
   fi
 }
 
   fi
 }
 
@@ -227,22 +264,7 @@ if !(IFS=" "
   while read VIDPID VERSION PRODUCT VENDOR; do
     if test "$vidpid" = "$VIDPID"; then
       output_vid_pid_version > usb-vid-pid-ver.c.inc
   while read VIDPID VERSION PRODUCT VENDOR; do
     if test "$vidpid" = "$VIDPID"; then
       output_vid_pid_version > usb-vid-pid-ver.c.inc
-      (output_vendor_product_serial_strings neug_
-       echo
-       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 '};'
-       ) >usb-strings.c.inc
+      output_vendor_product_serial_strings neug_ >usb-strings.c.inc
       exit 0
     elif test "$with_fraucheky" = "$VIDPID"; then
       output_vid_pid_version > fraucheky-vid-pid-ver.c.inc
       exit 0
     elif test "$with_fraucheky" = "$VIDPID"; then
       output_vid_pid_version > fraucheky-vid-pid-ver.c.inc
@@ -268,13 +290,13 @@ fi
 
 sed -e "s%@HAVE_SYS_H@%$have_sys_h%" \
     -e "s%@ENABLE_FRAUCHEKY@%$ENABLE_FRAUCHEKY%" \
 
 sed -e "s%@HAVE_SYS_H@%$have_sys_h%" \
     -e "s%@ENABLE_FRAUCHEKY@%$ENABLE_FRAUCHEKY%" \
+    -e "s%@HEXOUTPUT_MAKE_OPTION@%$HEXOUTPUT_MAKE_OPTION%" \
        < 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/" \
        < 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/@TARGET_DEFINE@/$TARGET_DEFINE/" \
     -e "s/@SERIALNO_STR_LEN_DEFINE@/$SERIALNO_STR_LEN_DEFINE/" \
     -e "s/@FRAUCHEKY_DEFINE@/$FRAUCHEKY_DEFINE/" \
     -e "s/@FRAUCHEKY_MSC_DEFINE@/$FRAUCHEKY_MSC_DEFINE/" \
     -e "s/@SERIALNO_STR_LEN_DEFINE@/$SERIALNO_STR_LEN_DEFINE/" \
     -e "s/@FRAUCHEKY_DEFINE@/$FRAUCHEKY_DEFINE/" \
     -e "s/@FRAUCHEKY_MSC_DEFINE@/$FRAUCHEKY_MSC_DEFINE/" \