From bfc9cfdecf54885bb0d38ad29fee36affd0d9df5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Toma=C5=BE=20Vajngerl?=
Date: Thu, 4 Jun 2026 22:35:50 +0900
Subject: [PATCH] Remove the lp_solve solver, which CoinMP makes redundant
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The Lpsolve solver and the CoinMP solver are both used for the same
thing: a linear model, with optional integer variables by branch
and bound. CoinMP (CLP plus CBC) is the more capable and better
maintained of the two, so the lp_solve one adds a second bundled
dependency and a parallel copy of the solver code for no capability
the other lacks.
Remove the LpsolveSolver component, the bundled lp_solve external
(and its colamd dependency, which only lp_solve used), and all the
build, configure, packaging and license references to them.
A document may still name com.sun.star.comp.Calc.LpsolveSolver as
its engine. SolverSettings now reads that name as the CoinMP
solver, which solves the same model, so such documents keep
working.
The Calc solver test that exercised the engine now uses CoinMP. Its
knapsack model has a single optimal total value of 6987, which fills
the weight capacity of 1000 exactly and which CoinMP finds. The
lp_solve run had returned a suboptimal 6981, so the test now expects
the true optimum.
The build setup changes only take effect after re-running autogen.
Signed-off-by: Tomaž Vajngerl
Change-Id: Ia14d8c491779873da6b0157aa524056275adf8f5
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/3810
Reviewed-by: Miklos Vajna
Tested-by: Jenkins CPCI
(cherry picked from commit e77738a7ca7d44fd9d1f852e26d46e3a6d60467b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208038
Tested-by: Jenkins
Reviewed-by: Xisco Fauli
---
.cspell/libreoffice.txt | 1 -
Makefile.fetch | 1 -
RepositoryExternal.mk | 44 --
bin/checkExternalLibraries.py | 1 -
config_host.mk.in | 5 -
configure.ac | 79 ---
distro-configs/LibreOfficeFlatpak.conf | 1 -
distro-configs/LibreOfficeOssFuzz.conf | 1 -
.../LibreOfficeVanillaMacAppStore.conf | 1 -
download.lst | 5 -
external/Module_external.mk | 1 -
.../0001-const-up-some-statics.patch.1 | 129 -----
external/lpsolve/ExternalPackage_lpsolve.mk | 24 -
external/lpsolve/ExternalProject_lpsolve.mk | 37 --
external/lpsolve/Makefile | 7 -
external/lpsolve/Module_lpsolve.mk | 18 -
external/lpsolve/README | 1 -
external/lpsolve/UnpackedTarball_lpsolve.mk | 44 --
external/lpsolve/ccc.static | 20 -
external/lpsolve/lp_solve_5.5-windows.patch | 60 ---
external/lpsolve/lp_solve_5.5.patch | 95 ----
external/lpsolve/lpsolve-ubsan.patch.0 | 22 -
external/lpsolve/system-colamd.diff | 39 --
readlicense_oo/license/license.xml | 6 -
sc/Module_sc.mk | 2 +-
sc/common_unoapi_tests.mk | 2 +-
sc/inc/SolverSettings.hxx | 3 +-
sc/qa/extras/scsolverobj.cxx | 15 +-
sc/source/core/data/SolverSettings.cxx | 5 +
sccomp/CppunitTest_sccomp_solver.mk | 1 -
sccomp/Library_solver.mk | 3 -
sccomp/qa/unit/solver.cxx | 18 +-
sccomp/source/solver/LpsolveSolver.cxx | 452 ------------------
sccomp/source/solver/solver.component | 5 -
sccomp/source/solver/solver.component.lpsolve | 7 -
scp2/InstallModule_calc.mk | 2 +-
scp2/source/calc/module_calc.scp | 3 +-
solenv/bin/make-raspbian-root-tarball | 1 -
solenv/flatpak-external-tarballs.json.in | 7 -
39 files changed, 19 insertions(+), 1149 deletions(-)
delete mode 100644 external/lpsolve/0001-const-up-some-statics.patch.1
delete mode 100644 external/lpsolve/ExternalPackage_lpsolve.mk
delete mode 100644 external/lpsolve/ExternalProject_lpsolve.mk
delete mode 100644 external/lpsolve/Makefile
delete mode 100644 external/lpsolve/Module_lpsolve.mk
delete mode 100644 external/lpsolve/README
delete mode 100644 external/lpsolve/UnpackedTarball_lpsolve.mk
delete mode 100644 external/lpsolve/ccc.static
delete mode 100644 external/lpsolve/lp_solve_5.5-windows.patch
delete mode 100644 external/lpsolve/lp_solve_5.5.patch
delete mode 100644 external/lpsolve/lpsolve-ubsan.patch.0
delete mode 100644 external/lpsolve/system-colamd.diff
delete mode 100644 sccomp/source/solver/LpsolveSolver.cxx
delete mode 100644 sccomp/source/solver/solver.component.lpsolve
diff --git a/.cspell/libreoffice.txt b/.cspell/libreoffice.txt
index fa7674986492..37a0622f9c56 100644
--- a/.cspell/libreoffice.txt
+++ b/.cspell/libreoffice.txt
@@ -48,7 +48,6 @@ libwebp
libwps
libzxing
loplugin
-lpsolve
MAKEFLAGS
mergelibs
msgfmt
diff --git a/Makefile.fetch b/Makefile.fetch
index d4c1e1d8beb5..c80ddfd004d6 100644
--- a/Makefile.fetch
+++ b/Makefile.fetch
@@ -170,7 +170,6 @@ $(WORKDIR)/download: $(BUILDDIR)/config_$(gb_Side).mk $(SRCDIR)/download.lst $(S
$(call fetch_Optional,LIBXML2,LIBXML_TARBALL) \
$(call fetch_Optional,XMLSEC,XMLSEC_TARBALL) \
$(call fetch_Optional,LIBXSLT,LIBXSLT_TARBALL) \
- $(call fetch_Optional,LPSOLVE,LPSOLVE_TARBALL) \
$(call fetch_Optional,LXML,LXML_TARBALL) \
$(call fetch_Optional,LZMA,LZMA_TARBALL) \
$(call fetch_Optional,MARIADB_CONNECTOR_C,MARIADB_CONNECTOR_C_TARBALL) \
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index e78741218e8f..ef9d1f014afe 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -2534,50 +2534,6 @@ endef
endif # ANDROID
endif # SYSTEM_LCMS2
-ifneq ($(ENABLE_LPSOLVE),)
-
-ifneq ($(SYSTEM_LPSOLVE),)
-
-define gb_LinkTarget__use_lpsolve
-$(call gb_LinkTarget_add_libs,$(1),-llpsolve55)
-$(call gb_LinkTarget_add_defs,$(1),\
- -DSYSTEM_LPSOLVE \
-)
-
-endef
-
-else # !SYSTEM_LPSOLVE
-
-define gb_LinkTarget__use_lpsolve
-$(call gb_LinkTarget_use_package,$(1),lpsolve)
-ifeq ($(COM),MSC)
-$(call gb_LinkTarget_add_libs,$(1),\
- $(gb_UnpackedTarball_workdir)/lpsolve/lpsolve55/lpsolve55.lib \
-)
-else
-$(call gb_LinkTarget_add_libs,$(1),\
- -L$(gb_UnpackedTarball_workdir)/lpsolve/lpsolve55 -llpsolve55 \
-)
-endif
-$(call gb_LinkTarget_set_include,$(1),\
- -I$(gb_UnpackedTarball_workdir)/lpsolve \
- $$(INCLUDE) \
-)
-
-endef
-
-$(eval $(call gb_Helper_register_packages_for_install,ooo,\
- lpsolve \
-))
-
-endif # SYSTEM_LPSOLVE
-
-else
-
-gb_LinkTarget__use_lpsolve :=
-
-endif # ENABLE_LPSOLVE
-
ifneq ($(ENABLE_COINMP),)
ifneq ($(SYSTEM_COINMP),TRUE)
diff --git a/bin/checkExternalLibraries.py b/bin/checkExternalLibraries.py
index 9bb1da00c06b..62815303765c 100755
--- a/bin/checkExternalLibraries.py
+++ b/bin/checkExternalLibraries.py
@@ -53,7 +53,6 @@ libraryNames = {
"liborcus": "orcus",
"ltm": "libtommath",
"clucene-core": "clucene-core",
- "lp_solve": "lp_solve",
"hsqldb": "hsqldb",
"y-crdt": "y-crdt",
"sqlite": "sqlite",
diff --git a/config_host.mk.in b/config_host.mk.in
index 6b1c3be8abea..9e2ac1746073 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -94,8 +94,6 @@ export CPDB_CFLAGS=@CPDB_CFLAGS@
export CPDB_LIBS=@CPDB_LIBS@
export CPPU_ENV=@CPPU_ENV@
export CPPU_ENV_FOR_BUILD=@CPPU_ENV_FOR_BUILD@
-export COLAMD_CFLAGS=$(gb_SPACE)@COLAMD_CFLAGS@
-export COLAMD_LIBS=$(gb_SPACE)@COLAMD_LIBS@
export CPPUNIT_CFLAGS=$(gb_SPACE)@CPPUNIT_CFLAGS@
export CPPUNIT_LIBS=$(gb_SPACE)@CPPUNIT_LIBS@
export CPUNAME=@CPUNAME@
@@ -210,7 +208,6 @@ export ENABLE_HTMLHELP=@ENABLE_HTMLHELP@
export ENABLE_JAVA=@ENABLE_JAVA@
export ENABLE_JUMBO_SHEETS=@ENABLE_JUMBO_SHEETS@
export ENABLE_LDAP=@ENABLE_LDAP@
-export ENABLE_LPSOLVE=@ENABLE_LPSOLVE@
export ENABLE_LTO=@ENABLE_LTO@
export ENABLE_LWP=@ENABLE_LWP@
export ENABLE_MACOSX_SANDBOX=@ENABLE_MACOSX_SANDBOX@
@@ -669,7 +666,6 @@ SYSTEM_BOX2D=@SYSTEM_BOX2D@
SYSTEM_BZIP2=@SYSTEM_BZIP2@
SYSTEM_CAIRO=@SYSTEM_CAIRO@
SYSTEM_CLUCENE=@SYSTEM_CLUCENE@
-SYSTEM_COLAMD=@SYSTEM_COLAMD@
SYSTEM_CPPUNIT=@SYSTEM_CPPUNIT@
SYSTEM_CURL=@SYSTEM_CURL@
SYSTEM_DICTS=@SYSTEM_DICTS@
@@ -716,7 +712,6 @@ SYSTEM_LIBXML=@SYSTEM_LIBXML@
SYSTEM_LIBXML_FOR_BUILD=@SYSTEM_LIBXML_FOR_BUILD@
SYSTEM_LIBXSLT=@SYSTEM_LIBXSLT@
SYSTEM_LIBXSLT_FOR_BUILD=@SYSTEM_LIBXSLT_FOR_BUILD@
-SYSTEM_LPSOLVE=@SYSTEM_LPSOLVE@
SYSTEM_LZMA=@SYSTEM_LZMA@
SYSTEM_MD4C=@SYSTEM_MD4C@
SYSTEM_MDDS=@SYSTEM_MDDS@
diff --git a/configure.ac b/configure.ac
index 5011a5050653..b152bc43c958 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1156,7 +1156,6 @@ ios*) # iOS
enable_lotuswordpro=no
disable_database_connectivity_dependencies
enable_coinmp=no
- enable_lpsolve=no
enable_extension_integration=no
enable_xmlhelp=no
with_ppds=no
@@ -1249,7 +1248,6 @@ linux-android*)
enable_mpl_subset=yes
enable_cairo_canvas=no
enable_coinmp=yes
- enable_lpsolve=no
enable_odk=no
enable_python=no
enable_xmlhelp=no
@@ -1674,10 +1672,6 @@ libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
[Enable the Wiki Publisher extension.])
)
-libo_FUZZ_ARG_ENABLE(lpsolve,
- AS_HELP_STRING([--disable-lpsolve],
- [Disable compilation of the lp solve solver ])
-)
libo_FUZZ_ARG_ENABLE(coinmp,
AS_HELP_STRING([--disable-coinmp],
[Disable compilation of the CoinMP solver ])
@@ -2860,16 +2854,6 @@ AC_ARG_WITH(system-altlinuxhyph,
[Use ALTLinuxhyph already on system.]),,
[with_system_altlinuxhyph="$with_system_libs"])
-AC_ARG_WITH(system-lpsolve,
- AS_HELP_STRING([--with-system-lpsolve],
- [Use lpsolve already on system.]),,
- [with_system_lpsolve="$with_system_libs"])
-
-AC_ARG_WITH(system-colamd,
- AS_HELP_STRING([--with-system-colamd],
- [Use COLAMD already on system.]),,
- [with_system_colamd="$with_system_libs"])
-
AC_ARG_WITH(system-coinmp,
AS_HELP_STRING([--with-system-coinmp],
[Use CoinMP already on system.]),,
@@ -3470,7 +3454,6 @@ if test "$enable_wasm_strip" = "yes"; then
enable_gpgmepp=no
enable_ldap=no
enable_lotuswordpro=no
- enable_lpsolve=no
enable_nss=no
enable_odk=no
enable_online_update=no
@@ -12350,64 +12333,6 @@ AC_SUBST(SYSTEM_COINMP)
AC_SUBST(COINMP_CFLAGS)
AC_SUBST(COINMP_LIBS)
-ENABLE_LPSOLVE=
-AC_MSG_CHECKING([whether to build with lpsolve])
-if test "$enable_lpsolve" != "no"; then
- ENABLE_LPSOLVE=TRUE
- AC_MSG_RESULT([yes])
-else
- AC_MSG_RESULT([no])
-fi
-AC_SUBST(ENABLE_LPSOLVE)
-
-if test "$ENABLE_LPSOLVE" = TRUE; then
- AC_MSG_CHECKING([which lpsolve to use])
- if test "$with_system_lpsolve" = "yes"; then
- AC_MSG_RESULT([external])
- SYSTEM_LPSOLVE=TRUE
- AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
- [ AC_MSG_ERROR(lpsolve headers not found.)], [])
- save_LIBS=$LIBS
- # some systems need this. Like Ubuntu...
- AC_CHECK_LIB(m, floor)
- AC_CHECK_LIB(dl, dlopen)
- AC_CHECK_LIB([lpsolve55], [make_lp], [:],
- [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
- LIBS=$save_LIBS
- else
- AC_MSG_RESULT([internal])
- SYSTEM_LPSOLVE=
- BUILD_TYPE="$BUILD_TYPE LPSOLVE"
- AC_MSG_CHECKING([which colamd to use])
- if test "$with_system_colamd" = "yes"; then
- AC_MSG_RESULT([external])
- SYSTEM_COLAMD=TRUE
- # This assumes suitesparse, which has
- # /usr/lib/x86_64-linux-gnu/pkgconfig/COLAMD.pc
- PKG_CHECK_MODULES([COLAMD], [COLAMD],
- [],
- [
- # older versions don't. Look in /usr/include/suitesparse
- COLAMD_CFLAGS=-I/usr/include/suitesparse
- save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $COLAMD_CFLAGS"
- AC_CHECK_HEADER(colamd.h, [],
- [ AC_MSG_ERROR(colamd.h header not found.)], [])
- CFLAGS=$save_CFLAGS
- AC_CHECK_LIB(colamd, colamd)
- COLAMD_LIBS=-lcolamd
- ])
- else
- AC_MSG_RESULT([internal])
- SYSTEM_COLAMD=
- fi
- fi
-fi
-AC_SUBST(SYSTEM_COLAMD)
-AC_SUBST(COLAMD_CFLAGS)
-AC_SUBST(COLAMD_LIBS)
-AC_SUBST(SYSTEM_LPSOLVE)
-
dnl ===================================================================
dnl Checking for libexttextcat
dnl ===================================================================
@@ -16077,10 +16002,6 @@ if test "$enable_mpl_subset" = "yes"; then
ENABLE_OPENGL_TRANSITIONS=
- if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
- mpl_error_string="$mpl_error_string$newline Need to --disable-lpsolve - calc linear programming solver."
- fi
-
if test "x$mpl_error_string" != "x"; then
AC_MSG_ERROR([$mpl_error_string])
fi
diff --git a/distro-configs/LibreOfficeFlatpak.conf b/distro-configs/LibreOfficeFlatpak.conf
index 2b01a6d299ce..70033f615a93 100644
--- a/distro-configs/LibreOfficeFlatpak.conf
+++ b/distro-configs/LibreOfficeFlatpak.conf
@@ -57,7 +57,6 @@
--without-system-libwpg
--without-system-libwps
--without-system-libzmf
---without-system-lpsolve
--without-system-mariadb
--without-system-md4c
--without-system-mdds
diff --git a/distro-configs/LibreOfficeOssFuzz.conf b/distro-configs/LibreOfficeOssFuzz.conf
index ecf1b1ba9019..4d7dfe3e2f7c 100644
--- a/distro-configs/LibreOfficeOssFuzz.conf
+++ b/distro-configs/LibreOfficeOssFuzz.conf
@@ -16,7 +16,6 @@
--disable-ldap
--disable-libcmis
--disable-librelogo
---disable-lpsolve
--disable-mariadb-sdbc
--disable-odk
--disable-poppler
diff --git a/distro-configs/LibreOfficeVanillaMacAppStore.conf b/distro-configs/LibreOfficeVanillaMacAppStore.conf
index 6c96b7896005..f70dc6241571 100644
--- a/distro-configs/LibreOfficeVanillaMacAppStore.conf
+++ b/distro-configs/LibreOfficeVanillaMacAppStore.conf
@@ -1,6 +1,5 @@
--disable-firebird-sdbc
--disable-lotuswordpro
---disable-lpsolve
--disable-odk
--disable-online-update
--disable-pdfimport
diff --git a/download.lst b/download.lst
index 1da6e2f207a8..6bec529fb9f1 100644
--- a/download.lst
+++ b/download.lst
@@ -432,11 +432,6 @@ LIBXSLT_TARBALL := libxslt-1.1.$(LIBXSLT_VERSION_MICRO).tar.xz
# three static lines
# so that git cherry-pick
# will not run into conflicts
-LPSOLVE_SHA256SUM := 171816288f14215c69e730f7a4f1c325739873e21f946ff83884b350574e6695
-LPSOLVE_TARBALL := 26b3e95ddf3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz
-# three static lines
-# so that git cherry-pick
-# will not run into conflicts
LXML_SHA256SUM := ba96ae44888e0185281e937633a743ea90d5a196c6000f82565ebb0580012d40
LXML_TARBALL := lxml-6.1.1.tar.gz
# three static lines
diff --git a/external/Module_external.mk b/external/Module_external.mk
index 0f4efd68b03d..ced11788f3ae 100644
--- a/external/Module_external.mk
+++ b/external/Module_external.mk
@@ -66,7 +66,6 @@ $(eval $(call gb_Module_add_moduledirs,external,\
$(call gb_Helper_optional,LIBWEBP,libwebp) \
$(call gb_Helper_optional,LIBXML2,libxml2) \
$(call gb_Helper_optional,LIBXSLT,libxslt) \
- $(call gb_Helper_optional,LPSOLVE,lpsolve) \
$(call gb_Helper_optional,LIBTOMMATH,libtommath) \
$(call gb_Helper_optional,LXML,lxml) \
$(call gb_Helper_optional,LZMA,lzma) \
diff --git a/external/lpsolve/0001-const-up-some-statics.patch.1 b/external/lpsolve/0001-const-up-some-statics.patch.1
deleted file mode 100644
index 7d1a8173ba66..000000000000
--- a/external/lpsolve/0001-const-up-some-statics.patch.1
+++ /dev/null
@@ -1,129 +0,0 @@
-From 75ba3f247d6f0baa6dc83b7eca09ec67dabe0924 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Caol=C3=A1n=20McNamara?=
-Date: Tue, 22 Jul 2025 13:12:12 +0100
-Subject: [PATCH] const up some statics
-
----
- lp_params.c | 26 +++++++++++++-------------
- 1 file changed, 13 insertions(+), 13 deletions(-)
-
-diff --git a/lp_params.c b/lp_params.c
-index e8fcd2e..c5de106 100644
---- a/lp_params.c
-+++ b/lp_params.c
-@@ -53,13 +53,13 @@
- REAL_set_function *REAL_set_function; /* set via setREALfunction */
- } set_function;
- int type; /* set via set*function */
-- struct _values *values; /* set via setvalues to a structure of _values */
-+ const struct _values *values; /* set via setvalues to a structure of _values */
- int elements; /* or via setNULLvalues if the value is shown as is */
- unsigned int basemask;
- int mask; /* WRITE_ACTIVE or WRITE_COMMENTED */
- };
-
--static struct _values anti_degen[] =
-+static const struct _values anti_degen[] =
- {
- { setvalue(ANTIDEGEN_NONE) },
- { setvalue(ANTIDEGEN_FIXEDVARS) },
-@@ -74,7 +74,7 @@
- { setvalue(ANTIDEGEN_BOUNDFLIP) },
- };
-
--static struct _values basiscrash[] =
-+static const struct _values basiscrash[] =
- {
- { setvalue(CRASH_NONE) },
- /* { setvalue(CRASH_NONBASICBOUNDS) }, */ /* not yet implemented */
-@@ -82,14 +82,14 @@
- { setvalue(CRASH_LEASTDEGENERATE) },
- };
-
--static struct _values bb_floorfirst[] =
-+static const struct _values bb_floorfirst[] =
- {
- { setvalue(BRANCH_CEILING) },
- { setvalue(BRANCH_FLOOR) },
- { setvalue(BRANCH_AUTOMATIC) },
- };
-
--static struct _values bb_rule[] =
-+static const struct _values bb_rule[] =
- {
- { setvalue(NODE_FIRSTSELECT) },
- { setvalue(NODE_GAPSELECT) },
-@@ -114,7 +114,7 @@
- { setvalue(NODE_STRONGINIT) },
- };
-
--static struct _values improve[] =
-+static const struct _values improve[] =
- {
- { setvalue(IMPROVE_NONE) },
- { setvalue(IMPROVE_SOLUTION) },
-@@ -143,7 +143,7 @@
- set_mip_gap(lp, FALSE, mip_gap);
- }
-
--static struct _values pivoting[] =
-+static const struct _values pivoting[] =
- {
- { setvalue(PRICER_FIRSTINDEX) },
- { setvalue(PRICER_DANTZIG) },
-@@ -161,7 +161,7 @@
- { setvalue(PRICE_TRUENORMINIT) },
- };
-
--static struct _values presolving[] =
-+static const struct _values presolving[] =
- {
- { setvalue(PRESOLVE_NONE) },
- { setvalue(PRESOLVE_ROWS) },
-@@ -217,14 +217,14 @@
- set_presolve(lp, get_presolve(lp), maxloops);
- }
-
--static struct _values print_sol[] =
-+static const struct _values print_sol[] =
- {
- { FALSE, "0" },
- { TRUE, "1" },
- { setvalue(AUTOMATIC) },
- };
-
--static struct _values scaling[] =
-+static const struct _values scaling[] =
- {
- { setvalue(SCALE_NONE) },
- { setvalue(SCALE_EXTREME) },
-@@ -243,7 +243,7 @@
- { setvalue(SCALE_COLSONLY) },
- };
-
--static struct _values simplextype[] =
-+static const struct _values simplextype[] =
- {
- { setvalue(SIMPLEX_PRIMAL_PRIMAL) },
- { setvalue(SIMPLEX_DUAL_PRIMAL) },
-@@ -251,7 +251,7 @@
- { setvalue(SIMPLEX_DUAL_DUAL) },
- };
-
--static struct _values verbose[] =
-+static const struct _values verbose[] =
- {
- { setvalue(NEUTRAL) },
- { setvalue(CRITICAL) },
-@@ -262,7 +262,7 @@
- { setvalue(FULL) },
- };
-
--static struct _functions functions[] =
-+static const struct _functions functions[] =
- {
- /* solve options */
- { "ANTI_DEGEN", setintfunction(get_anti_degen, set_anti_degen), setvalues(anti_degen, ~0), WRITE_ACTIVE },
---
-2.49.0
-
diff --git a/external/lpsolve/ExternalPackage_lpsolve.mk b/external/lpsolve/ExternalPackage_lpsolve.mk
deleted file mode 100644
index 23c2c5abfa03..000000000000
--- a/external/lpsolve/ExternalPackage_lpsolve.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-
-$(eval $(call gb_ExternalPackage_ExternalPackage,lpsolve,lpsolve))
-
-$(eval $(call gb_ExternalPackage_use_external_project,lpsolve,lpsolve))
-
-ifneq ($(DISABLE_DYNLOADING),TRUE)
-ifeq ($(OS),WNT)
-$(eval $(call gb_ExternalPackage_add_file,lpsolve,$(LIBO_LIB_FOLDER)/lpsolve55.dll,lpsolve55/lpsolve55.dll))
-else ifeq ($(OS),MACOSX)
-$(eval $(call gb_ExternalPackage_add_file,lpsolve,$(LIBO_LIB_FOLDER)/liblpsolve55.dylib,lpsolve55/liblpsolve55.dylib))
-else # $(OS) != WNT/MACOSX
-$(eval $(call gb_ExternalPackage_add_file,lpsolve,$(LIBO_LIB_FOLDER)/liblpsolve55.so,lpsolve55/liblpsolve55.so))
-endif # $(OS)
-endif # $(DISABLE_DYNLOADING)
-
-# vim: set noet sw=4 ts=4:
diff --git a/external/lpsolve/ExternalProject_lpsolve.mk b/external/lpsolve/ExternalProject_lpsolve.mk
deleted file mode 100644
index 2bd5cdacbe2a..000000000000
--- a/external/lpsolve/ExternalProject_lpsolve.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-
-$(eval $(call gb_ExternalProject_ExternalProject,lpsolve))
-
-$(eval $(call gb_ExternalProject_register_targets,lpsolve,\
- build \
-))
-
-ifeq ($(OS),WNT)
-$(call gb_ExternalProject_get_state_target,lpsolve,build):
- $(call gb_Trace_StartRange,lpsolve,EXTERNAL)
- $(call gb_ExternalProject_run,build,\
- LIB="$(ILIB)" RUNTIME_FLAG="$(if $(MSVC_USE_DEBUG_RUNTIME),/MDd,/MD)" \
- cmd /c cvc6.bat \
- ,lpsolve55)
- $(call gb_Trace_EndRange,lpsolve,EXTERNAL)
-else # $(OS)!=WNT
-$(call gb_ExternalProject_get_state_target,lpsolve,build):
- $(call gb_Trace_StartRange,lpsolve,EXTERNAL)
- $(call gb_ExternalProject_run,build,\
- CC="$(CC) $(call gb_ExternalProject_get_build_flags,lpsolve)" \
- SYSTEM_COLAMD=$(SYSTEM_COLAMD) \
- $(if $(filter MACOSX,$(OS)),EXTRA_LINKFLAGS='-install_name @__________________________________________________OOO/liblpsolve55.dylib') \
- sh -e $(if $(filter MACOSX,$(OS)),ccc.osx, \
- $(if $(filter TRUE,$(DISABLE_DYNLOADING)),ccc.static, \
- ccc)) \
- ,lpsolve55)
- $(call gb_Trace_EndRange,lpsolve,EXTERNAL)
-endif # $(OS)
-# vim: set noet sw=4 ts=4:
diff --git a/external/lpsolve/Makefile b/external/lpsolve/Makefile
deleted file mode 100644
index e4968cf85fb6..000000000000
--- a/external/lpsolve/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-
-module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
-
-include $(module_directory)/../../solenv/gbuild/partial_build.mk
-
-# vim: set noet sw=4 ts=4:
diff --git a/external/lpsolve/Module_lpsolve.mk b/external/lpsolve/Module_lpsolve.mk
deleted file mode 100644
index e0094f609c7d..000000000000
--- a/external/lpsolve/Module_lpsolve.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-
-$(eval $(call gb_Module_Module,lpsolve))
-
-$(eval $(call gb_Module_add_targets,lpsolve,\
- UnpackedTarball_lpsolve \
- ExternalPackage_lpsolve \
- ExternalProject_lpsolve \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/external/lpsolve/README b/external/lpsolve/README
deleted file mode 100644
index 95059b25cd4e..000000000000
--- a/external/lpsolve/README
+++ /dev/null
@@ -1 +0,0 @@
-A mixed Integer Linear Programming (MILP) solver from [https://github.com/lp-solve/lp_solve].
diff --git a/external/lpsolve/UnpackedTarball_lpsolve.mk b/external/lpsolve/UnpackedTarball_lpsolve.mk
deleted file mode 100644
index 167c14862587..000000000000
--- a/external/lpsolve/UnpackedTarball_lpsolve.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-
-$(eval $(call gb_UnpackedTarball_UnpackedTarball,lpsolve))
-
-$(eval $(call gb_UnpackedTarball_set_tarball,lpsolve,$(LPSOLVE_TARBALL)))
-
-$(eval $(call gb_UnpackedTarball_set_patchlevel,lpsolve,3))
-
-# external/lpsolve/0001-const-up-some-statics.patch.1
-# upstreaming attempt as:
-# https://github.com/lp-solve/lp_solve/pull/1
-
-$(eval $(call gb_UnpackedTarball_add_patches,lpsolve,\
- external/lpsolve/0001-const-up-some-statics.patch.1 \
-))
-
-ifeq ($(OS_FOR_BUILD),WNT)
-
-$(eval $(call gb_UnpackedTarball_set_patchflags,lpsolve,--binary))
-$(eval $(call gb_UnpackedTarball_add_patches,lpsolve,\
- external/lpsolve/lp_solve_5.5-windows.patch \
-))
-
-else
-
-$(eval $(call gb_UnpackedTarball_add_patches,lpsolve,\
- external/lpsolve/lp_solve_5.5.patch \
- external/lpsolve/lpsolve-ubsan.patch.0 \
- external/lpsolve/system-colamd.diff \
-))
-
-$(eval $(call gb_UnpackedTarball_add_file,lpsolve,lpsolve55/ccc.static,external/lpsolve/ccc.static))
-
-endif
-# vim: set noet sw=4 ts=4:
-
-
diff --git a/external/lpsolve/ccc.static b/external/lpsolve/ccc.static
deleted file mode 100644
index c8f070921202..000000000000
--- a/external/lpsolve/ccc.static
+++ /dev/null
@@ -1,20 +0,0 @@
-if [ "$SYSTEM_COLAMD" != "TRUE" ]; then
- colamd_c=../colamd/colamd.c
-fi
-src='../lp_MDO.c ../shared/commonlib.c ../shared/mmio.c ../shared/myblas.c ../ini.c ../fortify.c $colamd_c ../lp_rlp.c ../lp_crash.c ../bfp/bfp_LUSOL/lp_LUSOL.c ../bfp/bfp_LUSOL/LUSOL/lusol.c ../lp_Hash.c ../lp_lib.c ../lp_wlp.c ../lp_matrix.c ../lp_mipbb.c ../lp_MPS.c ../lp_params.c ../lp_presolve.c ../lp_price.c ../lp_pricePSE.c ../lp_report.c ../lp_scale.c ../lp_simplex.c ../lp_SOS.c ../lp_utils.c ../yacc_read.c'
-obj=`echo $src|sed -e 's/\.c/.o/g' -e 's!\([^ ]*/\)*!!g'`
-
-opts='-O3'
-
-def=
-
-# FIMXE: Link statically with colamd?
-if test "$SYSTEM_COLAMD" = "TRUE"; then
- colamd_i=$COLAMD_CFLAGS
-else
- colamd_i=-I../colamd
-fi
-$CC -I.. -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL $colamd_i -I../shared $opts $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine -c $src
-
-$AR -r liblpsolve55.a $obj
-rm $obj
diff --git a/external/lpsolve/lp_solve_5.5-windows.patch b/external/lpsolve/lp_solve_5.5-windows.patch
deleted file mode 100644
index 16d5261c7c7f..000000000000
--- a/external/lpsolve/lp_solve_5.5-windows.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-*** misc/lp_solve_5.5/lpsolve55/cgcc.bat Sun Jun 12 04:27:28 2005
---- misc/build/lp_solve_5.5/lpsolve55/cgcc.bat Sun Dec 14 07:55:19 2008
-***************
-*** 7,14 ****
-
- set c=gcc
-
-! rem rc lpsolve.rc
-! %c% -DINLINE=static -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -s -O3 -shared -mno-cygwin -enable-stdcall-fixup -D_USRDLL -DWIN32 -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine %src% ..\lp_solve.def -o lpsolve55.dll
-
- %c% -DINLINE=static -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -s -O3 -shared -D_USRDLL -DWIN32 -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine %src% -o liblpsolve55.so
-
---- 7,14 ----
-
- set c=gcc
-
-! windres lpsolve.rc lpsolve_res.obj
-! %c% -DINLINE=static -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -s -O3 -shared -mno-cygwin -enable-stdcall-fixup -mthreads %lpsolve_LDFLAGS% -D_USRDLL -DWIN32 -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine %src% lpsolve_res.obj ..\lp_solve.def %lpsolve_LIBS% -o lpsolve55.dll
-
- %c% -DINLINE=static -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -s -O3 -shared -D_USRDLL -DWIN32 -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine %src% -o liblpsolve55.so
-
-*** misc/lp_solve_5.5/lpsolve55/lpsolve.rc Sun Jun 4 00:15:24 2006
---- misc/build/lp_solve_5.5/lpsolve55/lpsolve.rc Fri Nov 23 16:34:22 2007
-***************
-*** 7,13 ****
- //
- // Generated from the TEXTINCLUDE 2 resource.
- //
-! #include "afxres.h"
-
- /////////////////////////////////////////////////////////////////////////////
- #undef APSTUDIO_READONLY_SYMBOLS
---- 7,13 ----
- //
- // Generated from the TEXTINCLUDE 2 resource.
- //
-! #include "winresrc.h"
-
- /////////////////////////////////////////////////////////////////////////////
- #undef APSTUDIO_READONLY_SYMBOLS
---- misc/lp_solve_5.5/lpsolve55/cvc6.bat
-+++ misc/build/lp_solve_5.5/lpsolve55/cvc6.bat
-@@ -14,15 +14,4 @@
- set c=cl
-
--rc lpsolve.rc
-+rc %SOLARINC% lpsolve.rc
--%c% -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd /LD /MD /O1 /Zp8 /Gz -D_WINDLL -D_USRDLL -DWIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine %src% lpsolve.res ..\lp_solve.def -o lpsolve55.dll
-+%c% -Zi -FS -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd %SOLARINC% /LD %RUNTIME_FLAG% /O1 /Zp8 /Gz -D_WINDLL -D_USRDLL -DWIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine %src% lpsolve.res ..\lp_solve.def -Felpsolve55.dll
--rem /link /LINK50COMPAT
--
--if exist a.obj del a.obj
--%c% -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd /MT /O1 /Zp8 /Gd /c -DWIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine %src%
--lib *.obj /OUT:liblpsolve55.lib
--
--if exist a.obj del a.obj
--%c% -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd /MTd /O1 /Zp8 /Gd /c -DWIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine %src%
--lib *.obj /OUT:liblpsolve55d.lib
--
--if exist *.obj del *.obj
diff --git a/external/lpsolve/lp_solve_5.5.patch b/external/lpsolve/lp_solve_5.5.patch
deleted file mode 100644
index 2b2588a9f15a..000000000000
--- a/external/lpsolve/lp_solve_5.5.patch
+++ /dev/null
@@ -1,95 +0,0 @@
---- misc/build/lp_solve_5.5/lpsolve55/ccc.orig Sat Jun 11 21:27:18 2005
-+++ misc/build/lp_solve_5.5/lpsolve55/ccc Sun May 22 11:20:19 2011
-@@ -1,25 +1,42 @@
- src='../lp_MDO.c ../shared/commonlib.c ../shared/mmio.c ../shared/myblas.c ../ini.c ../fortify.c ../colamd/colamd.c ../lp_rlp.c ../lp_crash.c ../bfp/bfp_LUSOL/lp_LUSOL.c ../bfp/bfp_LUSOL/LUSOL/lusol.c ../lp_Hash.c ../lp_lib.c ../lp_wlp.c ../lp_matrix.c ../lp_mipbb.c ../lp_MPS.c ../lp_params.c ../lp_presolve.c ../lp_price.c ../lp_pricePSE.c ../lp_report.c ../lp_scale.c ../lp_simplex.c ../lp_SOS.c ../lp_utils.c ../yacc_read.c'
--c=cc
-+ar=$AR
-+c=$CC
-+ranlib=$RANLIB
-
- def=
- so=
--if [ "$PLATFORM" = "SCO_UNIX" ]
--then def='-dy -K PIC -DNOLONGLONG'
-- dl=-lc
--else dl=-ldl
-- so=y
-+soprefix=
-+libs=
-+pic=
-+ldflags=
-+inline=
-+if [ "$OS" = "WNT" -a "$COM" = "GCC" ]; then
-+ so=dll
-+ a=dll.a
-+ inline=-DINLINE=static
-+else
-+ so=so
-+ a=a
-+ soprefix=lib
-+ libs="-lm"
-+ pic=-fpic
-+ ldflags="-Wl,-Bsymbolic -Wl,-soname,liblpsolve55.$so"
- fi
-
-+if [ "$OS" = "LINUX" ]; then
-+ libs="$libs -ldl"
-+fi
-+
- opts='-O3'
-
--$c -s -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd $opts $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
-+$c -s $inline -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd $opts $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
--ar rv liblpsolve55.a `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'`
--ranlib liblpsolve55.a
-+$ar rv liblpsolve55.$a `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'`
-+$ranlib liblpsolve55.$a
-
- if [ "$so" != "" ]
- then
-- $c -fpic -s -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I. $opts -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
-- $c -shared -Wl,-Bsymbolic -Wl,-soname,liblpsolve55.so -o liblpsolve55.so `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` -lc -lm -ldl
-+ $c $pic -s $inline -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I. $opts -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
-+ $c -shared $ldflags -o ${soprefix}lpsolve55.$so `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` $libs
- fi
-
- rm *.o 2>/dev/null
---- misc/build/lp_solve_5.5/lpsolve55/ccc.osx.orig Thu Jun 23 22:53:08 2005
-+++ misc/build/lp_solve_5.5/lpsolve55/ccc.osx
-@@ -1,23 +1,30 @@
- src='../lp_MDO.c ../shared/commonlib.c ../shared/mmio.c ../shared/myblas.c ../ini.c ../fortify.c ../colamd/colamd.c ../lp_rlp.c ../lp_crash.c ../bfp/bfp_LUSOL/lp_LUSOL.c ../bfp/bfp_LUSOL/LUSOL/lusol.c ../lp_Hash.c ../lp_lib.c ../lp_wlp.c ../lp_matrix.c ../lp_mipbb.c ../lp_MPS.c ../lp_params.c ../lp_presolve.c ../lp_price.c ../lp_pricePSE.c ../lp_report.c ../lp_scale.c ../lp_simplex.c ../lp_SOS.c ../lp_utils.c ../yacc_read.c'
--c=cc
-+c=$CC
-
-+if test -n "$verbose"; then
-+ set -x
-+fi
-+
- def=
- so=
-+# EXTRA_LINKFLAGS is set in the ExternalProject_lpsolve.mk
-+extra_linkflags=$EXTRA_LINKFLAGS
-+
- if [ "$PLATFORM" = "SCO_UNIX" ]
- then def='-DLoadInverseLib=0 -DLoadLanguageLib=0 -D__HYPER=long'
- else dl=-ldl
- so=y
- fi
-
--opts='-idirafter /usr/include/sys -O3 -DINTEGERTIME -Wno-long-double'
-+opts='-idirafter /usr/include/sys -O3 -DINTEGERTIME'
-
--$c -s -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd $opts $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
-+$c -s -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd $opts $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
--libtool -static -o liblpsolve55.a `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'`
-+$LIBTOOL -static -o liblpsolve55.a `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'`
-
- if [ "$so" != "" ]
- then
-- $c -fPIC -fno-common -s -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I. $opts -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
-- $c -dynamiclib liblpsolve55.a -compatibility_version 5.5.0 -current_version 5.5.0 -o liblpsolve55.dylib `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` -lc
-+ $c -fPIC -fno-common -s -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I. $opts -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
-+ $c $extra_linkflags -dynamiclib liblpsolve55.a -compatibility_version 5.5.0 -current_version 5.5.0 -o liblpsolve55.dylib `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` -lc
- fi
-
- rm *.o 2>/dev/null
diff --git a/external/lpsolve/lpsolve-ubsan.patch.0 b/external/lpsolve/lpsolve-ubsan.patch.0
deleted file mode 100644
index 7a5e308c6efd..000000000000
--- a/external/lpsolve/lpsolve-ubsan.patch.0
+++ /dev/null
@@ -1,22 +0,0 @@
---- lp_presolve.c
-+++ lp_presolve.c
-@@ -168,7 +168,7 @@
- if(isprimal) {
- if(psdata->primalundo != NULL)
- mat = psdata->primalundo->tracker;
-- solution = lp->full_solution + lp->presolve_undo->orig_rows;
-+ solution = lp->full_solution == NULL ? NULL : lp->full_solution + lp->presolve_undo->orig_rows;
- slacks = lp->full_solution;
- }
- else {
---- lp_pricePSE.c
-+++ lp_pricePSE.c
-@@ -145,7 +147,7 @@
-
- /* Store the active/current pricing type */
- if(isdual == AUTOMATIC)
-- isdual = (MYBOOL) lp->edgeVector[0];
-+ isdual = lp->edgeVector[0] != 0.0;
- else
- lp->edgeVector[0] = isdual;
-
diff --git a/external/lpsolve/system-colamd.diff b/external/lpsolve/system-colamd.diff
deleted file mode 100644
index 80eba695f379..000000000000
--- a/external/lpsolve/system-colamd.diff
+++ /dev/null
@@ -1,39 +0,0 @@
-diff -urN lp_solve_5.5-old/lpsolve55/ccc lp_solve_5.5/lpsolve55/ccc
---- misc/build/lp_solve_5.5/lpsolve55/ccc 2005-06-11 21:27:18.000000000 +0200
-+++ misc/build/lp_solve_5.5/lpsolve55/ccc 2025-03-02 17:58:19.904235635 +0100
-@@ -1,4 +1,7 @@
--src='../lp_MDO.c ../shared/commonlib.c ../shared/mmio.c ../shared/myblas.c ../ini.c ../fortify.c ../colamd/colamd.c ../lp_rlp.c ../lp_crash.c ../bfp/bfp_LUSOL/lp_LUSOL.c ../bfp/bfp_LUSOL/LUSOL/lusol.c ../lp_Hash.c ../lp_lib.c ../lp_wlp.c ../lp_matrix.c ../lp_mipbb.c ../lp_MPS.c ../lp_params.c ../lp_presolve.c ../lp_price.c ../lp_pricePSE.c ../lp_report.c ../lp_scale.c ../lp_simplex.c ../lp_SOS.c ../lp_utils.c ../yacc_read.c'
-+if test "$SYSTEM_COLAMD" != "TRUE"; then
-+ colamd_c=../colamd/colamd.c
-+fi
-+src="../lp_MDO.c ../shared/commonlib.c ../shared/mmio.c ../shared/myblas.c ../ini.c ../fortify.c $colamd_c ../lp_rlp.c ../lp_crash.c ../bfp/bfp_LUSOL/lp_LUSOL.c ../bfp/bfp_LUSOL/LUSOL/lusol.c ../lp_Hash.c ../lp_lib.c ../lp_wlp.c ../lp_matrix.c ../lp_mipbb.c ../lp_MPS.c ../lp_params.c ../lp_presolve.c ../lp_price.c ../lp_pricePSE.c ../lp_report.c ../lp_scale.c ../lp_simplex.c ../lp_SOS.c ../lp_utils.c ../yacc_read.c"
- ar=$AR
- c=$CC
- ranlib=$RANLIB
-@@ -25,17 +28,24 @@
-
- if [ "$OS" = "LINUX" ]; then
- libs="$libs -ldl"
-+ libs="$libs $COLAMD_LIBS"
- fi
-
- opts='-O3'
-
--$c -s $inline -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd $opts $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
-+if test "$SYSTEM_COLAMD" = "TRUE"; then
-+ colamd_i=$COLAMD_CFLAGS
-+else
-+ colamd_i=-I../colamd
-+fi
-+
-+$c -s $inline -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL $colamd_i $opts $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
- $ar rv liblpsolve55.$a `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'`
- $ranlib liblpsolve55.$a
-
- if [ "$so" != "" ]
- then
-- $c $pic -s $inline -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I. $opts -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
-+ $c $pic -s $inline -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL $colamd_i -I. $opts -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
- $c -shared $ldflags -o ${soprefix}lpsolve55.$so `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` $libs
- fi
-
diff --git a/readlicense_oo/license/license.xml b/readlicense_oo/license/license.xml
index e4996dc8fb0e..fa6abbf2c1af 100644
--- a/readlicense_oo/license/license.xml
+++ b/readlicense_oo/license/license.xml
@@ -1483,12 +1483,6 @@
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
-
-
lpsolve
-
The following software may be included in this product: lpsolve. Use of any of this software is governed by
- the terms of the license below:
-
Jump to LGPL Version 2.1
-
lzma
liblzma is under the BSD Zero Clause License (0BSD)
diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index 2cffd84db342..3962e377c169 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -315,7 +315,7 @@ $(eval $(call gb_Module_add_uicheck_targets,sc,\
UITest_sc_styleui \
))
-ifneq ($(or $(ENABLE_LPSOLVE),$(ENABLE_COINMP)),)
+ifneq ($(ENABLE_COINMP),)
$(eval $(call gb_Module_add_uicheck_targets,sc,\
UITest_solver \
))
diff --git a/sc/common_unoapi_tests.mk b/sc/common_unoapi_tests.mk
index 34cc34e45a71..c643672dc518 100644
--- a/sc/common_unoapi_tests.mk
+++ b/sc/common_unoapi_tests.mk
@@ -22,7 +22,7 @@ $(eval $(call gb_CppunitTest_use_externals,sc_$(1), \
$(eval $(call gb_Library_use_common_precompiled_header,sc_$(1)))
$(eval $(call gb_CppunitTest_add_defs,sc_$(1),\
- $(if $(ENABLE_LPSOLVE), -DENABLE_LPSOLVE) \
+ $(if $(ENABLE_COINMP), -DENABLE_COINMP) \
))
$(eval $(call gb_CppunitTest_add_exception_objects,sc_$(1), \
diff --git a/sc/inc/SolverSettings.hxx b/sc/inc/SolverSettings.hxx
index 58edd20f30f2..da13f65addb2 100644
--- a/sc/inc/SolverSettings.hxx
+++ b/sc/inc/SolverSettings.hxx
@@ -38,7 +38,7 @@ enum SolverParameter
SP_LO_ENGINE, // Engine name used in LO
SP_MS_ENGINE, // Engine ID used in MSO
SP_INTEGER, // Assume all variables are integer (0: no, 1: yes)
- // LpSolve, CoinMP and SwarmSolver
+ // CoinMP and SwarmSolver
SP_NON_NEGATIVE, // Assume non negativity (1: yes, 2: no)
SP_EPSILON_LEVEL, // Epsilon level
SP_LIMIT_BBDEPTH, // Branch and bound depth
@@ -230,7 +230,6 @@ private:
// Maps LO solver implementation names to MS engine codes
std::map
SolverNamesToExcelEngines = {
{ "com.sun.star.comp.Calc.CoinMPSolver", "2" }, // Simplex LP
- { "com.sun.star.comp.Calc.LpsolveSolver", "2" }, // Simplex LP
{ "com.sun.star.comp.Calc.SwarmSolver", "1" }, // GRG Nonlinear
{ "com.sun.star.comp.Calc.NLPSolver.DEPSSolverImpl", "3" }, // DEPS
{ "com.sun.star.comp.Calc.NLPSolver.SCOSolverImpl", "3" } // SCO
diff --git a/sc/qa/extras/scsolverobj.cxx b/sc/qa/extras/scsolverobj.cxx
index 58a898e3c6b2..19268217748e 100644
--- a/sc/qa/extras/scsolverobj.cxx
+++ b/sc/qa/extras/scsolverobj.cxx
@@ -35,7 +35,7 @@ public:
virtual void setUp() override;
void testXSolverSettings();
-#ifdef ENABLE_LPSOLVE
+#ifdef ENABLE_COINMP
void testCellAddress(const table::CellAddress& rExpected, const uno::Any& rActual);
void testCellRangeAddress(const uno::Any& rExpected, const uno::Any& rActual);
#endif
@@ -50,7 +50,7 @@ ScSolverSettingsObj::ScSolverSettingsObj()
{
}
-#ifdef ENABLE_LPSOLVE
+#ifdef ENABLE_COINMP
void ScSolverSettingsObj::testCellAddress(const table::CellAddress& rExpected,
const uno::Any& rActual)
{
@@ -78,7 +78,7 @@ void ScSolverSettingsObj::testCellRangeAddress(const uno::Any& rExpected, const
// Creates a model using the XSolverSettings API checks if it is accessible via the API
void ScSolverSettingsObj::testXSolverSettings()
{
-#ifdef ENABLE_LPSOLVE
+#ifdef ENABLE_COINMP
uno::Reference xDoc(mxComponent, uno::UNO_QUERY_THROW);
uno::Reference xIndex(xDoc->getSheets(), uno::UNO_QUERY_THROW);
uno::Reference xSheet(xIndex->getByIndex(0), uno::UNO_QUERY_THROW);
@@ -108,7 +108,7 @@ void ScSolverSettingsObj::testXSolverSettings()
xSolverModel->setConstraints(aConstraints);
// Set solver engine options
- xSolverModel->setEngine(u"com.sun.star.comp.Calc.LpsolveSolver"_ustr);
+ xSolverModel->setEngine(u"com.sun.star.comp.Calc.CoinMPSolver"_ustr);
uno::Sequence aEngineOptions{
comphelper::makePropertyValue(u"Timeout"_ustr, uno::Any(static_cast(10))),
comphelper::makePropertyValue(u"NonNegative"_ustr, true),
@@ -120,8 +120,9 @@ void ScSolverSettingsObj::testXSolverSettings()
xSolverModel->setSuppressDialog(true);
xSolverModel->solve();
- // The correct solution value is 6981 (using LpsolveSolver)
- CPPUNIT_ASSERT_EQUAL(static_cast(6981), xSheet->getCellByPosition(6, 6)->getValue());
+ // The optimal total value for this knapsack is 6987, which fills the weight
+ // capacity of 1000 exactly.
+ CPPUNIT_ASSERT_EQUAL(static_cast(6987), xSheet->getCellByPosition(6, 6)->getValue());
// Check objective function and variable cells
testCellAddress(aObjCell, xSolverModel->getObjectiveCell());
@@ -147,7 +148,7 @@ void ScSolverSettingsObj::testXSolverSettings()
testCellRangeAddress(uno::Any(aRight2), aSeqConstr[1].Right);
// Check solver engine options
- CPPUNIT_ASSERT_EQUAL(u"com.sun.star.comp.Calc.LpsolveSolver"_ustr, xSolverModel->getEngine());
+ CPPUNIT_ASSERT_EQUAL(u"com.sun.star.comp.Calc.CoinMPSolver"_ustr, xSolverModel->getEngine());
// Check solver engine options
uno::Sequence aEngProps = xSolverModel->getEngineOptions();
diff --git a/sc/source/core/data/SolverSettings.cxx b/sc/source/core/data/SolverSettings.cxx
index c7413bcb943e..a1ab514e8920 100644
--- a/sc/source/core/data/SolverSettings.cxx
+++ b/sc/source/core/data/SolverSettings.cxx
@@ -438,6 +438,11 @@ void SolverSettings::ReadEngine()
m_sLOEngineName = "com.sun.star.comp.Calc.CoinMPSolver";
}
+ // The Lpsolve solver has been removed. A document that still names it is
+ // solved by CoinMP, which handles the same linear models.
+ if (m_sLOEngineName == "com.sun.star.comp.Calc.LpsolveSolver")
+ m_sLOEngineName = u"com.sun.star.comp.Calc.CoinMPSolver"_ustr;
+
if (SolverNamesToExcelEngines.count(m_sLOEngineName))
{
// Find equivalent MS engine code
diff --git a/sccomp/CppunitTest_sccomp_solver.mk b/sccomp/CppunitTest_sccomp_solver.mk
index 818b27e5a0a6..f67924f32cf3 100644
--- a/sccomp/CppunitTest_sccomp_solver.mk
+++ b/sccomp/CppunitTest_sccomp_solver.mk
@@ -15,7 +15,6 @@ $(eval $(call gb_CppunitTest_add_exception_objects,sccomp_solver,\
$(eval $(call gb_CppunitTest_add_defs,sccomp_solver,\
$(if $(ENABLE_COINMP), -DENABLE_COINMP) \
- $(if $(ENABLE_LPSOLVE), -DENABLE_LPSOLVE) \
))
$(eval $(call gb_CppunitTest_use_libraries,sccomp_solver,\
diff --git a/sccomp/Library_solver.mk b/sccomp/Library_solver.mk
index 1eeac011f2da..80b265896729 100644
--- a/sccomp/Library_solver.mk
+++ b/sccomp/Library_solver.mk
@@ -23,7 +23,6 @@ $(eval $(call gb_Library_set_componentfile,solver,sccomp/source/solver/solver,se
$(eval $(call gb_Library_add_componentimpls,solver, \
$(if $(ENABLE_COINMP),coinmp) \
- $(if $(ENABLE_LPSOLVE),lpsolve) \
))
$(eval $(call gb_Library_use_sdk_api,solver))
@@ -44,14 +43,12 @@ $(eval $(call gb_Library_use_libraries,solver,\
$(eval $(call gb_Library_use_externals,solver,\
coinmp \
- lpsolve \
))
$(eval $(call gb_Library_add_exception_objects,solver,\
sccomp/source/solver/SwarmSolver \
sccomp/source/solver/SolverComponent \
$(if $(ENABLE_COINMP), sccomp/source/solver/CoinMPSolver) \
- $(if $(ENABLE_LPSOLVE), sccomp/source/solver/LpsolveSolver) \
))
# vim: set noet sw=4 ts=4:
diff --git a/sccomp/qa/unit/solver.cxx b/sccomp/qa/unit/solver.cxx
index 536df7425bb9..58967a0ea069 100644
--- a/sccomp/qa/unit/solver.cxx
+++ b/sccomp/qa/unit/solver.cxx
@@ -22,14 +22,8 @@ class LpSolverTest: public test::BootstrapFixture
{
uno::Reference m_xDocument;
-#ifdef ENABLE_LPSOLVE
- void testLpSolver();
-#endif
#ifdef ENABLE_COINMP
void testCoinMPSolver();
-#endif
-
-#if defined(ENABLE_LPSOLVE) || defined(ENABLE_COINMP)
void testSolver(OUString const & rName);
#endif
@@ -38,9 +32,6 @@ public:
virtual void tearDown() override;
CPPUNIT_TEST_SUITE(LpSolverTest);
-#ifdef ENABLE_LPSOLVE
- CPPUNIT_TEST(testLpSolver);
-#endif
#ifdef ENABLE_COINMP
CPPUNIT_TEST(testCoinMPSolver);
#endif
@@ -64,13 +55,6 @@ void LpSolverTest::tearDown()
test::BootstrapFixture::tearDown();
}
-#ifdef ENABLE_LPSOLVE
-void LpSolverTest::testLpSolver()
-{
- testSolver(u"com.sun.star.comp.Calc.LpsolveSolver"_ustr);
-}
-#endif
-
#ifdef ENABLE_COINMP
void LpSolverTest::testCoinMPSolver()
{
@@ -78,7 +62,7 @@ void LpSolverTest::testCoinMPSolver()
}
#endif
-#if defined(ENABLE_LPSOLVE) || defined(ENABLE_COINMP)
+#ifdef ENABLE_COINMP
void LpSolverTest::testSolver(OUString const & rName)
{
uno::Reference xSolver(m_xContext->getServiceManager()->
diff --git a/sccomp/source/solver/LpsolveSolver.cxx b/sccomp/source/solver/LpsolveSolver.cxx
deleted file mode 100644
index cda134a3d383..000000000000
--- a/sccomp/source/solver/LpsolveSolver.cxx
+++ /dev/null
@@ -1,452 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- *
- * for a copy of the LGPLv3 License.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- *
- ************************************************************************/
-
-#include
-#include
-
-#undef LANGUAGE_NONE
-#if defined _WIN32
-#define WINAPI __stdcall
-#endif
-#define LoadInverseLib FALSE
-#define LoadLanguageLib FALSE
-#ifdef SYSTEM_LPSOLVE
-#include
-#else
-#include
-#endif
-#undef LANGUAGE_NONE
-
-#include "SolverComponent.hxx"
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-namespace com::sun::star::uno { class XComponentContext; }
-
-using namespace com::sun::star;
-
-namespace {
-
-class LpsolveSolver : public SolverComponent
-{
-public:
- LpsolveSolver() {}
-
-private:
- virtual void SAL_CALL solve() override;
- virtual OUString SAL_CALL getImplementationName() override
- {
- return u"com.sun.star.comp.Calc.LpsolveSolver"_ustr;
- }
- virtual OUString SAL_CALL getComponentDescription() override
- {
- return SolverComponent::GetResourceString( RID_SOLVER_COMPONENT );
- }
-};
-
-}
-
-void SAL_CALL LpsolveSolver::solve()
-{
- uno::Reference xModel( mxDoc, uno::UNO_QUERY_THROW );
-
- maStatus.clear();
- mbSuccess = false;
-
- if ( mnEpsilonLevel < EPS_TIGHT || mnEpsilonLevel > EPS_BAGGY )
- {
- maStatus = SolverComponent::GetResourceString( RID_ERROR_EPSILONLEVEL );
- return;
- }
-
- xModel->lockControllers();
-
- // collect variables in vector (?)
-
- const auto & aVariableCells = maVariables;
- size_t nVariables = aVariableCells.size();
- size_t nVar = 0;
-
- // Store all RHS values
- sal_uInt32 nConstraints = maConstraints.size();
- m_aConstrRHS.realloc(nConstraints);
-
- // collect all dependent cells
-
- ScSolverCellHashMap aCellsHash;
- aCellsHash[maObjective].reserve( nVariables + 1 ); // objective function
-
- for (const auto& rConstr : maConstraints)
- {
- table::CellAddress aCellAddr = rConstr.Left;
- aCellsHash[aCellAddr].reserve( nVariables + 1 ); // constraints: left hand side
-
- if ( rConstr.Right >>= aCellAddr )
- aCellsHash[aCellAddr].reserve( nVariables + 1 ); // constraints: right hand side
- }
-
- // set all variables to zero
- //! store old values?
- //! use old values as initial values?
- for ( const auto& rVarCell : aVariableCells )
- {
- SolverComponent::SetValue( mxDoc, rVarCell, 0.0 );
- }
-
- // read initial values from all dependent cells
- for ( auto& rEntry : aCellsHash )
- {
- double fValue = SolverComponent::GetValue( mxDoc, rEntry.first );
- rEntry.second.push_back( fValue ); // store as first element, as-is
- }
-
- // loop through variables
- for ( const auto& rVarCell : aVariableCells )
- {
- SolverComponent::SetValue( mxDoc, rVarCell, 1.0 ); // set to 1 to examine influence
-
- // read value change from all dependent cells
- for ( auto& rEntry : aCellsHash )
- {
- double fChanged = SolverComponent::GetValue( mxDoc, rEntry.first );
- double fInitial = rEntry.second.front();
- rEntry.second.push_back( fChanged - fInitial );
- }
-
- SolverComponent::SetValue( mxDoc, rVarCell, 2.0 ); // minimal test for linearity
-
- for ( const auto& rEntry : aCellsHash )
- {
- double fInitial = rEntry.second.front();
- double fCoeff = rEntry.second.back(); // last appended: coefficient for this variable
- double fTwo = SolverComponent::GetValue( mxDoc, rEntry.first );
-
- bool bLinear = rtl::math::approxEqual( fTwo, fInitial + 2.0 * fCoeff ) ||
- rtl::math::approxEqual( fInitial, fTwo - 2.0 * fCoeff );
- // second comparison is needed in case fTwo is zero
- if ( !bLinear )
- maStatus = SolverComponent::GetResourceString( RID_ERROR_NONLINEAR );
- }
-
- SolverComponent::SetValue( mxDoc, rVarCell, 0.0 ); // set back to zero for examining next variable
- }
-
- xModel->unlockControllers();
-
- if ( !maStatus.isEmpty() )
- return;
-
-
- // build lp_solve model
-
-
- lprec* lp = make_lp( 0, nVariables );
- if ( !lp )
- return;
-
- set_outputfile( lp, const_cast( "" ) ); // no output
-
- // set objective function
-
- const std::vector& rObjCoeff = aCellsHash[maObjective];
- std::unique_ptr pObjVal(new REAL[nVariables+1]);
- pObjVal[0] = 0.0; // ignored
- for (nVar=0; nVar>= aRightAddr )
- bRightCell = true; // cell specified as right-hand side
- else
- rRightAny >>= fDirectValue; // constant value
-
- table::CellAddress aLeftAddr = rConstr.Left;
-
- const std::vector& rLeftCoeff = aCellsHash[aLeftAddr];
- std::unique_ptr pValues(new REAL[nVariables+1] );
- pValues[0] = 0.0; // ignored?
- for (nVar=0; nVar& rRightCoeff = aCellsHash[aRightAddr];
- // modify pValues with rhs coefficients
- for (nVar=0; nVar(is_infinite(lp, pObjFrom[i])))
- pObjDecrease[i] = get_infinite(lp);
- else
- pObjDecrease[i] = rObjCoeff[i + 1] - pObjFrom[i];
-
- // Allowed increase
- if (static_cast(is_infinite(lp, pObjTill[i])))
- pObjIncrease[i] = get_infinite(lp);
- else
- pObjIncrease[i] = pObjTill[i] - rObjCoeff[i + 1];
- }
-
- // Save objective coefficients for the sensitivity report
- double* pObjCoefficients(new double[nVariables]);
- for (size_t i = 0; i < nVariables; i++)
- pObjCoefficients[i] = rObjCoeff[i + 1];
- m_aObjCoefficients.realloc(nVariables);
- std::copy_n(pObjCoefficients, nVariables, m_aObjCoefficients.getArray());
-
- // The reduced costs are in pConstrDual after the constraints
- double* pObjRedCost(new double[nVariables]);
- for (size_t i = 0; i < nVariables; i++)
- pObjRedCost[i] = pConstrDual[nConstraints + i];
- m_aObjRedCost.realloc(nVariables);
- std::copy_n(pObjRedCost, nVariables, m_aObjRedCost.getArray());
-
- // Final value of constraints
- get_ptr_constraints(lp, &pConstrValue);
- m_aConstrValue.realloc(nConstraints);
- std::copy_n(pConstrValue, nConstraints, m_aConstrValue.getArray());
-
- // The RHS contains information for each constraint
- m_aConstrDual.realloc(nConstraints);
- m_aConstrDecrease.realloc(nConstraints);
- m_aConstrIncrease.realloc(nConstraints);
- std::copy_n(pConstrDual, nConstraints, m_aConstrDual.getArray());
- double* pConstrDecrease = m_aConstrDecrease.getArray();
- double* pConstrIncrease = m_aConstrIncrease.getArray();
-
- for (sal_uInt32 i = 0; i < nConstraints; i++)
- {
- // Allowed decrease
- pConstrDecrease[i] = m_aConstrRHS[i] - pConstrFrom[i];
- if (static_cast(is_infinite(lp, pConstrFrom[i]))
- && maConstraints[i].Operator == sheet::SolverConstraintOperator_LESS_EQUAL)
- pConstrDecrease[i] = m_aConstrRHS[i] - m_aConstrValue[i];
-
- // Allowed increase
- pConstrIncrease[i] = pConstrTill[i] - m_aConstrRHS[i];
- if (static_cast(is_infinite(lp, pConstrTill[i]))
- && maConstraints[i].Operator == sheet::SolverConstraintOperator_GREATER_EQUAL)
- pConstrIncrease[i] = m_aConstrValue[i] - m_aConstrRHS[i];
- }
-
- // Set all values of the SensitivityReport object
- m_aSensitivityReport.ObjCoefficients = m_aObjCoefficients;
- m_aSensitivityReport.ObjReducedCosts = m_aObjRedCost;
- m_aSensitivityReport.ObjAllowableDecreases = m_aObjDecrease;
- m_aSensitivityReport.ObjAllowableIncreases = m_aObjIncrease;
- m_aSensitivityReport.ConstrValues = m_aConstrValue;
- m_aSensitivityReport.ConstrRHS = m_aConstrRHS;
- m_aSensitivityReport.ConstrShadowPrices = m_aConstrDual;
- m_aSensitivityReport.ConstrAllowableDecreases = m_aConstrDecrease;
- m_aSensitivityReport.ConstrAllowableIncreases = m_aConstrIncrease;
- }
- }
- }
- else if ( nResult == INFEASIBLE )
- maStatus = SolverComponent::GetResourceString( RID_ERROR_INFEASIBLE );
- else if ( nResult == UNBOUNDED )
- maStatus = SolverComponent::GetResourceString( RID_ERROR_UNBOUNDED );
- else if ( nResult == TIMEOUT || nResult == SUBOPTIMAL )
- maStatus = SolverComponent::GetResourceString( RID_ERROR_TIMEOUT );
- // SUBOPTIMAL is assumed to be caused by a timeout, and reported as an error
-
- delete_lp( lp );
-}
-
-extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
-com_sun_star_comp_Calc_LpsolveSolver_get_implementation(
- css::uno::XComponentContext *,
- css::uno::Sequence const &)
-{
- return cppu::acquire(new LpsolveSolver());
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sccomp/source/solver/solver.component b/sccomp/source/solver/solver.component
index 496be6628486..2993ecabb8e5 100644
--- a/sccomp/source/solver/solver.component
+++ b/sccomp/source/solver/solver.component
@@ -13,11 +13,6 @@
-
-
-
-
diff --git a/sccomp/source/solver/solver.component.lpsolve b/sccomp/source/solver/solver.component.lpsolve
deleted file mode 100644
index 3b571fbc324d..000000000000
--- a/sccomp/source/solver/solver.component.lpsolve
+++ /dev/null
@@ -1,7 +0,0 @@
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-com.sun.star.comp.Calc.LpsolveSolver
diff --git a/scp2/InstallModule_calc.mk b/scp2/InstallModule_calc.mk
index 0484fac3174e..f9bbce84e2ac 100644
--- a/scp2/InstallModule_calc.mk
+++ b/scp2/InstallModule_calc.mk
@@ -18,7 +18,7 @@ $(eval $(call gb_InstallModule_define_if_set,scp2/calc,\
ENABLE_MACOSX_SANDBOX \
))
-ifneq (,$(ENABLE_COINMP)$(ENABLE_LPSOLVE))
+ifneq (,$(ENABLE_COINMP))
$(eval $(call gb_InstallModule_add_defs,scp2/calc,\
-DWITH_LPSOLVER \
))
diff --git a/scp2/source/calc/module_calc.scp b/scp2/source/calc/module_calc.scp
index dd31007bb5ca..7adc68575d3d 100644
--- a/scp2/source/calc/module_calc.scp
+++ b/scp2/source/calc/module_calc.scp
@@ -36,8 +36,7 @@ Module gid_Module_Prg_Calc_Bin
Default = YES;
Styles = (HIDDEN_ROOT);
Files = (auto_calc_ALL,
- gid_File_Share_Registry_Calc_Xcd,
- gid_File_Lib_Lpsolve);
+ gid_File_Share_Registry_Calc_Xcd);
End
Module gid_Module_Prg_Calc_Addins
diff --git a/solenv/bin/make-raspbian-root-tarball b/solenv/bin/make-raspbian-root-tarball
index 71054095715b..b9b3b3b3b356 100755
--- a/solenv/bin/make-raspbian-root-tarball
+++ b/solenv/bin/make-raspbian-root-tarball
@@ -45,7 +45,6 @@ STAGINGDIR=`mktemp -d`
find lib/*.so* \
lib/arm-linux-gnueabihf \
usr/include \
- usr/lib/liblpsolve*.a \
usr/lib/*.so* \
usr/lib/arm-linux-gnueabihf \
usr/lib/jvm/java-6-openjdk-armhf/include \
diff --git a/solenv/flatpak-external-tarballs.json.in b/solenv/flatpak-external-tarballs.json.in
index ece877c14872..6c3e938ddb36 100644
--- a/solenv/flatpak-external-tarballs.json.in
+++ b/solenv/flatpak-external-tarballs.json.in
@@ -279,13 +279,6 @@
"dest": "external/tarballs",
"dest-filename": "@ZMF_TARBALL@"
},
- {
- "url": "https://dev-www.libreoffice.org/src/@LPSOLVE_TARBALL@",
- "sha256": "@LPSOLVE_SHA256SUM@",
- "type": "file",
- "dest": "external/tarballs",
- "dest-filename": "@LPSOLVE_TARBALL@"
- },
{
"url": "https://dev-www.libreoffice.org/src/@MARIADB_CONNECTOR_C_TARBALL@",
"sha256": "@MARIADB_CONNECTOR_C_SHA256SUM@",