# HG changeset patch
# User John Donoghue <john.donoghue@ieee.org>
# Date 1413634977 14400
#      Sat Oct 18 08:22:57 2014 -0400
# Node ID defda5ccc9c1f45e68aef791c4f5d97604bd82ec
# Parent  70480095b6ed8ef1f8fc1f03061968e9c9a93cbe
Expand options to support 3 possible sources of octave

* configure.ac: modify --enable-stable rule to --enable-octave=source (stable,alpha,default)

* Makefile.am: modify OCTAVE_TARGET based on octave build value set in configure.

* index.html: added master-octave information.

* src/default-octave.mk: new file.

* src/default-octave-1-docinstall.patch

* dist-files.mk: add default-octave-1-docinstall.patch default-octave.mk

diff -r 70480095b6ed -r defda5ccc9c1 Makefile.in
--- a/Makefile.in	Thu Sep 25 14:15:41 2014 -0400
+++ b/Makefile.in	Sat Oct 18 08:22:57 2014 -0400
@@ -1,13 +1,8 @@
 # This file is part of MXE.
 # See index.html for further information.
 
-STABLE_BUILD := @ENABLE_STABLE@
-
-ifeq ($(STABLE_BUILD),yes)
-  OCTAVE_TARGET := stable-octave
-else
-  OCTAVE_TARGET := octave
-endif
+OCTAVE_BUILD := @ENABLE_OCTAVE@
+OCTAVE_TARGET := $(OCTAVE_BUILD)octave
 
 PWD := $(shell pwd)
 TOP_DIR := $(PWD)
diff -r 70480095b6ed -r defda5ccc9c1 configure.ac
--- a/configure.ac	Thu Sep 25 14:15:41 2014 -0400
+++ b/configure.ac	Sat Oct 18 08:22:57 2014 -0400
@@ -150,12 +150,29 @@
   [if test "$enableval" = no; then ENABLE_OPENBLAS=no; fi], [])
 AC_SUBST(ENABLE_OPENBLAS)
 
-ENABLE_STABLE=yes
-AC_ARG_ENABLE([stable],
-  [AS_HELP_STRING([--disable-stable],
-    [Disable stable build of octave and use devel octave instead])],
-  [if test "$enableval" = no; then ENABLE_STABLE=no; fi], [])
-AC_SUBST(ENABLE_STABLE)
+ENABLE_OCTAVE=stable
+AC_ARG_ENABLE([octave],
+  [AS_HELP_STRING([--enable-octave=stable],
+    [Enable a specific build of octave (stable, alpha, default)])],
+  [], [])
+
+case $enableval in
+ stable)
+   ENABLE_OCTAVE="stable-"
+   ;;
+ alpha)
+   ENABLE_OCTAVE=""
+   ;;
+ default)
+   ENABLE_OCTAVE="default-"
+   ;;
+ *)
+   ENABLE_OCTAVE="stable"
+   AC_MSG_WARN([Unknown octave type $enableval - using enable-octave=stable])
+   ;;
+esac
+   
+AC_SUBST(ENABLE_OCTAVE)
 
 ### Default is to cross compile for mingw.
 
diff -r 70480095b6ed -r defda5ccc9c1 dist-files.mk
--- a/dist-files.mk	Thu Sep 25 14:15:41 2014 -0400
+++ b/dist-files.mk	Sat Oct 18 08:22:57 2014 -0400
@@ -60,6 +60,8 @@
   dcmtk-1-fixes.patch \
   dcmtk-2-ming64.patch \
   dcmtk.mk \
+  default-octave-1-docinstall.patch \
+  default-octave.mk \
   devil-1-png.patch \
   devil.mk \
   eigen.mk \
diff -r 70480095b6ed -r defda5ccc9c1 index.html
--- a/index.html	Thu Sep 25 14:15:41 2014 -0400
+++ b/index.html	Sat Oct 18 08:22:57 2014 -0400
@@ -1098,6 +1098,10 @@
         <td class="website"><a href="http://dicom.offis.de/dcmtk.php.en">DCMTK</a></td>
     </tr>
     <tr>
