octave-maintainers
[Top][All Lists]
Advanced

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

Re: update: cross compiling Octave for MinGW systems


From: Thorsten Liebig
Subject: Re: update: cross compiling Octave for MinGW systems
Date: Fri, 04 Jan 2013 08:06:33 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0

Am 03.01.2013 22:14, schrieb John W. Eaton:
Here is another update about my experiences cross compiling Octave for
Windows systems with MinGW using MXE (http://mxe.cc).  I now have
nearly all the Octave dependencies building this way, along with a
recent snapshot of the current Octave development sources.

Since my last update, I've added LLVM, Qt, and QScintilla to the list
of dependencies and made it possible to build either a snapshot of the
development version of Octave or the latest release candidate of
Octave 3.6.4.

To see the current state of the project, here is what you need to do
(on a GNU/Linux system; I've used Debian, it should also work on
Fedora and the other systems listed on the MXE requirements page):
* install the required packages as described here:
     http://mxe.cc/#requirements

   * clone my fork of mxe:

       hg clone http://hg.octave.org/mxe-octave

   * build the cross tools and Octave:

       cd mxe-octave
       make octave

     If you have more than one core available, you can run

       make octave JOBS=4

     or similar to do parallel builds.

You'll end up with an almost complete version of Octave built for
Windows with MinGW.  At this point, you can run

   ./mk-dist

to build the a version of GCC that can run on Windows and create a
file dist/octave.tar.bz2 that includes Octave and all its
dependencies.  You can copy this file over to a Windows system.  Start
a MinGW/MSys or Cygwin shell and unpack it with

   tar jxf octave.tar.bz2

If you do this in your MinGW/MSys or Cygwin home directory, you can
add $HOME/octave/bin to your path:

   PATH=$HOME/octave/bin:$PATH

Then you should be able to start Octave.  Or, I think clicking on the
program in the Windows file manager should also start it.

If you also add

   CC=gcc
   CXX=g++
   F77=gfortran
   CXX_LD=g++
   DL_LD=g++

to your environment, you should be able to build a package.  For
example,

   octave> pkg -forge install control

works for me.

The missing dependencies that I know of are

   ghostscript, pstoedit, fig2dev:
          These are needed for printing figures.  I think it should be
          possible to get them to build with MXE, but I have not tried
          yet.

   Java:  This dependency is only needed for the experimental Java
          interface that will be included in an upcoming release of
          Octave.

I'm working on building these and including them in my fork of MXE.

To build the test release of Octave 3.6.4 instead of the development
snapshot, execute

   make octave-stable

instead.  Note that you'll need to modify the mk-dist script by hand
to do this instead of building "octave" if you want to build a tar
file with the stable version of Octave.

If this is to be made truly stand alone and independent of MinGW/MSys
or Cygwin, then the dependencies would also need to include things
like less, Texinfo, make, bison, flex, etc. and other tools that might
be needed to either build packages that contain C++, C, or Fortran
files, or to build Octave itself on Windows systems.  I'm not sure it
whether to go that far, or just require that people install MinGW if
they want to do development.

In addition to missing dependencies, I'm working on fixing the
following problems:

   * we should not have to set CC, CXX, F77, etc. in the environment.

   * include everything necessary to run Octave so that it can be
     installed without requiring MinGW/MSys to be installed (this may
     already work; would someone like to check?).

   * modify MXE so that all of this can be done "natively" in a Cygwin
     or MinGW/MSys shell, or any other Unix-like system so that we can
     easily build Octave and all its dependencies on other systems that
     don't have package systems to provide all the required
     dependencies.

   * see whether this approach will also work for cross compiling for
     OS X systems.

I'm also thinking about distributing the dependency libraries that I
build with this system so that people who have no way of cross
compiling Octave but want to build it with MinGW running on a Windows
system can easily do so without having to build everything from
source.

jwe


graphicsmagick fails to build, you need to copy this patch to mxe-octave/src:
https://github.com/mxe/mxe/blob/master/src/graphicsmagick-2-fix-autoconf-version.patch

If http://llvm.org wouldn't be down right now, I'm sure octave would build.

great work... It's only unfortunate that mxe and mxe-octave are going to diverge so heavily in the future...

regards
Thorsten



reply via email to

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