List Info

Thread: Re: Cross Compiling for OS X?




Re: Cross Compiling for OS X?
country flaguser name
Germany
2008-05-03 04:26:27
After thinking a little and taking into account that
essentially the
same question was asked twice this week, I have thought to
write some
simple FAQ:

1. I have a GNUstep source running on Linux/GNUstep and want
the same
application to run on OSX

You have several options - more or less complex.

a) Copy source files to OSX

Add a wrapping Xcode project (in addition to the GNUstep
makefile) and
configure it to compile directly on OSX for OSX using the
OSX Cocoa
frameworks. You can share the sources e.g. through SVN.
There is no
problem having GNUmakefiles and some .xcodeproj in the same
source
code directory.

Examples: SWK Browser from the GNUstep SWK project,
DataBuilder from
GSCoreData (look into the sources at www.gna.org)

Development is done by either working on Linux and using
GORM/Project
Center and compiling for Linux. or on OSX opening the
project in
Xcode. The only thing to keep in mind is that you also
update the
Xcode project or the GNUmakefile if you add source files or
resources.

The GNUstep .app bundle is different and runs on Linux only.
The
OSX .app bundle runs only on OSX, i.e. there is no single
bundle that
covers all architectures (unless you do some additional
tricks).

b) Install GNUstep on OSX using MacPorts.

Then, you can set up an identical build environment on both
machines.

The drawback is that you don't have a "native" OSX
application which
you can easily launch by a double-click on the .app icon.

c) Real cross-compiling
This means that you have a gcc version on your Linux machine
that
emits executables that run on OSX. Unfortunately, OSX uses
MACH-O
binaries and building a cross-compiling gcc is very tricky.

So I would not consider this as a reasonable option.

2. I have an Xcode project and want to run on Linux

a) your target machine has a compiler
Here, you have to check that you are not using too specific
frameworks. Then, add a GNUmakefile. Copy the files to your
Linux
system and run the GNUstep makefile.

b) your target machine is an embedded system
In this case, you need a cross-compiler on the build host.
This can be
a full Linux machine or a OSX machine (but it is more
difficult to get
a working cross-compiler running on OSX).

I hope this helps to clarify things a little. If you have
more
comments, hints, tricks&tips, we can move and merge this
into the
Wiki.

-- hns
_______________________________________________
Discuss-gnustep mailing list
Discuss-gnustepgnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnustep

Re: Cross Compiling for OS X?
country flaguser name
United Kingdom
2008-05-03 05:16:21
On 3 May 2008, at 10:26, hnscomputer.org wrote:

> c) Real cross-compiling
> This means that you have a gcc version on your Linux
machine that
> emits executables that run on OSX. Unfortunately, OSX
uses MACH-O
> binaries and building a cross-compiling gcc is very
tricky.

I've not tried building Apple GCC on non-Apple platforms,
but even if  
you do this then you need more to get a real cross-compiling
 
environment.  You also need copies of every header file that
your  
program includes.  You can't substitute GNUstep's
Foundation.h for  
Apple's, since they have different instance variable layouts
so any of  
your subclasses of Apple classes will be wrong.  This header
also  
includes other headers which define things like the sizes
and layouts  
of of C types and so on,   These can be acquired from the
Darwin  
sources, but you'll still need the framework headers which
are not  
publicly redistributable.  In short, cross compiling is
hard, which is  
why hardly anyone does it.

Improving GNUstep Make to build native OS X applications (it
already  
works nicely for frameworks) would be a better approach, but
I'm not  
sure how much effort this would be.  Building OS X apps from
a  
makefile isn't very hard, although fat binaries are slightly
harder,  
so it might be worth investigating.

David


_______________________________________________
Discuss-gnustep mailing list
Discuss-gnustepgnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnustep

Re: Cross Compiling for OS X?
country flaguser name
France
2008-05-03 09:57:57
Hi all,

> b) Install GNUstep on OSX using MacPorts.
>
> Then, you can set up an identical build environment on
both machines.
>
> The drawback is that you don't have a
"native" OSX application which
> you can easily launch by a double-click on the .app
icon.

	I think I have done this :
		- I installed GNUstep Make and BaseAdditions on Mac OS X
10.3 (it was 
2 years ago so not the Make 2.0 version, I don't know if it
works with 
the new version),
		- I used a GNUmakefile like this one :

----
# This usually happens when you source GNUstep.sh, then run
./configure,
# then log out, then log in again and try to compile
ifeq ($(GNUSTEP_MAKEFILES),)
   $(error You need to run the GNUstep configuration script
before 
compiling!)
endif

include $(GNUSTEP_MAKEFILES)/common.make

APP_NAME = WRP

WRP_MAIN_MODEL_FILE = MainMenu
WRP_APPLICATION_ICON = WRP.icns
WRP_PRINCIPAL_CLASS = NSApplication

WRP_RESOURCE_FILES = gui/* Images/* Resources/*

WRP_OBJC_FILES = main.m 
...
snip a bunch of sources files
...
DEGeneralPrefsController.m 
GSStringCat.m

include GNUmakefile.preamble
include $(GNUSTEP_MAKEFILES)/application.make
----

		- there was a trick however, the first time I had to write
manually 
some file, WRPInfo.plist if I remember well, and then it was
used.

	I don't do anything on this app since 2 years ago so I
don't remember 
well, but I am pretty sure I had nothing more to do. And the
result was 
a perfectly Mac OS X app build with GNUstep make.


Benoit Astruc




_______________________________________________
Discuss-gnustep mailing list
Discuss-gnustepgnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnustep

Re: Cross Compiling for OS X?
user name
2008-05-05 17:17:37
On 3 May 2008, at 10:26, hnscomputer.org wrote:

> After thinking a little and taking into account that
essentially the
> same question was asked twice this week, I have thought
to write some
> simple FAQ:
>
> 1. I have a GNUstep source running on Linux/GNUstep and
want the same
> application to run on OSX
>
> You have several options - more or less complex.

The simplest, and best option is obviously to install
gnustep-make (./ 
configure; make; sudo
make install) and then compile your project by typing
'make'.  You  
get a native Apple OSX
application compiled against the Apple OSX ObjC frameworks
... using  
the same GNUmakefiles
you were using on GNU/Linux/*BSD/Windows. 

If there are issues with this solution, please report them
so we can  
fix them 

Thanks


_______________________________________________
Discuss-gnustep mailing list
Discuss-gnustepgnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnustep

[1-4]

about | contact  Other archives ( Real Estate discussion Medical topics )