view src/octave.mk @ 3210:1d0fd132afa6

src/octave.mk: Compile Octave with FFTW multi-threading support
author Anirudha Bose <ani07nov@gmail.com>
date Thu, 19 Sep 2013 03:08:50 +0530
parents 7ef17f0b3ff8
children 9bedb9046700
line wrap: on
line source

# This file is part of MXE.
# See index.html for further information.

PKG             := octave
$(PKG)_IGNORE   :=
$(PKG)_CHECKSUM := a51f52fa6dfef2e905d0c64f0401caab5a11faca
$(PKG)_SUBDIR   := $(PKG)-$($(PKG)_VERSION)
$(PKG)_FILE     := octave-$($(PKG)_VERSION).tar.gz
$(PKG)_URL      := ftp://alpha.gnu.org/gnu/octave/$($(PKG)_FILE)
$(PKG)_DEPS     := arpack curl fftw fltk fontconfig glpk gnuplot graphicsmagick hdf5 lapack pcre pstoedit qhull qrupdate qscintilla qt readline suitesparse texinfo zlib
ifeq ($(ENABLE_JIT),yes)
  $(PKG)_DEPS += llvm
$(PKG)_ENABLE_JIT_CONFIGURE_OPTIONS := --enable-jit
endif

ifeq ($(ENABLE_OPENBLAS),yes)
  $(PKG)_DEPS += openblas
  $(PKG)_BLAS_OPTION := --with-blas=openblas
else
  $(PKG)_DEPS += blas
endif

$(PKG)_CONFIGURE_POST_HOOK := $(CONFIGURE_POST_HOOK) -x

ifeq ($(MXE_NATIVE_BUILD),yes)
  $(PKG)_CONFIGURE_ENV := LD_LIBRARY_PATH=$(LD_LIBRARY_PATH)
  ifeq ($(ENABLE_64),yes)
    $(PKG)_ENABLE_64_CONFIGURE_OPTIONS := --enable-64
  endif
else
  ifeq ($(MXE_SYSTEM),mingw)
    $(PKG)_CROSS_CONFIG_OPTIONS := \
      FLTK_CONFIG='$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)fltk-config' \
      gl_cv_func_gettimeofday_clobber=no

    MINGW_JAVA_CONFIG_OPTIONS := \
      --with-java-homedir="$(HOST_PREFIX)/include/java" \
      --with-java-includedir="$(HOST_PREFIX)/include/java" \

    ifeq ($(ENABLE_64),yes)
      $(PKG)_ENABLE_64_CONFIGURE_OPTIONS := --enable-64 ax_blas_f77_func_ok=yes
    endif
  endif
endif

ifeq ($(MXE_SYSTEM),msvc)
  $(PKG)_PREFIX := '$(HOST_PREFIX)/local/$($(PKG)_SUBDIR)'
  # - Enable atomic refcount (required for QtHandles)
  # - Skip configure test for pow and sqrt, MSVC fails to compile them
  #   because it uses intrinsics (with -O2 flag) and bump on the fake
  #   "char FUNC()" forward declaration.
  $(PKG)_EXTRA_CONFIGURE_OPTIONS := \
    --enable-atomic-refcount \
    ac_cv_func_pow=yes ac_cv_func_sqrt=yes
else
  $(PKG)_PREFIX := '$(HOST_PREFIX)'
  $(PKG)_EXTRA_CONFIGURE_OPTIONS := \
    LDFLAGS='-Wl,-rpath-link,$(HOST_LIBDIR) -L$(HOST_LIBDIR)'
endif