+        <td class="package">default-octave</td>
+        <td class="website"><a href="http://octave.org/">Octave</a></td>
+    </tr>
+    <tr>
         <td class="package">devil</td>
         <td class="website"><a href="http://openil.sourceforge.net/">DevIL</a></td>
     </tr>
diff -r 70480095b6ed -r defda5ccc9c1 src/default-octave-1-docinstall.patch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/default-octave-1-docinstall.patch	Sat Oct 18 08:22:57 2014 -0400
@@ -0,0 +1,16 @@
+diff -ur a/doc/interpreter/Makefile.in b/doc/interpreter/Makefile.in
+--- a/doc/interpreter/Makefile.in	2013-12-27 17:01:52.000000000 -0500
++++ b/doc/interpreter/Makefile.in	2014-01-21 12:47:59.618865568 -0500
+@@ -2435,8 +2435,10 @@
+ 	  if test -d "$$d2"; then \
+ 	    echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+ 	    $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+-	    echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+-	    $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
++	    for htm in "$$d2"/*; do \
++	      echo " $(INSTALL_DATA) '$$htm' '$(DESTDIR)$(htmldir)/$$f'"; \
++	      $(INSTALL_DATA) "$$htm" "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
++	    done; \
+ 	  else \
+ 	    list2="$$list2 $$d2"; \
+ 	  fi; \
diff -r 70480095b6ed -r defda5ccc9c1 src/default-octave.mk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/default-octave.mk	Sat Oct 18 08:22:57 2014 -0400
@@ -0,0 +1,134 @@
+# This file is part of MXE.
+# See index.html for further information.
+
+PKG             := master-octave
+$(PKG)_IGNORE   :=
+$(PKG)_VERSION  := 4.1.0+
+$(PKG)_CHECKSUM := 0a72ae6da93c7e8bf6b8230dab416fe77f77d1b6
+$(PKG)_SUBDIR   := octave-$($(PKG)_VERSION)
+$(PKG)_FILE     := octave-$($(PKG)_VERSION).tar.gz
+$(PKG)_URL      := http://hydra.nixos.org/job/gnu/octave-default/tarball/latest/download
+ifeq ($(USE_SYSTEM_FONTCONFIG),no)
+  $(PKG)_FONTCONFIG := fontconfig
+endif
+$(PKG)_DEPS     := blas arpack curl fftw fltk $($(PKG)_FONTCONFIG) ghostscript gl2ps glpk gnuplot graphicsmagick hdf5 lapack pcre pstoedit qrupdate qscintilla qt readline suitesparse texinfo zlib
+ifeq ($(ENABLE_64),no)
+  $(PKG)_DEPS += qhull
+endif
+ifeq ($(ENABLE_JIT),yes)
+  $(PKG)_DEPS += llvm
+  $(PKG)_ENABLE_JIT_CONFIGURE_OPTIONS := --enable-jit
+else
+  $(PKG)_ENABLE_JIT_CONFIGURE_OPTIONS := --disable-jit
+endif
+
+ifeq ($(ENABLE_JAVA),no)
+  $(PKG)_ENABLE_JAVA_CONFIGURE_OPTIONS := --disable-java
+else
+  ifeq ($(MXE_SYSTEM),mingw)
+    ifeq ($(MXE_NATIVE_BUILD),no)
+      $(PKG)_ENABLE_JAVA_CONFIGURE_OPTIONS := \
+       --with-java-includedir="$(HOST_INCDIR)/java"
+     endif
+  endif
+endif
+
+ifneq ($(ENABLE_DOCS),yes)
+  $(PKG)_ENABLE_DOCS_CONFIGURE_OPTIONS := --disable-docs
+endif
+
+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 --without-qhull F77_INTEGER_8_FLAG=-fdefault-integer-8
+  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
+    ifeq ($(ENABLE_64),yes)
+      $(PKG)_ENABLE_64_CONFIGURE_OPTIONS := --enable-64 --without-qhull F77_INTEGER_8_FLAG=-fdefault-integer-8 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.
+  # - Override CFLAGS and CXXFLAGS to disable some warnings.
+  $(PKG)_EXTRA_CONFIGURE_OPTIONS := \
+    --enable-atomic-refcount \
+    ac_cv_func_pow=yes ac_cv_func_sqrt=yes \
+    CFLAGS='-O2 -wd4244 -wd4003 -wd4005 -wd4068' \
+    CXXFLAGS='-O2 -wd4244 -wd4003 -wd4005 -wd4068'
+else
+  $(PKG)_PREFIX := '$(HOST_PREFIX)'
+  $(PKG)_EXTRA_CONFIGURE_OPTIONS := \
+    LDFLAGS='-Wl,-rpath-link,$(HOST_LIBDIR) -L$(HOST_LIBDIR)'
+endif
+
+ifeq ($(MXE_SYSTEM),mingw)
+  $(PKG)_EXTRA_CONFIGURE_OPTIONS += --with-x=no
+endif
+
+define $(PKG)_UPDATE
+    echo 'Warning: Updates are temporarily disabled for package octave.' >&2;
+    echo $($(PKG)_VERSION)
+endef
+
+define $(PKG)_BUILD
+    # jni install
+    if [ "$(MXE_SYSTEM)" == "mingw" ] \
+      && [ "$(MXE_NATIVE_BUILD)" == "no" ] \
+      && [ "$(ENABLE_JAVA)" == "yes" ]; then \
+      if [ ! -f $(HOST_INCDIR)/java/jni.h ]; then \
+        mkdir -p '$(HOST_INCDIR)/java'; \
+        $(WGET) -N http://hg.openjdk.java.net/jdk7u/jdk7u/jdk/raw-file/tip/src/share/javavm/export/jni.h \
+          -O $(HOST_INCDIR)/java/jni.h; \
+      fi; \
+      if [ ! -f $(HOST_INCDIR)/java/win32/jni_md.h ]; then \
+        mkdir -p '$(HOST_INCDIR)/java/win32'; \
+        $(WGET) -N http://hg.openjdk.java.net/jdk7u/jdk7u/jdk/raw-file/tip/src/windows/javavm/export/jni_md.h \
+          -O $(HOST_INCDIR)/java/win32/jni_md.h; \
+      fi; \
+    fi
+
+    mkdir '$(1)/.build'
+    cd '$(1)/.build' && $($(PKG)_CONFIGURE_ENV) '$(1)/configure' \
+        $(CONFIGURE_CPPFLAGS) $(CONFIGURE_LDFLAGS) \
+        $(HOST_AND_BUILD_CONFIGURE_OPTIONS) \
+        --prefix='$($(PKG)_PREFIX)' \
+        $($(PKG)_CROSS_CONFIG_OPTIONS) \
+        $($(PKG)_ENABLE_64_CONFIGURE_OPTIONS) \
+        $($(PKG)_ENABLE_JAVA_CONFIGURE_OPTIONS) \
+        $($(PKG)_ENABLE_JIT_CONFIGURE_OPTIONS) \
+        $($(PKG)_ENABLE_DOCS_CONFIGURE_OPTIONS) \
+        $($(PKG)_EXTRA_CONFIGURE_OPTIONS) \
+        PKG_CONFIG='$(MXE_PKG_CONFIG)' \
+        PKG_CONFIG_PATH='$(HOST_LIBDIR)/pkgconfig' \
+        && $(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 DESTDIR='$(3)'
+
+    if [ "x$(MXE_SYSTEM)" == "xmingw" ]; then \
+      cp '$(1)/.build/src/.libs/octave-gui.exe' '$(3)$(HOST_BINDIR)'; \
+    fi
+
+    if [ "x$(ENABLE_DOCS)" == "xyes" ]; then \
+        $(MAKE) -C '$(1)/.build' -j '$(JOBS)' DESTDIR=$(3) install-pdf install-html; \
+    fi
+
+    if [ $(MXE_SYSTEM) != msvc ]; then \
+        $(MAKE) -C '$(1)/.build' -j '$(JOBS)' DESTDIR=$(TOP_DIR)/octave install; \
+    fi
+
+    # create a file with latest installed octave rev in it
+    echo "$($(PKG)_VERSION)" > $(TOP_DIR)/octave/octave-version
+endef
