[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Octave build on windows using octave binary itself
From: |
Tatsuro MATSUOKA |
Subject: |
Octave build on windows using octave binary itself |
Date: |
Mon, 2 May 2016 08:58:48 +0900 (JST) |
Hello
I have tried to build octave from source on native windows
using development toolkits and external libraries on octave binary distribution
and today I have gotten successful results. I will report here.
Purpose
Currently octave for windows is mainly build on Unix using mxe-octave system.
The mxe-octave system is very powerful and useful because everything required
is built on batch process.
However, it in principle requires Unix [1] so that users those who use only
windows
cannot build octave for windows on windows.
Of course, octave for windows binary is provided on official web site (32 bit)
and
unofficial web site (by me for 64bit).
However, for those who want to try the development branch of octave and
to make modification of octave code to implement new feature,
or to fix bugs,
the building environments on native windows is strongly desirable.
This is why I have tried to build octave using octave binary distribution.
Procedure
1. Prepare Octave build and install directory
Prepare octave build directory for build like
e.g.
D:\usr\Tatsu\program\Octave\octaveBuild\4.0.2
|--octave-4.0.2 source extract directory
|--build build directory
Prepare octave install directory like
D:\usr\Tatsu\program\Octave\octaveBuild\4.0.2\usr\local
2. Prepare some missing tools and libraries for build into msys2 [2]
Octave binary have msys and its related developments tools
(gcc, make, ) and so on.
Some tools are missing for octave build.
I used the msys2 for missing tools
(I do know what is missing in detail because
my msys2 system have complete sets of unixy development tools.)
Msys2 is newer system and has improved performance and various toolkits.
Therefore I recommend to used msys2 rather than msys to prepare missing tools.
For octave binary distribution prepare almost all external libraries for build
I found an exception. That is the JDK (Java Development Kit).
To install the JDK, goto the Oracle site and install the latest JDK.
3. Preparation and build on Octave
(>> is octave prompt. $ is bash prompt)
Build is executed on msys environments on octave distribution
Start octave (either CLI or GUI ) then execute the msys bash
>> more off # I just prefer to use more off
>> cd D:\usr\Tatsu\program\Octave\octaveBuild\4.0.2\build #build directory
>> system bash #launch bash
On bash
# set path
# /c/msys64_gcc530/usr/bin is for using msys2 toolkits
# /c/Program\ Files\ \(x86\)/Java/jdk1.8.0_91/bin is for JDK
$ export PATH=$PATH:/c/msys64_gcc530/usr/bin:/c/Program\ Files\
\(x86\)/Java/jdk1.8.0_91/bin
# configure
$ ../octave-4.0.2/configure
--prefix=/c/usr/Tatsu/program/Octave/octaveBuild/4.0.2/usr/local \
$ --with-java-homedir=/c/Program\ Files\ \(x86\)/Java/jdk1.8.0_91/bin \
$ --with-java-includedir=/c/Program\ Files\
\(x86\)/Java/jdk1.8.0_91/include \
$ --with-java-libdir=/c/Program\ Files\ \(x86\)/Java/jdk1.8.0_91/lib
Please see carefully the configure goes well
Confirm the last configure output to see there are not something missing|
Example
See [2]
If something is wrong please see config.log in the build tree.
# make : just execute make and wait for a (?) while
$ make
(do not use parallel make like make -j4 on msys.)
#make check
After make is executed successfully the execute "make check" to see the
make go well
$ make check
A lot of tests and results. Finally one can see:
Summary:
PASS 13021
FAIL 0
XFAIL 28
SKIPPED 54
If you encounter FAILs please follow the below message (output make check)
Please help improve Octave by contributing tests for these files
(see the list in the file
d:\usr\Tatsu\program\Octave\octaveBuild\4.0.2\build\test\fntests.l
og).
The same test can be carried out __run_test_suite__ on octave prompt.
# execution test : execute below on build directory
$ ./run-octave
# execution with debug information
$ ./run-ctave -g
This is sometimes useful for debugging.
4. Install
If one want install octave in the directory execute
$ make install # install with debug symbols
or
$ make install-strip # strip debug symbols and unused information for
usual use.
Further work
Transfer build process to that on the msys2.
Msys2 is far powerful than the original msys For exapme, one can use
parallel build and reduce build time half if
you have multi-threaded PC. I also found that performance of the recent msys2
is improved and thus
in even single jog make the msys2 system reduces build time.)
# I propose that mxe-octave for windows builds msys2 but not msys for better
performance.
Tatsuro
[1] JohnD tried to build octave for windows on Msys2+MinGW w64 (native windows
tool)
using the mxe-octave. He reported the successful results for native windows
build.
But I have never reproduce it.
[2] https://msys2.github.io/
https://sourceforge.net/projects/msys2/
[3] Example for configure output
Octave is now configured for i686-pc-mingw32
Source directory: ../octave-4.0.2
Installation prefix:
/c/usr/Tatsu/program/Octave/octaveBuild/4.0.2/usr/local
C compiler: gcc -pthread -fopenmp -mieee-fp -Wall -W
-Wshadow -Wformat -
Wpointer-arith -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings
-Wcast-align -Wcast-q
ual -g -O2
C++ compiler: g++ -pthread -fopenmp -mieee-fp -Wall -W
-Wshadow -Wold-styl
e-cast -Wformat -Wpointer-arith -Wwrite-strings -Wcast-align -Wcast-qual -g -O2
Fortran compiler: gfortran -O -mieee-fp
Fortran libraries:
-Lc:/octave/octave-4.0.2/bin/../lib/gcc/i686-w64-mingw32/4.9.
3 -Lc:/octave/octave-4.0.2/bin/../lib/gcc
-Lc:/octave/octave-4.0.2/bin/../lib/gcc/i686-w64-mi
ngw32/4.9.3/../../../../i686-w64-mingw32/lib/../lib
-Lc:/octave/octave-4.0.2/bin/../lib/gcc/i
686-w64-mingw32/4.9.3/../../../../lib
-Lc:/octave/octave-4.0.2/bin/../lib/gcc/i686-w64-mingw3
2/4.9.3/../../../../i686-w64-mingw32/lib
-Lc:/octave/octave-4.0.2/bin/../lib/gcc/i686-w64-min
gw32/4.9.3/../../.. -lm -lgfortran -lmingw32 -lmoldname -lmingwex -lmsvcrt
-lquadmath -ladvap
i32 -lshell32 -luser32 -lkernel32
Lex libraries:
LIBS: -lm -lgdi32 -lws2_32 -luser32 -lkernel32
-lgdi32 -lws2_32 -l
user32 -lkernel32
AMD CPPFLAGS:
AMD LDFLAGS:
AMD libraries: -lamd
ARPACK CPPFLAGS:
ARPACK LDFLAGS:
ARPACK libraries: -larpack
BLAS libraries: -lopenblas
CAMD CPPFLAGS:
CAMD LDFLAGS:
CAMD libraries: -lcamd
CARBON libraries:
CCOLAMD CPPFLAGS:
CCOLAMD LDFLAGS:
CCOLAMD libraries: -lccolamd
CHOLMOD CPPFLAGS:
CHOLMOD LDFLAGS:
CHOLMOD libraries: -lcholmod
COLAMD CPPFLAGS:
COLAMD LDFLAGS:
COLAMD libraries: -lcolamd
CURL CPPFLAGS:
CURL LDFLAGS:
CURL libraries: -lcurl
CXSPARSE CPPFLAGS:
CXSPARSE LDFLAGS:
CXSPARSE libraries: -lcxsparse
DL libraries:
FFTW3 CPPFLAGS:
FFTW3 LDFLAGS:
FFTW3 libraries: -lfftw3
FFTW3F CPPFLAGS:
FFTW3F LDFLAGS:
FFTW3F libraries: -lfftw3f
FLTK CPPFLAGS:
-I/scratch/jwe/mxe-octave/usr/i686-w64-mingw32/include -mwindo
ws -DWIN32 -DUSE_OPENGL32 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64
FLTK LDFLAGS:
-L/scratch/jwe/mxe-octave/usr/i686-w64-mingw32/lib -Wl,--enab
le-auto-import -Wl,--enable-runtime-pseudo-reloc -lfltk_gl -lglu32 -lopengl32
-lfltk -lole32
-lcomctl32
FLTK libraries:
fontconfig CPPFLAGS: -IC:/octave/Octave-4.0.2/include
-I/usr/include/freetype2 -IC:
/octave/Octave-4.0.2/include/freetype2 -IC:/octave/Octave-4.0.2/include
-IC:/octave/Octave-4.
0.2/include/libpng16
fontconfig libraries: -LC:/octave/Octave-4.0.2/lib -lfontconfig
-lfreetype
FreeType2 CPPFLAGS: -IC:/octave/Octave-4.0.2/include/freetype2
-IC:/octave/Octave-
4.0.2/include -IC:/octave/Octave-4.0.2/include/libpng16
FreeType2 libraries: -LC:/octave/Octave-4.0.2/lib -lfreetype
GLPK CPPFLAGS:
GLPK LDFLAGS:
GLPK libraries: -lglpk
HDF5 CPPFLAGS:
HDF5 LDFLAGS:
HDF5 libraries: -lhdf5
Java home: /c/Program Files (x86)/Java/jdk1.8.0_91/bin
Java JVM path: /c/Program Files (x86)/Java/jdk1.8.0_91/lib
Java CPPFLAGS: -I"/c/Program Files
(x86)/Java/jdk1.8.0_91/include" -I"/c/Prog
ram Files (x86)/Java/jdk1.8.0_91/include/win32"
Java libraries: -ladvapi32
LAPACK libraries: -llapack
LLVM CPPFLAGS:
LLVM LDFLAGS:
LLVM libraries:
Magick++ CPPFLAGS: -IC:/octave/Octave-4.0.2/include/GraphicsMagick
-IC:/octave/Oc
tave-4.0.2/include/libxml2 -IC:/octave/Octave-4.0.2/include
Magick++ LDFLAGS: -LC:/octave/Octave-4.0.2/lib
Magick++ libraries: -lGraphicsMagick++ -lGraphicsMagick
OPENGL libraries: -LC:/octave/Octave-4.0.2/lib -lfontconfig
-lfreetype -lopengl
32 -lglu32
OSMesa CPPFLAGS:
OSMesa LDFLAGS:
OSMesa libraries: -lOSMesa
PCRE CPPFLAGS:
-I/scratch/jwe/mxe-octave/usr/i686-w64-mingw32/include
PCRE libraries:
-L/scratch/jwe/mxe-octave/usr/i686-w64-mingw32/lib -lpcre
PortAudio CPPFLAGS: -IC:/octave/Octave-4.0.2/include
PortAudio LDFLAGS: -LC:/octave/Octave-4.0.2/lib
PortAudio libraries: -lportaudio
PTHREAD flags: -pthread
PTHREAD libraries:
QHULL CPPFLAGS:
QHULL LDFLAGS:
QHULL libraries: -lqhull
QRUPDATE CPPFLAGS:
QRUPDATE LDFLAGS:
QRUPDATE libraries: -lqrupdate
Qt CPPFLAGS: -IC:/octave/Octave-4.0.2/include/QtNetwork
-IC:/octave/Octave-
4.0.2/include/QtOpenGL -IC:/octave/Octave-4.0.2/include/QtGui
-IC:/octave/Octave-4.0.2/includ
e/QtCore
Qt LDFLAGS: -LC:/octave/Octave-4.0.2/lib
Qt libraries: -lQtNetwork4 -lQtOpenGL4 -lQtGui4 -lQtCore4
-lqscintilla2
READLINE libraries: -lreadline
Sndfile CPPFLAGS: -IC:/octave/Octave-4.0.2/include
Sndfile LDFLAGS: -LC:/octave/Octave-4.0.2/lib
Sndfile libraries: -lsndfile
TERM libraries: -ltermcap
UMFPACK CPPFLAGS:
UMFPACK LDFLAGS:
UMFPACK libraries: -lumfpack
X11 include flags:
X11 libraries:
Z CPPFLAGS:
Z LDFLAGS:
Z libraries: -lz
Default pager: less
gnuplot: gnuplot
Build Octave GUI: yes
JIT compiler for loops: no
Build Java interface: yes
Do internal array bounds checking: no
Build static libraries: no
Build shared libraries: yes
Dynamic Linking: yes (LoadLibrary)
Include support for GNU readline: yes
64-bit array dims and indexing: no
OpenMP SMP multithreading: yes
Build cross tools: no
configure: WARNING:
I didn't find icotool, but it's only a problem if you need to
reconstruct octave-logo.ico, which is the case if you're building from
VCS sources.
configure: WARNING:
I didn't find rsvg-convert, but it's only a problem if you need to
reconstruct octave-logo-*.png, which is the case if you're building
from VCS sources.
configure:
configure: NOTE: Libraries or auxiliary programs may be skipped if they are
configure: NOTE: not found OR if they are missing required features on your
configure: NOTE: system.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Octave build on windows using octave binary itself,
Tatsuro MATSUOKA <=