# 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 @@

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
agg2.5Anti-Grain Geometry
apr-util1.3.10APR-util
apr1.4.2APR
armadillo3.4.4Armadillo C++ linear algebra library
arpack3.1.3ARPACK
atk2.8.0ATK
atkmm2.22.6ATKmm
aubio0.3.2aubio
bfd2.22Binary File Descriptor library
blas1blas
boost1.52.0Boost C++ Library
autoconf2.69autoconf
automake1.11.6automake
binutils2.23.1GNU Binutils
bison2.7.1bison
cmake2.8.9cmake
bison2.5.37flex
gcc4.8.1GCC
gperf3.0.4gperf
libtool2.4.2libtool
m41.4.16m4
msvctools
pkg-config0.28pkg-config
texinfo4.13atexinfo
xz5.0.4XZ
bzip21.0.6bzip2
cairo1.12.14cairo
cairomm1.10.0cairomm
cblas1cblas
cfitsio3.350CFITSIO
cgal4.0.2cgal
cminpack1.3.0cminpack
cppunit1.12.1CppUnit
cunit2.1-2cunit
curl7.33.0cURL
dbus1.7.6dbus
dcmtk3.6.0DCMTK
devil1.7.8DevIL
eigen2.0.17eigen
exiv20.23Exiv2
expat2.1.0Expat XML Parser
faad22.7faad2
ffmpeg1.0ffmpeg
fftw3.3.3fftw
file5.11file
flac1.2.1FLAC
fltk1.3.1FLTK
fontconfig2.10.93fontconfig
freeglut2.8.0freeglut
freeimage3.15.4FreeImage
freetds0.91FreeTDS
freetype2.4.10freetype
fribidi0.19.4FriBidi
ftgl2.1.3~rc5ftgl
gc7.2dgc
gcab0.4gcab
gcc-gmp5.0.5GMP for GCC
gcc-mpc1.0.1MPC for GCC
gcc-mpfr3.1.1MPFR for GCC
gd2.0.35GD (without support for xpm)
gdal1.9.2GDAL
gdb7.5gdb
gdcm2.2.3GDCM
gdk-pixbuf2.28.2GDK-pixbuf
geos3.3.5GEOS
gettext0.18.3.1gettext
giflib5.0.2giflib
glew1.9.0GLEW
gl2ps1.3.8 - GL2PS
glib2.36.3GLib
glibmm2.32.0GLibmm
glpk4.52.1 - GLPK
gmp5.0.5GMP
gnuplot4.6.4gnuplot
gnutls3.2.3GnuTLS
graphicsmagick1.3.17GraphicsMagick
gsl1.15GSL
gsoap2.8.11gSOAP
gst-plugins-base0.10.36gst-plugins-base
gst-plugins-good0.10.31gst-plugins-good
gstreamer0.10.36gstreamer
gta1.0.3gta
gtk22.24.10GTK+
gtk33.8.2GTK+
gtkGLArea2.0.1GtkGLArea
gtkglext1.2.0GtkGLExt
gtkglextmm1.2.0GtkGLExtmm
gtkmm22.24.0GTKMM
gtksourceview2.10.5GTKSourceView
gtksourceviewmm22.10.3GtkSourceViewmm
guile1.8.7GNU Guile
harfbuzz0.9.19HarfBuzz
hdf51.8.10HDF5
hunspell1.3.2Hunspell
id3lib3.8.3id3lib
ilmbase1.0.2IlmBase
imagemagick6.7.2-7ImageMagick
intltool0.50.2intltool
ITSOL2ITSOL
itstool1.2.0ITS Tool
jasper1.900.1JasPer
jpeg8djpeg
json-c0.10json-c
lame3.99lame
lapack3.4.2lapack
lcms2.4lcms
lcms11.19lcms1
levmar2.6levmar
libarchive3.0.3Libarchive
libass0.10.1libass
libcroco0.6.2Libcroco
libdnet1.11libdnet
libevent2.0.20libevent
libf2c1libf2c
libffi3.0.11libffi
libgcrypt1.5.3libgcrypt
libgd2.1.0libgd
libgda4.2.13libgda
libgdamm4.1.3libgdamm
libgee0.5.0libgee
libgeotiff1.4.0GeoTiff
libglade2.6.4glade
libgnurx2.5.1libgnurx
libgomp4.7.0GCC-libgomp
libgpg_error1.11libgpg-error
libgsasl1.8.0Libgsasl
libgsf1.14.27libgsf
libharu2.2.1libharu
libiberty2.22libiberty
libical0.48libical
libiconv1.14libiconv
libidn1.28Libidn
libircclient1.6libircclient
liblo0.26liblo
libmad0.15.1blibmad
libmikmod3.2.0-beta2libMikMod
libmng2.0.2libmng
libmodplug0.8.8.4libmodplug
libntlm1.3Libntlm
liboauth1.0.0liboauth
libodbc++0.2.5libodbc++
liboil0.3.17liboil
libpano132.9.18_rc2libpano13
libpaper1.1.24+nmu2libpaper
libpng1.6.3libpng
librsvg2.36.4librsvg
librtmp2.4librtmp
libsamplerate0.1.8libsamplerate
libshout2.3.1libshout
libsigc++2.3.1libsigc++
libsndfile1.0.25libsndfile
libssh21.4.2libssh2
libtool2.4.2GNU Libtool
libunistring0.9.3libunistring
libusb1.2.6.0LibUsb
libvpx1.1.0vpx
libxml++2.36.0libxml2
libxml22.9.0libxml2
libxslt1.1.27libxslt
llvm3.3llvm
log4cxx0.10.0log4cxx
lua5.2.1Lua
lzo2.06lzo
matio1.3.4matio
mdbtools0.7mdbtools
mingwrt3.20-2MinGW Runtime
mpfr3.1.1mpfr
msitools0.92msitools
msys-bash3.1.17-4MinGW bash
msys-coreutils5.97-3MinGW coreutils
msys-diffutils2.8.7.20071206cvs-3MinGW diffutilsa52decA52dec
aggAnti-Grain Geometry
apr-utilAPR-util
aprAPR
armadilloArmadillo C++ linear algebra library
arpackARPACK
atkATK
atkmmATKmm
aubioaubio
bfdBinary File Descriptor library
biosigBiosig
blasblas
blas_switchblas_switch
boostBoost C++ Library
build-autoconfautoconf
build-automakeautomake
build-binutilsGNU Binutils
build-bisonbison
build-cmakecmake
build-flexflex
build-gawkGAWK
build-gettextgettext
build-gccGCC
build-gperfgperf
build-libtoollibtool
build-lzipLzip
build-makomako
build-markupsafemarkupsafe
build-m4m4
build-mesonbuild-meson
build-msvctools
build-ninjabuild-ninja
build-octaveMinimal version of Octave for cross-compiling some binary packages
build-perlperl
build-pkg-configpkg-config
build-pythonpython2
build-python3python3
build-sconsscons
build-sedsed
build-setuptoolssetuptools
build-texinfotexinfo
build-xzXZ
build-yasmYasm
bzip2bzip2
c-aresc-ares
cairocairo
cairommcairomm
cblascblas
cfitsioCFITSIO
cgalcgal
cloogCLooG Code Generator
cmakecmake
cminpackcminpack
cppunitCppUnit
cunitcunit
curlcURL
damageprotodamageproto
dbusdbus
dcmtkDCMTK
default-octaveDefault Octave
devilDevIL
double-conversiondouble-conversion
dri2protodri2proto
eigeneigen
exiv2Exiv2
expatExpat XML Parser
faad2faad2
ffmpegffmpeg
fftwfftw
filefile
fixesprotofixesproto
flacFLAC
fltkFLTK
fontconfigfontconfig
freeglutfreeglut
freeimageFreeImage
freetdsFreeTDS
freetypefreetype
fribidiFriBidi
ftglftgl
gcgc
gcabgcab
gcc-cloogCLooG for GCC
gcc-gmpGMP for GCC
gcc-islISL for GCC
gcc-mpcMPC for GCC
gcc-mpfrMPFR for GCC
gdGD (without support for xpm)
gdalGDAL
gdbgdb
gdcmGDCM
gdk-pixbufGDK-pixbuf
geosGEOS
gettextgettext
ghostscriptghostscript
giflibgiflib
gl2psGL2PS
glewGLEW
glibGLib
glibmmGLibmm
glpkGLPK
glprotoglproto
gluGLU
gmpGMP
gnuplotgnuplot
epstoolepstool
gnutlsGnuTLS
graphicsmagickGraphicsMagick
gslGSL
gsoapgSOAP
gst-plugins-basegst-plugins-base
gst-plugins-goodgst-plugins-good
gstreamergstreamer
gtagta
gtk2GTK+
gtk3GTK+
gtkglareaGtkGLArea
gtkglextGtkGLExt
gtkglextmmGtkGLExtmm
gtkmm2GTKMM
gtksourceviewGTKSourceView
gtksourceviewmm2GtkSourceViewmm
guileGNU Guile
harfbuzzHarfBuzz
hdf5HDF5
hunspellHunspell
iceice
id3libid3lib
ilmbaseIlmBase
imagemagickImageMagick
inputprotoinputproto>
intltoolintltool
islInteger Set Library
itsolITSOL
itstoolITS Tool
jasperJasPer
jpegjpeg
json-cjson-c
kbprotokbproto>
lamelame
lapacklapack
lcmslcms
lcms1lcms1
levmarlevmar
libarchiveLibarchive
libasslibass
libb64libb64
libcdioLibcdio
libcrocoLibcroco
libdnetlibdnet
libdrmlibdrm
libeventlibevent
libf2clibf2c
libffilibffi
libgcryptlibgcrypt
libgdlibgd
libgdalibgda
libgdammlibgdamm
libgeelibgee
libgeotiffGeoTiff
libgladeglade
libgnurxlibgnurx
libgompGCC-libgomp
libgpg_errorlibgpg-error
libgsaslLibgsasl
libgsflibgsf
libharulibharu
libibertylibiberty
libicallibical
libiconvlibiconv
icu4cicu4c
libidnLibidn
libidn2Libidn2
libircclientlibircclient
libjbiglibjbig
libloliblo
libmadlibmad
libmikmodlibMikMod
libmnglibmng
libmpcdeclibmpcdec
libmodpluglibmodplug
libntlmLibntlm
liboauthliboauth
libodbc++libodbc++
liboilliboil
libpano13libpano13
libpaperlibpaper
libpnglibpng
libproxylibproxy
librsblibrsb
librsvglibrsvg
librtmplibrtmp
libsampleratelibsamplerate
libshoutlibshout
libsigc++libsigc++
libsndfilelibsndfile
libssh2libssh2
libtasn1libtasn1
libtoolGNU Libtool
libunistringlibunistring
libusbLibUsb
libvpxvpx
libxml++libxml2
libxml2libxml2
libxshmfencelibxshmfence
libxsltlibxslt
llvmllvm
log4cxxlog4cxx
luaLua
lzolzo
matiomatio
mdbtoolsmdbtools
mingw-w64MinGW-w64 Runtime
mingwrtMinGW Runtime
mman-win32mman-win32
mpcmpc
mpfrmpfr
msitoolsmsitools
msys-bashMinGW bash
msys-coreutilsMinGW coreutils
msys-diffutilsMinGW diffutils
msys-dos2unixMinGW dos2unix
msys-fileMinGW file
msys-findutilsMinGW findutils
msys-gawkMinGW gawk
msys-grepMinGW grep
msys-gzipMinGW gzip
msys-lessMinGW less
msys-libcryptMinGW libcrypt
msys-libiconvMinGW libiconv
msys-libintlMinGW libintl
msys-libmagicMinGW libmagic
msys-libopensslMinGW libopenssl
msys-makeMinGW make
msys-msys-coreMinGW msys-core
msys-patchMinGW patch
msys-perlMinGW perl
msys-regexMinGW regex
msys-sedMinGW sed
msys-tarMinGW tar
msys-unzipMinGW unzip
msys-zipMinGW zip
msys-termcapMinGW termcap
msys-wgetMinGW wget
msys-dos2unix6.0.3-1MinGW dos2unix
msys-file5.04-1MinGW file
msys-findutils4.4.2-2MinGW findutils
msys-gawk3.1.7-2MinGW gawk
msys-grep2.5.4-2MinGW grep
msys-gzip1.3.12-2MinGW gzip
msys-less436-2MinGW less
msys-libiconv1.14-1MinGW libiconv
msys-libintl0.18.1.1-1MinGW libintl
msys-libmagic5.04-1MinGW libmagic
msys-make3.81-3MinGW make
msys-msys-core1.0.18-1MinGW msys-core
msys-regex1.20090805-2MinGW regex
msys-sed4.2.1-2MinGW sed
msys-tar1.23-1MinGW tar
msys-unzip6.0-1MinGW unzip
msys-termcap0.20050421_1-2MinGW termcap
msys-wget1.12-1MinGW wget
muparser2.2.2muParser
mxml2.7Mini-XML
native-binutils2.23.1GNU Binutils
native-gcc4.8.1GCC
ncurses5.9Ncurses
netcdf4.3.0NetCDF
nettle2.7nettle
nsis2.46NSIS
nsis6.2.3Notepad++
ocaml4.00.0ocaml
ocaml4.00.0ocaml
ocaml-flexdll0.30flexdll
octave3.8.0-rc1Octave
of-communications1.1.1Octave Forge communications package
of-control2.4.1Octave Forge control package
of-general1.3.2Octave Forge general package
of-image2.0.0Octave Forge image package
of-io1.2.0Octave Forge io package
of-miscellaneous1.2.0Octave Forge miscellaneous package
of-optim1.2.2Octave Forge optim package
of-signal1.2.0Octave Forge signal package
of-specfun1.1.0Octave Forge specfun package
of-statistics1.1.3Octave Forge statistics package
of-struct1.0.10Octave Forge struct package
of-windows1.2.1Octave Forge struct package
stable-octave3.6.4Octave
ogg1.3.0OGG
old0.17old
openal1.14openalmsys-zlibMinGW zlib
msys2-bashMSYS2 bash
msys2-coreutilsMSYS2 coreutils
msys2-diffutilsMSYS2 diffutils
msys2-dos2unixMSYS2 dos2unix
msys2-filesystemMSYS2 filesystem
msys2-findutilsMSYS2 findutils
msys2-gawkMSYS2 gawk
msys2-gcc-libsMSYS2 gcc libs
msys2-gmpMSYS2 gmp
msys2-gnupgMSYS2 gngpg
msys2-grepMSYS2 grep
msys2-gzipMSYS2 gzip
msys2-icuMSYS2 icu
msys2-infoMSYS2 info
msys2-keyringMSYS2 keyring
msys2-lessMSYS2 less
msys2-libassuanMSYS2 libassuan
msys2-libbz2MSYS2 libbz2
msys2-libcryptMSYS2 libcrypt
msys2-libexpatMSYS2 libexpat
msys2-libffiMSYS2 libffi
msys2-libgpg-errorMSYS2 libgpg-error
msys2-libgcryptMSYS2 libgcrypt
msys2-libgnutlsMSYS2 libgnutls
msys2-libgpgmeMSYS2 libgpgme
msys2-libhogweedMSYS2 libhogweed
msys2-libiconvMSYS2 libiconv
msys2-libidn2MSYS2 libidn2
msys2-libintlMSYS2 libintl
msys2-libksbaMSYS2 libksba
msys2-liblzmaMSYS2 liblzma
msys2-libmetalinkMSYS2 libmetalink
msys2-libnettleMSYS2 libnettle
msys2-libnpthMSYS2 libnpth
msys2-libopensslMSYS2 libopenssl
msys2-libp11-kitMSYS2 libp11-kit
msys2-libpcreMSYS2 libpcre
msys2-libpcre2MSYS2 libpcre2
msys2-libpslMSYS2 libpsl
msys2-libreadlineMSYS2 libreadline
msys2-libsqliteMSYS2 libsqlite
msys2-libtasn1MSYS2 libtasn1
msys2-libunistringMSYS2 libunistring
msys2-libutil-linuxMSYS2 libutil-linux
msys2-libxml2MSYS2 libxm2
msys2-makeMSYS2 make
msys2-minttyMSYS2 mintty
msys2-mpdecimalMSYS2 mpdecimal
msys2-mpfrMSYS2 mpfr
msys2-ncursesMSYS2 ncurses
msys2-pacman-mirrorsMSYS2 pacman mirrors
msys2-pacmanMSYS2 pacman
msys2-patchMSYS2 patch
msys2-perlMSYS2 perl
msys2-pythonMSYS2 python
msys2-runtimeMSYS2 runtime
msys2-sedMSYS2 sed
msys2-tarMSYS2 tar
msys2-unzipMSYS2 unzip
msys2-wgetMSYS2 wget
msys2-zipMSYS2 zip
msys2-zlibMSYS2 zlib
muparsermuParser
mxmlMini-XML
native-binutilsGNU Binutils
native-gccGCC
ncursesNcurses
netcdfNetCDF
nettlenettle
nsisNSIS
nppNotepad++
ocaml-coreocaml
ocaml-flexdllflexdll
ocaml-nativeocaml
of-actuarialOctave Forge actuarial package
of-audioOctave Forge audio package
of-communicationsOctave Forge communications package
of-controlOctave Forge control package
of-data-smoothingOctave Forge data-smoothing package
of-databaseOctave Forge database package
of-dataframeOctave Forge dataframe package
of-dicomOctave Forge dicom package
of-financialOctave Forge financial package
of-fitsOctave Forge fits package
of-fl-coreOctave Forge fl-core package
of-fuzzy-logic-toolkitOctave Forge fuzzy-logic-toolkit package
of-gaOctave Forge ga package
of-generalOctave Forge general package
of-generate_htmlOctave Forge generate_html package
of-geometryOctave Forge geometry package
of-gslOctave Forge gsl package
of-imageOctave Forge image package
of-intervalOctave Forge interval package
of-instrument-controlOctave Forge instrument-control package
of-ioOctave Forge io package
of-linear-algebraOctave Forge linear-algebra package
of-lssaOctave Forge lssa package
of-ltfatOctave Forge ltfat package
of-matgeomOctave Forge matgeom package
of-mappingOctave Forge mapping package
of-miscellaneousOctave Forge miscellaneous package
of-nanOctave Forge NaN package
of-netcdfOctave Forge netcdf package
of-nurbsOctave Forge nurbs package
of-ocsOctave Forge ocs package
of-octcdfOctave Forge octcdf package
of-odepkgOctave Forge odepkg package
of-optimOctave Forge optim package
of-optiminterpOctave Forge optimintperp package
of-quaternionOctave Forge quaternion package
of-queueingOctave Forge queueing package
of-signalOctave Forge signal package
of-socketsOctave Forge sockets package
of-sparsersbOctave Forge sparsersb package
of-specfunOctave Forge specfun package
of-splinesOctave Forge splines package
of-statisticsOctave Forge statistics package
of-stkOctave Forge stk package
of-stringsOctave Forge strings package
of-structOctave Forge struct package
of-symbolicOctave Forge symbolic package
of-tiseanOctave Forge tisean package
of-tsaOctave Forge tsa package
of-windowsOctave Forge struct package
of-videoOctave Forge video package
of-zenityOctave Forge zenity package
of-zeromqOctave Forge zeromq package
oggOGG
oldold
openalopenal
openblas0.2.8OpenBLAS
opencore-amr0.1.2opencore-amr
opencsg1.3.2opencsg
openexr1.7.0OpenEXR
openscenegraph3.0.1OpenSceneGraph
openssl1.0.1eopenssl
pango1.34.1Pango
pangomm2.28.4Pangomm
pcre8.33PCRE
pdcurses3.4PDcurses
plibc0.1.7Plibc
pdflib_lite7.0.5p3PDFlib Lite
pfstools1.8.5pfstools
physfs2.0.3physfs
pixman0.30.0pixman
plotmm0.1.2PlotMM
plotutils2.6plotutils
poco1.4.4POCO C++ Libraries
poppler0.20.5poppler
popt1.16popt
portaudio19_20111121portaudio
postgresql9.2.1PostgreSQL
proj4.8.0proj
protobuf2.4.1protobuf
pstoedit3.61
pthreads2-9-1Pthreads-w32
qdbm1.8.78QDBM
qhull2009.1QHull
qjson0.7.1QJson
qrupdate1.1.2qrupdate
qscintilla2.8QScintilla
qt4.8.3Qt
qwt6.0.1Qwt
qwtplot3d0.2.7QwtPlot3D
readline6.2Readline
sdl1.2.15SDL
sdl_image1.2.12SDL_image
sdl_mixer1.2.12SDL_mixer
sdl_net1.2.8SDL_net
sdl_pango0.1.2SDL_Pango
sdl_sound1.0.3SDL_sound
sdl_ttf2.0.11SDL_ttf
smpeg0.4.5+cvs20030824smpeg
sox14.4.0SoX
speex1.2rc1Speex
sqlite3071401SQLite
suitesparse4.0.2SuiteSparse
t4k_common0.1.1t4k_common
taglib1.7.2TagLib
termcap1.3.1GNU termcap
texinfo4.13aGNU Texinfo
theora1.1.1Theora
tiff4.0.3LibTIFF
tinyxml2.6.2tinyxml
tre0.8.0TRE
units2.02GNU Units
uuid3.17MingWG Windows API
vala0.20.1Vala
vigra1.9.0vigra
vmimefc9bc26VMime
vorbis1.3.3Vorbis
vtk5.8.0vtk
w32api3.17MinGW Windows API
wget1.14wget
winpcap4_1_2WinPcap
wt3.2.3Wt
wxwidgets2.8.12wxWidgets
x26420111018-2245x264
xapian-core1.2.12Xapian-Core
xerces3.1.1Xerces-C++
xine-lib1.1.21xine-lib
xmlwrapp0.6.3xmlwrapp
xvidcore1.3.2xvidcore
xz5.0.4XZ
zenity3.8.0Zenity
zlib1.2.8zlib
zziplib0.13.59ZZIPlibopenblasOpenBLAS
opencore-amropencore-amr
opencsgopencsg
opencvOpenCV
openexrOpenEXR
openscenegraphOpenSceneGraph
opensslopenssl
mesaMesa
mesa-protoMesa
pangoPango
pangommPangomm
pcrePCRE
pcre2PCRE2
pdcursesPDcurses
plibcPlibc
pdflib_litePDFlib Lite
pfstoolspfstools
physfsphysfs
pixmanpixman
pkg-configpkg-config
plotmmPlotMM
plotutilsplotutils
pocoPOCO C++ Libraries
popplerpoppler
poptpopt
portaudioportaudio
postgresqlPostgreSQL
projproj
protobufprotobuf
pstoedit
pthread-stubspthread-stubs
pthreadsPthreads-w32
python-embeddedpython-embedded
python-mpmathpython mpmath
python-sympypython sympy
qdbmQDBM
qhullQHull
qjsonQJson
qrupdateqrupdate
qscintillaQScintilla
qtQt
qt5Qt5
qtbaseQt5 base
qttranslationsQt5 qttranslations
qttoolsQt5 tools
qtsvgQt5 svg
qtimageformatsQt5 imageformats
qwtQwt
qwtplot3dQwtPlot3D
rapidjsonRapidJSON
readlineReadline
release-octaveRelease Octave
renderprotorenderproto
rtmidirtmidi
s2tcs2tc
sdlSDL
sdl_imageSDL_image
sdl_mixerSDL_mixer
sdl_netSDL_net
sdl_pangoSDL_Pango
sdl_soundSDL_sound
sdl_ttfSDL_ttf
smsm
smpegsmpeg
soxSoX
speexSpeex
sqliteSQLite
stable-octaveStable Octave
suitesparseSuiteSparse
sundials-idaSundials IDA
t4k_commont4k_common
taglibTagLib
termcapGNU termcap
texinfoGNU Texinfo
theoraTheora
tiffLibTIFF
tinyxmltinyxml
transfigtransfig
treTRE
unitsGNU Units
util-linuxutil-linux
util-macrosutil-macrosi
uuidMingWG Windows API
valaVala
vcdimagervcdimager
vigravigra
vmimeVMime
vorbisVorbis
vtkvtk
w32apiMinGW Windows API
wavpackWavpack
wgetwget
win7appidWin7AppId
winpcapWinPcap
wtWt
wxwidgetswxWidgets
x11X11
x264x264
xapian-coreXapian-Core
xauxau
xcbxcb
xcb-utilxcb-util
xcb-util-cursorxcb-util-cursor
xcb-util-imagexcb-util-image
xcb-util-keysymsxcb-util-keysyms
xcb-util-renderutilxcb-util-renderutil
xcb-util-wmxcb-util-wm
xcursorxcursor
xcb-protoxcb-proto
xdamagexdamage
xdmcpxdmcp
xkbcommonxkbcommon
xercesXerces-C++
xextxext
xextprotoxextproto
xfixesxfixes
xf86vidmodeprotoxf86vidmodeproto
xftxft
xixi
xine-libxine-lib
xmlwrappxmlwrapp
xprotoxproto>
xrenderxrender
xtxt
xtransxtrans
xvidcorexvidcore
xxf86vmxxf86vm
xzXZ
yasmYasm
zenityZenity
zeromqZeroMQ
zlibzlib
zziplibZZIPlib
@@ -2636,7 +3192,7 @@
- +