aboutsummaryrefslogtreecommitdiff
path: root/example-fraucheky/configure
blob: 7bc023cc58e1e2cc79bc4e3da9dcaf6776ce3996 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#! /bin/bash

# This is bash which supports ANSI-C Quoting
nl=$'\n'

# Default settings
help=no
vidpid=none
verbose=no
debug=no
with_fraucheky=yes
with_index=./INDEX.HTM

if test -d ../.git; then
  REVISION=`git describe --dirty="-modified"`
  REVISION_CHOPSTX=`cd .. && git describe --dirty="-modified"`
  REVISION_FRAUCHEKY=`cd ../../fraucheky &&git describe --dirty="-modified"`
else
  REVISION=`cat ../VERSION`
  REVISION_CHOPSTX=`cat ../VERSION`
  REVISION_FRAUCHEKY=`cat ../../fraucheky/VERSION`
fi

# Process each option
for option; do
  case $option in
  *=*)	optarg=`expr "X$option" : '[^=]*=\(.*\)'` ;;
  *)	optarg=yes ;;
  esac

  case $option in
  -h | --help)
    help=yes ;;
  -v | --verbose)
    verbose=yes ;;
  --vidpid=*)
    vidpid=$optarg ;;
  *)
    echo "Unrecognized option \`$option'" >&2
    echo "Try \`$0 --help' for more information." >&2
    exit 1
    ;;
  esac
done

if test "$help" = "yes"; then
  cat <<EOF
Usage: $0 [OPTION]...

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>]
  --with-index=INDEX	specify INDEX file		[none]
EOF
  exit 0
fi

if test "$vidpid" = "none"; then
  echo "Please specify Vendor ID and Product ID by --vidpid option." >&2
  exit 1
fi

VIDPID="$vidpid"
VERSION="0100"
PRODUCT="Fraucheky"
VENDOR="Free Software Initiative of Japan"
SERIALNO="FSIJ-`cat ../VERSION | sed -e 's%^[^/]*/%%'`-"


../../fraucheky/configure "$vidpid" $with_index $REVISION $REVISION_CHOPSTX $REVISION_FRAUCHEKY

ENABLE_FRAUCHEKY=""
FRAUCHEKY_DEFINE="#define FRAUCHEKY_SUPPORT 1"
FRAUCHEKY_MSC_DEFINE="#define MSC_INTERFACE_NO    2"
if ! test -f ../../fraucheky/build.mk; then
  echo "'fraucheky' not found" >&2
  exit 1
fi

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  */\\${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 () {
  prefix=$1

  echo "static const uint8_t ${prefix}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 "  ${#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
  echo
  echo "static uint8_t ${prefix}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,"
  echo '};'
  echo
  echo "static const uint8_t ${prefix}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 "  ${#CONFIG}*2+2,			/* bLength */"
  echo "  STRING_DESCRIPTOR,    	/* 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
}

output_vid_pid_version > fraucheky-vid-pid-ver.c.inc
output_vendor_product_serial_strings >fraucheky-usb-strings.c.inc

sed -e "s/@FRAUCHEKY_DEFINE@/$FRAUCHEKY_DEFINE/" \
    -e "s/@FRAUCHEKY_MSC_DEFINE@/$FRAUCHEKY_MSC_DEFINE/" \
	< config.h.in > config.h
exit 0