[MacPorts] #28063: gnustep-base configure fails on 10.6, "I don't seem to be able to use your Objective-C compiler to produce working binaries"

MacPorts noreply at macports.org
Thu Jan 20 14:19:17 PST 2011


#28063: gnustep-base configure fails on 10.6, "I don't seem to be able to use your
Objective-C compiler to produce working binaries"
-----------------------------+----------------------------------------------
 Reporter:  ivan@…           |       Owner:  macports-tickets@…                   
     Type:  defect           |      Status:  new                                  
 Priority:  Normal           |   Milestone:                                       
Component:  ports            |     Version:  1.9.2                                
 Keywords:                   |        Port:  gnustep-base                         
-----------------------------+----------------------------------------------

Comment(by lars.sonchocky-helldorf@…):

 The following is taken from a mail on the GNUstep discussion list here:
 http://lists.gnu.org/archive/html/discuss-gnustep/2011-01/msg00104.html

 I added this to help the one who is going to fix the GNUstep ports

 --8x---snip----------------------------------------

 I have GNUstep running on OS X (Tiger and Leopard, though not Snow Leopard
 at present, using both Apple's gcc and gcc from MacPorts) for quite some
 time. Before Tiger I was using macports, but since the port got broken and
 was no longer maintained around that time, I set up my system from scratch
 then. Initially, I used gnustep-startup to get things working, but I
 haven't looked at it for a long time. So chances are that you may be able
 to set up your system with the help of gnustep-startup (probably with a
 few iterations to get all dependencies in place) but then maybe not.

 The following tries to summarize the steps to get GNUstep working on OS X
 from scratch (as far as I remember them).
 Note that I'm using the traditional GNUstep layout with everything
 installed in /usr/GNUstep. I haven't used the fhs layout, which is the
 default layout nowadays, and I'm not sure whether I would recommend using
 it in on OS X.
 The steps below may or may not work for you. If they do, maybe someone
 could use them to update the MacPorts port?


 1) First install all dependencies as required by the GNUstep port in
 MacPorts
 For some ports you must be careful with the configuration so that they
 don't link (directly or indirectly) with Apple's CoreFoundation framework,
 which brings in Apple's libobjc.
 The ports you have to watch out for include (at least) aspell, fontconfig,
 and cairo. You *must* install the +nonls variant of aspell and you must
 install the +macosx variants of fontconfig and cairo.


 2) Decide whether you want to use Apple's C compiler or the MacPorts
 compiler
 For Apple's C compiler continue at step 3), for the MacPorts compiler
 continue at step 7)


 3) Configure and install gnustep-make
 I'm using the latest source from svn at
 http://svn.gna.org/svn/gnustep/tools/make/trunk

   ./configure CFLAGS=-fno-constant-cfstrings \
               --with-library-combo=gnu-gnu-gnu \
               --with-config-file=/usr/GNUstep/GNUstep.conf \
               --enable-absolute-install-paths
   sudo make install

 Notes:
  (1) --with-library-combo=gnu-gnu-gnu is mandatory, since apple-apple-
 apple is the default on OS X
  (2) --with-config-file=... is optional. I like to have the config file in
 the same place as the rest of the installation, the default is to install
 in /etc/GNUstep. If that's okay for you omit this flag.
  (3) --enable-absolute-install-paths is present so that you can run
 GNUstep applications and tools without sourcing
 /usr/GNUstep/System/Library/Makefiles/GNUstep.sh or
 /usr/GNUstep/System/Library/Makefiles/GNUstep.csh despite you a GNUstep
 file system layout. You may loose the ability to move applications and
 libraries around, though.


 4) At this point, source /usr/GNUstep/Makefiles/GNUstep.sh or
 /usr/GNUstep/Makefiles/GNUstep.csh:
  . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh           (on
 bash/ksh)
  source /usr/GNUstep/System/Library/Makefiles/GNUstep.csh     (on tcsh)


 5) Configure and install the GNU Objective-C runtime system (not the
 GNUstep Objective C runtime system; up to now I haven't been able to build
 it on OS X -- but then I didn't try very hard)
 Again, I'm using the version from svn at
 http://svn.gna.org/svn/gnustep/libs/libobjc/trunk

   sudo make install

 This should install the headers in
 /usr/GNUstep/System/Library/Headers/objc and libobjc in
 /usr/GNUstep/System/Library/Libraries.


 6) Repeat step 3)
 Yes, invoke configure again here. This is important so that GNUstep-make
 picks up that we now have the right Objective C library available.
 After that continue at step 9)


 7) After you have installed the MacPorts compiler install gnustep-make
 (cf. step 3) for the source)

   ./configure CC=gcc-mp-4.3
               --with-library-combo=gnu-gnu-gnu \
               --with-config-file=/usr/GNUstep/GNUstep.conf \
               --enable-absolute-install-paths
   sudo make install

 Note:
   (1) See step 3) for the options supplied to configure
   (2) CC=gcc-mp-4.3 sets the compiler being used. As you can see I'm
 (still) using Gnu C 4.3. Replace it by whatever you have installed.


 8) At this point, source /usr/GNUstep/Makefiles/GNUstep.sh or
 /usr/GNUstep/Makefiles/GNUstep.csh:
  . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh           (on
 bash/ksh)
  source /usr/GNUstep/System/Library/Makefiles/GNUstep.csh     (on tcsh)


 9) Make sure you have libffi installed. On my system, I see that I have
 installed libffi @gcc4.2.2_0. Don't know what is the current version in
 MacPorts, but I think it should work.
 Also make sure that you really have sourced GNUstep.sh/GNUstep.csh (e.g.,
 try echo $GNUSTEP_MAKEFILES, it should echo
 /usr/GNUstep/System/Library/Makefiles).


 10) Configure and install gnustep-base.
 Not very surprisingly I'm using the version from svn at
 http://svn.gna.org/svn/gnustep/libs/base/trunk

 If you are using the Apple compiler
  ./configure CFLAGS=-fno-constant-cfstrings \
              CPPFLAGS=-I/opt/local/include \
              LDFLAGS=-L/opt/local/lib \
              --disable-tls
  sudo sh -c ". $GNUSTEP_MAKEFILES/GNUstep.sh; make install"

 If you are using the MacPorts compiler
  ./configure CC=gcc-mp-4.3 \
              CPPFLAGS=-I/opt/local/include \
              LDFLAGS=-L/opt/local/lib \
              --disable-tls
  sudo sh -c ". $GNUSTEP_MAKEFILES/GNUstep.sh; make install"

 Notes:
  (1) The arguments CFLAGS=-fno-constant-cfstrings and CC=gcc-mp-4.3 (or
 whatever MacPorts compiler is used) may be redundant (but they do not hurt
 either)
  (2) CPPFLAGS=-I/opt/local/include LDFLAGS=-L/opt/local/lib are necessary
 to find the libraries installed by MacPorts
  (3) I use --disable-tls because I was unable to get it working when I set
 up my system and I do not need it at present. It may be possible to omit
 this flag with a more recent version from MacPorts.
  (4) The complex sudo command is there to get the environment right for
 the root shell. Actually, if you have configured gnustep-make with
 --enable-absolute-install-paths, it should be possible to simply use sudo
 make install, but I've got used to the more complex command and didn't try
 that. (Since I build gnustep quite frequently, it is in my shell's history
 anyway.)


 11) Configure and install gnustep-gui
 source is of course http://svn.gna.org/svn/gnustep/libs/gui/trunk

 If you are using the Apple compiler
  ./configure CFLAGS=-fno-constant-cfstrings \
              CPPFLAGS=-I/opt/local/include \
              LDFLAGS=-L/opt/local/lib \
              --disable-cups --disable-sound
  sudo sh -c ". $GNUSTEP_MAKEFILES/GNUstep.sh; make install"

 If you are using the MacPorts compiler
  ./configure CC=gcc-mp-4.3 \
              CPPFLAGS=-I/opt/local/include \
              LDFLAGS=-L/opt/local/lib \
              --disable-cups --disable-sound
  sudo sh -c ". $GNUSTEP_MAKEFILES/GNUstep.sh; make install"

 Notes:
  (1) For the compiler flags see step 10)
  (2) --disable-cups and --disable-sound are mandatory; at least I was
 unable to install versions of these libraries from MacPorts that do not
 link with Apple's CoreFoundation framework.


 12) Configure and install gnustep-back
 source from http://svn.gna.org/svn/gnustep/libs/back/trunk
 All three backend variants (art, cairo, xlib) are working for me. If you
 are using cairo, which is the default now, be sure to install the +macosx
 variant of cairo, which doesn't link against any Apple specific libraries.
 If you want to use the art backend, install the libart_lgpl port. Beware
 that in this case you most probably want to install additional fonts. I
 wouldn't recommend using the xlib backend.

 If you are using the Apple compiler
  ./configure CFLAGS=-fno-constant-cfstrings \
              CPPFLAGS=-I/opt/local/include \
              LDFLAGS=-L/opt/local/lib \
              --disable-glx
  sudo sh -c ". $GNUSTEP_MAKEFILES/GNUstep.sh; make install"

 If you are using the MacPorts compiler
  ./configure CC=gcc-mp-4.3 \
              CPPFLAGS=-I/opt/local/include \
              LDFLAGS=-L/opt/local/lib \
              --disable-glx
  sudo sh -c ". $GNUSTEP_MAKEFILES/GNUstep.sh; make install"

 Notes:
  (1) For the compiler flags see step 10)
  (2) --disable-glx seems to be necessary. At least when I last tried to
 omit it, OpenGL was linking with Apple's libraries and bringing in Apple's
 CoreFoundation and Objective C runtime.
  (3) If you want a different backend, add --enable-graphics=art or
 --enable-graphics=xlib to the configure options.


 13) Congratulations for getting this far.
 Now you have a GNUstep installation on your system, but it is not clear
 whether this is a *working* installation. First try starting the GNUstep
 daemons. (If you are running under tcsh you have to execute rehash first).
   gdnc
   gpbs
 If you don't get a crash report from OS X at this point, you were already
 quite successful. If you get a crash report (most likely from gpbs), have
 a look at the libraries linked with the executable (listed in the Binary
 Images section of the crash report file). If this includes libobjc.A.dylib
 (probably at the bottom), one of your dependencies was linked with Apple's
 libraries and the tough case is finding out which one. My experience is
 that this is a very tedious process, using otool -L to list the dependent
 libraries of each dynamic library that is linked with gnustep-gui and
 gnustep-base. Once, you've found that dependency, you need to find out a
 way to rebuild that dependency without linking to Apple's libraries.


 14) If you've got this far try installing a first GNUstep application.
 I recommend using Ink for that purpose, as it is simple to install and a
 useful application by itself. It is not as complete as Apple's TextEdit,
 of course, but at least sufficiently capable to write simple texts like
 this one (I have to confess that I should have written this text with Ink
 but did type it right away into Mail).
 Source is in http://svn.gna.org/svn/gnustep/tests/examples/trunk/gui/Ink

 Installation (as root) can be achieved with
  sudo sh -c ". $GNUSTEP_MAKEFILES/GNUstep.sh; make install"

 If you prefer installing Ink in your private application directory instead
 use
  make GNUSTEP_INSTALLATION_DIRECTORY=USER install

 Now run Ink by typing
  Ink
 (eventually after executing rehash first, if you are using tcsh). If you
 didn't get a crash report during the last step, Ink's menu and an empty
 document window should appear.


 15) Congratulations if you got here. You have successfully managed to
 install GNUstep on OS X.
 From here on you should be able to install additional GNUstep applications
 in the same way as Ink.

 Beware of some special cases though. The initial installation of some
 programs doesn't work out of the box, because the linker requires
 dependent frameworks to be installed in the (GNUstep) system directories.
 AFAIR, the problematic cases include SystemPreferences and ProjectCenter.
 To get SystemPreferences compiled and installed, first run
   sudo sh -c ". $GNUSTEP_MAKEFILES/GNUstep.sh; make install"
 from the PreferencePanes directory, then again from the main directory.
 Similarly, to get ProjectCenter compiled and installed, first run
   sudo sh -c ". $GNUSTEP_MAKEFILES/GNUstep.sh; make install"
 from the Framework directory and then from the main directory. Similar
 issues may exist for other applications, but I don't remember those.


 Hope this helps
 Wolfgang

 --8x---snap----------------------------------------

-- 
Ticket URL: <https://trac.macports.org/ticket/28063#comment:2>
MacPorts <http://www.macports.org/>
Ports system for Mac OS


More information about the macports-tickets mailing list