|
List Info
Thread: Re: Cross Compiling for OS X?
|
|
| Re: Cross Compiling for OS X? |
  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-gnustep gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnustep
|
|
| Re: Cross Compiling for OS X? |
  United Kingdom |
2008-05-03 05:16:21 |
On 3 May 2008, at 10:26, hns computer.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-gnustep gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnustep
|
|
| Re: Cross Compiling for OS X? |
  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-gnustep gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnustep
|
|
| Re: Cross Compiling for OS X? |

|
2008-05-05 17:17:37 |
On 3 May 2008, at 10:26, hns computer.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-gnustep gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnustep
|
|
[1-4]
|
|
|
about | contact Other archives ( Real Estate discussion Medical topics )
|