Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Jan 2006 20:12:50 +0000 (UTC)
From:      Edwin Groothuis <edwin@FreeBSD.org>
To:        ports-committers@FreeBSD.org, cvs-ports@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: ports/devel/ode Makefile ports/devel/ode/files patch-configurator.c ports/devel/ode-devel Makefile ports/devel/ode-devel/files patch-configurator.c
Message-ID:  <200601022012.k02KCpp3098870@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
edwin       2006-01-02 20:12:50 UTC

  FreeBSD ports repository

  Modified files:
    devel/ode            Makefile 
    devel/ode-devel      Makefile 
  Added files:
    devel/ode/files      patch-configurator.c 
    devel/ode-devel/files patch-configurator.c 
  Log:
  [PATCH] devel/ode and devel/ode-devel: unbreak on 64bit platforms
  
          devel/ode and devel/ode-devel ports are marked broken on
          non-i386 archs (i.e. amd64, ia64), because ode fail to build
          on these systems with following errors:
  
          c++ -Iinclude -c   -fno-exceptions  -fomit-frame-pointer -O -pipe -I/usr/X11R6/include
          +-DdNODEBUG -o ode/src/timer.o ode/src/timer.cpp
          {standard input}: Assembler messages:
          {standard input}:62: Error: `(%esi)' is not a valid 64 bit base/index expression
          {standard input}:63: Error: `4(%esi)' is not a valid 64 bit base/index expression
          {standard input}:86: Error: `(%esi)' is not a valid 64 bit base/index expression
          {standard input}:87: Error: `4(%esi)' is not a valid 64 bit base/index expression
          {standard input}:172: Error: `(%esi)' is not a valid 64 bit base/index expression
          {standard input}:173: Error: `4(%esi)' is not a valid 64 bit base/index expression
          {standard input}:194: Error: `(%esi)' is not a valid 64 bit base/index expression
          {standard input}:195: Error: `4(%esi)' is not a valid 64 bit base/index expression
          {standard input}:234: Error: `(%esi)' is not a valid 64 bit base/index expression
          {standard input}:235: Error: `4(%esi)' is not a valid 64 bit base/index expression
          gmake: *** [ode/src/timer.o] Error 1
          *** Error code 2
  
          Stop in /usr/ports/devel/ode.
  
          After some investigation, I think I've solved the problem,
          and it would be great to unbreak ode at last.
  
          The build on 64 bit platforms fails because some 32 bit
          assembly gets included in the ode/src/timer.cpp file.
  
          That, on it's turn, happens because ode's configurator
          (simple configure analogue written in C) has too weak
          checking for `pentium compatibility' of host system - it
          just tries to compile following assembly code: `mov $0,
          %eax' as a test. That compiles well on 64 bit platforms,
          but because addressing scheme is now 64bit, above-mentioned
          errors occur when compiling ode's source itself.
  
          The fix is to add a patch to configurator.c that makes
          `pentium compatibility' test more strict. Thus, test will
          fail on 64 bit ystems and i386 assembly won't be used (ode
          will use more portable routines instead).
  
          This patch is not well tested, as I myself have no 64 bit
          machines in the vicinity, but it surely doesn't break ode
          on x86 :)
  
          I've mailed it to ode author, it's now also in ODE's CVS.
  
  PR:             ports/90077
  Submitted by:   Dmitry Marakasov <amdmi3@mail.ru>
  Approved by:    maintainer timeout
  
  Revision  Changes    Path
  1.9       +0 -4      ports/devel/ode-devel/Makefile
  1.1       +11 -0     ports/devel/ode-devel/files/patch-configurator.c (new)
  1.8       +0 -4      ports/devel/ode/Makefile
  1.1       +11 -0     ports/devel/ode/files/patch-configurator.c (new)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200601022012.k02KCpp3098870>