Accessing ux2sqPath and sq2uxPath

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Accessing ux2sqPath and sq2uxPath

alistairgrant
 
Hi Everyone,

So that path names are encoded correctly on MacOS, the
FileAttributesPlugin needs to use ux2sqPath() and sq2uxPath().

On linux this "just works".  If I've read the build log correctly the
functions are included in vm.a, which is included when linking external
plugins.

However I'm not able to get the symbols resolved on MacOS.

The routines are defined in:

platforms/Mac OS/plugins/FilePlugin/sqMacUnixFileInterface.c


declared in:

platforms/Mac OS/plugins/FilePlugin/sqMacUnixFileInterface.h


and are accessed in:

platforms/Mac OS/vm/sqMacNSPluginUILogic2.c
platforms/Mac OS/vm/sqMacImageIO.c
platforms/Mac OS/vm/sqMacMain.c


The following lines in build.macos64x64/common/Makefile.vm
look like they provide the required magic:

PluginIncludes := FilePlugin HostWindowPlugin SoundPlugin
OSPluginIncludes := FilePlugin HostWindowPlugin SoundPlugin


I attempted to create a plugin makefile:

platforms/Mac OS/plugins/FileAttributesPlugin/Makefile.plugin:
#
# FileAttributesPlugin uses sq2uxPath() and ux2sqPath(), provided by FilePlugin
#
#
include ../common/Makefile.plugin
PluginIncludes += FilePlugin

however this still results in:

Undefined symbols for architecture x86_64:

  "_sq2uxPath", referenced from:

      _squeakPathtoUnixmaxLen in FileAttributesPlugin.lib(FileAttributesPlugin.o)

  "_ux2sqPath", referenced from:

      _primitiveReaddir in FileAttributesPlugin.lib(FileAttributesPlugin.o)

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

make: *** [build/vm/Squeak] Error 1


The full source is available at:
https://github.com/akgrant43/opensmalltalk-vm/tree/FileAttributes133


Any suggestions?


Thanks very much,
Alistair
Reply | Threaded
Open this post in threaded view
|

Re: Accessing ux2sqPath and sq2uxPath

Tobias Pape
 
Hi  Alistair

>
> On 15.08.2018, at 21:30, Alistair Grant <[hidden email]> wrote:
>
>
> Hi Everyone,
>
> So that path names are encoded correctly on MacOS, the
> FileAttributesPlugin needs to use ux2sqPath() and sq2uxPath().
>
> On linux this "just works".  If I've read the build log correctly the
> functions are included in vm.a, which is included when linking external
> plugins.
>
> However I'm not able to get the symbols resolved on MacOS.

You're sure you want the Mac OS folder (ie, legacy Carbon MacOS) and not
the iOS folder (ie, Cocoa OSX/macOS/iOS)?

Best regards
        -Tobias

>
> The routines are defined in:
>
> platforms/Mac OS/plugins/FilePlugin/sqMacUnixFileInterface.c
>
>
> declared in:
>
> platforms/Mac OS/plugins/FilePlugin/sqMacUnixFileInterface.h
>
>
> and are accessed in:
>
> platforms/Mac OS/vm/sqMacNSPluginUILogic2.c
> platforms/Mac OS/vm/sqMacImageIO.c
> platforms/Mac OS/vm/sqMacMain.c
>
>
> The following lines in build.macos64x64/common/Makefile.vm
> look like they provide the required magic:
>
> PluginIncludes := FilePlugin HostWindowPlugin SoundPlugin
> OSPluginIncludes := FilePlugin HostWindowPlugin SoundPlugin
>
>
> I attempted to create a plugin makefile:
>
> platforms/Mac OS/plugins/FileAttributesPlugin/Makefile.plugin:
> #
> # FileAttributesPlugin uses sq2uxPath() and ux2sqPath(), provided by FilePlugin
> #
> #
> include ../common/Makefile.plugin
> PluginIncludes += FilePlugin
>
> however this still results in:
>
> Undefined symbols for architecture x86_64:
>
>  "_sq2uxPath", referenced from:
>
>      _squeakPathtoUnixmaxLen in FileAttributesPlugin.lib(FileAttributesPlugin.o)
>
>  "_ux2sqPath", referenced from:
>
>      _primitiveReaddir in FileAttributesPlugin.lib(FileAttributesPlugin.o)
>
> ld: symbol(s) not found for architecture x86_64
>
> clang: error: linker command failed with exit code 1 (use -v to see invocation)
>
> make: *** [build/vm/Squeak] Error 1
>
>
> The full source is available at:
> https://github.com/akgrant43/opensmalltalk-vm/tree/FileAttributes133
>
>
> Any suggestions?
>
>
> Thanks very much,
> Alistair

