1.6.6 IDE / USB build options

I'm running into a strange issue related to USB VID / PID.

I'm developing a product based on Arduino that is designed to work as a USB device. I was previously using a hacked core to allow for USB MIDI on the 32U4 / Leonardo platform but I've been experimenting with the ATSAMD21 / Zero boards for a couple of days. The new pluggable USB stuff is nice, it allows me to use my boards with the standard IDE and core and everything seems to work.

I've changed the USBCore.h to include my VID as follows:

#if USB_VID == 0x2341
#  if defined(USB_MANUFACTURER)
#    undef USB_MANUFACTURER
#  endif
#  define USB_MANUFACTURER "Arduino LLC"

# elif USB_VID == MY_VID
#	if defined(USB_MANUFACTURER)
#		undef USB_MANUFACTURER
#	endif
#	define USB_MANUFACTURER "MFG_NAME"
#elif !defined(USB_MANUFACTURER)
// Fall through to unknown if no manufacturer name was provided in a macro
#  define USB_MANUFACTURER "Unknown"
#endif

Where MY_VID is replaced with my USB VID, and MFG_NAME is replaced with the company name.

I've also edited boards.txt to add a device based on the Leonardo platform but with my VID and PID as follows:

myboard.build.mcu=atmega32u4
myboard.build.f_cpu=16000000L
myboard.build.vid=MY_VID
myboard.build.pid=MY_PID
myboard.build.usb_product="MFG_NAME"
myboard.build.board=AVR_LEONARDO
myboard.build.core=arduino
myboard.build.variant=leonardo
myboard.build.extra_flags={build.usb_flags}

The remainder of the board definition is identical to the standard Leonardo, including fuses, lock bits, protocol, etc.

If I compile and upload this to a 32U4, the device is enumerated correctly, the VID and PID are changed to my chosen values, and the manufacturer name is displayed. Everything works just fine.

Moving on to the Zero, I can change the VID and PID by tweaking USBCore.cpp in the samd folder (inside Arduino15) but the manufacturer name does not update. Additionally, even if I program the board as an Arduino Zero with USB MIDI selected the device name is still blank.

Here's the excerpt from boards.txt for the SAMD hardware:

# My G3 (Native USB Port)
# ---------------------------------------
my_g3.name=My G3 (Native USB Port)
my_g3.vid.0=0x16d0
my_g3.pid.0=0x08b0

my_g3.upload.tool=bossac
my_g3.upload.protocol=sam-ba
my_g3.upload.maximum_size=262144
my_g3.upload.use_1200bps_touch=true
my_g3.upload.wait_for_upload_port=true
my_g3.upload.native_usb=true
my_g3.build.mcu=cortex-m0plus
my_g3.build.f_cpu=48000000L
my_g3.build.usb_product="My G3"
my_g3.build.usb_manufacturer="My Company"
my_g3.build.board=SAMD_ZERO
my_g3.build.core=arduino
my_g3.build.extra_flags=-D__SAMD21G18A__ {build.usb_flags}
my_g3.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld
my_g3.build.openocdscript=openocd_scripts/arduino_zero.cfg
my_g3.build.variant=arduino_zero
my_g3.build.variant_system_lib=
my_g3.build.vid=MY_VID
my_g3.build.pid=MY_PID
my_g3.bootloader.tool=openocd
my_g3.bootloader.file=zero/samd21_sam_ba.bin

Am I missing something here? The VID and PID are being changed, but the SAMD core doesn't appear to populate the build.usb_product or build.usb_manufacturer correctly. The AVR core is working fine, though.