git: 85f92d0a19f1 - main - math/nlopt: Fix build with Octave installed
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 02 Sep 2025 07:36:38 UTC
The branch main has been updated by rhurlin: URL: https://cgit.FreeBSD.org/ports/commit/?id=85f92d0a19f1eab321a6eabdd65b300cd16e61d3 commit 85f92d0a19f1eab321a6eabdd65b300cd16e61d3 Author: Rainer Hurling <rhurlin@FreeBSD.org> AuthorDate: 2025-09-02 07:06:20 +0000 Commit: Rainer Hurling <rhurlin@FreeBSD.org> CommitDate: 2025-09-02 07:16:17 +0000 math/nlopt: Fix build with Octave installed cmake requires at least C++17 to build correctly if math/octave is already installed. math/octave is now a fixed dependency for nlopt, as this is the only way to guarantee that Octave packages such as math/octave-forge-mboct-fem-pkg will find a sufficiently complete nlopt. PR: 289110 Reported by: stephen@ MFH: 2025Q3 --- math/nlopt/Makefile | 8 ++++-- math/nlopt/files/patch-CMakeLists.txt | 11 ++++++++ math/nlopt/files/patch-CMakePresets.json | 11 ++++++++ math/nlopt/pkg-plist.full | 48 +++++++++++++++++++++++++++++++- 4 files changed, 75 insertions(+), 3 deletions(-) diff --git a/math/nlopt/Makefile b/math/nlopt/Makefile index 283559daa8db..dd4dc557a783 100644 --- a/math/nlopt/Makefile +++ b/math/nlopt/Makefile @@ -1,6 +1,7 @@ PORTNAME= nlopt DISTVERSIONPREFIX= v DISTVERSION= 2.10.0 +PORTREVISION= 1 CATEGORIES= math MAINTAINER= rhurlin@FreeBSD.org @@ -20,6 +21,7 @@ FLAVOR?= ${FLAVORS:[1]} full_BUILD_DEPENDS= ${PYNUMPY} \ swig:devel/swig +full_LIB_DEPENDS= liboctave.so:math/octave full_RUN_DEPENDS= ${PYNUMPY} full_CONFLICTS_INSTALL= ${PORTNAME}-minimal minimal_PKGNAMESUFFIX= -minimal @@ -34,16 +36,18 @@ USE_LDCONFIG= yes CMAKE_TESTING_ON= NLOPT_TESTS .if ${FLAVOR} == full -USES+= guile:3.0,alias localbase pkgconfig python +USES+= guile:3.0,alias localbase octave:env pkgconfig python # Because guile-config-3.0 crashes, nlopt avoids this by using # files/patch-cmake_FindGuile.cmake and setting GUILE_EXECUTABLE # and GUILE_CONFIG_EXECUTABLE MAKE_ENV+= GUILE_EXECUTABLE=${PREFIX}/bin/guile-3.0 \ GUILE_CONFIG_EXECUTABLE=${PREFIX}/bin/guile-config-3.0 CMAKE_OFF= NLOPT_JAVA +GNU_HOST= ${ARCH}-portbld-freebsd${OSREL} PLIST= ${PKGDIR}/pkg-plist.${FLAVOR} +PLIST_SUB= GNU_HOST=${GNU_HOST} OCTAVE_VERSION=${OCTAVE_VERSION} .elif ${FLAVOR} == minimal -CMAKE_OFF= NLOPT_GUILE NLOPT_JAVA NLOPT_PYTHON NLOPT_SWIG +CMAKE_OFF= NLOPT_GUILE NLOPT_JAVA NLOPT_OCTAVE NLOPT_PYTHON NLOPT_SWIG .endif .include <bsd.port.mk> diff --git a/math/nlopt/files/patch-CMakeLists.txt b/math/nlopt/files/patch-CMakeLists.txt new file mode 100644 index 000000000000..4cc24139004e --- /dev/null +++ b/math/nlopt/files/patch-CMakeLists.txt @@ -0,0 +1,11 @@ +--- CMakeLists.txt.orig 2025-02-04 18:29:30 UTC ++++ CMakeLists.txt +@@ -147,7 +147,7 @@ if (NLOPT_CXX OR NLOPT_PYTHON OR NLOPT_GUILE OR NLOPT_ + if (NLOPT_CXX OR NLOPT_PYTHON OR NLOPT_GUILE OR NLOPT_OCTAVE OR NLOPT_JAVA) + check_cxx_symbol_exists (__cplusplus ciso646 SYSTEM_HAS_CXX) + if (SYSTEM_HAS_CXX) +- set (CMAKE_CXX_STANDARD 11) # set the standard to C++11 but do not require it ++ set (CMAKE_CXX_STANDARD 17) # set the standard to C++17 but do not require it + + if (NLOPT_CXX) + set (CMAKE_CXX_STANDARD_REQUIRED ON) # if we build C++ API, we do need C++11 diff --git a/math/nlopt/files/patch-CMakePresets.json b/math/nlopt/files/patch-CMakePresets.json new file mode 100644 index 000000000000..e557968bc963 --- /dev/null +++ b/math/nlopt/files/patch-CMakePresets.json @@ -0,0 +1,11 @@ +--- CMakePresets.json.orig 2025-02-04 18:29:30 UTC ++++ CMakePresets.json +@@ -8,7 +8,7 @@ + "cacheVariables": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo", + "CMAKE_C_FLAGS": "-Wall -Wextra -Wpedantic -Wshadow", +- "CMAKE_CXX_FLAGS": "-Wall -Wextra -Wpedantic -Wshadow -D_GLIBCXX_ASSERTIONS -fno-inline", ++ "CMAKE_CXX_FLAGS": "-Wall -Wextra -Wpedantic -Wshadow -D_GLIBCXX_ASSERTIONS -fno-inline -std=c++17", + "CMAKE_INSTALL_PREFIX": "${sourceDir}/build/install", + "SWIG_COMPILE_FLAGS": "-O1 -Wno-unused-parameter -Wno-shadow" + } diff --git a/math/nlopt/pkg-plist.full b/math/nlopt/pkg-plist.full index 3a3a6db63e96..971a564dd944 100644 --- a/math/nlopt/pkg-plist.full +++ b/math/nlopt/pkg-plist.full @@ -1,4 +1,3 @@ -%%GUILE_SITE%%/nlopt.scm include/nlopt.h include/nlopt.hpp lib/cmake/nlopt/NLoptConfig.cmake @@ -9,10 +8,57 @@ lib/guile/%%GUILE_VER%%/extensions/nlopt_guile.so lib/libnlopt.so lib/libnlopt.so.1 lib/libnlopt.so.1.0.0 +lib/octave/%%OCTAVE_VERSION%%/site/oct/%%GNU_HOST%%/nlopt_optimize.oct %%PYTHON_SITELIBDIR%%/_nlopt.so %%PYTHON_SITELIBDIR%%/nlopt-2.10.0.dist-info/METADATA %%PYTHON_SITELIBDIR%%/nlopt.py libdata/pkgconfig/nlopt.pc +%%GUILE_SITE%%/nlopt.scm share/man/man3/nlopt.3.gz share/man/man3/nlopt_minimize.3.gz share/man/man3/nlopt_minimize_constrained.3.gz +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_AUGLAG.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_AUGLAG_EQ.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GD_MLSL.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GD_MLSL_LDS.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GD_STOGO.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GD_STOGO_RAND.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GN_AGS.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GN_CRS2_LM.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GN_DIRECT.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GN_DIRECT_L.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GN_DIRECT_L_NOSCAL.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GN_DIRECT_L_RAND.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GN_DIRECT_L_RAND_NOSCAL.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GN_DIRECT_NOSCAL.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GN_ESCH.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GN_ISRES.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GN_MLSL.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GN_MLSL_LDS.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GN_ORIG_DIRECT.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_GN_ORIG_DIRECT_L.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_G_MLSL.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_G_MLSL_LDS.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LD_AUGLAG.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LD_AUGLAG_EQ.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LD_CCSAQ.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LD_LBFGS.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LD_MMA.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LD_SLSQP.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LD_TNEWTON.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LD_TNEWTON_PRECOND.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LD_TNEWTON_PRECOND_RESTART.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LD_TNEWTON_RESTART.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LD_VAR1.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LD_VAR2.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LN_AUGLAG.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LN_AUGLAG_EQ.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LN_BOBYQA.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LN_COBYLA.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LN_NELDERMEAD.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LN_NEWUOA.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LN_NEWUOA_BOUND.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LN_PRAXIS.m +share/octave/%%OCTAVE_VERSION%%/site/m/NLOPT_LN_SBPLX.m +share/octave/%%OCTAVE_VERSION%%/site/m/nlopt_minimize.m +share/octave/%%OCTAVE_VERSION%%/site/m/nlopt_minimize_constrained.m