ifeq ($(MXE_SYSTEM), darwin)
  $(PKG)_DARWIN_EXTRA_CONFIG_OPTIONS := \
    --with-umfpack-includedir='$(HOST_INCDIR)' \
    --with-umfpack-libdir='$(HOST_LIBDIR)' \
    --with-arpack-includedir='$(HOST_INCDIR)' \
    --with-arpack-libdir='$(HOST_LIBDIR)' \
    --with-amd-includedir='$(HOST_INCDIR)' \
    --with-amd-libdir='$(HOST_LIBDIR)' \
    --with-camd-includedir='$(HOST_INCDIR)' \
    --with-camd-libdir='$(HOST_LIBDIR)' \
    --with-cholmod-includedir='$(HOST_INCDIR)' \
    --with-cholmod-libdir='$(HOST_LIBDIR)' \
    --with-colamd-includedir='$(HOST_INCDIR)' \
    --with-colamd-libdir='$(HOST_LIBDIR)' \
    --with-ccolamd-includedir='$(HOST_INCDIR)' \
    --with-ccolamd-libdir='$(HOST_LIBDIR)' \
    --with-cxsparse-includedir='$(HOST_INCDIR)' \
    --with-cxsparse-libdir='$(HOST_LIBDIR)' \
    --with-qhull-includedir='$(HOST_INCDIR)' \
    --with-qhull-libdir='$(HOST_LIBDIR)' \
    --with-hdf5-includedir='$(HOST_INCDIR)' \
    --with-hdf5-libdir='$(HOST_LIBDIR)' \
    --with-glpk-includedir='$(HOST_INCDIR)' \
    --with-glpk-libdir='$(HOST_LIBDIR)' \
    --with-fftw3-includedir='$(HOST_INCDIR)' \
    --with-fftw3-libdir='$(HOST_LIBDIR)' \
    --with-fftw3f-includedir='$(HOST_INCDIR)' \
    --with-fftw3f-libdir='$(HOST_LIBDIR)' \
    --enable-fftw-threads \
    --with-qrupdate-includedir='$(HOST_INCDIR)' \
    --with-qrupdate-libdir='$(HOST_LIBDIR)' \
    --with-arpack-includedir='$(HOST_INCDIR)' \
    --with-arpack-libdir='$(HOST_LIBDIR)' \
    F77=$(MXE_F77)
  ifeq ($(ENABLE_JIT), yes)
    $(PKG)_DARWIN_EXTRA_CONFIG_OPTIONS += LLVM_CONFIG=`find /opt/local/libexec -name llvm-config 2>/dev/null | head -n 1`
  endif
endif


define $(PKG)_UPDATE
    echo 'Warning: Updates are temporarily disabled for package octave.' >&2;
    echo $(octave_VERSION)
endef

define $(PKG)_BUILD
    if [[ "$(MXE_NATIVE_MINGW_BUILD)" != yes && "$(MXE_SYSTEM)" == mingw ]]; then \
        mkdir -p '$(HOST_PREFIX)/include/java/include' ; \
	$(WGET) -N http://hg.openjdk.java.net/jdk7u/jdk7u/jdk/raw-file/tip/src/share/javavm/export/jni.h -O $(HOST_PREFIX)/include/java/include/jni.h ; \
	mkdir -p '$(HOST_PREFIX)/include/java/include/win32' ; \
	$(WGET) -N http://hg.openjdk.java.net/jdk7u/jdk7u/jdk/raw-file/tip/src/windows/javavm/export/jni_md.h -O $(HOST_PREFIX)/include/java/include/win32/jni_md.h; \
    fi
    mkdir '$(1)/.build'
    cd '$(1)' && autoreconf -W none
    cd '$(1)/.build' && $($(PKG)_CONFIGURE_ENV) '$(1)/configure' \
        $(CONFIGURE_CPPFLAGS) \
        $(HOST_AND_BUILD_CONFIGURE_OPTIONS) \
        --prefix='$($(PKG)_PREFIX)' \
	$(MINGW_JAVA_CONFIG_OPTIONS) \
	$($(PKG)_DARWIN_EXTRA_CONFIG_OPTIONS) \
	--enable-docs \
        $($(PKG)_BLAS_OPTION) \
	$($(PKG)_CROSS_CONFIG_OPTIONS) \
        $($(PKG)_ENABLE_64_CONFIGURE_OPTIONS) \
        $($(PKG)_ENABLE_JIT_CONFIGURE_OPTIONS) \
	$($(PKG)_EXTRA_CONFIGURE_OPTIONS) \
	PKG_CONFIG='$(MXE_PKG_CONFIG)' \
	PKG_CONFIG_PATH='$(HOST_LIBDIR)/pkgconfig' \
        && $($(PKG)_CONFIGURE_POST_HOOK)

    ## We want both of these install steps so that we install in the
    ## location set by the configure --prefix option, and the other
    ## in a directory tree that will have just Octave files.
    $(MAKE) -C '$(1)/.build' -j '$(JOBS)' install install-pdf install-html
    if [ $(MXE_SYSTEM) != msvc ]; then \
        $(MAKE) -C '$(1)/.build' -j '$(JOBS)' DESTDIR=$(TOP_DIR)/octave install; \
    fi
endef