Fix for GNU/Linux emulation.
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 10 Oct 2017 07:40:23 +0000 (16:40 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Tue, 10 Oct 2017 07:40:23 +0000 (16:40 +0900)
ChangeLog
NEUG_USB_DEVICE_ID
chopstx
src/Makefile
src/configure

index 63b8bf8..e2387be 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2017-10-10  NIIBE Yutaka  <gniibe@fsij.org>
+
+       * src/configure: Allow not specifying VIDPID.
+       (prefix. exec_prefix, libexecdir): Add.
+
+       * src/Makefile (install): New target.
+
+       * NEUG_USB_DEVICE_ID (0000:0000): New.
+
+       * chopstx: Update to 1.5.
+
 2017-10-06  NIIBE Yutaka  <gniibe@fsij.org>
 
        * src/neug.ld.in (.stacks): Specify NOLOAD type.
index 6563a0e..5908a71 100644 (file)
@@ -1,4 +1,5 @@
 # VID:PID      bcdDev  Product_STRING  Vender_STRING
+0000:0000      0200    NeuG Emulation  Free Software Initiative of Japan
 234b:0004      0100    Fraucheky       Free Software Initiative of Japan
 234b:0001      0100    NeuG True RNG   Free Software Initiative of Japan
 ##########<TAB>        ##<TAB> ##########<TAB> #################
diff --git a/chopstx b/chopstx
index c08044e..96d2a81 160000 (submodule)
--- a/chopstx
+++ b/chopstx
@@ -1 +1 @@
-Subproject commit c08044e22bc5477b27820d1f526b49bdcf9ba436
+Subproject commit 96d2a81331a43c920045ba0d3850caffac85a123
index 6d4726f..622dc87 100644 (file)
@@ -43,3 +43,16 @@ build/neug.o: OPT = -O3 -g
 distclean:: clean
        -rm -f neug.ld config.h board.h config.mk \
               usb-strings.c.inc usb-vid-pid-ver.c.inc
+
+ifneq ($(EMULATION),)
+# By specifying DESTDIR on invocation of "make", you can install
+# program to different ROOT.
+
+# The variables prefix, exec_prefix, libexecdir are defined in
+# config.mk.
+
+install: build/neug
+       test -d "$(DESTDIR)$(libexecdir)" || mkdir -p "$(DESTDIR)$(libexecdir)"
+       install -c build/neug "$(DESTDIR)$(libexecdir)"
+
+endif
index e3581d6..4148d6b 100755 (executable)
@@ -43,6 +43,10 @@ debug=no
 sys1_compat=yes
 with_fraucheky=no
 with_index=none
+# For emulation
+prefix=/usr/local
+exec_prefix='${prefix}'
+libexecdir='${exec_prefix}/libexec'
 
 # Revision numbers
 if test -e ../.git; then
@@ -93,6 +97,15 @@ for option; do
     with_fraucheky=no ;;
   --with-index=*)
     with_index=$optarg ;;
+  #
+  # For emulation
+  #
+  --prefix=*)
+    prefix=optarg ;;
+  --exec-prefix=*)
+    exec_prefix=optarg ;;
+  --libexecdir=*)
+    libexecdir=optarg ;;
   *)
     echo "Unrecognized option \`$option'" >&2
     echo "Try \`$0 --help' for more information." >&2
@@ -140,11 +153,6 @@ EOF
   exit 0
 fi
 
-if test "$vidpid" = "none"; then
-  echo "Please specify Vendor ID and Product ID by --vidpid option." >&2
-  exit 1
-fi
-
 if ! test "$with_fraucheky" = "no"; then
   ../fraucheky/configure $with_fraucheky $with_index $REVISION $REVISION_CHOPSTX $REVISION_FRAUCHEKY
   enable_fraucheky=yes
@@ -190,7 +198,7 @@ STBEE)
   if test "$with_dfu" = "default"; then
     with_dfu=yes;
   fi  ;;
