gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Minimalist GNUstep possible?


From: David Chisnall
Subject: Re: Minimalist GNUstep possible?
Date: Fri, 18 Jun 2010 12:33:07 +0100

On 18 Jun 2010, at 10:16, Jonathan Wolf wrote:

> I went back and did some more toying around and got exactly what I was
> needing to get (at least on a nix box). I have yet to go try this on a
> MinGW/Windows system, but I have high hopes that it should work pretty
> much the same (hopefully!).
> 
> We do want to target all three primary OS'es (major nix flavors, mac,
> and windows), so having a toolset be cross platform like this is a
> major boost (plus ObjC is awesome). Has anybody seen any luck with
> using GNUstep as a .dll over on this sort of setup?

I've not used Windows for some years, but I recall reading on the wiki that 
there was a tool for producing a stand-alone Windows installer that packages 
the GNUstep dlls and everything else that you need.  Gregory is probably the 
best person to answer this - he's been doing a lot of work on Windows recently.

> One thing in particular that we're going to deal with, almost
> assuredly, is that the user may not have a few of the libs installed
> (ldd listed a decent number of linked libraries, including some rogue
> ones like libffi (fast function interface if I remember from the
> GNUstep documentation)).

Foreign, not fast.  You said in your original email that you needed 
NSInvocation, so this is not a rogue dependency, this is one that you actually 
need (Well, actually you said NSMethodInvocation, but such a class does not 
exist).  FFI is used by GNUstep to implement the callback that the runtime uses 
for message forwarding.  It is needed to construct NSInvocation instances, so 
if you use -forwardInvocation: anywhere, then you need to use it.

You can remove things like libxml2 as dependencies with some configure flags 
(./configure --help to list all of them).  

> Is there any way, aside from scripting it out
> in an installation script, to use a redistributable package (perhaps
> similar to the .NET redistributables), or do people really need a full
> installation of GNUstep for it to work? I'm not the best on dynamic
> linkage, but is having a copy of the .so/.dll in the same folder as
> the executable "good enough" (hopefully not breaking LGPL rules)?

Yup, that should be fine for Windows.  If you're using AppKit then you probably 
also want to bundle the UXTHEME bundle so that the app looks and behaves more 
like a native app (native Windows menus and buttons, native colour scheme, and 
so on).  If you're not, then you can probably get away with just the 
gnustep-base.dll and its dependencies (libobjc.dll, not sure what else).

> As a side question that I am sure to be interested in moving into the
> future, is GNUstep planning on supporting mobile architectures, say
> like Android? I would really love to keep using a compiled language
> (like ObjC) on such a platform and be able to take our tools with us
> onto that end, if we ever go there. Has anybody heard of any luck with
> any developers going this route? I did notice that there was some work
> being done on incorporating ObjC into Android, but I'm sure somewhere
> along that path GNUstep is going to be one of the major players.

I'm not sure about Android specifically, because it uses its 
lets-reinvent-the-wheel-and-make-it-square windowing system and doesn't seem to 
like people not living inside their slow VM.  Mobiles like the N900 are 
definitely of interest to us.  Supporting Android will probably be easier once 
Cairo has been ported, otherwise we'd have to port the back end to use Skia 
natively, which is a lot of effort.  For a minimal port, we should be able to 
use Cairo's OpenGL or image back ends and just write the event handling code 
(which is nontrivial, but not a huge amount of work).

You might like to look at MySTEP, which is a friendly fork of GNUstep that aims 
to target mobile devices.  Where design decisions require optimising for either 
desktop or mobile use, GNUstep went one way and MySTEP went the other way.  I'm 
not sure how relevant it is now - modern handhelds are more powerful (in terms 
of RAM, CPU, and GPU power) than desktops were when MySTEP was forked, but it's 
still pretty lightweight.

Over the summer, we have a GSoC student finishing up our CoreGraphics 
implementation, providing the core that we'd need for implementing more of the 
iPhone APIs.  We'd like to start working on a UIKit implementation later in the 
year, so if your company would be interested in partially funding, or 
contributing some code to, that effort then let us know.  A lot of the existing 
code in GNUstep's AppKit implementation can be used in UIKit, but some things 
will need extending or rewriting.

David


reply via email to

[Prev in Thread] Current Thread [Next in Thread]