Reply | Threaded
Open this post in threaded view
|

Re: Accessing ux2sqPath and sq2uxPath

alistairgrant
 
Hi Tobias,

On Wed, 15 Aug 2018 at 21:34, Tobias Pape <[hidden email]> wrote:

>
>
> Hi  Alistair
> >
> > On 15.08.2018, at 21:30, Alistair Grant <[hidden email]> wrote:
> >
> >
> > Hi Everyone,
> >
> > So that path names are encoded correctly on MacOS, the
> > FileAttributesPlugin needs to use ux2sqPath() and sq2uxPath().
> >
> > On linux this "just works".  If I've read the build log correctly the
> > functions are included in vm.a, which is included when linking external
> > plugins.
> >
> > However I'm not able to get the symbols resolved on MacOS.
>
> You're sure you want the Mac OS folder (ie, legacy Carbon MacOS) and not
> the iOS folder (ie, Cocoa OSX/macOS/iOS)?
>
> Best regards
>         -Tobias

I think you're right, I should put it in the iOS folder.

However it doesn't change the result, the symbol is still unresolved
with the same error messages as below.

Thanks,
Alistair



> > The routines are defined in:
> >
> > platforms/Mac OS/plugins/FilePlugin/sqMacUnixFileInterface.c
> >
> >
> > declared in:
> >
> > platforms/Mac OS/plugins/FilePlugin/sqMacUnixFileInterface.h
> >
> >
> > and are accessed in:
> >
> > platforms/Mac OS/vm/sqMacNSPluginUILogic2.c
> > platforms/Mac OS/vm/sqMacImageIO.c
> > platforms/Mac OS/vm/sqMacMain.c
> >
> >
> > The following lines in build.macos64x64/common/Makefile.vm
> > look like they provide the required magic:
> >
> > PluginIncludes := FilePlugin HostWindowPlugin SoundPlugin
> > OSPluginIncludes := FilePlugin HostWindowPlugin SoundPlugin
> >
> >
> > I attempted to create a plugin makefile:
> >
> > platforms/Mac OS/plugins/FileAttributesPlugin/Makefile.plugin:
> > #
> > # FileAttributesPlugin uses sq2uxPath() and ux2sqPath(), provided by FilePlugin
> > #
> > #
> > include ../common/Makefile.plugin
> > PluginIncludes += FilePlugin
> >
> > however this still results in:
> >
> > Undefined symbols for architecture x86_64:
> >
> >  "_sq2uxPath", referenced from:
> >
> >      _squeakPathtoUnixmaxLen in FileAttributesPlugin.lib(FileAttributesPlugin.o)
> >
> >  "_ux2sqPath", referenced from:
> >
> >      _primitiveReaddir in FileAttributesPlugin.lib(FileAttributesPlugin.o)
> >
> > ld: symbol(s) not found for architecture x86_64
> >
> > clang: error: linker command failed with exit code 1 (use -v to see invocation)
> >
> > make: *** [build/vm/Squeak] Error 1
> >
> >
> > The full source is available at:
> > https://github.com/akgrant43/opensmalltalk-vm/tree/FileAttributes133
> >
> >
> > Any suggestions?
> >
> >
> > Thanks very much,
> > Alistair
>