# HG changeset patch
# User John W. Eaton
# Date 1613168958 18000
# Node ID 143a4181d569de00a7d283c803979ebc1bb5b215
# Parent e9741f369ee4ae9a59d8a73b123e96d5d49bf81d# Parent c724e30df2ba1af6ae7c6eedf6f80f45c842192e
reactivate release branch
diff -r e9741f369ee4 -r 143a4181d569 .hgignore
--- a/.hgignore Fri Dec 06 23:02:15 2013 -0500
+++ b/.hgignore Fri Feb 12 17:29:18 2021 -0500
@@ -1,19 +1,21 @@
-^settings.mk
+^settings\.mk
^usr/
^log/
^pkg/
+^built-packages/
^installed-packages/
^wip/
^tmp-.*/
-^autom4te.cache/
+^autom4te\.cache/
^configure
-^config.status
-^config.log
+^config\.status
+^config\.log
^Makefile
-^cmake-toolchain-file.stamp
+^cmake-toolchain-file\.stamp
^cross-tools/
^gnuplot/
^octave/
-^tools/set_mxe_env.sh
+^tools/makeinst-script\.sh
+^tools/set-mxe-env\.sh
diff -r e9741f369ee4 -r 143a4181d569 .hgtags
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgtags Fri Feb 12 17:29:18 2021 -0500
@@ -0,0 +1,14 @@
+1cab2860069ea9401ff3f28f1fd9654bc777026b release-4-0-0
+a047bc8d7910849a3ddcb4d1856ce3dd2b912aa4 octave-4.0.1-binary
+e622765c49c736f6e8e4627310a59f1c49fae283 octave-release-4.2.0
+ebc418be26ec62519a6ddceb6a6f35b368e49f92 octave-release-4.4.0
+7f8ff4800eefbf0ba6c842af4d20c0dc1ae6e89a octave-release-4.4.1
+3ef2868263e4ac69b09508acf07255e8fa397afb octave-release-5.1.0
+9057112edb8e26e6880cbddabcaa43acaafcc841 octave-release-5.2.0
+9057112edb8e26e6880cbddabcaa43acaafcc841 octave-release-5.2.0
+8c1e1ef46ed22ddb1e0c1ab94137d631cd97495f octave-release-5.2.0
+00a0eac6b6cd816937d25914d371e856d839bcd8 octave-release-5.2.0_1
+039563087c70904213cd835dc3e9a8c5025ec6eb octave-rc-6.0.90
+60c8f985d8f59effea0fddb7ccf4b7a7c63c71fd octave-rc-6-0-92
+a1004ea5643dc65ef0f156fc1f5fce561feb1e57 octave-release-6.1.0
+f062783e4ace3bb551cf51d7592920255770f583 octave-rc-6.1.90
diff -r e9741f369ee4 -r 143a4181d569 Makefile.in
--- a/Makefile.in Fri Dec 06 23:02:15 2013 -0500
+++ b/Makefile.in Fri Feb 12 17:29:18 2021 -0500
@@ -1,34 +1,93 @@
# This file is part of MXE.
# See index.html for further information.
+OCTAVE_TARGET := @ENABLE_OCTAVE@octave
+
PWD := $(shell pwd)
+TOP_BUILD_DIR := @abs_builddir@
+TOP_DIR := @abs_srcdir@
+
+STRIP_DIST_FILES := @STRIP_DIST_FILES@
+
+DATE := $(shell date +%Y-%m-%d-%H-%M)
## Configuration variables.
# Set the following configuration variables with a configure script?
-# Current valid values are mingw (cross) and gnu-linux (native).
+# Current valid values are mingw (cross or native), msvc (native)
+# and gnu-linux (native).
MXE_SYSTEM := @MXE_SYSTEM@
+ifeq ($(MXE_SYSTEM),mingw)
+else ifeq ($(MXE_SYSTEM),msvc)
+else ifeq ($(MXE_SYSTEM),gnu-linux)
+else
+$(error "$(MXE_SYSTEM)" is not a valid value for MXE_SYSTEM)
+endif
# Set to "no" if doing a cross compile build.
MXE_NATIVE_BUILD := @MXE_NATIVE_BUILD@
+# Set to "yes" to use ccache
+USE_CCACHE := @USE_CCACHE@
+CCACHE := @CCACHE@
+
# Set to "yes" to use the versions of GCC and binutils already
# installed on your system (default is yes if doing native build).
USE_SYSTEM_GCC := @USE_SYSTEM_GCC@
# Set to "yes" to use the version of fontconfig already installed
-# on your system (default is yes if doing native build).
+# on your system (default is yes if doing native build).
USE_SYSTEM_FONTCONFIG := @USE_SYSTEM_FONTCONFIG@
+# Set to "yes" to use the OpenGL libraries already installed
+# on your system (default is yes).
+USE_SYSTEM_OPENGL := @USE_SYSTEM_OPENGL@
+
+# Set to "yes" to use the X11 libraries already installed
+# on your system (default is yes if doing native build).
+USE_SYSTEM_X11_LIBS := @USE_SYSTEM_X11_LIBS@
+
+# Build compiler for 64-bit Windows. Using this option will build
+# binaries that require a 64-bit Windows system.
+ENABLE_WINDOWS_64 := @ENABLE_WINDOWS_64@
+
+# Build Octave with 64-bit indexing enabled (This is the default).
+ENABLE_64 := @ENABLE_64@
+
+# Build Fortran (and other) numerical library dependencies with
+# 64-bit indexing enabled (experimental; requires 64-bit system and
+# compiler). The usual configuration is to build with ENABLE_64 but
+# not ENABLE_FORTRAN_INT64.
+ENABLE_FORTRAN_INT64 := @ENABLE_FORTRAN_INT64@
+
+# create binary octave forge tools.
+# if cross, compiling, this also means we will attempt to create cross mkoctfile
+ENABLE_BINARY_PACKAGES := @ENABLE_BINARY_PACKAGES@
+
+# Set to "no" to build a minimal Octave that runs on the build system.
+# That version can be used for cross-building binary packages that depend
+# on Octave as a build tool. If "yes", it is tried to use an Octave that
+# is already installed on the build system (default is "yes").
+USE_SYSTEM_OCTAVE := @USE_SYSTEM_OCTAVE@
+
+# create and install devel tools (default no)
+ENABLE_DEVEL_TOOLS := @ENABLE_DEVEL_TOOLS@
+
+# use qt5 instead of qt4
+ENABLE_QT5 := @ENABLE_QT5@
+
+# Set to "yes" to use msys2
+USE_MSYS2 := @USE_MSYS2@
+
# Should match what config.guess prints for your system.
-# If cross compiling, you must set it manually.
+# If cross compiling, you must set it manually (defaults are set by configure).
ifeq ($(MXE_NATIVE_BUILD),yes)
- TARGET := $(shell tools/config.guess)
+ TARGET := $(shell $(TOP_DIR)/tools/config.guess)
else
- TARGET := i686-pc-mingw32
+ TARGET := @MXE_TARGET@
endif
-BUILD_SYSTEM := $(shell tools/config.guess)
+BUILD_SYSTEM := $(shell $(TOP_DIR)/tools/config.guess)
# Enable shared or static libs, or perhaps both. Probably it doesn't
# make sense to disable both...
@@ -37,9 +96,8 @@
USE_PIC_FLAG := @USE_PIC_FLAG@
-# Attempt to build Octave and dependencies with 64-bit indexing
-# enabled (experimental; requires 64-bit system and compiler).
-ENABLE_64 := @ENABLE_64@
+# Compile Qhull with -fno-strict-aliasing flag.
+ENABLE_QHULL_NO_STRICT_ALIASING_FLAG := @ENABLE_QHULL_NO_STRICT_ALIASING_FLAG@
# Attempt to build with support for Java.
ENABLE_JAVA := @ENABLE_JAVA@
@@ -47,9 +105,15 @@
# Attempt to build LLVM and enable Octave's experimental JIT compiler.
ENABLE_JIT := @ENABLE_JIT@
+# Build octave docs
+ENABLE_DOCS := @ENABLE_DOCS@
+
# Use openblas for octave
ENABLE_OPENBLAS := @ENABLE_OPENBLAS@
+# Install dependancy pkg docs
+ENABLE_DEP_DOCS := @ENABLE_DEP_DOCS@
+
# Look in lib64 directory.
MXE_USE_LIB64_DIRECTORY := @ENABLE_LIB64_DIRECTORY@
@@ -82,7 +146,7 @@
# and it's not clear to me how to change that.
#
# For native builds, dump everything all together in one directory tree.
-ROOT_PREFIX := $(PWD)/usr
+ROOT_PREFIX := $(TOP_BUILD_DIR)/usr
BUILD_TOOLS_PREFIX := $(ROOT_PREFIX)
ifeq ($(MXE_NATIVE_BUILD),yes)
HOST_PREFIX := $(ROOT_PREFIX)
@@ -95,20 +159,56 @@
$(shell mkdir -p $(BUILD_TOOLS_PREFIX))
$(shell mkdir -p $(HOST_PREFIX))
-# At least one package uses --with instead of --enable.
+## The mk-hg-id.sh script will be executed each time Make runs. It will
+## update the HG-ID file in the build tree.
+$(shell $(TOP_DIR)/tools/mk-hg-id.sh "$(TOP_DIR)")
+
+## At least one package uses --with instead of --enable.
+## Some cmake packages use BUILD_STATIC_LIBS and at least
+## one uses ONLY_SHARED_LIBS
ifeq ($(BUILD_SHARED),yes)
ifeq ($(BUILD_STATIC),yes)
ENABLE_SHARED_OR_STATIC := --enable-shared --enable-static
WITH_SHARED_OR_STATIC := --with-shared --with-static
+ CMAKE_BUILD_SHARED_OR_STATIC := -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DONLY_SHARED_LIBS=OFF
else
ENABLE_SHARED_OR_STATIC := --enable-shared --disable-static
WITH_SHARED_OR_STATIC := --with-shared --without-static
+ CMAKE_BUILD_SHARED_OR_STATIC := -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF -DONLY_SHARED_LIBS=ON
endif
else
ENABLE_SHARED_OR_STATIC := --disable-shared --enable-static
WITH_SHARED_OR_STATIC := --without-shared --with-static
+ CMAKE_BUILD_SHARED_OR_STATIC := -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON -DONLY_SHARED_LIBS=OFF
endif
+ifeq ($(ENABLE_DEP_DOCS),no)
+ MXE_DISABLE_DOCS := \
+ man_MANS= \
+ dist_man_MANS= \
+ man1_MANS= \
+ dist_man1_MANS= \
+ man2_MANS= \
+ man3_MANS= \
+ dist_man3_MANS= \
+ man4_MANS= \
+ man5_MANS= \
+ dist_man5_MANS= \
+ doc_DATA= \
+ dist_doc_DATA= \
+ html_DATA= \
+ dist_html_DATA= \
+ pkghtml_DATA= \
+ examples_DATA= \
+ dist_examples_SCRIPTS= \
+ dist_apidoc_DATA= \
+ INFO_DEPS=
+else
+ MXE_DISABLE_DOCS :=
+endif
+
+MXE_DISABLE_PROGS := bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS=
+
ifeq ($(USE_PIC_FLAG),yes)
MXE_CC_PICFLAG := -fPIC
MXE_CXX_PICFLAG := -fPIC
@@ -116,18 +216,31 @@
endif
JOBS := 1
-SOURCEFORGE_MIRROR := freefr.dl.sourceforge.net
-PKG_MIRROR := s3.amazonaws.com/mxe-pkg
-PKG_CDN := d1yihgixbnrglp.cloudfront.net
+SOURCEFORGE_MIRROR := downloads.sourceforge.net
+MXE_MIRROR := https://mirror.mxe.cc/pkg
+MXE_OCTAVE_MIRROR := https://octave.org/mxe-pkg-src
+PKG_MIRROR := https://s3.amazonaws.com/mxe-pkg
+PKG_CDN := http://d1yihgixbnrglp.cloudfront.net
+GITLAB_BACKUP := https://gitlab.com/starius/mxe-backup2/raw/master
+# reorder as required, ensuring final one is a http fallback
+MIRROR_SITES := GITLAB_BACKUP MXE_MIRROR PKG_MIRROR PKG_CDN MXE_OCTAVE_MIRROR
SHELL := @SHELL@
+GREP ?= grep
INSTALL := $(shell ginstall --help >/dev/null 2>&1 && echo g)install
PATCH := $(shell gpatch --help >/dev/null 2>&1 && echo g)patch
SED := $(shell gsed --help >/dev/null 2>&1 && echo g)sed
-WGET := wget --no-check-certificate \
- --user-agent=$(shell wget --version | \
- $(SED) -n 's,GNU \(Wget\) \([0-9.]*\).*,\1/\2,p')
+SORT := $(shell gsort --help >/dev/null 2>&1 && echo g)sort
+## The --compression option for wget is new in 1.19.2 and now without
+## using --compression=none, wget seems to uncompress .gz archives
+## automatically?!?
+WGET_TOOL = wget
+WGET_COMP := $(shell $(WGET_TOOL) --compression=none --help >/dev/null 2>&1 && echo x--compression=none | $(SED) 's/x//')
+DEFAULT_UA := $(shell $(WGET_TOOL) --version | $(SED) -n 's,GNU \(Wget\) \([0-9.]*\).*,\1/\2,p')
+WGET = $(WGET_TOOL) $(WGET_COMP) --no-check-certificate \
+ --user-agent='$(or $($(1)_UA),$(DEFAULT_UA))'
+
# The MSYS GNU tar does not support long uid/gid, leading to unpacking
# errors for some archives. Bsdtar does not have that limitation, so
# use it on Win32 platform if GNU tar fails to unpack the archive.
@@ -138,27 +251,29 @@
TAR := tar
endif
-REQUIREMENTS := bash bzip2 $(MAKE) openssl $(PATCH) $(PERL) \
+REQUIREMENTS := bash bzip2 $(MAKE) $(PATCH) $(PERL) \
$(SED) tar unzip wget
ifeq ($(MXE_NATIVE_MINGW_BUILD),yes)
REQUIREMENTS += bsdtar
endif
-# if we want jit (llvm) we need python
-ifeq ($(ENABLE_JIT),yes)
- REQUIREMENTS += python
-endif
-
LIBTOOL := libtool
LIBTOOLIZE := libtoolize
## Build tools are tools that we need to build everything else.
## They run on the build system. Some, like gcc and binutils may
## generate output that runs on the host system (TARGET in MXE terms).
-ALL_BUILD_TOOLS := $(patsubst src/%.mk, %, $(wildcard src/build-*.mk))
+ALL_BUILD_TOOLS := $(shell $(SED) -n 's/^.* class="package">\(build-[^<]*\)<.*$$/\1/p' '$(TOP_DIR)/index.html')
+
BUILD_COMPILER_TOOLS := build-gcc build-binutils
BUILD_TOOLS := $(ALL_BUILD_TOOLS)
+# some build tools are optional and added as explicit dependencies
+# to packages that need them
+BUILD_TOOLS_OPT := \
+ build-mako build-markupsafe build-meson build-ninja build-python3 \
+ build-python build-octave build-setuptools build-scons
+BUILD_TOOLS := $(filter-out $(BUILD_TOOLS_OPT), $(BUILD_TOOLS))
# Building flex for native mingw fails, so disable it.
ifeq ($(MXE_NATIVE_MINGW_BUILD),yes)
REQUIREMENTS += flex
@@ -180,7 +295,18 @@
REQUIREMENTS += makeinfo xz
BUILD_TOOLS := $(filter-out build-texinfo build-xz, $(BUILD_TOOLS))
endif
+# use the a native python in native mingw
+ifeq ($(MXE_NATIVE_MINGW_BUILD),yes)
+ REQUIREMENTS += python3
+ BUILD_TOOLS := $(filter-out build-python3, $(BUILD_TOOLS))
+endif
+PYTHON3 ?= python3
+# use the a native awk in native mingw
+ifeq ($(MXE_NATIVE_MINGW_BUILD),yes)
+ REQUIREMENTS += awk
+ BUILD_TOOLS := $(filter-out build-gawk, $(BUILD_TOOLS))
+endif
ifeq ($(USE_SYSTEM_GCC),yes)
BUILD_TOOLS := $(filter-out $(BUILD_COMPILER_TOOLS), $(BUILD_TOOLS))
@@ -189,26 +315,48 @@
BUILD_TOOLS := $(filter-out build-msvctools, $(BUILD_TOOLS))
endif
-STAMP_DIR := $(PWD)/installed-packages
-MSYS_INFO_DIR := $(PWD)/msys-info
-LOG_DIR := $(PWD)/log
+STAMP_DIR := $(TOP_BUILD_DIR)/installed-packages
+BUILT_PKGS_DIR := $(TOP_BUILD_DIR)/built-packages
+MSYS_INFO_DIR := $(TOP_BUILD_DIR)/msys-info
+LOG_DIR := $(TOP_BUILD_DIR)/log
TIMESTAMP := $(shell date +%Y%m%d_%H%M%S)
-PKG_DIR := $(PWD)/pkg
-TMP_DIR = $(PWD)/tmp-$(1)
-TOP_DIR := $(PWD)
-MAKEFILE := $(TOP_DIR)/Makefile
-PKGS := $(filter-out $(ALL_BUILD_TOOLS), $(shell $(SED) -n 's/^.* id="\([^"]*\)-package">.*$$/\1/p' '$(TOP_DIR)/index.html'))
+PKG_DIR := @PKG_DIR@
+TMP_DIR = $(TOP_BUILD_DIR)/tmp-$(1)
+MAKEFILE := $(TOP_BUILD_DIR)/Makefile
+PKGS := $(filter-out $(ALL_BUILD_TOOLS), $(shell $(SED) -n 's/^.* class="package">\([^<]*\)<.*$$/\1/p' '$(TOP_DIR)/index.html'))
+PKGS += $(BUILD_TOOLS_OPT)
+ENV_PATH := $(PATH)
PATH := $(BUILD_TOOLS_PREFIX)/bin:$(PATH)
+ifeq ($(USE_CCACHE),yes)
+ PATH := $(BUILD_TOOLS_PREFIX)/bin/ccache:$(PATH)
+ CCACHE_LINKS_TARGET := ccache-links
+endif
+
+ENV_PKG_CONFIG_PATH := $(PKG_CONFIG_PATH)
+
+BUILD_PKG_CONFIG_PATH ?= @BUILD_PKG_CONFIG_PATH@
CONFIGURE_CPPFLAGS := CPPFLAGS='-I$(HOST_PREFIX)/include'
ifeq ($(MXE_USE_LIB64_DIRECTORY),yes)
CONFIGURE_LDFLAGS := LDFLAGS='-L$(HOST_PREFIX)/lib -L$(HOST_PREFIX)/lib64'
+ PKG_CONFIG_PATH := $(HOST_PREFIX)/lib/pkgconfig:$(HOST_PREFIX)/lib64/pkgconfig
+ export PKG_CONFIG_PATH
else
CONFIGURE_LDFLAGS := LDFLAGS='-L$(HOST_PREFIX)/lib'
+ PKG_CONFIG_PATH := $(HOST_PREFIX)/lib/pkgconfig
+ export PKG_CONFIG_PATH
endif
CONFIGURE_POST_HOOK := true
+HOST_BINDIR := $(HOST_PREFIX)/bin
+HOST_LIBDIR := $(HOST_PREFIX)/lib
+HOST_LIB64DIR := $(HOST_PREFIX)/lib64
+HOST_INCDIR := $(HOST_PREFIX)/include
+
+CMAKE_HOST_PREFIX := $(HOST_PREFIX)
+CMAKE_ROOT_PREFIX := $(ROOT_PREFIX)
+
ifeq ($(MXE_NATIVE_BUILD),yes)
MXE_TOOL_PREFIX :=
ifeq ($(MXE_NATIVE_MINGW_BUILD),yes)
@@ -263,6 +411,14 @@
MXE_PKG_CONFIG := pkg-config
MXE_QMAKE := qmake
endif
+
+ MXE_MOC := $(HOST_BINDIR)/moc
+ MXE_UIC := $(HOST_BINDIR)/uic
+ MXE_LRELEASE := $(HOST_BINDIR)/lrelease
+ MXE_RCC := $(HOST_BINDIR)/rcc
+
+ MXE_MKOCTFILE := $(HOST_BINDIR)/mkoctfile
+ MXE_OCTAVECONFIG := $(HOST_BINDIR)/octave-config
else
MXE_TOOL_PREFIX := $(TARGET)-
MXE_AR := '$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)ar'
@@ -280,32 +436,59 @@
MXE_WINDRES := true
endif
MXE_PKG_CONFIG := '$(BUILD_TOOLS_PREFIX)/bin/pkg-config'
- MXE_QMAKE := '$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)qmake'
+ ifeq ($(ENABLE_QT5),yes)
+ MXE_QMAKE := '$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)qmake-qt5'
+ else
+ MXE_QMAKE := '$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)qmake'
+ endif
+
+ MXE_MOC := '$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)moc'
+ MXE_UIC := '$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)uic'
+ MXE_LRELEASE := '$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)lrelease'
+ MXE_RCC := '$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)rcc'
+
+ MXE_MKOCTFILE := '$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)mkoctfile'
+ MXE_OCTAVECONFIG := '$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)octave-config'
endif
ifeq ($(MXE_SYSTEM),mingw)
MAKE_SHARED_FROM_STATIC_OPTIONS := --windowsdll
endif
-HOST_BINDIR := $(HOST_PREFIX)/bin
-HOST_LIBDIR := $(HOST_PREFIX)/lib
-HOST_LIB64DIR := $(HOST_PREFIX)/lib64
-HOST_INCDIR := $(HOST_PREFIX)/include
+ENV_LD_LIBRARY_PATH := $(LD_LIBRARY_PATH)
ifeq ($(MXE_SYSTEM),mingw)
+ MXE_WINDOWS_BUILD := yes
ifneq ($(MXE_NATIVE_BUILD),yes)
MSYS_URL := http://sourceforge.net/projects/mingw/files/MSYS
MSYS_BASE_URL := $(MSYS_URL)/Base
MSYS_EXTENSION_URL := $(MSYS_URL)/Extension
MSYS_BASE_VER := 1.0.13
MSYS_EXTENSION_VER := 1.0.13
- MSYS_BASE_DIR := $(TOP_DIR)/msys-base
- MSYS_EXTENSION_DIR := $(TOP_DIR)/msys-extension
- MSYS_BASE_PACKAGES := $(addprefix msys-,bash coreutils diffutils dos2unix file findutils gawk grep gzip less libiconv libintl libmagic make msys-core regex sed tar termcap unzip wget)
+ MSYS_BASE_DIR := $(TOP_BUILD_DIR)/msys-base
+ MSYS_EXTENSION_DIR := $(TOP_BUILD_DIR)/msys-extension
+ MSYS_BASE_PACKAGES := $(addprefix msys-,bash coreutils diffutils dos2unix file findutils gawk grep gzip less libcrypt libiconv libintl libmagic libopenssl make msys-core patch perl regex sed tar termcap unzip zip wget zlib)
+
+ MSYS_BASE_SOURCES := $(addprefix src-,$(MSYS_BASE_PACKAGES))
+ PKGS += $(MSYS_BASE_SOURCES)
+
+ NOTEPAD_BASE_DIR := $(TOP_BUILD_DIR)/notepad++
- NOTEPAD_BASE_DIR := $(TOP_DIR)/notepad++
+ MSYS2_ARCH ?= $(shell echo $(TARGET) | $(SED) -n 's|\([^-]*\).*|\1|p')
+ MSYS2_PACKAGES := $(shell $(SED) -n 's/^.* class="package">\([^<]*\)<.*$$/\1/p' '$(TOP_DIR)/index.html' | $(GREP) msys2-)
+ MSYS2_SOURCES := $(addprefix src-,$(MSYS2_PACKAGES))
+ PKGS += $(MSYS2_SOURCES)
+ MSYS2_BASE_URL := http://repo.msys2.org/msys
+ MSYS2_URL := $(MSYS2_BASE_URL)/$(MSYS2_ARCH)
+ MSYS2_SRC_URL := $(MSYS2_BASE_URL)/sources
+ MSYS2_DIR := $(TOP_BUILD_DIR)/msys2
+
+ MSYS2_UPDATE_TMP_FILE := $(TOP_BUILD_DIR)/msys_updates.html
endif
-else ifneq ($(MXE_SYSTEM),msvc)
+else ifeq ($(MXE_SYSTEM),msvc)
+ MXE_WINDOWS_BUILD := yes
+else
+ MXE_WINDOWS_BUILD := no
MXE_CPPFLAGS := '-I$(HOST_INCDIR)'
ifeq ($(MXE_USE_LIB64_DIRECTORY),yes)
MXE_LDFLAGS := '-L$(HOST_LIBDIR) -L$(HOST_LIB64DIR)'
@@ -346,19 +529,44 @@
MAKE_SHARED_FROM_STATIC_OPTIONS := --windowsdll --msvc --libprefix '$(LIBRARY_PREFIX)' --libsuffix '$(LIBRARY_SUFFIX)'
endif
-OCTAVE_FORGE_BASE_URL := 'http://sourceforge.net/projects/octave/files/Octave Forge Packages/Individual Package Releases'
-OCTAVE_FORGE_PACKAGES := $(addprefix of-,miscellaneous struct optim specfun general signal communications image io statistics control)
+OCTAVE_FORGE_BASE_URL := 'https://sourceforge.net/projects/octave/files/Octave Forge Packages/Individual Package Releases'
+## Packages removed from list because build is broken:
+## None.
+OCTAVE_FORGE_PACKAGES := $(addprefix of-,miscellaneous struct optim general signal communications image io statistics control geometry windows linear-algebra sockets data-smoothing fuzzy-logic-toolkit quaternion fits tsa netcdf ltfat database instrument-control generate_html nurbs strings financial stk splines dataframe lssa queueing ga interval nan ocs mapping tisean video zeromq gsl optiminterp dicom sparsersb audio symbolic matgeom)
+# get ALL deps for all of- packages, regardless of whether building the actual forge package in the installer
+OCTAVE_FORGE_DEPS:= $(sort $(foreach p,$(addprefix $(TOP_DIR)/src/,$(addsuffix .mk,$(OCTAVE_FORGE_PACKAGES))),$(shell $(SED) -n 's/.*_DEPS.*:=\(.*\)/\1/p' $p)))
+
+BLAS_PACKAGES := blas
+ifeq ($(ENABLE_OPENBLAS),yes)
+ BLAS_PACKAGES += openblas
+endif
+
+DEVEL_PACKAGES :=
+ifeq ($(ENABLE_DEVEL_TOOLS),yes)
+ DEVEL_PACKAGES += gdb
+ DEVEL_PACKAGES += cmake
+endif
+
MAKE_SHARED_FROM_STATIC := \
$(TOP_DIR)/tools/make-shared-from-static $(MAKE_SHARED_FROM_STATIC_OPTIONS)
+ifeq ($(USE_CCACHE),yes)
+ CMAKE_CCACHE_FLAGS := \
+ -DCMAKE_CXX_COMPILER_LAUNCHER='$(CCACHE)' \
+ -DCMAKE_C_COMPILER_LAUNCHER='$(CCACHE)' \
+ -DCMAKE_Fortran_COMPILER_LAUNCHER='$(CCACHE)'
+endif
+
CMAKE_TOOLCHAIN_FILE := $(HOST_PREFIX)/share/cmake/mxe-conf.cmake
+CMAKE_NATIVE_TOOLCHAIN_FILE := $(TOP_BUILD_DIR)/usr/share/cmake/native-conf.cmake
# unexport any environment variables that might cause trouble
unexport AR CC CFLAGS C_INCLUDE_PATH CPATH CPLUS_INCLUDE_PATH CPP F77 FFLAGS
unexport CPPFLAGS CROSS CXX CXXCPP CXXFLAGS EXEEXT EXTRA_CFLAGS
unexport EXTRA_LDFLAGS LD LDFLAGS LIBRARY_PATH LIBS NM
unexport OBJC_INCLUDE_PATH PKG_CONFIG QMAKESPEC RANLIB STRIP
+unexport CONFIG_SITE
SHORT_PKG_VERSION = \
$(word 1,$(subst ., ,$($(1)_VERSION))).$(word 2,$(subst ., ,$($(1)_VERSION)))
@@ -367,68 +575,147 @@
$(if $(filter %.tgz, $(1)),$(3) xzf '$(1)', \
$(if $(filter %.tar.gz, $(1)),$(3) xzf '$(1)', \
$(if $(filter %.tar.bz2, $(1)),$(3) xjf '$(1)', \
+ $(if $(filter %.tar.lz, $(1)),$(3) xaf '$(1)', \
$(if $(filter %.tar.lzma,$(1)),xz -dc -F lzma '$(1)' | $(3) xf -, \
$(if $(filter %.tar.xz,$(1)),xz -dc '$(1)' | $(3) xf -, \
$(if $(filter %.zip, $(1)),unzip -q '$(1)', \
- $(error Unknown archive format for $(2): $(1))))))))
+ $(error Unknown archive format for $(2): $(1)))))))))
UNPACK_PKG_ARCHIVE = \
$(if $(value $(1)_FILE),$(call UNPACK_ARCHIVE,$(PKG_DIR)/$($(1)_FILE),$(1),$(2)),true)
PKG_CHECKSUM = \
- openssl sha1 '$(PKG_DIR)/$($(1)_FILE)' 2>/dev/null | $(SED) -n 's,^.*\([0-9a-f]\{40\}\)$$,\1,p'
+ openssl sha1 $(or $(2),'$(PKG_DIR)/$($(1)_FILE)') 2>/dev/null | $(SED) -n 's,^.*\([0-9a-f]\{40\}\)$$,\1,p'
CHECK_PKG_ARCHIVE = \
- [ -z "$($(1)_CHECKSUM)" -o '$($(1)_CHECKSUM)' == "`$$(call PKG_CHECKSUM,$(1))`" ]
+ $(if $($(1)_SOURCE_TREE),\
+ echo '[local]' '$(1)' '$($(1)_SOURCE_TREE)' \
+ $(else),$(if $(SKIP_CHECHSUM),true, \
+ [ -z "$($(1)_CHECKSUM)" -o '$($(1)_CHECKSUM)' == "`$$(call PKG_CHECKSUM,$(1),$(2))`" ]\
+ ))
+
+ESCAPE_PKG = \
+ echo '$($(1)_FILE)' | perl -lpe 's/([^A-Za-z0-9])/sprintf("%%%02X", ord($$$$1))/seg'
+
+BACKUP_DOWNLOAD = \
+ (echo "MXE Warning! Downloading $(1) from backup." >&2 && \
+ ($(foreach SITE,$(MIRROR_SITES), \
+ $(WGET) -O '$(TMP_FILE)' $($(SITE))/`$(call ESCAPE_PKG,$(1))` || ) false))
DOWNLOAD_PKG_ARCHIVE = \
- mkdir -p '$(PKG_DIR)' && \
- $(if $($(1)_URL_2), \
- ( $(WGET) -T 30 -t 3 -O- '$($(1)_URL)' || \
- $(WGET) -O- '$($(1)_URL_2)' || \
- $(WGET) -O- '$(PKG_MIRROR)/$($(1)_FILE)' || \
- $(WGET) -O- '$(PKG_CDN)/$($(1)_FILE)' ), \
- ( $(WGET) -O- '$($(1)_URL)' || \
- $(WGET) -O- '$(PKG_MIRROR)/$($(1)_FILE)' || \
- $(WGET) -O- '$(PKG_CDN)/$($(1)_FILE)' )) \
- $(if $($(1)_FIX_GZIP), \
- | gzip -d | gzip -9n, \
- ) \
- > '$(PKG_DIR)/$($(1)_FILE)' || rm -f '$(PKG_DIR)/$($(1)_FILE)'
+ $(eval TMP_FILE := $(PKG_DIR)/.tmp-$($(1)_FILE)) \
+ $(if $($(1)_SOURCE_TREE),\
+ true\
+ $(else),\
+ mkdir -p '$(PKG_DIR)' && ( \
+ ($(WGET) -T 30 -t 3 -O '$(TMP_FILE)' '$($(1)_URL)' && \
+ $(call CHECK_PKG_ARCHIVE,$(1),'$(TMP_FILE)')) \
+ $(if $($(1)_URL_2), \
+ || (echo "MXE Warning! Downloading $(1) from second URL." >&2 && \
+ $(WGET) -T 30 -t 3 -O '$(TMP_FILE)' '$($(1)_URL_2)' && \
+ $(call CHECK_PKG_ARCHIVE,$(1),'$(TMP_FILE)'))) \
+ $(if $(MXE_NO_BACKUP_DL),, \
+ || $(BACKUP_DOWNLOAD)) \
+ ) && cat '$(TMP_FILE)' \
+ $(if $($(1)_FIX_GZIP), \
+ | gzip -d | gzip -9n, \
+ ) \
+ > '$(PKG_DIR)/$($(1)_FILE)' && \
+ $(if $(CREATE_SUFFIXED_ARCHIVE),cp '$(PKG_DIR)/$($(1)_FILE)' '$(PKG_DIR)/$($(1)_FILE)_$($(1)_CHECKSUM)' &&) \
+ rm '$(TMP_FILE)' || \
+ ( echo; \
+ echo 'Download failed!'; \
+ echo; \
+ rm -f '$(PKG_DIR)/$($(1)_FILE)' '$(TMP_FILE)'; )\
+ )
ifeq ($(IGNORE_SETTINGS),yes)
$(info [ignore settings.mk])
-else ifeq ($(wildcard $(PWD)/settings.mk),$(PWD)/settings.mk)
- include $(PWD)/settings.mk
+else ifeq ($(wildcard $(TOP_BUILD_DIR)/settings.mk),$(TOP_BUILD_DIR)/settings.mk)
+ include $(TOP_BUILD_DIR)/settings.mk
else
$(info [create settings.mk])
$(shell { \
echo '#JOBS = $(JOBS)'; \
echo '#PKGS ='; \
- } >'$(PWD)/settings.mk')
+ } >'$(TOP_BUILD_DIR)/settings.mk')
endif
.PHONY: all
-all: configure Makefile octave
+all:
+ $(MAKE) prerequisites
+ $(MAKE) all-targets
+
+.PHONY: prerequisites
+prerequisites: $(TOP_DIR)/configure Makefile $(CCACHE_LINKS_TARGET)
+
+.PHONY: ccache-links
+ccache-links:
+ @echo "creating ccache links"
+ @mkdir -p usr/bin/ccache && \
+ for f in gcc g++ gfortran; do \
+ if test ! -e usr/bin/ccache/$(MXE_TOOL_PREFIX)$$f; then \
+ ln -s "$(CCACHE)" usr/bin/ccache/$(MXE_TOOL_PREFIX)$$f; \
+ fi; \
+ done && \
+ for f in gcc g++ gfortran; do \
+ if test ! -e usr/bin/ccache/$$f; then \
+ ln -s "$(CCACHE)" usr/bin/ccache/$$f; \
+ fi; \
+ done
+
+.PHONY: all-targets
+all-targets: $(OCTAVE_TARGET)
.PHONY: all-packages
all-packages: $(PKGS)
-$(PKGS): $(BUILD_TOOLS) cmake-toolchain-file.stamp
+$(PKGS): $(BUILD_TOOLS) cmake-toolchain-file.stamp cmake-native-toolchain-file.stamp
.PHONY: msys-base
msys-base: $(MSYS_BASE_PACKAGES)
-.PHONY: octave-forge-packages
-octave-forge-packages: $(OCTAVE_FORGE_PACKAGES)
+.PHONY: msys-base-sources
+msys-base-sources: $(MSYS_BASE_SOURCES)
+
+define MSYS2_PKG_BUILD
+ cd '$(1)/' && \
+ mkdir -p '$(3)' && \
+ (tar cf $(3)/$($(PKG)_FILE) '.') && \
+ (TMP="$(3)" \
+ $(PYTHON3) $(TOP_DIR)/tools/msys2-install.py --verbose --msys-dir="$(MSYS2_DIR)" "$(3)/$($(PKG)_FILE)")
+endef
+
+define MSYS2_PKG_UPDATE
+ $(WGET) -q -O- '$(MSYS2_URL)/' | \
+ $(GREP) $($(PKG)_NAME) | $(GREP) "$($(PKG)_FILTER)" | \
+ $(SED) -n 's,.*href="$($(PKG)_NAME)-\(r\?[0-9][^-]*-[0-9]*\)-[^\.]*\.pkg\.tar\.xz".*,\1,p' | \
+ $(SORT) -V | \
+ tail -1
+endef
-configure: configure.ac
- autoconf
+.PHONY: msys2
+msys2: $(MSYS2_PACKAGES)
+
+.PHONY: msys2-sources
+msys2-sources: $(MSYS2_SOURCES)
+
+.PHONY: octave-forge-packages
+octave-forge-packages: $(OCTAVE_FORGE_DEPS) $(OCTAVE_FORGE_PACKAGES)
-config.status: configure
+.PHONY: blas-packages
+blas-packages: $(BLAS_PACKAGES)
+
+.PHONY: devel-packages
+devel-packages: $(DEVEL_PACKAGES)
+
+$(TOP_DIR)/configure: $(TOP_DIR)/configure.ac
+ cd $(TOP_DIR) && autoconf
+
+config.status: $(TOP_DIR)/configure
$(SHELL) ./config.status --recheck
-Makefile: Makefile.in config.status
+Makefile: $(TOP_DIR)/Makefile.in config.status
$(SHELL) ./config.status Makefile
.PHONY: check-requirements
@@ -460,11 +747,20 @@
$(STAMP_DIR)/check-requirements: $(MAKEFILE)
@echo '[check requirements]'
$(foreach REQUIREMENT,$(REQUIREMENTS),$(call CHECK_REQUIREMENT,$(REQUIREMENT)))
+ifneq ($(MXE_NATIVE_BUILD),yes)
+ ifeq ($(USE_SYSTEM_OCTAVE),yes)
+ ifeq ($(ENABLE_BINARY_PACKAGES),yes)
+ @if ! octave -W --version | head -1 | grep ' \($($(OCTAVE_TARGET)_VERSION)\)$$' >/dev/null; then \
+ echo "Warning - could not find native build version $($(OCTAVE_TARGET)_VERSION) of Octave - some packages may fail, but continuing"; \
+ fi
+ endif
+ endif
+endif
@[ -d '$(STAMP_DIR)' ] || mkdir -p '$(STAMP_DIR)'
@if test "$(USE_SYSTEM_GCC)" = yes; then \
$(INSTALL) -d '$(BUILD_TOOLS_PREFIX)/bin' ; \
- $(INSTALL) -m 755 tools/config.guess '$(BUILD_TOOLS_PREFIX)/bin/config.guess' ; \
- $(INSTALL) -m 755 tools/config.sub '$(BUILD_TOOLS_PREFIX)/bin/config.sub' ; \
+ $(INSTALL) -m 755 $(TOP_DIR)/tools/config.guess '$(BUILD_TOOLS_PREFIX)/bin/config.guess' ; \
+ $(INSTALL) -m 755 $(TOP_DIR)/tools/config.sub '$(BUILD_TOOLS_PREFIX)/bin/config.sub' ; \
fi
@touch '$@'
@@ -472,11 +768,6 @@
endef
-$(eval $(subst #,$(newline),$(shell \
- $(SED) -n \
- 's/^.* id="\([A-Za-z0-9_+-]*\)-version">\([^<]*\)<.*$$/\1_VERSION := \2#/p' \
- '$(TOP_DIR)/index.html' \
-)))
include $(patsubst %,$(TOP_DIR)/src/%.mk,$(ALL_BUILD_TOOLS))
include $(patsubst %,$(TOP_DIR)/src/%.mk,$(PKGS))
@@ -505,15 +796,47 @@
fi
endef
-define INSTALL_DESTDIR
- if [ -d '$(1)$(ROOT_PREFIX)' ]; then \
- (cd '$(1)$(ROOT_PREFIX)' && tar c .) | (cd '$(ROOT_PREFIX)' && tar x -p); \
+define CREATE_PKG
+ [ -d '$(BUILT_PKGS_DIR)' ] || mkdir -p '$(BUILT_PKGS_DIR)'; \
+ if [ -d '$(2)$(ROOT_PREFIX)' ]; then \
+ (cd '$(2)$(ROOT_PREFIX)' && tar caf '$(BUILT_PKGS_DIR)/$(1).tar.xz' .); \
fi; \
- if [ "$(ROOT_PREFIX)" != "$(CMAKE_ROOT_PREFIX)" ] && [ -d '$(1)$(CMAKE_ROOT_PREFIX)' ]; then \
- (cd '$(1)$(CMAKE_ROOT_PREFIX)' && tar c .) | (cd '$(ROOT_PREFIX)' && tar x -p); \
+ if [ "$(ROOT_PREFIX)" != "$(CMAKE_ROOT_PREFIX)" ] && [ -d '$(2)$(CMAKE_ROOT_PREFIX)' ]; then \
+ (cd '$(2)$(CMAKE_ROOT_PREFIX)' && tar caf '$(BUILT_PKGS_DIR)/$(1).tar.xz' .); \
fi
endef
+define INSTALL_PKG_TO_DESTDIR
+ (cd '$(ROOT_PREFIX)' && tar xaf '$(BUILT_PKGS_DIR)/$(1).tar.xz')
+endef
+
+define OCTAVE_FORGE_PKG_COMPILE
+ if [ -d '$(1)/src' ]; then \
+ if [ -f '$(1)/src/configure' ]; then \
+ cd '$(1)/src' && ./configure $(HOST_AND_BUILD_CONFIGURE_OPTIONS) \
+ $(CONFIGURE_CPPFLAGS) $(CONFIGURE_LDFLAGS) MKOCTFILE='$(MXE_MKOCTFILE)' \
+ OCTAVE_CONFIG='$(MXE_OCTAVECONFIG)' \
+ $(4); \
+ fi; \
+ if [ -f '$(1)/src/Makefile' ]; then \
+ $(MAKE) -C '$(1)/src' MKOCTFILE='$(MXE_MKOCTFILE) --verbose' \
+ OCTAVE_CONFIG='$(MXE_OCTAVECONFIG)' || exit 1; \
+ rm -f $(1)/src/Makefile; \
+ fi; \
+ if [ -f '$(1)/src/configure' ]; then \
+ rm -f $(1)/src/configure; \
+ fi; \
+ find '$(1)/src' -type f -name "*.o" -exec rm -f {} \; ; \
+ fi
+endef
+
+define OCTAVE_FORGE_PKG_BUILD_NOCOMPILE
+ mkdir -p '$(3)$(HOST_PREFIX)/src'
+ cd '$(1)/..' \
+ && tar cvfz $($(PKG)_FILE) $($(PKG)_SUBDIR) \
+ && $(INSTALL) -m644 '$($(PKG)_FILE)' '$(3)$(HOST_PREFIX)/src'
+endef
+
ifeq ($(MXE_SYSTEM),msvc)
define OCTAVE_FORGE_PKG_BUILD
$(INSTALL) -d '$(3)$(HOST_PREFIX)/local/octave-$(octave_VERSION)/share/octave'
@@ -526,20 +849,69 @@
endef
else
define OCTAVE_FORGE_PKG_BUILD
- mkdir -p '$(3)$(HOST_PREFIX)/src'
- cd '$(1)/..' \
- && tar cvfz $($(PKG)_FILE) $($(PKG)_SUBDIR) \
- && $(INSTALL) -m644 '$(PKG_DIR)/$($(PKG)_FILE)' '$(3)$(HOST_PREFIX)/src'
+ if [ $(ENABLE_BINARY_PACKAGES) = no ]; then \
+ mkdir -p '$(3)$(HOST_PREFIX)/src'; \
+ cd '$(1)/..' \
+ && tar cvfz $($(PKG)_FILE) $($(PKG)_SUBDIR) \
+ && $(INSTALL) -m644 '$($(PKG)_FILE)' '$(3)$(HOST_PREFIX)/src'; \
+ else \
+ cd '$(1)/..' && \
+ tar cfz $($(PKG)_FILE) $($(PKG)_SUBDIR) && \
+ OCTAVE_CONFIG=$(MXE_OCTAVECONFIG) TMP="$(1)/.." \
+ $(CONFIGURE_CPPFLAGS) $(CONFIGURE_LDFLAGS) \
+ MKOCTFILE=$(MXE_MKOCTFILE) MAKE=$(MAKE) \
+ CONFIGURE_OPTIONS="$(HOST_AND_BUILD_CONFIGURE_OPTIONS)" $(4) \
+ $(PYTHON3) $(TOP_DIR)/tools/pkg-install.py install -verbose "$($(PKG)_FILE)"; \
+ fi
endef
endif
+define OCTAVE_FORGE_PKG_UPDATE
+ $(WGET) -q -O- 'https://sourceforge.net/projects/octave/files/Octave%20Forge%20Packages/Individual%20Package%20Releases/' | \
+ $(SED) -n 's,.*title="$(subst of-,,$(PKG))-\([0-9][^"]*\).tar.gz".*,\1,p' | \
+ head -1
+endef
+
+define PREPARE_PKG_SOURCE
+ ( cd '$(2)' && $(call UNPACK_PKG_ARCHIVE,$(1),$(TAR)) ) || \
+ $(if $(TAR2), \
+ ( rm -rf '$(2)'; mkdir -p '$(2)'; \
+ cd '$(2)' && $(call UNPACK_PKG_ARCHIVE,$(1),$(TAR2)) ), \
+ false )
+ test ! -d '$(TOP_DIR)/src/$(1)' || cp -a '$(TOP_DIR)/src/$(1)' '$(2)'
+ cd '$(2)/$($(1)_SUBDIR)'
+ $(foreach PKG_PATCH,$(sort $(wildcard $(TOP_DIR)/src/$(1)-*.patch)),
+ (cd '$(2)/$($(1)_SUBDIR)' && $(PATCH) -p1 -u) < $(PKG_PATCH))
+ $(foreach PKG_PATCH,$(sort $(wildcard $(TOP_DIR)/src/$(MXE_SYSTEM)-$(1)-*.patch)),
+ (cd '$(2)/$($(1)_SUBDIR)' && $(PATCH) -p1 -u) < $(PKG_PATCH))
+endef
+
define PKG_RULE
.PHONY: download-$(1)
-download-$(1): $(addprefix download-,$($(1)_DEPS))
- if ! $(call CHECK_PKG_ARCHIVE,$(1)); then \
- $(call DOWNLOAD_PKG_ARCHIVE,$(1)); \
- $(call CHECK_PKG_ARCHIVE,$(1)) || { echo 'Wrong checksum!'; exit 1; }; \
- fi
+.PHONY: download-$($(1)_FILE)
+download-$(1): download-$($(1)_FILE)
+download-$($(1)_FILE)::
+ $(and $($(1)_URL),
+ @$$(if $$(REMOVE_DOWNLOAD),rm -f '$(PKG_DIR)/$($(1)_FILE)')
+ @if ! $(call CHECK_PKG_ARCHIVE,$(1)); then \
+ echo '[download]' '$($(1)_FILE)'; \
+ [ -d '$(LOG_DIR)/$(TIMESTAMP)' ] || mkdir -p '$(LOG_DIR)/$(TIMESTAMP)'; \
+ ($(call DOWNLOAD_PKG_ARCHIVE,$(1))) &> '$(LOG_DIR)/$(TIMESTAMP)/$(1)-download'; \
+ grep 'MXE Warning' '$(LOG_DIR)/$(TIMESTAMP)/$(1)-download'; \
+ ln -sf '$(TIMESTAMP)/$(1)-download' '$(LOG_DIR)/$(1)-download'; \
+ if ! $(call CHECK_PKG_ARCHIVE,$(1)); then \
+ echo; \
+ echo 'Download failed or wrong checksum of package $(1)!'; \
+ echo '------------------------------------------------------------'; \
+ $(if $(findstring undefined, $(origin MXE_VERBOSE)),\
+ tail -n 10 '$(LOG_DIR)/$(1)-download' | $(SED) -n '/./p';, \
+ $(SED) -n '/./p' '$(LOG_DIR)/$(1)-download';) \
+ echo '------------------------------------------------------------'; \
+ echo '[log] $(LOG_DIR)/$(1)-download'; \
+ echo; \
+ exit 1; \
+ fi; \
+ fi)
.PHONY: $(1)
$(1): $(STAMP_DIR)/$(1)
@@ -549,34 +921,19 @@
$(wildcard $(TOP_DIR)/src/$(1)-test*) \
$(shell test -d $(TOPDIR)/src/$(1) && find $(TOPDIR)/src/$(1) -type f) \
$(addprefix $(STAMP_DIR)/,$($(1)_DEPS)) \
- | check-requirements
- @[ -d '$(LOG_DIR)/$(TIMESTAMP)' ] || mkdir -p '$(LOG_DIR)/$(TIMESTAMP)'
- @if ! $(call CHECK_PKG_ARCHIVE,$(1)); then \
- echo '[download] $(1)'; \
- touch '$(LOG_DIR)/$(TIMESTAMP)/$(1)-download'; \
- ln -sf '$(TIMESTAMP)/$(1)-download' '$(LOG_DIR)/$(1)-download'; \
- ($(call DOWNLOAD_PKG_ARCHIVE,$(1))) &> '$(LOG_DIR)/$(1)-download'; \
- if ! $(call CHECK_PKG_ARCHIVE,$(1)); then \
- echo; \
- echo 'Wrong checksum of package $(1)!'; \
- echo '------------------------------------------------------------'; \
- tail -n 10 '$(LOG_DIR)/$(1)-download' | $(SED) -n '/./p'; \
- echo '------------------------------------------------------------'; \
- echo '[log] $(LOG_DIR)/$(1)-download'; \
- echo; \
- exit 1; \
- fi; \
- fi
+ | check-requirements \
+ $(addprefix download-,$(1))
$(if $(value $(1)_BUILD),
@echo '[build] $(1)'
,)
+ @[ -d '$(LOG_DIR)/$(TIMESTAMP)' ] || mkdir -p '$(LOG_DIR)/$(TIMESTAMP)'
@touch '$(LOG_DIR)/$(TIMESTAMP)/$(1)'
@ln -sf '$(TIMESTAMP)/$(1)' '$(LOG_DIR)/$(1)'
@if ! (time $(MAKE) -f '$(MAKEFILE)' 'build-only-$(1)') &> '$(LOG_DIR)/$(1)'; then \
echo; \
echo 'Failed to build package $(1)!'; \
echo '------------------------------------------------------------'; \
- tail -n 10 '$(LOG_DIR)/$(1)' | $(SED) -n '/./p'; \
+ tail -n 30 '$(LOG_DIR)/$(1)' | $(SED) -n '/./p'; \
echo '------------------------------------------------------------'; \
echo '[log] $(LOG_DIR)/$(1)'; \
echo; \
@@ -590,24 +947,15 @@
$(if $(value $(1)_BUILD),
rm -rf '$(2)' '$(2)-install'
mkdir -p '$(2)'
- ( cd '$(2)' && $(call UNPACK_PKG_ARCHIVE,$(1),$(TAR)) ) || \
- $(if $(TAR2), \
- ( rm -rf '$(2)'; mkdir -p '$(2)'; \
- cd '$(2)' && $(call UNPACK_PKG_ARCHIVE,$(1),$(TAR2)) ), \
- false )
- test ! -d '$(TOP_DIR)/src/$(1)' || cp -a '$(TOP_DIR)/src/$(1)' '$(2)'
- cd '$(2)/$($(1)_SUBDIR)'
- $(foreach PKG_PATCH,$(sort $(wildcard $(TOP_DIR)/src/$(1)-*.patch)),
- (cd '$(2)/$($(1)_SUBDIR)' && $(PATCH) -p1 -u) < $(PKG_PATCH))
- $(foreach PKG_PATCH,$(sort $(wildcard $(TOP_DIR)/src/$(MXE_SYSTEM)-$(1)-*.patch)),
- (cd '$(2)/$($(1)_SUBDIR)' && $(PATCH) -p1 -u) < $(PKG_PATCH))
+ $$(call PREPARE_PKG_SOURCE,$(1),$(2))
$$(call $(1)_BUILD,$(2)/$($(1)_SUBDIR),$(TOP_DIR)/src/$(1)-test,$(2)-install)
if [ -d '$(2)-install' ]; then \
$(call GENERATE_FILE_LIST,$(1),$(2)-install); \
- $(call INSTALL_DESTDIR,$(2)-install); \
+ $(call CREATE_PKG,$(1),$(2)-install); \
+ $(call INSTALL_PKG_TO_DESTDIR,$(1),$(2)-install); \
(du -k -d 0 '$(2)-install' 2>/dev/null || du -k --max-depth 0 '$(2)-install') | \
$(SED) -n 's/^\(\S*\).*/du: \1 KiB/p'; \
- rm -rfv '$(2)-install'; \
+ [ '$(KEEP_BUILD)' = '1' ] || rm -rfv '$(2)-install'; \
fi
(du -k -d 0 '$(2)' 2>/dev/null || du -k --max-depth 0 '$(2)') | $(SED) -n 's/^\(\S*\).*/du: \1 KiB/p'
[ '$(KEEP_BUILD)' = '1' ] || rm -rfv '$(2)'
@@ -622,9 +970,16 @@
clean:
rm -rf $(call TMP_DIR,*) $(BUILD_TOOLS_PREFIX)
rm -rf $(STAMP_DIR) $(MSYS_INFO_DIR) $(LOG_DIR)
- rm -rf $(MSYS_BASE_DIR) $(NOTEPAD_BASE_DIR)
+ rm -rf $(MSYS_BASE_DIR) $(MSYS_EXTENSION_DIR) $(NOTEPAD_BASE_DIR)
+ rm -rf $(MSYS2_DIR)
+ rm -f $(MSYS2_UPDATE_TMP_FILE)
rm -rf native-tools cross-tools octave gnuplot
- rm -f Makefile cmake-toolchain-file.stamp
+ rm -f Makefile cmake-toolchain-file.stamp cmake-native-toolchain-file.stamp
+ rm -f tools/set-mxe-env.sh
+
+.PHONY: realclean
+realclean: clean
+ rm -rf $(BUILT_PKGS_DIR)
.PHONY: clean-pkg
clean-pkg:
@@ -641,20 +996,81 @@
$(if $(filter $(2),$($(1)_VERSION)),
$(info . $(1) $(2)),
$(info NEW $(1) $($(1)_VERSION) --> $(2))
- $(SED) -i 's/\( id="$(1)-version"\)>[^<]*/\1>$(2)/' '$(TOP_DIR)/index.html'
+ $(SED) -i 's/^\([^ ]*_VERSION *:=\).*/\1 $(2)/' '$(TOP_DIR)/src/$(1).mk'
$(MAKE) -f '$(MAKEFILE)' 'update-checksum-$(1)' \
- || { $(SED) -i 's/\( id="$(1)-version"\)>[^<]*/\1>$($(1)_VERSION)/' '$(TOP_DIR)/index.html'; \
+ || { $(SED) -i 's/^\([^ ]*_VERSION *:=\).*/\1 $($(1)_VERSION)/' '$(TOP_DIR)/src/$(1).mk'; \
exit 1; })),
$(error Unable to update version number of package $(1)))
endef
update:
- $(foreach PKG,$(PKGS),$(call UPDATE,$(PKG),$(shell $($(PKG)_UPDATE))))
+ $(foreach PKG,$(PKGS),\
+ $(if $($(PKG)_UPDATE),$(call UPDATE,$(PKG),$(shell $($(PKG)_UPDATE))),$(info Warning: No update rule for $(PKG))))
+
+.PHONY: update-octaveforge
+update-octaveforge:
+ $(foreach PKG,$(OCTAVE_FORGE_PACKAGES),$(call UPDATE,$(PKG),$(shell $($(PKG)_UPDATE))))
+
+.PHONY: update-build-tools
+update-build-tools:
+ $(foreach PKG,$(BUILD_TOOLS),$(call UPDATE,$(PKG),$(shell $($(PKG)_UPDATE))))
update-checksum-%:
$(call DOWNLOAD_PKG_ARCHIVE,$*)
$(SED) -i 's/^\([^ ]*_CHECKSUM *:=\).*/\1 '"`$(call PKG_CHECKSUM,$*)`"'/' '$(TOP_DIR)/src/$*.mk'
+.PHONY: update-msys2 update-msys2-filelist
+PKG_MK_CHECKSUM = \
+ $(GREP) _CHECKSUM '$(TOP_DIR)/src/$(1).mk' 2>/dev/null | $(SED) -n 's,^.*\([0-9a-f]\{40\}\)$$,\1,p'
+define MSYS2_UPDATE
+ $(if $(2),
+ $(if $(filter $(2),$($(1)_IGNORE)),
+ $(info IGNORED $(1) $(2)),
+ $(if $(filter $(2),$($(1)_VERSION)),
+ $(info . $(1) $(2)),
+ $(info NEW $(1) $($(1)_VERSION) --> $(2))
+ $(SED) -i 's/^\([^ ]*_VERSION *:=\).*/\1 $(2)/' '$(TOP_DIR)/src/$(1).mk'
+ $(SED) -i 's/^\([^ ]*_i686_CS *:=\).*/\1/' '$(TOP_DIR)/src/$(1).mk'
+ $(SED) -i 's/^\([^ ]*_x86_64_CS *:=\).*/\1/' '$(TOP_DIR)/src/$(1).mk'
+ $(SED) -i 's/^\([^ ]*_CHECKSUM *:=\).*/\1/' '$(TOP_DIR)/src/$(1).mk'
+ MSYS2_ARCH=x86_64 $(MAKE) -f '$(MAKEFILE)' 'update-checksum-$(1)' \
+ || { $(SED) -i 's/^\([^ ]*_VERSION *:=\).*/\1 $($(1)_VERSION)/' '$(TOP_DIR)/src/$(1).mk'; \
+ $(SED) -i 's/^\([^ ]*_CHECKSUM *:=\).*/\1 $$($$(PKG)_CS)/' '$(TOP_DIR)/src/$(1).mk'; \
+ $(SED) -i 's/^\([^ ]*_i686_CS *:=\).*/\1 $($(1)_i686_CS)' '$(TOP_DIR)/src/$(1).mk'; \
+ $(SED) -i 's/^\([^ ]*_x86_64_CS *:=\).*/\1 $($(1)_x86_64_CS)' '$(TOP_DIR)/src/$(1).mk'; \
+ exit 1; }
+ $(SED) -i 's/^\([^ ]*_x86_64_CS *:=\).*/\1 '"`$(call PKG_MK_CHECKSUM,$(1))`"'/' '$(TOP_DIR)/src/$(1).mk'
+ $(SED) -i 's/^\([^ ]*_CHECKSUM *:=\).*/\1/' '$(TOP_DIR)/src/$(1).mk'
+ MSYS2_ARCH=i686 $(MAKE) -f '$(MAKEFILE)' 'update-checksum-$(1)' \
+ || { $(SED) -i 's/^\([^ ]*_VERSION *:=\).*/\1 $($(1)_VERSION)/' '$(TOP_DIR)/src/$(1).mk'; \
+ $(SED) -i 's/^\([^ ]*_CHECKSUM *:=\).*/\1 $$($$(PKG)_CS)/' '$(TOP_DIR)/src/$(1).mk'; \
+ $(SED) -i 's/^\([^ ]*_i686_CS *:=\).*/\1 $($(1)_i686_CS)' '$(TOP_DIR)/src/$(1).mk'; \
+ exit 1; }
+ $(SED) -i 's/^\([^ ]*_i686_CS *:=\).*/\1 '"`$(call PKG_MK_CHECKSUM,$(1))`"'/' '$(TOP_DIR)/src/$(1).mk'
+ $(SED) -i 's/^\([^ ]*_CHECKSUM *:=\).*/\1 $$($$(PKG)_CS)/' '$(TOP_DIR)/src/$(1).mk'
+ $(SED) -i 's/^\([^ ]*_VERSION *:=\).*/\1 $(2)/' '$(TOP_DIR)/src/src-$(1).mk'
+ $(SED) -i 's/^\([^ ]*_CHECKSUM *:=\).*/\1/' '$(TOP_DIR)/src/src-$(1).mk'
+ $(MAKE) -f '$(MAKEFILE)' 'update-checksum-src-$(1)' \
+ || { $(SED) -i 's/^\([^ ]*_VERSION *:=\).*/\1 $(src-$(1)_VERSION)/' '$(TOP_DIR)/src/src-$(1).mk'; \
+ exit 1; }
+ )),
+ $(error Unable to update version number of package $(1)))
+endef
+
+define MSYS2_PKG_UPDATE_FILE
+ cat $(MSYS2_UPDATE_TMP_FILE) | \
+ $(GREP) $($(PKG)_NAME) | $(GREP) "$($(PKG)_FILTER)" | \
+ $(SED) -n 's,.*href="$($(PKG)_NAME)-\(r\?[0-9][^-]*-[0-9]*\)-[^\.]*\.pkg\.tar\.xz".*,\1,p' | \
+ $(SORT) -V | \
+ tail -1
+endef
+
+update-msys2-filelist:
+ $(shell $(WGET) -q -O$(MSYS2_UPDATE_TMP_FILE) '$(MSYS2_URL)/')
+
+update-msys2: update-msys2-filelist
+ $(foreach PKG,$(MSYS2_PACKAGES),$(call MSYS2_UPDATE,$(PKG),$(shell $(MSYS2_PKG_UPDATE_FILE))))
+
cleanup-style:
@$(foreach FILE,$(wildcard $(addprefix $(TOP_DIR)/,Makefile index.html CNAME src/*.mk src/*test.* tools/*)),\
$(SED) ' \
@@ -681,16 +1097,6 @@
if [ $(MXE_SYSTEM) = msvc ]; then \
echo 'set(MSVC 1)'; \
fi; \
- if [ $(BUILD_SHARED) = yes ]; then \
- echo 'set(BUILD_SHARED_LIBS ON)'; \
- else \
- echo 'set(BUILD_SHARED_LIBS OFF)'; \
- fi; \
- if [ $(BUILD_STATIC) = yes ]; then \
- echo 'set(BUILD_STATIC_LIBS ON)'; \
- else \
- echo 'set(BUILD_STATIC_LIBS OFF)'; \
- fi; \
echo 'set(CMAKE_BUILD_TYPE Release)'; \
if [ $(MXE_SYSTEM) = msvc ]; then \
echo 'set(CMAKE_FIND_ROOT_PATH $(HOST_PREFIX_NATIVE))'; \
@@ -717,20 +1123,45 @@
endef
cmake-toolchain-file.stamp:
- $(build-cmake-toolchain-file)
- touch cmake-toolchain-file.stamp
+ @echo [creating CMake toolchain file]
+ @$(build-cmake-toolchain-file)
+ @touch cmake-toolchain-file.stamp
+ @echo [done]
+
+define build-native-cmake-toolchain-file
+ # create the native CMake toolchain file
+ [ -d '$(dir $(CMAKE_NATIVE_TOOLCHAIN_FILE))' ] || mkdir -p '$(dir $(CMAKE_NATIVE_TOOLCHAIN_FILE))'
+ (echo 'set(CMAKE_C_COMPILER $(CC))'; \
+ echo 'set(CMAKE_CXX_COMPILER $(CXX))'; \
+ echo 'set(CMAKE_Fortran_COMPILER $(F77))'; \
+ echo 'set(CMAKE_RC_COMPILER $(WINDRES))'; \
+ echo 'set(CMAKE_BUILD_TYPE Release CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel")') \
+ > '$(CMAKE_NATIVE_TOOLCHAIN_FILE)'
+endef
+
+cmake-native-toolchain-file.stamp:
+ @echo [creating native CMake toolchain file]
+ @$(build-native-cmake-toolchain-file)
+ @touch cmake-native-toolchain-file.stamp
+ @echo [done]
# Files to distribute
-include dist-files.mk
+include $(TOP_DIR)/dist-files.mk
PACKAGE_VERSION := @PACKAGE_VERSION@
PACKAGE_TARNAME := @PACKAGE_TARNAME@
-distdir := $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
+DIST_FILE_VERSION := $(shell if [ -f HG-ID ]; then cat HG-ID; else echo $(PACKAGE_VERSION); fi)
+
+distdir := $(PACKAGE_TARNAME)-$(DIST_FILE_VERSION)
.PHONY: dist
dist:
rm -rf $(distdir)
mkdir $(distdir)
- $(TAR) cf - $(DIST_FILES) | ( cd $(distdir) ; $(TAR) xpf - )
+ ( cd $(TOP_DIR) ; $(TAR) cf - $(DIST_FILES) ) | ( cd $(distdir) ; $(TAR) xpf - )
$(TAR) czf $(distdir).tar.gz $(distdir)
+
+include $(TOP_DIR)/binary-dist-rules.mk
+
+include $(TOP_DIR)/hg-octave-dist.mk
diff -r e9741f369ee4 -r 143a4181d569 README
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/README Fri Feb 12 17:29:18 2021 -0500
@@ -0,0 +1,47 @@
+HISTORY
+=======
+
+mxe-octave was forked from the MXE project(http://mxe.cc) in November
+2012 when I was looking for a reliable way to cross-compile Octave
+for Windows. At the time, the MXE developers did not seem interested
+in modifying MXE to build shared libraries (. Since then, MXE has been modified
+
+As stated here:
+http://lists.defectivebydesign.org/archive/html/mingw-cross-env-list/2013-10/msg00006.html
+I never intended to permanently fork MXE, I was only looking for a way
+to build Octave and all its dependencies, primarily for Windows
+systems.
+
+Later, I needed to build Octave for old RHEL and SuSE systems that did
+not have sufficiently recent versions of the build tools or other
+dependencies. Adapting MXE to handle native builds seemed like a
+reasonable solution at the time, but there always seem to be issues
+with replacing many (but not all) system libraries that are needed to
+support Octave. At what point do you stop? You probably don't want
+to build your own OpenGL, X11, or C libraries, and mxe-octave does not
+attempt to build these.
+
+FUTURE
+======
+
+Now that MXE supports static and shared library builds for 32- and
+64-bit Windows systems, it might be good to consider using MXE
+directly and abandon the mxe-octave fork, at least for Windows
+builds. Instead of mxe-octave duplicating all that MXE does, we could
+use MXE to build the cross tools and cross compile the libraries.
+Everything else could be built using those tools. We might still end
+up with some duplication, but we would
+
+For native builds, I'm not sure what the best option is. Many things
+could be simplified in mxe-octave if cross compiling and supporting
+Windows were not required, but there would still be a lot of overlap
+with MXE. Another option is to use docker, but older kernel versions
+may not support it properly. For example, for RHEL 6, docker is
+apparently only supported using the EPEL packages, and if people were
+able to use EPEL, then they could probably get dependencies that are
+new enough to build Octave. I my experience, people using these old
+systems are not willing to use packages from EPEL or similar projects.
+
+John W. Eaton
+jwe@octave.org
+2017-04-11
diff -r e9741f369ee4 -r 143a4181d569 binary-dist-rules.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/binary-dist-rules.mk Fri Feb 12 17:29:18 2021 -0500
@@ -0,0 +1,281 @@
+
+ifeq ($(MXE_WINDOWS_BUILD),yes)
+ ifeq ($(ENABLE_WINDOWS_64),yes)
+ ifeq ($(ENABLE_FORTRAN_INT64),yes)
+ OCTAVE_PLATFORM_SUFFIX := -w64-64
+ else
+ OCTAVE_PLATFORM_SUFFIX := -w64
+ endif
+ else
+ OCTAVE_PLATFORM_SUFFIX := -w32
+ endif
+endif
+
+ifeq ($(OCTAVE_TARGET),release-octave)
+ OCTAVE_DIST_NAME := octave-$($(OCTAVE_TARGET)_VERSION)$(OCTAVE_PLATFORM_SUFFIX)
+else
+ OCTAVE_DIST_NAME := octave-$(DATE)$(OCTAVE_PLATFORM_SUFFIX)
+endif
+
+OCTAVE_DIST_DIR := $(TOP_BUILD_DIR)/dist/$(OCTAVE_DIST_NAME)
+
+OCTAVE_NSI_FILE := $(TOP_BUILD_DIR)/dist/octave.nsi
+
+OCTAVE_ADD_PATH := /
+ifeq ($(MXE_WINDOWS_BUILD),yes)
+ TAR_H_OPTION := -h
+ WINDOWS_BINARY_DIST_DEPS := \
+ win7appid blas_switch
+
+ ifeq ($(USE_MSYS2),yes)
+ WINDOWS_BINARY_DIST_DEPS += \
+ msys2 \
+ msys2-sources
+
+ ifeq ($(ENABLE_WINDOWS_64),yes)
+ OCTAVE_ADD_PATH := /mingw64
+ else
+ OCTAVE_ADD_PATH := /mingw32
+ endif
+ else
+ WINDOWS_BINARY_DIST_DEPS += \
+ msys-base \
+ msys-base-sources
+ endif
+
+ ifeq ($(MXE_NATIVE_BUILD),no)
+ WINDOWS_BINARY_DIST_DEPS += \
+ native-binutils \
+ native-gcc \
+ npp
+ endif
+
+ # other packages we want to include
+ WINDOWS_BINARY_DIST_DEPS += \
+ biosig
+endif
+
+BINARY_DIST_DEPS := \
+ $(OCTAVE_TARGET) \
+ blas-packages \
+ octave-forge-packages \
+ devel-packages \
+ units \
+ transfig \
+ $(WINDOWS_BINARY_DIST_DEPS)
+
+define delete-dist-directory
+ echo "deleting previous dist directory..."
+ rm -rf $(TOP_BUILD_DIR)/dist
+endef
+
+define make-dist-directory
+ echo "creating dist directory..."
+ mkdir -p $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)
+endef
+
+define copy-dist-files
+ echo "copying files..."
+ echo " octave and dependencies..."
+ cd $(HOST_PREFIX) \
+ && tar -c $(TAR_H_OPTION) -f - . | ( cd $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH) ; tar xpf - )
+ echo " octaverc file..."
+ cp $(TOP_DIR)/octaverc $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/share/octave/site/m/startup/octaverc
+ if [ $(ENABLE_BINARY_PACKAGES) = no ]; then \
+ echo " build_packages.m..."; \
+ cp $(TOP_DIR)/build_packages.m $(OCTAVE_DIST_DIR)/src; \
+ fi
+endef
+
+ifeq ($(MXE_WINDOWS_BUILD),yes)
+ ifeq ($(MXE_NATIVE_BUILD),no)
+ define copy-windows-dist-files
+ echo " DLL files..."
+ cp $(BUILD_TOOLS_PREFIX)/lib/gcc/$(TARGET)/*.dll $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin
+ cp $(BUILD_TOOLS_PREFIX)/lib/gcc/$(TARGET)/*.dll $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin
+ cp $(BUILD_TOOLS_PREFIX)/lib/gcc/$(TARGET)/$(build-gcc_VERSION)/*.dll $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin
+ if [ "$(USE_MSYS2)" = "yes" ]; then \
+ echo " msys2 files..."; \
+ cd $(TOP_BUILD_DIR)/msys2 \
+ && tar -c $(TAR_H_OPTION) -f - . | ( cd $(OCTAVE_DIST_DIR) ; tar xpf - ); \
+ else \
+ echo " msys base files..."; \
+ cd $(TOP_BUILD_DIR)/msys-base \
+ && tar -c $(TAR_H_OPTION) -f - . | ( cd $(OCTAVE_DIST_DIR) ; tar xpf - ); \
+ echo " msys extension files..."; \
+ cd $(TOP_BUILD_DIR)/msys-extension \
+ && tar -c $(TAR_H_OPTION) -f - . | ( cd $(OCTAVE_DIST_DIR) ; tar xpf - ); \
+ fi
+ echo " notepad++..."
+ cd $(TOP_BUILD_DIR) \
+ && tar -c $(TAR_H_OPTION) -f - notepad++ | ( cd $(OCTAVE_DIST_DIR) ; tar xpf - )
+ echo " README.html..."
+ cp $(TOP_DIR)/installer-files/README.html $(OCTAVE_DIST_DIR)/
+ echo " refblas..."
+ cp $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin/libblas.dll $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin/librefblas.dll
+ echo " octave.vbs..."
+ cp $(TOP_DIR)/installer-files/octave.vbs $(OCTAVE_DIST_DIR)/
+ cp $(TOP_DIR)/installer-files/octave-firsttime.vbs $(OCTAVE_DIST_DIR)/
+ cp $(TOP_DIR)/installer-files/fc_update.bat $(OCTAVE_DIST_DIR)/
+ cp $(TOP_DIR)/installer-files/post-install.bat $(OCTAVE_DIST_DIR)/
+ cp $(TOP_BUILD_DIR)/HG-ID $(OCTAVE_DIST_DIR)/
+ echo " updating octave .exe to script files..."
+ rm -f $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin/octave.exe
+ rm -f $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin/octave-$($(OCTAVE_TARGET)_VERSION).exe
+ cp $(TOP_DIR)/installer-files/octave.bat $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin/octave.bat
+ cp $(TOP_DIR)/installer-files/octave.bat $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin/octave-$($(OCTAVE_TARGET)_VERSION).bat
+ echo " updating libtool references..."
+ find '$(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/' -type f -name "*.la" \
+ -exec $(SED) -i 's|$(HOST_PREFIX)|/usr|g;s|$(BUILD_TOOLS_PREFIX)|/usr|g' {} \; ;
+ echo " updating pkg-config .pc references..."
+ find '$(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/lib/pkgconfig' -type f -name "*.pc" \
+ -exec $(SED) -i 's|$(HOST_PREFIX)|/usr|g;s|$(BUILD_TOOLS_PREFIX)|/usr|g' {} \; ;
+ if [ "$(ENABLE_DEVEL_TOOLS)" = "yes" ]; then \
+ cp $(TOP_DIR)/installer-files/cmdshell.bat $(OCTAVE_DIST_DIR)/; \
+ fi
+ echo " updating script tool references..."
+ #find '$(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin' -type f ! -name "*.*" \
+ # -exec $(SED) -i 's|$(HOST_PREFIX)|/$(OCTAVE_ADD_PATH)|g;s|$(BUILD_TOOLS_PREFIX)|/$(OCTAVE_ADD_PATH)|g' {} \; ;
+ find '$(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin' -type f ! -name "*.*" \
+ -exec sh -c 'test `head -c2 {}` = "#!" && $(SED) -i "s|$(HOST_PREFIX)|$(OCTAVE_ADD_PATH)|g;s|$(BUILD_TOOLS_PREFIX)|$(OCTAVE_ADD_PATH)|g" {}' \; ;
+ # some additional script files to fix
+ $(SED) -i "s|datadir = '/usr/share'|datadir = '$(OCTAVE_ADD_PATH)/share'|g" '$(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin/makeinfo'
+
+ endef
+ else
+ define copy-windows-dist-files
+ echo " DLL files..."
+ cp /mingw/bin/*.dll $(OCTAVE_DIST_DIR)/bin
+ echo " README.html..."
+ cp $(TOP_DIR)/installer-files/README.html $(OCTAVE_DIST_DIR)/
+ echo " refblas..."
+ cp $(OCTAVE_DIST_DIR)/bin/libblas.dll $(OCTAVE_DIST_DIR)/bin/librefblas.dll
+ echo " octave.vbs..."
+ cp $(TOP_DIR)/installer-files/octave.vbs $(OCTAVE_DIST_DIR)/
+ cp $(TOP_DIR)/installer-files/octave-firsttime.vbs $(OCTAVE_DIST_DIR)/
+ cp $(TOP_DIR)/installer-files/fc_update.bat $(OCTAVE_DIST_DIR)/
+ cp $(TOP_DIR)/installer-files/post-install.bat $(OCTAVE_DIST_DIR)/
+ echo " updating octave .exe to script files..."
+ rm -f $(OCTAVE_DIST_DIR)/bin/octave.exe
+ rm -f $(OCTAVE_DIST_DIR)/bin/octave-$($(OCTAVE_TARGET)_VERSION).exe
+ cp $(TOP_DIR)/installer-files/octave.bat $(OCTAVE_DIST_DIR)/bin/octave.bat
+ cp $(TOP_DIR)/installer-files/octave.bat $(OCTAVE_DIST_DIR)/bin/octave-$($(OCTAVE_TARGET)_VERSION).bat
+ endef
+ endif
+endif
+
+define make-dist-files-writable
+ echo "making all dist files writable by user..."
+ chmod -R u+w $(OCTAVE_DIST_DIR)
+endef
+
+ifeq ($(STRIP_DIST_FILES),yes)
+ ifeq ($(MXE_WINDOWS_BUILD),yes)
+ define strip-dist-files
+ echo "stripping files..."
+ for f in `find $(OCTAVE_DIST_DIR) -name '*.dll' -o -name '*.exe' -o -name '*.oct' | $(GREP) -v "notepad++" | $(GREP) -v "msys-2.0.dll"`; do \
+ if [ "$$(head -n1 $$f | cut -c1-2)" != "#!" ]; then \
+ $(MXE_STRIP) $$f; \
+ fi; \
+ done
+ endef
+ else
+ define strip-dist-files
+ echo "stripping files..."
+ for f in `find $(OCTAVE_DIST_DIR) -type f -a -perm /a+x`; do \
+ case "`file $$f`" in \
+ *script*) \
+ ;; \
+ *executable* | *archive* | *"shared object"*) \
+ $(MXE_STRIP) $$f; \
+ ;; \
+ esac; \
+ done
+ endef
+ endif
+else
+ define strip-dist-files
+ echo "not stripping files..."
+ endef
+endif
+
+OCTAVE_WRAPPER_SCRIPTS = octave octave-cli octave-config
+
+ifeq ($(MXE_SYSTEM), gnu-linux)
+ define install-octave-wrapper-scripts
+ echo "installing octave wrapper scripts..."
+ for f in $(OCTAVE_WRAPPER_SCRIPTS); do \
+ mv $(OCTAVE_DIST_DIR)/bin/$$f-$($(OCTAVE_TARGET)_VERSION) \
+ $(OCTAVE_DIST_DIR)/bin/$$f-$($(OCTAVE_TARGET)_VERSION).real; \
+ $(SED) < $(TOP_DIR)/octave-wrapper.in \
+ -e "s|@GCC_VERSION@|$(native-gcc_VERSION)|" \
+ -e "s|@GCC_ARCH@|$(TARGET)|" \
+ -e "s|@OCTAVE_VERSION@|$($(OCTAVE_TARGET)_VERSION)|" \
+ -e "s|@GNUPLOT_MAJOR_MINOR_VERSION@|$(shell echo $(gnuplot_VERSION) | $(SED) -e 's/\(^[0-9][0-9]*\.[0-9][0-9]*\)\..*/\1/')|" \
+ -e "s|@PROGRAM_NAME@|$$f|" > $$f-t \
+ && $(INSTALL) -m 755 $$f-t $(OCTAVE_DIST_DIR)/bin/$$f-$($(OCTAVE_TARGET)_VERSION); \
+ rm -f $(OCTAVE_DIST_DIR)/bin/$$f; \
+ ln -s $$f-$($(OCTAVE_TARGET)_VERSION) $(OCTAVE_DIST_DIR)/bin/$$f; \
+ done
+ endef
+else
+ define install-octave-wrapper-scripts
+ echo "no octave wrapper scripts to install for this system..."
+ endef
+endif
+
+.PHONY: binary-dist-files
+binary-dist-files: $(BINARY_DIST_DEPS)
+ @$(delete-dist-directory)
+ @$(make-dist-directory)
+ @$(copy-dist-files)
+ @$(copy-windows-dist-files)
+ @$(make-dist-files-writable)
+ @$(strip-dist-files)
+ @$(install-octave-wrapper-scripts)
+
+define make-installer-file
+ if [ -f $(OCTAVE_NSI_FILE) ]; then \
+ echo "deleting previous installer script..."; \
+ rm -f $(OCTAVE_NSI_FILE); \
+ fi
+ echo "generating installer script..."
+ $(TOP_BUILD_DIR)/tools/makeinst-script.sh $(OCTAVE_DIST_DIR) $(OCTAVE_DIST_NAME)-installer.exe $(OCTAVE_NSI_FILE)
+ echo "generating installer..."
+ $(TARGET)-makensis $(OCTAVE_NSI_FILE) > $(TOP_BUILD_DIR)/dist/nsis.log
+endef
+
+$(OCTAVE_DIST_NAME)-installer.exe: nsis binary-dist-files
+ @$(make-installer-file)
+
+.PHONY: nsis-installer
+nsis-installer: $(OCTAVE_DIST_NAME)-installer.exe
+
+define make-7z-dist
+ echo "generating 7z file..."
+ cd $(TOP_BUILD_DIR)/dist && p7zip -k $(OCTAVE_DIST_NAME)
+endef
+
+.PHONY: 7z-dist
+7z-dist: binary-dist-files
+ @$(make-7z-dist)
+
+define make-zip-dist
+ echo "generating zip file..."
+ cd $(TOP_BUILD_DIR)/dist \
+ && zip -q -9 -r $(OCTAVE_DIST_NAME).zip $(OCTAVE_DIST_NAME)
+endef
+
+.PHONY: zip-dist
+zip-dist: binary-dist-files
+ @$(make-zip-dist)
+
+define make-tar-dist
+ echo "generating tar file..."
+ cd $(TOP_BUILD_DIR)/dist \
+ && tar -c -z -f $(OCTAVE_DIST_NAME).tgz $(OCTAVE_DIST_NAME)
+endef
+
+.PHONY: tar-dist
+tar-dist: binary-dist-files
+ @$(make-tar-dist)
diff -r e9741f369ee4 -r 143a4181d569 bootstrap
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bootstrap Fri Feb 12 17:29:18 2021 -0500
@@ -0,0 +1,7 @@
+#!/bin/bash
+## bootstrap script
+## Run this to generate the configure script
+
+set -e # halt if unhandled error
+aclocal
+autoconf # generate configure script
diff -r e9741f369ee4 -r 143a4181d569 build_packages.m
--- a/build_packages.m Fri Dec 06 23:02:15 2013 -0500
+++ b/build_packages.m Fri Feb 12 17:29:18 2021 -0500
@@ -1,13 +1,81 @@
-more ("off");
-echo ("on");
-pkg install -global -auto general-1.3.2.tar.gz
-pkg install -global -auto miscellaneous-1.2.0.tar.gz
-pkg install -global -auto struct-1.0.10.tar.gz
-pkg install -global -auto optim-1.2.2a.tar.gz
-pkg install -global -auto specfun-1.1.0.tar.gz
-pkg install -global -auto control-2.4.1.tar.gz
-pkg install -global -auto signal-1.2.0.tar.gz
-pkg install -global -auto communications-1.1.1a.tar.gz
-pkg install -global -auto image-2.0.0.tar.gz
-pkg install -global -auto io-1.2.0.tar.gz
-pkg install -global -auto statistics-1.1.3.tar.gz
+ attempt to compile and install the octave packages
+
+orig_echo = echo_executing_commands ();
+orig_more = page_screen_output();
+
+% helper function to try install a package, and recover
+function try_install (pkgname)
+ currdir = pwd ();
+
+ try
+ pkg ('install', pkgname, '-noauto')
+ catch err
+ warning (err.identifier, err.message);
+ end_try_catch
+
+ cd (currdir);
+endfunction
+
+unwind_protect
+
+ more ("off");
+ echo ("on");
+
+ % cd to script directory as the packages files are in the same place
+ [packagedir] = fileparts(mfilename("fullpathext"));
+ if length(packagedir) > 0
+ cd(packagedir);
+ endif
+
+ % install the packages
+ try_install general-2.1.0.tar.gz
+ try_install miscellaneous-1.2.1.tar.gz
+ try_install struct-1.0.15.tar.gz
+ try_install optim-1.5.3.tar.gz
+ try_install control-3.1.0.tar.gz
+ try_install signal-1.4.0.tar.gz
+ try_install communications-1.2.1.tar.gz
+ try_install image-2.10.0.tar.gz
+ try_install io-2.4.12.tar.gz
+ try_install statistics-1.4.0.tar.gz
+ try_install geometry-3.0.0.tar.gz
+ try_install windows-1.3.0.tar.gz
+ try_install odepkg-0.8.5.tar.gz
+ try_install linear-algebra-2.2.2.tar.gz
+ try_install sockets-1.2.0.tar.gz
+ try_install data-smoothing-1.3.0.tar.gz
+ try_install fuzzy-logic-toolkit-0.4.5.tar.gz
+ try_install quaternion-2.4.0.tar.gz
+ try_install fits-1.0.7.tar.gz
+ try_install tsa-4.4.5.tar.gz
+ try_install dicom-0.2.1.tar.gz
+ try_install netcdf-1.0.12.tar.gz
+ try_install ltfat-2.2.0.tar.gz
+ try_install database-2.4.3.tar.gz
+ try_install instrument-control-0.3.1.tar.gz
+ try_install generate_html-0.3.1.tar.gz
+ try_install financial-0.5.3.tar.gz
+ try_install stk-2.5.1.tar.gz
+ try_install splines-1.3.2.tar.gz
+ try_install dataframe-1.2.0.tar.gz
+ try_install lssa-0.1.3.tar.gz
+ try_install queueing-1.2.6.tar.gz
+ try_install nurbs-1.3.13.tar.gz
+ try_install strings-1.2.0.tar.gz
+ try_install ga-0.10.0.tar.gz
+ try_install interval-3.2.0.tar.gz
+ try_install nan-3.1.4.tar.gz
+ try_install ocs-0.1.5.tar.gz
+ try_install mapping-1.2.1.tar.gz
+ try_install tisean-0.2.3.tar.gz
+ try_install sparsersb-1.0.6.tar.gz
+ try_install video-1.2.4.tar.gz
+ try_install zeromq-1.3.0.tar.gz
+ try_install gsl-2.1.1.tar.gz
+ try_install optiminterp-0.3.5.tar.gz
+
+unwind_protect_cleanup
+ echo_executing_commands (orig_echo);
+ page_screen_output(orig_more);
+ clear ("orig_echo", "orig_more");
+end_unwind_protect
diff -r e9741f369ee4 -r 143a4181d569 configure.ac
--- a/configure.ac Fri Dec 06 23:02:15 2013 -0500
+++ b/configure.ac Fri Feb 12 17:29:18 2021 -0500
@@ -1,9 +1,9 @@
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ([2.62])
-AC_INIT([MXE-Octave], [0.0.14], [http://octave.org/bugs.html], [mxe-octave])
+AC_INIT([MXE-Octave], [0.0.35], [https://octave.org/bugs.html], [mxe-octave])
-AC_CONFIG_SRCDIR([src/octave.mk])
+AC_CONFIG_SRCDIR([src/default-octave.mk])
AC_CONFIG_AUX_DIR([tools])
### Check for bootstrap tools. This list is probably not complete yet.
@@ -37,10 +37,10 @@
### ensure /bin/sh is the default shell so this can be safely ignored by
### almost everyone. However, when building for Android, for example,
### this will need to be set.
-SHELL=bash
+SHELL=/bin/bash
AC_ARG_WITH([shell],
[AS_HELP_STRING([--with-shell=SHELL],
- [use SHELL as the shell interpreter (default: bash)])])
+ [use SHELL as the shell interpreter (default: /bin/bash)])])
case $with_shell in
no)
AC_MSG_ERROR([A shell interpreter is required])
@@ -53,80 +53,320 @@
esac
AC_SUBST(SHELL)
-### If possible, use a 64-bit integer type for array dimensions and indexing.
+PKG_DIR="pkg"
+AC_ARG_WITH([pkg-dir],
+ [AS_HELP_STRING([--with-pkg-dir=DIR],
+ [use DIR as the location for downloaded packages (default: pkg)])])
+case $with_pkg_dir in
+ no)
+ AC_MSG_ERROR([A pkg directory is required])
+ ;;
+ yes | "")
+ ;;
+ *)
+ PKG_DIR="$withval"
+ ;;
+esac
+## Ensure directory exists and that we refer to it using an absolute name
+if ! test -d "$PKG_DIR"; then
+ mkdir -p "$PKG_DIR"
+fi
+PKG_DIR=`(cd "$PKG_DIR"; pwd)`
+AC_SUBST(PKG_DIR)
+
+AC_ARG_WITH([ccache],
+ [AS_HELP_STRING([--with-ccache], [use ccache (default: no)])],
+ [case $withval in
+ no) USE_CCACHE=no ;;
+ yes) USE_CCACHE=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --with-ccache]) ;;
+ esac], [USE_CCACHE=no])
+if test "$USE_CCACHE" = yes; then
+ AC_PATH_PROG(CCACHE, ccache)
+ if test -z "$CCACHE"; then
+ AC_MSG_WARN([ccache program not found; not using ccache for build])
+ USE_CCACHE=no
+ fi
+fi
+AC_SUBST(USE_CCACHE)
-ENABLE_64=no
-AC_ARG_ENABLE(64,
+AC_ARG_WITH([msys2],
+ [AS_HELP_STRING([--with-msys2], [use msys2 in windows distribution (default: yes)])],
+ [case $withval in
+ no) USE_MSYS2=no ;;
+ yes) USE_MSYS2=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --with-msys2]) ;;
+ esac], [USE_MSYS2=yes])
+AC_SUBST(USE_MSYS2)
+
+# try find pkg-config build paths
+BUILD_PKG_CONFIG_PATH=auto
+AC_ARG_WITH([build-pkg-config-path],
+ [AS_HELP_STRING([--with-build-pkg-config-path=PATH],
+ [use PATH as the build pkg-config path (default: auto)])],
+ [BUILD_PKG_CONFIG_PATH=$withval],
+ [BUILD_PKG_CONFIG_PATH=auto])
+
+if test "x$BUILD_PKG_CONFIG_PATH" = "xauto"; then
+ PKG_CHECK_VAR([BUILDPKGCONFIGPATH], [pkg-config], [pc_path])
+ AC_MSG_CHECKING([for build pkg-config paths])
+ if test "x$BUILDPKGCONFIGPATH" = "x"; then
+ AC_MSG_RESULT([couldnt auto detect pkg-config paths"])
+ BUILD_PKG_CONFIG_PATH=""
+ else
+ BUILD_PKG_CONFIG_PATH="$BUILDPKGCONFIGPATH"
+ AC_MSG_RESULT([$BUILD_PKG_CONFIG_PATH])
+ fi
+fi
+AC_SUBST(BUILD_PKG_CONFIG_PATH)
+
+
+AC_ARG_ENABLE([windows-64],
+ [AS_HELP_STRING([--disable-windows-64],
+ [build Windows 32bit binaries (default: enable, i.e. 64bit binaries)])],
+ [case $enableval in
+ no) ENABLE_WINDOWS_64=no ;;
+ yes) ENABLE_WINDOWS_64=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-windows-64]) ;;
+ esac], [ENABLE_WINDOWS_64=yes])
+
+AC_ARG_ENABLE([64],
[AS_HELP_STRING([--enable-64],
- [(EXPERIMENTAL) use 64-bit integers for array dimensions and indexing])],
- [if test "$enableval" = yes; then ENABLE_64=yes; fi], [])
-AC_SUBST(ENABLE_64)
+ [use 64-bit integers for array dimensions and indexing])],
+ [case $enableval in
+ no) ENABLE_64=no ;;
+ yes) ENABLE_64=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-64]) ;;
+ esac], [ENABLE_64=unknown])
+
+if test "$ENABLE_64" = unknown; then
+ ENABLE_64="$ENABLE_WINDOWS_64"
+fi
-BUILD_SHARED=yes
-AC_ARG_ENABLE(shared,
- [AS_HELP_STRING([--disable-shared], [Disable shared libraries])],
- [if test "$enableval" = no; then BUILD_SHARED=no; fi], [])
+AC_ARG_ENABLE([fortran-int64],
+ [AS_HELP_STRING([--enable-fortran-int64],
+ [use 64-bit integers for fortran (and other) numerical library code (default: disable)])],
+ [case $enableval in
+ no) ENABLE_FORTRAN_INT64=no ;;
+ yes) ENABLE_FORTRAN_INT64=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-fortran-int64]) ;;
+ esac], [ENABLE_FORTRAN_INT64=no])
+
+if test "$ENABLE_64" = yes || test "$ENABLE_FORTRAN_INT64" = yes; then
+ if test "$ENABLE_WINDOWS_64" = no; then
+ AC_MSG_ERROR([--enable-fortran-int64 and --enable-64 both require --enable-windows-64])
+ fi
+fi
+
+AC_SUBST(ENABLE_64)
+AC_SUBST(ENABLE_FORTRAN_INT64)
+AC_SUBST(ENABLE_WINDOWS_64)
+
+AC_ARG_ENABLE([shared],
+ [AS_HELP_STRING([--disable-shared], [Disable shared libraries (default: enable)])],
+ [case "$enableval" in
+ no) BUILD_SHARED=no ;;
+ yes) BUILD_SHARED=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-shared]) ;;
+ esac], [BUILD_SHARED=yes])
AC_SUBST(BUILD_SHARED)
-BUILD_STATIC=no
-AC_ARG_ENABLE(static,
- [AS_HELP_STRING([--enable-static], [Enable static libraries])],
- [if test "$enableval" = yes; then BUILD_STATIC=yes; fi], [])
+AC_ARG_ENABLE([static],
+ [AS_HELP_STRING([--enable-static], [Enable static libraries (default: disable)])],
+ [case "$enableval" in
+ no) BUILD_STATIC=no ;;
+ yes) BUILD_STATIC=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-static]) ;;
+ esac], [BUILD_STATIC=no])
AC_SUBST(BUILD_STATIC)
-ENABLE_JIT=yes
AC_ARG_ENABLE([jit],
- [AS_HELP_STRING([--disable-jit], [Disable Octave JIT compiler])],
- [if test "$enableval" = no; then ENABLE_JIT=no; fi], [])
+ [AS_HELP_STRING([--enable-jit], [Enable Octave JIT compiler (default: disable)])],
+ [case "$enableval" in
+ no) ENABLE_JIT=no ;;
+ yes) ENABLE_JIT=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-jit]) ;;
+ esac], [ENABLE_JIT=no])
AC_SUBST(ENABLE_JIT)
-ENABLE_JAVA=yes
AC_ARG_ENABLE([java],
- [AS_HELP_STRING([--disable-java], [Disable Java])],
- [if test "$enableval" = no; then ENABLE_JAVA=no; fi], [])
+ [AS_HELP_STRING([--disable-java], [Disable Java/Octave interface (default: enable)])],
+ [case "$enableval" in
+ no) ENABLE_JAVA=no ;;
+ yes) ENABLE_JAVA=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-java]) ;;
+ esac], [ENABLE_JAVA=yes])
AC_SUBST(ENABLE_JAVA)
-MXE_NATIVE_BUILD=no
-AC_ARG_ENABLE([native-build],
+AC_ARG_ENABLE([[docs]],
+ [AS_HELP_STRING([--disable-docs], [Disable building Octave documentation (default: enable)])],
+ [case "$enableval" in
+ no) ENABLE_DOCS=no ;;
+ yes) ENABLE_DOCS=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-[docs]]) ;;
+ esac], [ENABLE_DOCS=yes])
+AC_SUBST(ENABLE_DOCS)
+
+AC_ARG_ENABLE([[native-build]],
[AS_HELP_STRING([--enable-native-build],
- [Enable native build (default is cross compile)])],
- [if test "$enableval" = yes; then MXE_NATIVE_BUILD=yes; fi], [])
+ [Enable native build (default is cross compile for mingw)])],
+ [case "$enableval" in
+ no) MXE_NATIVE_BUILD=no ;;
+ yes) MXE_NATIVE_BUILD=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-[native-build]]) ;;
+ esac], [MXE_NATIVE_BUILD=no])
AC_SUBST(MXE_NATIVE_BUILD)
-USE_SYSTEM_FONTCONFIG=$MXE_NATIVE_BUILD
AC_ARG_ENABLE([system-fontconfig],
[AS_HELP_STRING([--enable-system-fontconfig],
- [Use fontconfig already installed on system])],
- [if test "$enableval" = yes; then USE_SYSTEM_FONTCONFIG=yes; else USE_SYSTEM_FONTCONFIG=no; fi], [])
+ [Use fontconfig already installed on system (default: same as native-build)])],
+ [case "$enableval" in
+ no) USE_SYSTEM_FONTCONFIG=no ;;
+ yes) USE_SYSTEM_FONTCONFIG=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-system-fontconfig]) ;;
+ esac], [USE_SYSTEM_FONTCONFIG=$MXE_NATIVE_BUILD])
AC_SUBST(USE_SYSTEM_FONTCONFIG)
-USE_SYSTEM_GCC=$MXE_NATIVE_BUILD
+AC_ARG_ENABLE([system-opengl],
+ [AS_HELP_STRING([--disable-system-opengl],
+ [Use OpenGL libraries already installed on system (default: same as native-build)])],
+ [case "$enableval" in
+ no) USE_SYSTEM_OPENGL=no ;;
+ yes) USE_SYSTEM_OPENGL=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-system-opengl]) ;;
+ esac], [USE_SYSTEM_OPENGL=$MXE_NATIVE_BUILD])
+AC_SUBST(USE_SYSTEM_OPENGL)
+
+AC_ARG_ENABLE([system-x11-libs],
+ [AS_HELP_STRING([--enable-system-x11-libs],
+ [Use X11 libraries already installed on system (default: same as native-build)])],
+ [case "$enableval" in
+ no) USE_SYSTEM_X11_LIBS=no ;;
+ yes) USE_SYSTEM_X11_LIBS=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-system-x11-libs]) ;;
+ esac], [USE_SYSTEM_X11_LIBS=$MXE_NATIVE_BUILD])
+AC_SUBST(USE_SYSTEM_X11_LIBS)
+
AC_ARG_ENABLE([system-gcc],
[AS_HELP_STRING([--enable-system-gcc],
- [Use GCC already installed on system])],
- [if test "$enableval" = yes; then USE_SYSTEM_GCC=yes; else USE_SYSTEM_GCC=no; fi], [])
+ [Use GCC already installed on system (default: same as native-build)])],
+ [case "$enableval" in
+ no) USE_SYSTEM_GCC=no ;;
+ yes) USE_SYSTEM_GCC=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-system-gcc]) ;;
+ esac], [USE_SYSTEM_GCC=$MXE_NATIVE_BUILD])
AC_SUBST(USE_SYSTEM_GCC)
-ENABLE_LIB64_DIRECTORY=no
-AC_ARG_ENABLE(lib64-directory,
+AC_ARG_ENABLE([lib64-directory],
[AS_HELP_STRING([--enable-lib64-directory],
- [Search lib64 directory for libraries])],
- [if test "$enableval" = yes; then ENABLE_LIB64_DIRECTORY=yes; fi], [])
+ [Search lib64 directory for libraries (default: disable)])],
+ [case "$enableval" in
+ no) ENABLE_LIB64_DIRECTORY=no ;;
+ yes) ENABLE_LIB64_DIRECTORY=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-lib64-directory]) ;;
+ esac], [ENABLE_LIB64_DIRECTORY=no])
AC_SUBST(ENABLE_LIB64_DIRECTORY)
-USE_PIC_FLAG=no
AC_ARG_ENABLE([pic-flag],
- [AS_HELP_STRING([--enable-pic-flag], [Compile with PIC flag])],
- [if test "$enableval" = yes; then USE_PIC_FLAG=yes; fi], [])
+ [AS_HELP_STRING([--enable-pic-flag], [Compile with PIC flag (default: disable)])],
+ [case "$enableval" in
+ no) USE_PIC_FLAG=no ;;
+ yes) USE_PIC_FLAG=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-pic-flag]) ;;
+ esac], [USE_PIC_FLAG=no])
AC_SUBST(USE_PIC_FLAG)
-ENABLE_OPENBLAS=no
+AC_ARG_ENABLE([strip-dist-files],
+ [AS_HELP_STRING([--disable-strip-dist-files], [Don't strip distributed files (default: enable)])],
+ [case "$enableval" in
+ no) STRIP_DIST_FILES=no ;;
+ yes) STRIP_DIST_FILES=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-strip-dist-files]) ;;
+ esac], [STRIP_DIST_FILES=yes])
+AC_SUBST(STRIP_DIST_FILES)
+
AC_ARG_ENABLE([openblas],
- [AS_HELP_STRING([--enable-openblas],
- [(EXPERIMENTAL) enable use of openblas in Octave])],
- [if test "$enableval" = yes; then ENABLE_OPENBLAS=yes; fi], [])
+ [AS_HELP_STRING([--disable-openblas],
+ [Disable use of OpenBLAS in Octave (default: enable, i.e. build and use package)])],
+ [case "$enableval" in
+ no) ENABLE_OPENBLAS=no ;;
+ yes) ENABLE_OPENBLAS=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-openblas]) ;;
+ esac], [ENABLE_OPENBLAS=yes])
AC_SUBST(ENABLE_OPENBLAS)
+AC_ARG_ENABLE([qhull-no-strict-aliasing-flag],
+ [AS_HELP_STRING([--enable-qhull-no-strict-aliasing-flag],
+ [Compile Qhull with -fno-strict-aliasing flag (default: disable)])],
+ [case "$enableval" in
+ no) ENABLE_QHULL_NO_STRICT_ALIASING_FLAG=no ;;
+ yes) ENABLE_QHULL_NO_STRICT_ALIASING_FLAG=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-qhull-no-strict-aliasing-flag]) ;;
+ esac], [ENABLE_QHULL_NO_STRICT_ALIASING_FLAG=no])
+AC_SUBST(ENABLE_QHULL_NO_STRICT_ALIASING_FLAG)
+
+AC_ARG_ENABLE([octave],
+ [AS_HELP_STRING([--enable-octave=stable],
+ [Enable a specific build of Octave (release, stable, default) (default: "release")])],
+ [case $enableval in
+ release) ENABLE_OCTAVE="release-" ;;
+ stable) ENABLE_OCTAVE="stable-" ;;
+ default) ENABLE_OCTAVE="default-" ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-octave]) ;;
+ esac], [ENABLE_OCTAVE="release-"])
+AC_SUBST(ENABLE_OCTAVE)
+
+AC_ARG_ENABLE([binary-packages],
+ [AS_HELP_STRING([--enable-binary-packages],
+ [Enable building binary Octave Forge packages (default: disable)])],
+ [case "$enableval" in
+ no) ENABLE_BINARY_PACKAGES=no ;;
+ yes) ENABLE_BINARY_PACKAGES=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-binary-packages]) ;;
+ esac], [ENABLE_BINARY_PACKAGES=no])
+AC_SUBST(ENABLE_BINARY_PACKAGES)
+
+AC_ARG_ENABLE([system-octave],
+ [AS_HELP_STRING([--disable-system-octave],
+ [Build a minimal Octave that runs on the build system. This only applies if binary packages are cross-built (default: same as native-build)])],
+ [case "$enableval" in
+ no) USE_SYSTEM_OCTAVE=no ;;
+ yes) USE_SYSTEM_OCTAVE=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --disable-system-octave]) ;;
+ esac], [USE_SYSTEM_OCTAVE=$MXE_NATIVE_BUILD])
+AC_SUBST(USE_SYSTEM_OCTAVE)
+
+AC_ARG_ENABLE([devel-tools],
+ [AS_HELP_STRING([--enable-devel-tools],
+ [Enable building developer tools such as gdb (default: disable)])],
+ [case "$enableval" in
+ no) ENABLE_DEVEL_TOOLS=no ;;
+ yes) ENABLE_DEVEL_TOOLS=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-devel-tools]) ;;
+ esac], [ENABLE_DEVEL_TOOLS=no])
+AC_SUBST(ENABLE_DEVEL_TOOLS)
+
+AC_ARG_ENABLE([qt5],
+ [AS_HELP_STRING([--disable-qt5],
+ [Build GNU Octave using Qt 4 instead of the default Qt 5 (default: enable, i.e. use Qt5)])],
+ [case "$enableval" in
+ no) ENABLE_QT5=no ;;
+ yes) ENABLE_QT5=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-qt5]) ;;
+ esac], [ENABLE_QT5=yes])
+AC_SUBST(ENABLE_QT5)
+
+# install documentation of build dependency packages (or not to save space)
+AC_ARG_ENABLE([dep-docs],
+ [AS_HELP_STRING([--enable-dep-docs],
+ [Enable installation of documentation for dependency packages (default: disable)])],
+ [case "$enableval" in
+ no) ENABLE_DEP_DOCS=no ;;
+ yes) ENABLE_DEP_DOCS=yes ;;
+ *) AC_MSG_ERROR([bad value "$enableval" for --enable-dep-docs]) ;;
+ esac], [ENABLE_DEP_DOCS=no])
+AC_SUBST(ENABLE_DEP_DOCS)
+
### Default is to cross compile for mingw.
echo $host_alias
@@ -138,10 +378,20 @@
AC_SUBST(MXE_SYSTEM)
# set MXE_ROOTDIR for knowing the mxe root
-MXE_ROOTDIR=`cd $srcdir; pwd`
+MXE_ROOTDIR=`cd "$builddir"; pwd`
AC_SUBST(MXE_ROOTDIR)
-AC_CONFIG_FILES([Makefile tools/set_mxe_env.sh])
+if test "$MXE_NATIVE_BUILD" = no; then
+ if test "$ENABLE_WINDOWS_64" = yes; then
+ MXE_TARGET=x86_64-w64-mingw32
+ else
+ MXE_TARGET=i686-w64-mingw32
+ fi
+fi
+AC_SUBST(MXE_TARGET)
+
+AC_CONFIG_FILES([Makefile tools/set-mxe-env.sh])
+AC_CONFIG_FILES([tools/makeinst-script.sh], [chmod a+x tools/makeinst-script.sh])
AC_OUTPUT
diff -r e9741f369ee4 -r 143a4181d569 dist-files.mk
--- a/dist-files.mk Fri Dec 06 23:02:15 2013 -0500
+++ b/dist-files.mk Fri Feb 12 17:29:18 2021 -0500
@@ -1,4 +1,5 @@
SRC_FILES_1 := \
+ a52dec.mk \
agg-1-fixes.patch \
agg.mk \
apr-util.mk \
@@ -6,6 +7,7 @@
armadillo-1-staticlib.patch \
armadillo-test.cpp \
armadillo.mk \
+ arpack-1-gcc10.patch \
arpack.mk \
atk-1-DllMain.patch \
atk.mk \
@@ -13,7 +15,11 @@
aubio-1-fix-pkg-config.patch \
aubio.mk \
bfd.mk \
+ biosig.mk \
blas.mk \
+ blas_switch.mk \
+ boost-1-intrinsics-fix.patch \
+ boost-2-winerror.patch \
boost-test.cpp \
boost.mk \
build-autoconf.mk \
@@ -21,18 +27,36 @@
build-binutils.mk \
build-bison.mk \
build-cmake.mk \
+ build-flex-1-fixes.patch \
build-flex.mk \
+ build-gawk.mk \
build-gcc.mk \
+ build-gettext.mk \
build-gperf.mk \
build-libtool.mk \
- build-m4-1-fixes.patch \
+ build-lzip.mk \
+ build-m4-glibc2-28.patch \
build-m4.mk \
+ build-mako.mk \
+ build-markupsafe.mk \
+ build-meson.mk \
build-msvctools.mk \
+ build-ninja.mk \
+ build-octave.mk \
+ build-perl.mk \
build-pkg-config-1-fixes.patch \
build-pkg-config.mk \
+ build-python.mk \
+ build-python3.mk \
+ build-scons.mk \
+ build-sed.mk \
+ build-setuptools.mk \
build-texinfo.mk \
build-xz.mk \
+ build-yasm.mk \
+ bzip2-1-fixes.patch \
bzip2.mk \
+ c-ares.mk \
cairo-2-static-init.patch \
cairo.mk \
cairomm.mk \
@@ -40,32 +64,41 @@
cfitsio.mk \
cgal-1-fixes.patch \
cgal.mk \
+ cloog.mk \
+ cmake.mk \
cminpack.mk \
cppunit.mk \
cunit.mk \
curl-test.c \
curl.mk \
+ damageproto.mk \
dbus-1-fixes.patch \
dbus.mk \
dcmtk-1-fixes.patch \
+ dcmtk-2-mingw-w64.patch \
+ dcmtk-3-pointer-fixes.patch \
+ dcmtk-4-c++11-related-fixes.patch \
dcmtk.mk \
+ default-octave-1-gnulib.patch \
+ default-octave.mk \
devil-1-png.patch \
devil.mk \
+ double-conversion.mk \
+ dri2proto.mk \
eigen.mk \
+ epstool.mk \
exiv2-issue847.patch \
exiv2-r2796.patch \
exiv2.mk \
expat.mk \
- faad2-1-uint.patch \
+ faad2-1-fixes.patch \
faad2.mk \
ffmpeg.mk \
fftw.mk \
file-test.c \
file.mk \
- flac-1-win32.patch \
- flac-2-lwsock32.patch \
+ fixesproto.mk \
flac.mk \
- fltk-1-darwin-cross-compile.patch \
fltk-2-uuid-mod.patch \
fltk-test.cpp \
fltk.mk \
@@ -77,36 +110,44 @@
freeimage.mk \
freetds.mk \
freetype.mk \
- fribidi-1-fixes.patch \
fribidi.mk \
ftgl-1-gl-m4.patch \
ftgl.mk \
gc.mk \
gcab.mk \
- gcc-1-mingw-float.patch \
- gcc-2-darwin-no-pie.patch \
+ gcc-cloog.mk \
gcc-gmp.mk \
+ gcc-isl.mk \
gcc-mpc.mk \
gcc-mpfr.mk \
gd-1-libpng15.patch \
gd-test.c \
gd.mk \
gdal.mk \
- gdb-1-fix-shell.patch \
gdb.mk \
+ gdcm-1-nosecapi.patch \
gdcm.mk \
gdk-pixbuf-1-fixes.patch \
gdk-pixbuf.mk \
geos-test.c \
geos.mk \
+ gettext-1.patch \
gettext.mk \
+ ghostscript-1-fixes.patch \
+ ghostscript.mk \
giflib.mk \
+ gl2ps-1-configure.patch \
+ gl2ps-2-docpath.patch \
+ gl2ps.mk \
glew-test.c \
glew.mk \
+ glib-1-fixes.patch \
glib.mk \
glibmm.mk \
glpk-1-fixes.patch \
glpk.mk \
+ glproto.mk \
+ glu.mk \
gmp.mk \
gnuplot-1-fixes.patch \
gnuplot.mk \
@@ -114,6 +155,7 @@
gnutls-test.c \
gnutls.mk \
graphicsmagick-1-fix-xml2-config.patch \
+ graphicsmagick-2-dynamicpath.patch \
graphicsmagick-test.cpp \
graphicsmagick.mk \
gsl-test.c \
@@ -148,13 +190,15 @@
hdf5.mk \
hunspell-test.cpp \
hunspell.mk \
+ ice.mk \
+ icu4c.mk \
id3lib-1-win32.patch \
id3lib.mk \
- ilmbase-1-gcc45-include.patch \
- ilmbase-2-osx-cxxflags.patch \
ilmbase.mk \
imagemagick.mk \
+ inputproto.mk \
intltool.mk \
+ isl.mk \
itsol.mk \
itstool.mk \
jasper-1-fixes.patch \
@@ -165,6 +209,8 @@
json-c-2-patch-remove-rpl.patch \
json-c-test.c \
json-c.mk \
+ kbproto.mk \
+ lame-1-fixes.patch \
lame.mk \
lapack-test.f \
lapack.mk \
@@ -178,15 +224,17 @@
libarchive.mk \
libass-test.c \
libass.mk \
+ libb64.mk \
+ libcdio.mk \
libcroco.mk \
libdnet-1-fixes.patch \
libdnet.mk \
+ libdrm.mk \
libevent.mk \
libf2c-1.patch \
libf2c.mk \
libffi-test.c \
libffi.mk \
- libgcrypt-1-fixes.patch \
libgcrypt-test.c \
libgcrypt.mk \
libgd.mk \
@@ -212,24 +260,25 @@
libiberty.mk \
libical-test.c \
libical.mk \
- libiconv-1-fix.patch \
libiconv.mk \
libidn-1-fixes.patch \
libidn-test.c \
libidn.mk \
+ libidn2.mk \
libircclient-1-fixes.patch \
libircclient-test.cpp \
libircclient.mk \
+ libjbig.mk \
liblo.mk \
libmad.mk \
libmikmod-1-fixes.patch \
libmikmod-test.c \
libmikmod.mk \
- libmng-1-fixes.patch \
- libmng-1-libtool.patch \
libmng.mk \
libmodplug-test.c \
libmodplug.mk \
+ libmpcdec-1-configure_ac.patch \
+ libmpcdec.mk \
libntlm.mk \
liboauth-test.c \
liboauth.mk \
@@ -238,9 +287,12 @@
libodbc++.mk \
liboil.mk \
libpano13.mk \
+ libpaper-1-noundefined.patch \
libpaper.mk \
libpng-test.c \
libpng.mk \
+ libproxy.mk \
+ librsb.mk \
librsvg-1-fixes.patch \
librsvg-test.c \
librsvg.mk \
@@ -252,9 +304,9 @@
libshout.mk \
libsigc++.mk \
libsndfile.mk \
- libssh2-1-fixes.patch \
libssh2-test.c \
libssh2.mk \
+ libtasn1.mk \
libtool.mk \
libunistring.mk \
libusb.mk \
@@ -263,6 +315,7 @@
libxml++.mk \
libxml2-1-fixes.patch \
libxml2.mk \
+ libxshmfence.mk \
libxslt.mk \
llvm.mk \
log4cxx-1-gcc.4.4.patch \
@@ -277,20 +330,36 @@
lzo.mk \
matio.mk \
mdbtools.mk \
+ mesa-1-meson.patch \
+ mesa-proto.mk \
+ mesa.mk \
+ mingw-blas-1-xerbla.patch \
mingw-cairo-1-ssize-t-defined.patch \
mingw-cfitsio-1-fixes.patch \
- mingw-glib-1-fixes.patch \
- mingw-glib-2-fixes.patch \
+ mingw-epstool-1-fixes.patch \
+ mingw-glpk-1-fixes.patch \
mingw-hdf5-1.patch \
- mingw-pango-1-fixes.patch \
+ mingw-lapack-1-xerbla.patch \
+ mingw-libgcrypt-1-fixes.patch \
+ mingw-libmng-1-noundefines.patch \
+ mingw-llvm-1-config.patch \
+ mingw-openblas-1-xerbla.patch \
+ mingw-portaudio-1-pkgconfig.patch \
+ mingw-s2tc-1-fixes.patch \
+ mingw-texinfo-1-fixes.patch \
mingw-utils-1-portability-fix.patch \
- mingw-utils.mk \
+ mingw-w64-1-float-h.patch \
+ mingw-w64.mk \
mingwrt.mk \
+ mman-win32-1-include_name_change.patch \
+ mman-win32.mk \
+ mpc.mk \
mpfr.mk \
msitools.mk \
msvc-atk-1.patch \
msvc-build-cmake-1.patch \
msvc-cairo-1.patch \
+ msvc-curl-1.patch \
msvc-dbus-1.patch \
msvc-fftw-1.patch \
msvc-fltk-1.patch \
@@ -298,6 +367,7 @@
msvc-gcab-1.patch \
msvc-gdk-pixbuf-1.patch \
msvc-gettext-1.patch \
+ msvc-gl2ps-1.patch \
msvc-glib-1.patch \
msvc-gnuplot-1.patch \
msvc-gnutls-1.patch \
@@ -315,6 +385,7 @@
msvc-libgsf-1.patch \
msvc-libiconv-1.patch \
msvc-libidn-1.patch \
+ msvc-libmng-1.patch \
msvc-libssh2-1.patch \
msvc-libxml2-1.patch \
msvc-llvm-1.patch \
@@ -324,7 +395,10 @@
msvc-netcdf-1.patch \
msvc-nettle-1.patch \
msvc-octave-1.patch \
+ msvc-of-image-1.patch \
+ msvc-of-miscellaneous-1.patch \
msvc-openssl-1.patch \
+ msvc-openssl-3-libdeps.patch \
msvc-pango-1.patch \
msvc-pixman-1.patch \
msvc-proj-1.patch \
@@ -340,35 +414,43 @@
msys-bash.mk \
msys-coreutils.mk \
msys-diffutils.mk \
+ msys-dos2unix.mk \
msys-file.mk \
msys-findutils.mk \
msys-gawk.mk \
msys-grep.mk \
msys-gzip.mk \
msys-less.mk \
+ msys-libcrypt.mk \
msys-libiconv.mk \
msys-libintl.mk \
msys-libmagic.mk \
+ msys-libopenssl.mk \
msys-make.mk \
msys-msys-core.mk \
+ msys-patch.mk \
+ msys-perl.mk \
msys-regex.mk \
msys-sed.mk \
msys-tar.mk \
+ msys-termcap.mk \
msys-unzip.mk \
- msys-termcap.mk \
- msys-texinfo.mk \
- msys-xz.mk \
+ msys-wget.mk \
+ msys-zip.mk \
+ msys-zlib.mk \
muparser.mk \
mxml-test.c \
mxml.mk \
native-binutils.mk \
- native-gcc-1-float.patch \
native-gcc.mk \
+ ncurses-1-gcc-5-fix.patch \
ncurses.mk \
+ netcdf-1-fixes.patch \
netcdf.mk \
+ nettle-1-fixes.patch \
nettle.mk \
npp.mk \
- nsis-1-fixes.patch \
+ nsis-2-fixes.patch \
nsis.mk \
ocaml-core-1-fixes.patch \
ocaml-core-test.ml \
@@ -378,21 +460,83 @@
ocaml-flexdll.mk \
ocaml-native-1-fixes.patch \
ocaml-native.mk \
- octave.mk \
- of-communications-1-fixes.patch \
+ of-actuarial.mk \
+ of-audio.mk \
+ of-communications-1-catop.patch \
of-communications.mk \
of-control.mk \
+ of-data-smoothing.mk \
+ of-database.mk \
+ of-dataframe.mk \
+ of-dicom.mk \
+ of-financial.mk \
+ of-fits-1-cross-fixes.patch \
+ of-fits-2-fixes.patch \
+ of-fits.mk \
+ of-fl-core-1-fixes.patch \
+ of-fl-core.mk \
+ of-fuzzy-logic-toolkit.mk \
+ of-ga.mk \
of-general.mk \
+ of-generate_html.mk \
+ of-geometry.mk \
+ of-gsl-1-cross-fixes.patch \
+ of-gsl.mk \
of-image.mk \
+ of-instrument-control.mk \
+ of-interval-1-cross-fixes.patch \
+ of-interval.mk \
of-io.mk \
+ of-linear-algebra.mk \
+ of-lssa.mk \
+ of-ltfat-1-cross-fixes.patch \
+ of-ltfat.mk \
+ of-matgeom.mk \
+ of-mapping.mk \
of-miscellaneous.mk \
- of-optim-1-fixes.patch \
+ of-nan.mk \
+ of-netcdf.mk \
+ of-nurbs-1-fixes.patch \
+ of-nurbs-2-dev-fixes.patch \
+ of-nurbs.mk \
+ of-ocs-1-cross-fixes.patch \
+ of-ocs-2-dev-fixes.patch \
+ of-ocs-3-break-fixes.patch \
+ of-ocs-4-pkgadd-fixes.patch \
+ of-ocs-5-no-odepkg.patch \
+ of-ocs.mk \
+ of-octcdf.mk \
+ of-odepkg-1-fixes.patch \
+ of-odepkg-2-fixes.patch \
+ of-odepkg-3-deprecated.patch \
+ of-odepkg.mk \
of-optim.mk \
+ of-optiminterp.mk \
+ of-quaternion-1-cross-fixes.patch \
+ of-quaternion-2-dev-fixes.patch \
+ of-quaternion.mk \
+ of-queueing.mk \
of-signal.mk \
+ of-sockets.mk \
+ of-sparsersb.mk \
+ of-specfun-1-deprecated.patch \
of-specfun.mk \
+ of-splines.mk \
+ of-statistics-1-cross.patch \
of-statistics.mk \
+ of-stk.mk \
+ of-strings-1-fixes.patch \
+ of-strings.mk \
of-struct.mk \
+ of-symbolic.mk \
+ of-tisean-1-fixes.patch \
+ of-tisean.mk \
+ of-tsa.mk \
+ of-video-1-fixes.patch \
+ of-video.mk \
of-windows.mk \
+ of-zenity.mk \
+ of-zeromq.mk \
ogg.mk \
old.mk \
openal-1-fixes.patch \
@@ -402,14 +546,18 @@
opencore-amr.mk \
opencsg-1-fixes.patch \
opencsg.mk \
- openexr-1-disable-zlib_winapi.patch \
+ opencv-1-fixes.patch \
+ opencv.mk \
openexr.mk \
+ openscenegraph-1-fixes.patch \
openscenegraph.mk \
- openssl-1-winsock2.patch \
+ openssl-1-fixes.patch \
openssl.mk \
+ pango-1-fixes.patch \
pango.mk \
pangomm.mk \
pcre.mk \
+ pcre2.mk \
pdcurses.mk \
pdflib_lite-1-mingw.patch \
pdflib_lite.mk \
@@ -417,6 +565,7 @@
physfs-test.c \
physfs.mk \
pixman.mk \
+ pkg-config.mk \
plibc.mk \
plotmm-1-fixes.patch \
plotmm.mk \
@@ -433,45 +582,69 @@
portaudio-1-win32.patch \
portaudio-test.c \
portaudio.mk \
- postgresql-1-fixes.patch \
postgresql.mk \
proj.mk \
protobuf-test.cpp \
protobuf.mk \
pstoedit-1-fixes.patch \
pstoedit-2-gs.patch \
+ pstoedit-3-nosecapi.patch \
+ pstoedit-4-winlibemf.patch \
+ pstoedit-5-use_gs_env.patch \
pstoedit.mk \
- pthreads-1-fixes.patch \
+ pthread-stubs.mk \
pthreads-test.c \
pthreads.mk \
+ python-embedded.mk \
+ python-mpmath.mk \
+ python-sympy.mk \
qdbm-test.c \
qdbm.mk \
qhull-1-fixes.patch \
- qhull-2-fixes.patch \
qhull.mk \
qjson-1-static.patch \
qjson.mk \
qrupdate-1-fixes.patch \
qrupdate.mk \
- qscintilla-1-matlab-blockcomments.patch \
+ qscintilla-1-fixes.patch \
qscintilla.mk \
qt-1-cherrypicks.patch \
- qt-1-pcre.patch \
- qt-2-dbus.patch \
+ qt-2-shared-tools-fixes.patch \
qt-test.cpp \
qt-test.pro \
qt-test.ui \
qt.mk \
+ qt5.mk \
+ qtbase-1-fixes.patch \
+ qtbase.mk \
+ qtimageformats.mk \
+ qtsvg.mk \
+ qttranslations.mk \
+ qttools-1.patch \
+ qttools.mk \
qwt-1-fixes.patch \
qwt.mk \
qwtplot3d-1-fixes.patch \
qwtplot3d.mk \
- readline-1-binding.patch \
+ rapidjson-1-prettywriter.patch \
+ rapidjson.mk \
+ readline-0-001.patch \
+ readline-0-002.patch \
+ readline-0-003.patch \
+ readline-0-004.patch \
readline-1-display.patch \
+ readline-1-fixes.patch \
readline-1-input.patch \
- readline-1-paste.patch \
readline-1-sigwinch.patch \
+ readline-2-event-hook.patch \
+ readline-2-history.patch \
readline.mk \
+ release-octave-1-gnulib.patch \
+ release-octave.mk \
+ renderproto.mk \
+ rtmidi.mk \
+ s2tc.mk \
+ sdl-1-xdata.patch \
sdl-test.c \
sdl.mk \
sdl_image-test.c \
@@ -487,15 +660,46 @@
sdl_sound-test.c \
sdl_sound.mk \
sdl_ttf.mk \
+ sm.mk \
smpeg-test.c \
smpeg.mk \
sox-test.c \
sox.mk \
speex.mk \
sqlite.mk \
+ src-msys-bash.mk \
+ src-msys-coreutils.mk \
+ src-msys-diffutils.mk \
+ src-msys-dos2unix.mk \
+ src-msys-file.mk \
+ src-msys-findutils.mk \
+ src-msys-gawk.mk \
+ src-msys-grep.mk \
+ src-msys-gzip.mk \
+ src-msys-less.mk \
+ src-msys-libcrypt.mk \
+ src-msys-libiconv.mk \
+ src-msys-libintl.mk \
+ src-msys-libmagic.mk \
+ src-msys-libopenssl.mk \
+ src-msys-make.mk \
+ src-msys-msys-core.mk \
+ src-msys-patch.mk \
+ src-msys-perl.mk \
+ src-msys-regex.mk \
+ src-msys-sed.mk \
+ src-msys-tar.mk \
+ src-msys-termcap.mk \
+ src-msys-unzip.mk \
+ src-msys-wget.mk \
+ src-msys-zip.mk \
+ src-msys-zlib.mk \
+ stable-octave-1-gnulib.patch \
stable-octave.mk \
- suitesparse-1.patch \
+ suitesparse-1-fixes.patch \
+ suitesparse-2-metis.patch \
suitesparse.mk \
+ sundials-ida.mk \
t4k_common.mk \
taglib-1-static.patch \
taglib.mk \
@@ -506,9 +710,16 @@
tiff.mk \
tinyxml-test.cpp \
tinyxml.mk \
+ transfig-1-fixes.patch \
+ transfig.mk \
tre.mk \
+ units.mk \
+ util-linux.mk \
+ util-macros.mk \
uuid.mk \
vala.mk \
+ vcdimager-1-configure.patch \
+ vcdimager.mk \
vigra-test.cpp \
vigra.mk \
vmime-1-fixes.patch \
@@ -524,26 +735,61 @@
w32api-1-dinput-dsound.patch \
w32api-2-directx-additions-for-qt.patch \
w32api.mk \
+ wavpack-1-exec_prefix.patch \
+ wavpack.mk \
wget.mk \
+ win64-nsis.patch \
+ win7appid.mk \
winpcap-1-fixes.patch \
winpcap.mk \
wt-1-fixes.patch \
wt.mk \
wxwidgets-test.cpp \
wxwidgets.mk \
+ x11.mk \
x264-1-fix-bin-bash.patch \
x264.mk \
xapian-core.mk \
+ xau.mk \
+ xcb-proto.mk \
+ xcb-util-cursor.mk \
+ xcb-util-image.mk \
+ xcb-util-keysyms.mk \
+ xcb-util-renderutil.mk \
+ xcb-util-wm.mk \
+ xcb-util.mk \
+ xcb.mk \
+ xcursor.mk \
+ xdamage.mk \
+ xdmcp.mk \
xerces-1-fix-pkgconfig.patch \
xerces-test.cpp \
xerces.mk \
- xine-lib-1-fixes.patch \
+ xext.mk \
+ xextproto.mk \
+ xf86vidmodeproto.mk \
+ xfixes.mk \
+ xft.mk \
+ xi.mk \
+ xine-lib-1-configure_ac.patch \
+ xine-lib-2-build_fixes.patch \
+ xine-lib-3-more_build_fixes.patch \
+ xine-lib-4-mkdir.patch \
+ xine-lib-5-change_mma_h_to_mma_win32_h.patch \
xine-lib.mk \
+ xkbcommon-1-fixes.patch \
+ xkbcommon.mk \
xmlwrapp.mk \
- xvidcore-1-fixes.patch \
+ xproto.mk \
+ xrender.mk \
+ xt.mk \
+ xtrans.mk \
xvidcore.mk \
+ xxf86vm.mk \
xz.mk \
+ yasm.mk \
zenity.mk \
+ zeromq.mk \
zlib-1-win32-static.patch \
zlib.mk \
zziplib-1-fix-fnmatch.patch \
@@ -652,6 +898,140 @@
SRC_MSVCTOOLS_MATH_FILES := \
$(addprefix src/build-msvctools/math/, $(SRC_MSVCTOOLS_MATH_FILES_1))
+SRC_MSYS2_FILES_1 := \
+ msys2-bash.mk \
+ msys2-coreutils.mk \
+ msys2-diffutils.mk \
+ msys2-dos2unix.mk \
+ msys2-filesystem.mk \
+ msys2-findutils.mk \
+ msys2-gawk.mk \
+ msys2-gcc-libs.mk \
+ msys2-gmp.mk \
+ msys2-gnupg.mk \
+ msys2-grep.mk \
+ msys2-gzip.mk \
+ msys2-icu.mk \
+ msys2-info.mk \
+ msys2-keyring.mk \
+ msys2-less.mk \
+ msys2-libassuan.mk \
+ msys2-libbz2.mk \
+ msys2-libcrypt.mk \
+ msys2-libexpat.mk \
+ msys2-libffi.mk \
+ msys2-libgnutls.mk \
+ msys2-libgcrypt.mk \
+ msys2-libgpg-error.mk \
+ msys2-libgpgme.mk \
+ msys2-libhogweed.mk \
+ msys2-libiconv.mk \
+ msys2-libidn2.mk \
+ msys2-libintl.mk \
+ msys2-libksba.mk \
+ msys2-liblzma.mk \
+ msys2-libmetalink.mk \
+ msys2-libnettle.mk \
+ msys2-libnpth.mk \
+ msys2-libopenssl.mk \
+ msys2-libp11-kit.mk \
+ msys2-libpcre.mk \
+ msys2-libpcre2.mk \
+ msys2-libpsl.mk \
+ msys2-libreadline.mk \
+ msys2-libsqlite.mk \
+ msys2-libtasn1.mk \
+ msys2-libunistring.mk \
+ msys2-libutil-linux.mk \
+ msys2-libxml2.mk \
+ msys2-make.mk \
+ msys2-mintty.mk \
+ msys2-mpdecimal.mk \
+ msys2-mpfr.mk \
+ msys2-ncurses.mk \
+ msys2-pacman-mirrors.mk \
+ msys2-pacman.mk \
+ msys2-patch.mk \
+ msys2-perl.mk \
+ msys2-python.mk \
+ msys2-runtime.mk \
+ msys2-sed.mk \
+ msys2-tar.mk \
+ msys2-unzip.mk \
+ msys2-wget.mk \
+ msys2-zip.mk \
+ msys2-zlib.mk
+
+SRC_MSYS2_FILES := \
+ $(addprefix src/, $(SRC_MSYS2_FILES_1))
+
+SRC_MSYS2_SRC_FILES_1 := \
+ src-msys2-bash.mk \
+ src-msys2-coreutils.mk \
+ src-msys2-diffutils.mk \
+ src-msys2-dos2unix.mk \
+ src-msys2-filesystem.mk \
+ src-msys2-findutils.mk \
+ src-msys2-gawk.mk \
+ src-msys2-gcc-libs.mk \
+ src-msys2-gmp.mk \
+ src-msys2-gnupg.mk \
+ src-msys2-grep.mk \
+ src-msys2-gzip.mk \
+ src-msys2-icu.mk \
+ src-msys2-info.mk \
+ src-msys2-keyring.mk \
+ src-msys2-less.mk \
+ src-msys2-libassuan.mk \
+ src-msys2-libbz2.mk \
+ src-msys2-libcrypt.mk \
+ src-msys2-libexpat.mk \
+ src-msys2-libffi.mk \
+ src-msys2-libgcrypt.mk \
+ src-msys2-libgnutls.mk \
+ src-msys2-libgpg-error.mk \
+ src-msys2-libgpgme.mk \
+ src-msys2-libhogweed.mk \
+ src-msys2-libiconv.mk \
+ src-msys2-libidn2.mk \
+ src-msys2-libintl.mk \
+ src-msys2-libksba.mk \
+ src-msys2-liblzma.mk \
+ src-msys2-libmetalink.mk \
+ src-msys2-libnettle.mk \
+ src-msys2-libnpth.mk \
+ src-msys2-libopenssl.mk \
+ src-msys2-libp11-kit.mk \
+ src-msys2-libpcre.mk \
+ src-msys2-libpcre2.mk \
+ src-msys2-libpsl.mk \
+ src-msys2-libreadline.mk \
+ src-msys2-libsqlite.mk \
+ src-msys2-libtasn1.mk \
+ src-msys2-libunistring.mk \
+ src-msys2-libutil-linux.mk \
+ src-msys2-libxml2.mk \
+ src-msys2-make.mk \
+ src-msys2-mintty.mk \
+ src-msys2-mpdecimal.mk \
+ src-msys2-mpfr.mk \
+ src-msys2-ncurses.mk \
+ src-msys2-pacman-mirrors.mk \
+ src-msys2-pacman.mk \
+ src-msys2-patch.mk \
+ src-msys2-perl.mk \
+ src-msys2-python.mk \
+ src-msys2-runtime.mk \
+ src-msys2-sed.mk \
+ src-msys2-tar.mk \
+ src-msys2-unzip.mk \
+ src-msys2-wget.mk \
+ src-msys2-zip.mk \
+ src-msys2-zlib.mk
+
+SRC_MSYS2_SRC_FILES := \
+ $(addprefix src/, $(SRC_MSYS2_SRC_FILES_1))
+
TOOLS_FILES_1 := \
build-make.sh \
config.guess \
@@ -659,37 +1039,58 @@
create-screenshot-for-doc \
install-sh \
make-shared-from-static \
+ makeinst-script.sh.in \
+ mk-hg-id.sh \
+ msys2-install.py \
patch-tool-mxe \
+ pkg-install.py \
s3-fetch-and-sync \
- set_mxe_env.sh.in
+ set-mxe-env.sh.in \
+ gen-bat-wrapper
TOOLS_FILES := $(addprefix tools/, $(TOOLS_FILES_1))
FILES := \
+ $(TOP_BUILD_DIR)/HG-ID \
+ CNAME \
+ README \
+ aclocal.m4 \
+ binary-dist-rules.mk \
+ bootstrap \
build_packages.m \
- CNAME \
configure \
configure.ac \
dist-files.mk \
+ hg-octave-dist.mk \
index.html \
Makefile.in \
- makeinst-script.sh \
- mk-dist \
+ octave-wrapper.in \
octaverc
-DOC_FILES_1 := \
- screenshot-4th-compile.png \
- screenshot-4th-compile-small.png \
- screenshot-4th-run.png \
- screenshot-4th-run-small.png
-
-DOC_FILES := $(addprefix doc/, $(DOC_FILES_1))
+INSTALL_FILES_1 := \
+ cmdshell.bat \
+ post-install.bat \
+ fc_update.bat \
+ gpl-3.0.txt \
+ octave.bat \
+ octave.bmp \
+ octave.vbs \
+ octave-firsttime.vbs \
+ octave-hdr.bmp \
+ octave-logo.ico \
+ post-install.bat \
+ README.html
+INSTALL_FILES := $(addprefix installer-files/, $(INSTALL_FILES_1))
DIST_FILES := \
$(SRC_FILES) \
+ $(SRC_MSYS2_FILES) \
+ $(SRC_MSYS2_SRC_FILES) \
$(SRC_MSVCTOOLS_FILES) \
$(SRC_MSVCTOOLS_COMPAT_FILES) \
$(SRC_MSVCTOOLS_MATH_FILES) \
$(TOOLS_FILES) \
$(FILES) \
- $(DOC_FILES)
+ $(INSTALL_FILES)
+
+
diff -r e9741f369ee4 -r 143a4181d569 hg-octave-dist.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hg-octave-dist.mk Fri Feb 12 17:29:18 2021 -0500
@@ -0,0 +1,54 @@
+## Build and Octave tarball distribution from hg sources. The
+## resulting tarball may then be used by the default-octave target to
+## build. So the typical steps for building Octave from the mercurial
+## sources are
+##
+## ./bootstrap
+## ./configure --enable-octave=default
+## make hg-octave-dist
+## make
+##
+## The version number set in the mercurial sources for Octave must
+## match the one used in src/default-octave.mk.
+##
+## We also install the resulting binary to run natively when
+## building packages during a cross build.
+
+## Set PATH, PKG_CONFIG_PATH, and LD_LIBRARY_PATH to the original
+## values from the environment so that we avoid the tools that we've
+## built for cross compiling. For these rules to work, you must have
+## appropriate versions of the required tool installed outside of the
+## mxe-octave build tree. Things like pkg-config and other tools that
+## are built for mxe-octave may produce the wrong values for these
+## steps, especially if we eventually intend to cross compile Octave.
+## Rather than try to work around those issues, it seems simpler to
+## just use the system tools for this job.
+
+HG_OCTAVE_DIST_ENV_FLAGS := \
+ PKG_CONFIG_PATH='$(ENV_PKG_CONFIG_PATH)' \
+ LD_LIBRARY_PATH='$(LD_LIBRARY_PATH)' \
+ PATH='$(ENV_PATH)'
+
+.PHONY: hg-octave-dist
+hg-octave-dist: $(BUILD_TOOLS) update-hg-octave-repo
+ cd octave-hg-repo && \
+ rm -rf .build && \
+ mkdir .build && \
+ $(HG_OCTAVE_DIST_ENV_FLAGS) ./bootstrap && \
+ cd .build && \
+ $(HG_OCTAVE_DIST_ENV_FLAGS) ../configure --prefix=$(ROOT_PREFIX) && \
+ $(HG_OCTAVE_DIST_ENV_FLAGS) make -j '$(JOBS)' all && \
+ $(HG_OCTAVE_DIST_ENV_FLAGS) make -j '$(JOBS)' install && \
+ $(HG_OCTAVE_DIST_ENV_FLAGS) make -j '$(JOBS)' dist && \
+ mv '$($(OCTAVE_TARGET)_FILE)' '$(PKG_DIR)'
+
+.PHONY: update-hg-octave-repo
+update-hg-octave-repo:
+ if [ -d octave-hg-repo ]; then \
+ cd octave-hg-repo \
+ && hg pull && hg update $(hg-octave-branch); \
+ else \
+ hg clone https://hg.savannah.gnu.org/hgweb/octave octave-hg-repo \
+ && cd octave-hg-repo \
+ && hg pull && hg update $(hg-octave-branch); \
+ fi
diff -r e9741f369ee4 -r 143a4181d569 index.html
--- a/index.html Fri Dec 06 23:02:15 2013 -0500
+++ b/index.html Fri Feb 12 17:29:18 2021 -0500
@@ -761,20 +761,19 @@
MingW
- Make sure to update and upgrade packages as some of the default versions
- of packages are too old to work correctly.
- mingw-get update
- mingw-get upgrade
- And then get required packages.
-
mingw-get install autoconf bash msys-bison msys-flex gcc gcc-c++ \
- gcc-fortran gettext msys-m4 msys-make msys-sed \
- libiconv msys-openssl msys-patch msys-perl \
- msys-libarchive msys-unzip msys-wget msys-bsdtar
+ Get required packages by running:
+
+ mingw-get install gcc gcc-c++ gcc-fortran mingw32-make \
+ msys-autoconf msys-bash msys-bison msys-bsdtar \
+ msys-flex msys-gettext mysys-libiconv \
+ msys-libarchive msys-libz msys-m4 msys-make \
+ msys-openssl msys-patch msys-perl msys-sed \
+ msys-unzip msys-wget
You will also need to install Windows versions of python
- and ghostscript and ensure they are in visisble in the PATH.
+ and ensure it is visisble in the PATH.
openSUSE
@@ -927,1479 +926,2036 @@
@@ -2636,7 +3192,7 @@
-
Copyright © 2007–2012
+
Copyright © 2007–2018
- Volker Grabsch
@@ -2679,7 +3235,6 @@
- - 2012-04-12 – Release 2.22
-
Download |
@@ -3552,3 +4107,4 @@