-STM8S_DISCOVERY)
+BLUE_PILL|STM8S_DISCOVERY)
   FLASH_SIZE=64
   ;;
 *)
@@ -219,6 +227,21 @@ else
   libs=""
 fi
 
+if test "$emulation" = "yes"; then
+  if test "$vidpid" = "none"; then
+    vidpid=0000:0000
+  else
+    echo "Please don't specify VID:PID for emulation at compile time;"
+    echo "It is a user who should specify VID:PID at run time."
+    exit 1
+  fi
+else
+  if test "$vidpid" = "none"; then
+    echo "Please specify Vendor ID and Product ID by --vidpid option." >&2
+  exit 1
+  fi
+fi
+
 # --with-dfu option
 if test "$with_dfu" = "yes"; then
   if test "$target" = "FST_01" -o "$target" = "FST_01G" \
@@ -228,7 +251,7 @@ if test "$with_dfu" = "yes"; then
   fi
   echo "Configured for DFU"
   ORIGIN=0x08003000
-  FLASH_SIZE=$(($FLASH_SIZE - 12))
+  FLASH_SIZE=$((FLASH_SIZE - 12))
   DFU_DEFINE="#define DFU_SUPPORT 1"
 else
   with_dfu=no
@@ -263,41 +286,46 @@ output_vid_pid_version () {
 }
 
 output_vendor_product_serial_strings () {
-  prefix=$1
+  name=$1
 
-  echo "static const uint8_t ${prefix}string_vendor[] = {"
+  echo "static const uint8_t ${name}string_vendor[] = {"
   echo "  ${#VENDOR}*2+2,                       /* bLength */"
   echo "  STRING_DESCRIPTOR,            /* bDescriptorType */"
   echo "  /* Manufacturer: \"$VENDOR\" */"
   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 "static const uint8_t ${name}string_product[] = {"
   echo "  ${#PRODUCT}*2+2,                      /* bLength */"
   echo "  STRING_DESCRIPTOR,            /* bDescriptorType */"
   echo "  /* Product name: \"$PRODUCT\" */"
   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
+  if test -n "$name"; then
   echo
-  echo "static uint8_t ${prefix}string_serial[] = {"
+  echo "static uint8_t ${name}string_serial[] = {"
   echo "  ${#SERIALNO}*2+2+16,                  /* bLength */"
   echo "  STRING_DESCRIPTOR,            /* bDescriptorType */"
   echo "  /* Serial number: \"$SERIALNO\" */"
   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,"
+  if test "$emulation" = "yes"; then
+    echo "  'E', 0, 'M', 0, 'U', 0, 'L', 0,"
+    echo "  'A', 0, 'T', 0, 'E', 0, 'D', 0,"
+  else
+    echo "  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,"
+    echo "  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,"
+  fi
   echo '};'
   echo
-  echo "static const uint8_t ${prefix}revision_detail[] = {"
+  echo "static const uint8_t ${name}revision_detail[] = {"
   echo "  ${#REVISION}*2+2,                     /* bLength */"
   echo "  STRING_DESCRIPTOR,            /* 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 "static const uint8_t ${name}config_options[] = {"
   echo "  ${#CONFIG}*2+2,                       /* bLength */"
   echo "  STRING_DESCRIPTOR,            /* bDescriptorType */"
   echo "  /* configure options: \"$CONFIG\" */"
@@ -345,6 +373,11 @@ fi
  echo "LIBS=$libs";
  echo "ENABLE_FRAUCHEKY=$enable_fraucheky";
  echo "ENABLE_OUTPUT_HEX=$enable_hexoutput"
+ if test "$emulation" = "yes"; then
+   echo "prefix=$prefix"
+   echo "exec_prefix=$exec_prefix"
+   echo "libexecdir=$libexecdir"
+ fi
 )      > config.mk
 sed -e "s/@ORIGIN@/$ORIGIN/" -e "s/@FLASH_SIZE@/$FLASH_SIZE/" \
     -e "s/@MEMORY_SIZE@/$MEMORY_SIZE/" \