Hi Levente,

   no need for any action on your part.  I see that the Serial Port primitives are essentially unimplemented on Mac OS so it is trivial to provide null implementations for the "ByName" ones.

On Fri, Mar 16, 2018 at 3:46 PM, Eliot Miranda <eliot.miranda@gmail.com> wrote:
Hi Levente,

    when I try and build on Mac OS X I get this:

  "_serialPortOpenByName", referenced from:
      _primitiveSerialPortOpenByName in SerialPlugin.lib(SerialPlugin.o)
  "_serialPortReadIntoByName", referenced from:
      _primitiveSerialPortReadByName in SerialPlugin.lib(SerialPlugin.o)
  "_serialPortWriteFromByName", referenced from:
      _primitiveSerialPortWriteByName in SerialPlugin.lib(SerialPlugin.o)

The implementations are missing in both platforms/Mac OS/plugins/SerialPlugin/sqMacSerialPort.c and platforms/iOS/plugins/SerialPlugin/sqMacSerialPort.c.  They are there in platforms/unix/plugins/SerialPlugin/sqUnixSerial.c and platforms/win32/plugins/SerialPlugin/sqWin32SerialPort.c.

:-(


On Sat, Mar 10, 2018 at 1:58 PM, <commits@source.squeak.org> wrote:

Levente Uzonyi uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-ul.2354.mcz

==================== Summary ====================

Name: VMMaker.oscog-ul.2354
Author: ul
Time: 10 March 2018, 10:56:45.349653 pm
UUID: b8f3192d-2b33-4a5d-83f9-785fbefbc570
Ancestors: VMMaker.oscog-eem.2353

Restored SerialPlugin's *byName* primitives on non-PharoVM VMs.

=============== Diff against VMMaker.oscog-eem.2353 ===============

Item was changed:
  ----- Method: SerialPlugin>>primitiveSerialPortOpenByName:baudRate:stopBitsType:parityType:dataBits:inFlowControlType:outFlowControlType:xOnByte:xOffByte: (in category 'primitives') -----
  primitiveSerialPortOpenByName: portName baudRate: baudRate stopBitsType: stopBitsType parityType: parityType dataBits: dataBits inFlowControlType: inFlowControl outFlowControlType: outFlowControl xOnByte: xOnChar xOffByte: xOffChar
-       <option: #PharoVM>
        <var: #port type: 'char *'>

        | port portNameSize |

        self primitive: 'primitiveSerialPortOpenByName'
                parameters: #(String SmallInteger SmallInteger SmallInteger SmallInteger SmallInteger SmallInteger SmallInteger SmallInteger ).

        portNameSize := interpreterProxy slotSizeOf: (portName asOop: String).
        port := self cCode: 'calloc(portNameSize+1, sizeof(char))'.
        self cCode: 'memcpy(port, portName, portNameSize)'.

        self cCode: 'serialPortOpenByName(
                        port, baudRate, stopBitsType, parityType, dataBits,
                        inFlowControl, outFlowControl, xOnChar, xOffChar)'.

        self free: port.!

Item was changed:
  ----- Method: SerialPlugin>>primitiveSerialPortReadByName:into:startingAt:count: (in category 'primitives') -----
  primitiveSerialPortReadByName: portName into: array startingAt: startIndex count: count
-       <option: #PharoVM>
        <var: #port type: 'char *'>

        | port portNameSize bytesRead arrayPtr |

        self primitive: 'primitiveSerialPortReadByName'
                parameters: #(String  ByteArray SmallInteger SmallInteger ).

        interpreterProxy success: (startIndex >= 1 and: [startIndex + count - 1 <= (interpreterProxy byteSizeOf: array cPtrAsOop)]).
        "adjust for zero-origin indexing"

        portNameSize := interpreterProxy slotSizeOf: (portName asOop: String).
        port := self cCode: 'calloc(portNameSize+1, sizeof(char))'.
        self cCode: 'memcpy(port, portName, portNameSize)'.

        arrayPtr := array + startIndex - 1.
        bytesRead := self cCode: 'serialPortReadIntoByName( port, count, arrayPtr)'.

        self free: port.

        ^ bytesRead asSmallIntegerObj!

Item was changed:
  ----- Method: SerialPlugin>>primitiveSerialPortWriteByName:from:startingAt:count: (in category 'primitives') -----
  primitiveSerialPortWriteByName: portName from: array startingAt: startIndex count: count
-       <option: #PharoVM>
        <var: #port type: 'char *'>

        | bytesWritten arrayPtr portNameSize port |

        self primitive: 'primitiveSerialPortWriteByName'
                parameters: #(String ByteArray SmallInteger SmallInteger ).

        portNameSize := interpreterProxy slotSizeOf: (portName asOop: String).
        port := self cCode: 'calloc(portNameSize+1, sizeof(char))'.
        self cCode: 'memcpy(port, portName, portNameSize)'.

        interpreterProxy success: (startIndex >= 1 and: [startIndex + count - 1 <= (interpreterProxy byteSizeOf: array cPtrAsOop)]).
        interpreterProxy failed
                ifFalse: [arrayPtr := array + startIndex - 1.
                        bytesWritten := self cCode: 'serialPortWriteFromByName(port, count, arrayPtr)' ].

        self free: port.

        ^ bytesWritten asSmallIntegerObj!




--
_,,,^..^,,,_
best, Eliot



--
_,,,^..^,,,_
best, Eliot