From d47510d4175010802b361bcfc8e1ad55599d5590 Mon Sep 17 00:00:00 2001 From: Clément Péron Date: Fri, 10 Oct 2025 13:49:55 +0200 Subject: libeigen: upgrade 3.4.0 -> 3.4.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Move Eigen BLAS, LAPACK as packageconfig as they requires Fortran compiler - Disable building TESTING - Remove patch that has been merged Signed-off-by: Clément Péron Signed-off-by: Khem Raj --- ...-Default-eigen_packet_wrapper-constructor.patch | 72 -- .../0001-Remove-LGPL-Code-and-references.patch | 1030 +++++++++++++++++++ .../0002-Remove-LGPL-Code-and-references.patch | 1040 -------------------- meta-oe/recipes-support/libeigen/libeigen_3.4.0.bb | 31 - meta-oe/recipes-support/libeigen/libeigen_3.4.1.bb | 39 + 5 files changed, 1069 insertions(+), 1143 deletions(-) delete mode 100644 meta-oe/recipes-support/libeigen/libeigen/0001-Default-eigen_packet_wrapper-constructor.patch create mode 100644 meta-oe/recipes-support/libeigen/libeigen/0001-Remove-LGPL-Code-and-references.patch delete mode 100644 meta-oe/recipes-support/libeigen/libeigen/0002-Remove-LGPL-Code-and-references.patch delete mode 100644 meta-oe/recipes-support/libeigen/libeigen_3.4.0.bb create mode 100644 meta-oe/recipes-support/libeigen/libeigen_3.4.1.bb diff --git a/meta-oe/recipes-support/libeigen/libeigen/0001-Default-eigen_packet_wrapper-constructor.patch b/meta-oe/recipes-support/libeigen/libeigen/0001-Default-eigen_packet_wrapper-constructor.patch deleted file mode 100644 index 84b5a4da9f..0000000000 --- a/meta-oe/recipes-support/libeigen/libeigen/0001-Default-eigen_packet_wrapper-constructor.patch +++ /dev/null @@ -1,72 +0,0 @@ -From cb507309937958c632147de87e8f1231d6698847 Mon Sep 17 00:00:00 2001 -From: Antonio Sanchez -Date: Tue, 14 Sep 2021 10:57:22 -0700 -Subject: [PATCH] Default eigen_packet_wrapper constructor. - -This makes it trivial, allowing use of `memcpy`. - -Fixes #2326 - -Upstream-Status: Backport [https://gitlab.com/libeigen/eigen/-/merge_requests/645/diffs?commit_id=cb507309937958c632147de87e8f1231d6698847] -Signed-off-by: Martin Jansa - -* fixes build failures for arm targets with NEON enabled (e.g. -mfpu=neon-vfpv4) - for recipes with -Werror enabled and gcc-11, e.g. fuse-core, robot-localization, - prbt-ikfast-manipulator-plugin, rm-chassis-controllers in meta-ros1-noetic: - -In file included from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/Core:214, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/macros.h:63, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/loss.h:37, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/constraint.h:37, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/src/constraint.cpp:34: -/jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h: In function 'Packet Eigen::internal::pload(const typename Eigen::internal::unpacket_traits::type*) [with Packet = Eigen::internal::eigen_packet_wrapper; typename Eigen::internal::unpacket_traits::type = signed char]': -/jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h:1671:9: error: 'void* memcpy(void*, const void*, size_t)' copying an object of non-trivial type 'Eigen::internal::Packet4c' {aka 'struct Eigen::internal::eigen_packet_wrapper'} from an array of 'const int8_t' {aka 'const signed char'} [-Werror=class-memaccess] - 1671 | memcpy(&res, from, sizeof(Packet4c)); - | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/Core:172, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/macros.h:63, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/loss.h:37, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/constraint.h:37, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/src/constraint.cpp:34: -/jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/src/Core/GenericPacketMath.h:159:8: note: 'Eigen::internal::Packet4c' {aka 'struct Eigen::internal::eigen_packet_wrapper'} declared here - 159 | struct eigen_packet_wrapper - | ^~~~~~~~~~~~~~~~~~~~ -In file included from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/Core:214, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/macros.h:63, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/loss.h:37, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/constraint.h:37, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/src/constraint.cpp:34: -/jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h: In function 'Packet Eigen::internal::ploadu(const typename Eigen::internal::unpacket_traits::type*) [with Packet = Eigen::internal::eigen_packet_wrapper; typename Eigen::internal::unpacket_traits::type = signed char]': -/jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h:1716:9: error: 'void* memcpy(void*, const void*, size_t)' copying an object of non-trivial type 'Eigen::internal::Packet4c' {aka 'struct Eigen::internal::eigen_packet_wrapper'} from an array of 'const int8_t' {aka 'const signed char'} [-Werror=class-memaccess] - 1716 | memcpy(&res, from, sizeof(Packet4c)); - | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/Core:172, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/macros.h:63, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/loss.h:37, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/include/fuse_core/constraint.h:37, - from /jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/git/src/constraint.cpp:34: -/jenkins/mjansa/build/ros/webos-noetic-honister/tmp-glibc/work/raspberrypi4-webos-linux-gnueabi/fuse-core/0.4.2-1-r0/recipe-sysroot/usr/include/eigen3/Eigen/src/Core/GenericPacketMath.h:159:8: note: 'Eigen::internal::Packet4c' {aka 'struct Eigen::internal::eigen_packet_wrapper'} declared here - 159 | struct eigen_packet_wrapper - | ^~~~~~~~~~~~~~~~~~~~ -cc1plus: all warnings being treated as errors - ---- - Eigen/src/Core/GenericPacketMath.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Eigen/src/Core/GenericPacketMath.h b/Eigen/src/Core/GenericPacketMath.h -index 8f8f64f15..72234288e 100644 ---- a/Eigen/src/Core/GenericPacketMath.h -+++ b/Eigen/src/Core/GenericPacketMath.h -@@ -162,7 +162,7 @@ struct eigen_packet_wrapper - { - EIGEN_ALWAYS_INLINE operator T&() { return m_val; } - EIGEN_ALWAYS_INLINE operator const T&() const { return m_val; } -- EIGEN_ALWAYS_INLINE eigen_packet_wrapper() {} -+ EIGEN_ALWAYS_INLINE eigen_packet_wrapper() = default; - EIGEN_ALWAYS_INLINE eigen_packet_wrapper(const T &v) : m_val(v) {} - EIGEN_ALWAYS_INLINE eigen_packet_wrapper& operator=(const T &v) { - m_val = v; --- -2.17.1 - diff --git a/meta-oe/recipes-support/libeigen/libeigen/0001-Remove-LGPL-Code-and-references.patch b/meta-oe/recipes-support/libeigen/libeigen/0001-Remove-LGPL-Code-and-references.patch new file mode 100644 index 0000000000..697f3dfa82 --- /dev/null +++ b/meta-oe/recipes-support/libeigen/libeigen/0001-Remove-LGPL-Code-and-references.patch @@ -0,0 +1,1030 @@ +From 5e7b53a3268e7cdc81e358825a8c84f06289866c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Antonio=20S=C3=A1nchez?= +Date: Wed, 8 Feb 2023 01:25:06 +0000 +Subject: [PATCH] Remove LGPL Code and references. + +Upstream-Status: Backport [https://gitlab.com/libeigen/eigen/-/commit/e256ad1823c2eddd6954241ddc99bfeb7bb29cb3] +--- + COPYING.LGPL | 502 ------------------ + COPYING.README | 16 +- + Eigen/src/Core/util/NonMPL2.h | 3 - + .../IncompleteCholesky.h | 3 +- + bench/tensors/eigen_sycl_bench.sh | 1 - + bench/tensors/eigen_sycl_bench_contract.sh | 2 +- + doc/PreprocessorDirectives.dox | 3 - + test/mpl2only.cpp | 24 - + unsupported/Eigen/IterativeSolvers | 6 - + .../IterativeSolvers/ConstrainedConjGrad.h | 187 ------- + .../IterativeSolvers/IterationController.h | 154 ------ + 11 files changed, 4 insertions(+), 897 deletions(-) + delete mode 100644 COPYING.LGPL + delete mode 100644 Eigen/src/Core/util/NonMPL2.h + delete mode 100644 test/mpl2only.cpp + delete mode 100644 unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h + delete mode 100644 unsupported/Eigen/src/IterativeSolvers/IterationController.h + +diff --git a/COPYING.LGPL b/COPYING.LGPL +deleted file mode 100644 +index 4362b4915..000000000 +--- a/COPYING.LGPL ++++ /dev/null +@@ -1,502 +0,0 @@ +- GNU LESSER GENERAL PUBLIC LICENSE +- Version 2.1, February 1999 +- +- Copyright (C) 1991, 1999 Free Software Foundation, Inc. +- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +- Everyone is permitted to copy and distribute verbatim copies +- of this license document, but changing it is not allowed. +- +-[This is the first released version of the Lesser GPL. It also counts +- as the successor of the GNU Library Public License, version 2, hence +- the version number 2.1.] +- +- Preamble +- +- The licenses for most software are designed to take away your +-freedom to share and change it. By contrast, the GNU General Public +-Licenses are intended to guarantee your freedom to share and change +-free software--to make sure the software is free for all its users. +- +- This license, the Lesser General Public License, applies to some +-specially designated software packages--typically libraries--of the +-Free Software Foundation and other authors who decide to use it. You +-can use it too, but we suggest you first think carefully about whether +-this license or the ordinary General Public License is the better +-strategy to use in any particular case, based on the explanations below. +- +- When we speak of free software, we are referring to freedom of use, +-not price. Our General Public Licenses are designed to make sure that +-you have the freedom to distribute copies of free software (and charge +-for this service if you wish); that you receive source code or can get +-it if you want it; that you can change the software and use pieces of +-it in new free programs; and that you are informed that you can do +-these things. +- +- To protect your rights, we need to make restrictions that forbid +-distributors to deny you these rights or to ask you to surrender these +-rights. These restrictions translate to certain responsibilities for +-you if you distribute copies of the library or if you modify it. +- +- For example, if you distribute copies of the library, whether gratis +-or for a fee, you must give the recipients all the rights that we gave +-you. You must make sure that they, too, receive or can get the source +-code. If you link other code with the library, you must provide +-complete object files to the recipients, so that they can relink them +-with the library after making changes to the library and recompiling +-it. And you must show them these terms so they know their rights. +- +- We protect your rights with a two-step method: (1) we copyright the +-library, and (2) we offer you this license, which gives you legal +-permission to copy, distribute and/or modify the library. +- +- To protect each distributor, we want to make it very clear that +-there is no warranty for the free library. Also, if the library is +-modified by someone else and passed on, the recipients should know +-that what they have is not the original version, so that the original +-author's reputation will not be affected by problems that might be +-introduced by others. +- +- Finally, software patents pose a constant threat to the existence of +-any free program. We wish to make sure that a company cannot +-effectively restrict the users of a free program by obtaining a +-restrictive license from a patent holder. Therefore, we insist that +-any patent license obtained for a version of the library must be +-consistent with the full freedom of use specified in this license. +- +- Most GNU software, including some libraries, is covered by the +-ordinary GNU General Public License. This license, the GNU Lesser +-General Public License, applies to certain designated libraries, and +-is quite different from the ordinary General Public License. We use +-this license for certain libraries in order to permit linking those +-libraries into non-free programs. +- +- When a program is linked with a library, whether statically or using +-a shared library, the combination of the two is legally speaking a +-combined work, a derivative of the original library. The ordinary +-General Public License therefore permits such linking only if the +-entire combination fits its criteria of freedom. The Lesser General +-Public License permits more lax criteria for linking other code with +-the library. +- +- We call this license the "Lesser" General Public License because it +-does Less to protect the user's freedom than the ordinary General +-Public License. It also provides other free software developers Less +-of an advantage over competing non-free programs. These disadvantages +-are the reason we use the ordinary General Public License for many +-libraries. However, the Lesser license provides advantages in certain +-special circumstances. +- +- For example, on rare occasions, there may be a special need to +-encourage the widest possible use of a certain library, so that it becomes +-a de-facto standard. To achieve this, non-free programs must be +-allowed to use the library. A more frequent case is that a free +-library does the same job as widely used non-free libraries. In this +-case, there is little to gain by limiting the free library to free +-software only, so we use the Lesser General Public License. +- +- In other cases, permission to use a particular library in non-free +-programs enables a greater number of people to use a large body of +-free software. For example, permission to use the GNU C Library in +-non-free programs enables many more people to use the whole GNU +-operating system, as well as its variant, the GNU/Linux operating +-system. +- +- Although the Lesser General Public License is Less protective of the +-users' freedom, it does ensure that the user of a program that is +-linked with the Library has the freedom and the wherewithal to run +-that program using a modified version of the Library. +- +- The precise terms and conditions for copying, distribution and +-modification follow. Pay close attention to the difference between a +-"work based on the library" and a "work that uses the library". The +-former contains code derived from the library, whereas the latter must +-be combined with the library in order to run. +- +- GNU LESSER GENERAL PUBLIC LICENSE +- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +- +- 0. This License Agreement applies to any software library or other +-program which contains a notice placed by the copyright holder or +-other authorized party saying it may be distributed under the terms of +-this Lesser General Public License (also called "this License"). +-Each licensee is addressed as "you". +- +- A "library" means a collection of software functions and/or data +-prepared so as to be conveniently linked with application programs +-(which use some of those functions and data) to form executables. +- +- The "Library", below, refers to any such software library or work +-which has been distributed under these terms. A "work based on the +-Library" means either the Library or any derivative work under +-copyright law: that is to say, a work containing the Library or a +-portion of it, either verbatim or with modifications and/or translated +-straightforwardly into another language. (Hereinafter, translation is +-included without limitation in the term "modification".) +- +- "Source code" for a work means the preferred form of the work for +-making modifications to it. For a library, complete source code means +-all the source code for all modules it contains, plus any associated +-interface definition files, plus the scripts used to control compilation +-and installation of the library. +- +- Activities other than copying, distribution and modification are not +-covered by this License; they are outside its scope. The act of +-running a program using the Library is not restricted, and output from +-such a program is covered only if its contents constitute a work based +-on the Library (independent of the use of the Library in a tool for +-writing it). Whether that is true depends on what the Library does +-and what the program that uses the Library does. +- +- 1. You may copy and distribute verbatim copies of the Library's +-complete source code as you receive it, in any medium, provided that +-you conspicuously and appropriately publish on each copy an +-appropriate copyright notice and disclaimer of warranty; keep intact +-all the notices that refer to this License and to the absence of any +-warranty; and distribute a copy of this License along with the +-Library. +- +- You may charge a fee for the physical act of transferring a copy, +-and you may at your option offer warranty protection in exchange for a +-fee. +- +- 2. You may modify your copy or copies of the Library or any portion +-of it, thus forming a work based on the Library, and copy and +-distribute such modifications or work under the terms of Section 1 +-above, provided that you also meet all of these conditions: +- +- a) The modified work must itself be a software library. +- +- b) You must cause the files modified to carry prominent notices +- stating that you changed the files and the date of any change. +- +- c) You must cause the whole of the work to be licensed at no +- charge to all third parties under the terms of this License. +- +- d) If a facility in the modified Library refers to a function or a +- table of data to be supplied by an application program that uses +- the facility, other than as an argument passed when the facility +- is invoked, then you must make a good faith effort to ensure that, +- in the event an application does not supply such function or +- table, the facility still operates, and performs whatever part of +- its purpose remains meaningful. +- +- (For example, a function in a library to compute square roots has +- a purpose that is entirely well-defined independent of the +- application. Therefore, Subsection 2d requires that any +- application-supplied function or table used by this function must +- be optional: if the application does not supply it, the square +- root function must still compute square roots.) +- +-These requirements apply to the modified work as a whole. If +-identifiable sections of that work are not derived from the Library, +-and can be reasonably considered independent and separate works in +-themselves, then this License, and its terms, do not apply to those +-sections when you distribute them as separate works. But when you +-distribute the same sections as part of a whole which is a work based +-on the Library, the distribution of the whole must be on the terms of +-this License, whose permissions for other licensees extend to the +-entire whole, and thus to each and every part regardless of who wrote +-it. +- +-Thus, it is not the intent of this section to claim rights or contest +-your rights to work written entirely by you; rather, the intent is to +-exercise the right to control the distribution of derivative or +-collective works based on the Library. +- +-In addition, mere aggregation of another work not based on the Library +-with the Library (or with a work based on the Library) on a volume of +-a storage or distribution medium does not bring the other work under +-the scope of this License. +- +- 3. You may opt to apply the terms of the ordinary GNU General Public +-License instead of this License to a given copy of the Library. To do +-this, you must alter all the notices that refer to this License, so +-that they refer to the ordinary GNU General Public License, version 2, +-instead of to this License. (If a newer version than version 2 of the +-ordinary GNU General Public License has appeared, then you can specify +-that version instead if you wish.) Do not make any other change in +-these notices. +- +- Once this change is made in a given copy, it is irreversible for +-that copy, so the ordinary GNU General Public License applies to all +-subsequent copies and derivative works made from that copy. +- +- This option is useful when you wish to copy part of the code of +-the Library into a program that is not a library. +- +- 4. You may copy and distribute the Library (or a portion or +-derivative of it, under Section 2) in object code or executable form +-under the terms of Sections 1 and 2 above provided that you accompany +-it with the complete corresponding machine-readable source code, which +-must be distributed under the terms of Sections 1 and 2 above on a +-medium customarily used for software interchange. +- +- If distribution of object code is made by offering access to copy +-from a designated place, then offering equivalent access to copy the +-source code from the same place satisfies the requirement to +-distribute the source code, even though third parties are not +-compelled to copy the source along with the object code. +- +- 5. A program that contains no derivative of any portion of the +-Library, but is designed to work with the Library by being compiled or +-linked with it, is called a "work that uses the Library". Such a +-work, in isolation, is not a derivative work of the Library, and +-therefore falls outside the scope of this License. +- +- However, linking a "work that uses the Library" with the Library +-creates an executable that is a derivative of the Library (because it +-contains portions of the Library), rather than a "work that uses the +-library". The executable is therefore covered by this License. +-Section 6 states terms for distribution of such executables. +- +- When a "work that uses the Library" uses material from a header file +-that is part of the Library, the object code for the work may be a +-derivative work of the Library even though the source code is not. +-Whether this is true is especially significant if the work can be +-linked without the Library, or if the work is itself a library. The +-threshold for this to be true is not precisely defined by law. +- +- If such an object file uses only numerical parameters, data +-structure layouts and accessors, and small macros and small inline +-functions (ten lines or less in length), then the use of the object +-file is unrestricted, regardless of whether it is legally a derivative +-work. (Executables containing this object code plus portions of the +-Library will still fall under Section 6.) +- +- Otherwise, if the work is a derivative of the Library, you may +-distribute the object code for the work under the terms of Section 6. +-Any executables containing that work also fall under Section 6, +-whether or not they are linked directly with the Library itself. +- +- 6. As an exception to the Sections above, you may also combine or +-link a "work that uses the Library" with the Library to produce a +-work containing portions of the Library, and distribute that work +-under terms of your choice, provided that the terms permit +-modification of the work for the customer's own use and reverse +-engineering for debugging such modifications. +- +- You must give prominent notice with each copy of the work that the +-Library is used in it and that the Library and its use are covered by +-this License. You must supply a copy of this License. If the work +-during execution displays copyright notices, you must include the +-copyright notice for the Library among them, as well as a reference +-directing the user to the copy of this License. Also, you must do one +-of these things: +- +- a) Accompany the work with the complete corresponding +- machine-readable source code for the Library including whatever +- changes were used in the work (which must be distributed under +- Sections 1 and 2 above); and, if the work is an executable linked +- with the Library, with the complete machine-readable "work that +- uses the Library", as object code and/or source code, so that the +- user can modify the Library and then relink to produce a modified +- executable containing the modified Library. (It is understood +- that the user who changes the contents of definitions files in the +- Library will not necessarily be able to recompile the application +- to use the modified definitions.) +- +- b) Use a suitable shared library mechanism for linking with the +- Library. A suitable mechanism is one that (1) uses at run time a +- copy of the library already present on the user's computer system, +- rather than copying library functions into the executable, and (2) +- will operate properly with a modified version of the library, if +- the user installs one, as long as the modified version is +- interface-compatible with the version that the work was made with. +- +- c) Accompany the work with a written offer, valid for at +- least three years, to give the same user the materials +- specified in Subsection 6a, above, for a charge no more +- than the cost of performing this distribution. +- +- d) If distribution of the work is made by offering access to copy +- from a designated place, offer equivalent access to copy the above +- specified materials from the same place. +- +- e) Verify that the user has already received a copy of these +- materials or that you have already sent this user a copy. +- +- For an executable, the required form of the "work that uses the +-Library" must include any data and utility programs needed for +-reproducing the executable from it. However, as a special exception, +-the materials to be distributed need not include anything that is +-normally distributed (in either source or binary form) with the major +-components (compiler, kernel, and so on) of the operating system on +-which the executable runs, unless that component itself accompanies +-the executable. +- +- It may happen that this requirement contradicts the license +-restrictions of other proprietary libraries that do not normally +-accompany the operating system. Such a contradiction means you cannot +-use both them and the Library together in an executable that you +-distribute. +- +- 7. You may place library facilities that are a work based on the +-Library side-by-side in a single library together with other library +-facilities not covered by this License, and distribute such a combined +-library, provided that the separate distribution of the work based on +-the Library and of the other library facilities is otherwise +-permitted, and provided that you do these two things: +- +- a) Accompany the combined library with a copy of the same work +- based on the Library, uncombined with any other library +- facilities. This must be distributed under the terms of the +- Sections above. +- +- b) Give prominent notice with the combined library of the fact +- that part of it is a work based on the Library, and explaining +- where to find the accompanying uncombined form of the same work. +- +- 8. You may not copy, modify, sublicense, link with, or distribute +-the Library except as expressly provided under this License. Any +-attempt otherwise to copy, modify, sublicense, link with, or +-distribute the Library is void, and will automatically terminate your +-rights under this License. However, parties who have received copies, +-or rights, from you under this License will not have their licenses +-terminated so long as such parties remain in full compliance. +- +- 9. You are not required to accept this License, since you have not +-signed it. However, nothing else grants you permission to modify or +-distribute the Library or its derivative works. These actions are +-prohibited by law if you do not accept this License. Therefore, by +-modifying or distributing the Library (or any work based on the +-Library), you indicate your acceptance of this License to do so, and +-all its terms and conditions for copying, distributing or modifying +-the Library or works based on it. +- +- 10. Each time you redistribute the Library (or any work based on the +-Library), the recipient automatically receives a license from the +-original licensor to copy, distribute, link with or modify the Library +-subject to these terms and conditions. You may not impose any further +-restrictions on the recipients' exercise of the rights granted herein. +-You are not responsible for enforcing compliance by third parties with +-this License. +- +- 11. If, as a consequence of a court judgment or allegation of patent +-infringement or for any other reason (not limited to patent issues), +-conditions are imposed on you (whether by court order, agreement or +-otherwise) that contradict the conditions of this License, they do not +-excuse you from the conditions of this License. If you cannot +-distribute so as to satisfy simultaneously your obligations under this +-License and any other pertinent obligations, then as a consequence you +-may not distribute the Library at all. For example, if a patent +-license would not permit royalty-free redistribution of the Library by +-all those who receive copies directly or indirectly through you, then +-the only way you could satisfy both it and this License would be to +-refrain entirely from distribution of the Library. +- +-If any portion of this section is held invalid or unenforceable under any +-particular circumstance, the balance of the section is intended to apply, +-and the section as a whole is intended to apply in other circumstances. +- +-It is not the purpose of this section to induce you to infringe any +-patents or other property right claims or to contest validity of any +-such claims; this section has the sole purpose of protecting the +-integrity of the free software distribution system which is +-implemented by public license practices. Many people have made +-generous contributions to the wide range of software distributed +-through that system in reliance on consistent application of that +-system; it is up to the author/donor to decide if he or she is willing +-to distribute software through any other system and a licensee cannot +-impose that choice. +- +-This section is intended to make thoroughly clear what is believed to +-be a consequence of the rest of this License. +- +- 12. If the distribution and/or use of the Library is restricted in +-certain countries either by patents or by copyrighted interfaces, the +-original copyright holder who places the Library under this License may add +-an explicit geographical distribution limitation excluding those countries, +-so that distribution is permitted only in or among countries not thus +-excluded. In such case, this License incorporates the limitation as if +-written in the body of this License. +- +- 13. The Free Software Foundation may publish revised and/or new +-versions of the Lesser General Public License from time to time. +-Such new versions will be similar in spirit to the present version, +-but may differ in detail to address new problems or concerns. +- +-Each version is given a distinguishing version number. If the Library +-specifies a version number of this License which applies to it and +-"any later version", you have the option of following the terms and +-conditions either of that version or of any later version published by +-the Free Software Foundation. If the Library does not specify a +-license version number, you may choose any version ever published by +-the Free Software Foundation. +- +- 14. If you wish to incorporate parts of the Library into other free +-programs whose distribution conditions are incompatible with these, +-write to the author to ask for permission. For software which is +-copyrighted by the Free Software Foundation, write to the Free +-Software Foundation; we sometimes make exceptions for this. Our +-decision will be guided by the two goals of preserving the free status +-of all derivatives of our free software and of promoting the sharing +-and reuse of software generally. +- +- NO WARRANTY +- +- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. +- +- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +-DAMAGES. +- +- END OF TERMS AND CONDITIONS +- +- How to Apply These Terms to Your New Libraries +- +- If you develop a new library, and you want it to be of the greatest +-possible use to the public, we recommend making it free software that +-everyone can redistribute and change. You can do so by permitting +-redistribution under these terms (or, alternatively, under the terms of the +-ordinary General Public License). +- +- To apply these terms, attach the following notices to the library. It is +-safest to attach them to the start of each source file to most effectively +-convey the exclusion of warranty; and each file should have at least the +-"copyright" line and a pointer to where the full notice is found. +- +- +- Copyright (C) +- +- This library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- This library 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 for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with this library; if not, write to the Free Software +- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +- +-Also add information on how to contact you by electronic and paper mail. +- +-You should also get your employer (if you work as a programmer) or your +-school, if any, to sign a "copyright disclaimer" for the library, if +-necessary. Here is a sample; alter the names: +- +- Yoyodyne, Inc., hereby disclaims all copyright interest in the +- library `Frob' (a library for tweaking knobs) written by James Random Hacker. +- +- , 1 April 1990 +- Ty Coon, President of Vice +- +-That's all there is to it! +diff --git a/COPYING.README b/COPYING.README +index de5b63215..11af93ca7 100644 +--- a/COPYING.README ++++ b/COPYING.README +@@ -2,17 +2,5 @@ Eigen is primarily MPL2 licensed. See COPYING.MPL2 and these links: + http://www.mozilla.org/MPL/2.0/ + http://www.mozilla.org/MPL/2.0/FAQ.html + +-Some files contain third-party code under BSD or LGPL licenses, whence the other +-COPYING.* files here. +- +-All the LGPL code is either LGPL 2.1-only, or LGPL 2.1-or-later. +-For this reason, the COPYING.LGPL file contains the LGPL 2.1 text. +- +-If you want to guarantee that the Eigen code that you are #including is licensed +-under the MPL2 and possibly more permissive licenses (like BSD), #define this +-preprocessor symbol: +- EIGEN_MPL2_ONLY +-For example, with most compilers, you could add this to your project CXXFLAGS: +- -DEIGEN_MPL2_ONLY +-This will cause a compilation error to be generated if you #include any code that is +-LGPL licensed. ++Some files contain third-party code under BSD or other MPL2-compatible licenses, ++whence the other COPYING.* files here. +\ No newline at end of file +diff --git a/Eigen/src/Core/util/NonMPL2.h b/Eigen/src/Core/util/NonMPL2.h +deleted file mode 100644 +index 1af67cf18..000000000 +--- a/Eigen/src/Core/util/NonMPL2.h ++++ /dev/null +@@ -1,3 +0,0 @@ +-#ifdef EIGEN_MPL2_ONLY +-#error Including non-MPL2 code in EIGEN_MPL2_ONLY mode +-#endif +diff --git a/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h b/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +index 5e632c4e2..8b6077601 100644 +--- a/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h ++++ b/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +@@ -24,8 +24,7 @@ namespace Eigen { + * \tparam Scalar the scalar type of the input matrices + * \tparam _UpLo The triangular part that will be used for the computations. It can be Lower + * or Upper. Default is Lower. +- * \tparam _OrderingType The ordering method to use, either AMDOrdering<> or NaturalOrdering<>. Default is AMDOrdering, +- * unless EIGEN_MPL2_ONLY is defined, in which case the default is NaturalOrdering. ++ * \tparam _OrderingType The ordering method to use, either AMDOrdering<> or NaturalOrdering<>. Default is AMDOrdering. + * + * \implsparsesolverconcept + * +diff --git a/bench/tensors/eigen_sycl_bench.sh b/bench/tensors/eigen_sycl_bench.sh +index 3f67b3d86..4cb8f7be4 100755 +--- a/bench/tensors/eigen_sycl_bench.sh ++++ b/bench/tensors/eigen_sycl_bench.sh +@@ -10,7 +10,6 @@ benchmark_main.cc \ + -march=native \ + -O3 \ + -DNDEBUG \ +--DEIGEN_MPL2_ONLY \ + -DEIGEN_USE_SYCL=1 \ + -DEIGEN_SYCL_LOCAL_MEM=1 \ + -no-serial-memop \ +diff --git a/bench/tensors/eigen_sycl_bench_contract.sh b/bench/tensors/eigen_sycl_bench_contract.sh +index 73fd6c4a0..3ab0138a1 100644 +--- a/bench/tensors/eigen_sycl_bench_contract.sh ++++ b/bench/tensors/eigen_sycl_bench_contract.sh +@@ -1,7 +1,7 @@ + rm -f tensor_contract_sycl_bench + : "${COMPUTECPP_PACKAGE_ROOT_DIR:?Need to set COMPUTECPP_PACKAGE_ROOT_DIR}" + echo "COMPUTECPP_PACKAGE_ROOT_DIR is set to: "$COMPUTECPP_PACKAGE_ROOT_DIR +-${COMPUTECPP_PACKAGE_ROOT_DIR}/bin/compute++ tensor_contract_sycl_bench.cc -I ../../ -I ${COMPUTECPP_PACKAGE_ROOT_DIR}/include/ -std=c++11 -O3 -DNDEBUG -DEIGEN_MPL2_ONLY -DEIGEN_USE_SYCL=1 -no-serial-memop -mllvm -inline-threshold=10000 -fsycl-ih-last -sycl-driver -Xclang -cl-mad-enable -lOpenCL -lComputeCpp -lpthread -o tensor_contract_sycl_bench ${@:1} ++${COMPUTECPP_PACKAGE_ROOT_DIR}/bin/compute++ tensor_contract_sycl_bench.cc -I ../../ -I ${COMPUTECPP_PACKAGE_ROOT_DIR}/include/ -std=c++11 -O3 -DNDEBUG -DEIGEN_USE_SYCL=1 -no-serial-memop -mllvm -inline-threshold=10000 -fsycl-ih-last -sycl-driver -Xclang -cl-mad-enable -lOpenCL -lComputeCpp -lpthread -o tensor_contract_sycl_bench ${@:1} + export LD_LIBRARY_PATH=${COMPUTECPP_PACKAGE_ROOT_DIR}/lib:$LD_LIBRARY_PATH + ./tensor_contract_sycl_bench + +diff --git a/doc/PreprocessorDirectives.dox b/doc/PreprocessorDirectives.dox +index eda0d1961..2b5cb1b92 100644 +--- a/doc/PreprocessorDirectives.dox ++++ b/doc/PreprocessorDirectives.dox +@@ -92,9 +92,6 @@ run time. However, these assertions do cost time and can thus be turned off. + - \b eigen_assert - macro with one argument that is used inside %Eigen for assertions. By default, it is + basically defined to be \c assert, which aborts the program if the assertion is violated. Redefine this + macro if you want to do something else, like throwing an exception. +- - \b EIGEN_MPL2_ONLY - disable non MPL2 compatible features, or in other words disable the features which +- are still under the LGPL. +- + + \section TopicPreprocessorDirectivesPerformance Alignment, vectorization and performance tweaking + +diff --git a/test/mpl2only.cpp b/test/mpl2only.cpp +deleted file mode 100644 +index 296350d08..000000000 +--- a/test/mpl2only.cpp ++++ /dev/null +@@ -1,24 +0,0 @@ +-// This file is part of Eigen, a lightweight C++ template library +-// for linear algebra. +-// +-// Copyright (C) 2015 Gael Guennebaud +-// +-// 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/. +- +-#ifndef EIGEN_MPL2_ONLY +-#define EIGEN_MPL2_ONLY +-#endif +-#include +-#include +-#include +-#include +-#include +-#include +-#include +- +-int main() +-{ +- return 0; +-} +diff --git a/unsupported/Eigen/IterativeSolvers b/unsupported/Eigen/IterativeSolvers +index b53f10937..3ac64e9f8 100644 +--- a/unsupported/Eigen/IterativeSolvers ++++ b/unsupported/Eigen/IterativeSolvers +@@ -19,7 +19,6 @@ + * \defgroup IterativeLinearSolvers_Module IterativeLinearSolvers module + * This module aims to provide various iterative linear and non linear solver algorithms. + * It currently provides: +- * - a constrained conjugate gradient + * - a Householder GMRES implementation + * - an IDR(s) implementation + * - a DGMRES implementation +@@ -33,11 +32,6 @@ + + #include "../../Eigen/src/Core/util/DisableStupidWarnings.h" + +-#ifndef EIGEN_MPL2_ONLY +-#include "src/IterativeSolvers/IterationController.h" +-#include "src/IterativeSolvers/ConstrainedConjGrad.h" +-#endif +- + #include "src/IterativeSolvers/IncompleteLU.h" + #include "src/IterativeSolvers/GMRES.h" + #include "src/IterativeSolvers/DGMRES.h" +diff --git a/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h b/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +deleted file mode 100644 +index e7d70f39d..000000000 +--- a/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h ++++ /dev/null +@@ -1,187 +0,0 @@ +-// This file is part of Eigen, a lightweight C++ template library +-// for linear algebra. +-// +-// Copyright (C) 2008 Gael Guennebaud +- +-/* NOTE The functions of this file have been adapted from the GMM++ library */ +- +-//======================================================================== +-// +-// Copyright (C) 2002-2007 Yves Renard +-// +-// This file is a part of GETFEM++ +-// +-// Getfem++ is free software; you can redistribute it and/or modify +-// it under the terms of the GNU Lesser General Public License as +-// published by the Free Software Foundation; version 2.1 of the License. +-// +-// This program 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 for more details. +-// You should have received a copy of the GNU Lesser General Public +-// License along with this program; if not, write to the Free Software +-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, +-// USA. +-// +-//======================================================================== +- +-#include "../../../../Eigen/src/Core/util/NonMPL2.h" +- +-#ifndef EIGEN_CONSTRAINEDCG_H +-#define EIGEN_CONSTRAINEDCG_H +- +-#include "../../../../Eigen/Core" +- +-namespace Eigen { +- +-namespace internal { +- +-/** \ingroup IterativeLinearSolvers_Module +- * Compute the pseudo inverse of the non-square matrix C such that +- * \f$ CINV = (C * C^T)^{-1} * C \f$ based on a conjugate gradient method. +- * +- * This function is internally used by constrained_cg. +- */ +-template +-void pseudo_inverse(const CMatrix &C, CINVMatrix &CINV) +-{ +- // optimisable : copie de la ligne, precalcul de C * trans(C). +- typedef typename CMatrix::Scalar Scalar; +- typedef typename CMatrix::Index Index; +- // FIXME use sparse vectors ? +- typedef Matrix TmpVec; +- +- Index rows = C.rows(), cols = C.cols(); +- +- TmpVec d(rows), e(rows), l(cols), p(rows), q(rows), r(rows); +- Scalar rho, rho_1, alpha; +- d.setZero(); +- +- typedef Triplet T; +- std::vector tripletList; +- +- for (Index i = 0; i < rows; ++i) +- { +- d[i] = 1.0; +- rho = 1.0; +- e.setZero(); +- r = d; +- p = d; +- +- while (rho >= 1e-38) +- { /* conjugate gradient to compute e */ +- /* which is the i-th row of inv(C * trans(C)) */ +- l = C.transpose() * p; +- q = C * l; +- alpha = rho / p.dot(q); +- e += alpha * p; +- r += -alpha * q; +- rho_1 = rho; +- rho = r.dot(r); +- p = (rho/rho_1) * p + r; +- } +- +- l = C.transpose() * e; // l is the i-th row of CINV +- // FIXME add a generic "prune/filter" expression for both dense and sparse object to sparse +- for (Index j=0; j +-void constrained_cg(const TMatrix& A, const CMatrix& C, VectorX& x, +- const VectorB& b, const VectorF& f, IterationController &iter) +-{ +- using std::sqrt; +- typedef typename TMatrix::Scalar Scalar; +- typedef typename TMatrix::Index Index; +- typedef Matrix TmpVec; +- +- Scalar rho = 1.0, rho_1, lambda, gamma; +- Index xSize = x.size(); +- TmpVec p(xSize), q(xSize), q2(xSize), +- r(xSize), old_z(xSize), z(xSize), +- memox(xSize); +- std::vector satured(C.rows()); +- p.setZero(); +- iter.setRhsNorm(sqrt(b.dot(b))); // gael vect_sp(PS, b, b) +- if (iter.rhsNorm() == 0.0) iter.setRhsNorm(1.0); +- +- SparseMatrix CINV(C.rows(), C.cols()); +- pseudo_inverse(C, CINV); +- +- while(true) +- { +- // computation of residual +- old_z = z; +- memox = x; +- r = b; +- r += A * -x; +- z = r; +- bool transition = false; +- for (Index i = 0; i < C.rows(); ++i) +- { +- Scalar al = C.row(i).dot(x) - f.coeff(i); +- if (al >= -1.0E-15) +- { +- if (!satured[i]) +- { +- satured[i] = true; +- transition = true; +- } +- Scalar bb = CINV.row(i).dot(z); +- if (bb > 0.0) +- // FIXME: we should allow that: z += -bb * C.row(i); +- for (typename CMatrix::InnerIterator it(C,i); it; ++it) +- z.coeffRef(it.index()) -= bb*it.value(); +- } +- else +- satured[i] = false; +- } +- +- // descent direction +- rho_1 = rho; +- rho = r.dot(z); +- +- if (iter.finished(rho)) break; +- if (transition || iter.first()) gamma = 0.0; +- else gamma = (std::max)(0.0, (rho - old_z.dot(z)) / rho_1); +- p = z + gamma*p; +- +- ++iter; +- // one dimensionnal optimization +- q = A * p; +- lambda = rho / q.dot(p); +- for (Index i = 0; i < C.rows(); ++i) +- { +- if (!satured[i]) +- { +- Scalar bb = C.row(i).dot(p) - f[i]; +- if (bb > 0.0) +- lambda = (std::min)(lambda, (f.coeff(i)-C.row(i).dot(x)) / bb); +- } +- } +- x += lambda * p; +- memox -= x; +- } +-} +- +-} // end namespace internal +- +-} // end namespace Eigen +- +-#endif // EIGEN_CONSTRAINEDCG_H +diff --git a/unsupported/Eigen/src/IterativeSolvers/IterationController.h b/unsupported/Eigen/src/IterativeSolvers/IterationController.h +deleted file mode 100644 +index a116e09e2..000000000 +--- a/unsupported/Eigen/src/IterativeSolvers/IterationController.h ++++ /dev/null +@@ -1,154 +0,0 @@ +-// This file is part of Eigen, a lightweight C++ template library +-// for linear algebra. +-// +-// Copyright (C) 2008-2009 Gael Guennebaud +- +-/* NOTE The class IterationController has been adapted from the iteration +- * class of the GMM++ and ITL libraries. +- */ +- +-//======================================================================= +-// Copyright (C) 1997-2001 +-// Authors: Andrew Lumsdaine +-// Lie-Quan Lee +-// +-// This file is part of the Iterative Template Library +-// +-// You should have received a copy of the License Agreement for the +-// Iterative Template Library along with the software; see the +-// file LICENSE. +-// +-// Permission to modify the code and to distribute modified code is +-// granted, provided the text of this NOTICE is retained, a notice that +-// the code was modified is included with the above COPYRIGHT NOTICE and +-// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE +-// file is distributed with the modified code. +-// +-// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. +-// By way of example, but not limitation, Licensor MAKES NO +-// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY +-// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS +-// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS +-// OR OTHER RIGHTS. +-//======================================================================= +- +-//======================================================================== +-// +-// Copyright (C) 2002-2007 Yves Renard +-// +-// This file is a part of GETFEM++ +-// +-// Getfem++ is free software; you can redistribute it and/or modify +-// it under the terms of the GNU Lesser General Public License as +-// published by the Free Software Foundation; version 2.1 of the License. +-// +-// This program 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 for more details. +-// You should have received a copy of the GNU Lesser General Public +-// License along with this program; if not, write to the Free Software +-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, +-// USA. +-// +-//======================================================================== +- +-#include "../../../../Eigen/src/Core/util/NonMPL2.h" +- +-#ifndef EIGEN_ITERATION_CONTROLLER_H +-#define EIGEN_ITERATION_CONTROLLER_H +- +-namespace Eigen { +- +-/** \ingroup IterativeLinearSolvers_Module +- * \class IterationController +- * +- * \brief Controls the iterations of the iterative solvers +- * +- * This class has been adapted from the iteration class of GMM++ and ITL libraries. +- * +- */ +-class IterationController +-{ +- protected : +- double m_rhsn; ///< Right hand side norm +- size_t m_maxiter; ///< Max. number of iterations +- int m_noise; ///< if noise > 0 iterations are printed +- double m_resmax; ///< maximum residual +- double m_resminreach, m_resadd; +- size_t m_nit; ///< iteration number +- double m_res; ///< last computed residual +- bool m_written; +- void (*m_callback)(const IterationController&); +- public : +- +- void init() +- { +- m_nit = 0; m_res = 0.0; m_written = false; +- m_resminreach = 1E50; m_resadd = 0.0; +- m_callback = 0; +- } +- +- IterationController(double r = 1.0E-8, int noi = 0, size_t mit = size_t(-1)) +- : m_rhsn(1.0), m_maxiter(mit), m_noise(noi), m_resmax(r) { init(); } +- +- void operator ++(int) { m_nit++; m_written = false; m_resadd += m_res; } +- void operator ++() { (*this)++; } +- +- bool first() { return m_nit == 0; } +- +- /* get/set the "noisyness" (verbosity) of the solvers */ +- int noiseLevel() const { return m_noise; } +- void setNoiseLevel(int n) { m_noise = n; } +- void reduceNoiseLevel() { if (m_noise > 0) m_noise--; } +- +- double maxResidual() const { return m_resmax; } +- void setMaxResidual(double r) { m_resmax = r; } +- +- double residual() const { return m_res; } +- +- /* change the user-definable callback, called after each iteration */ +- void setCallback(void (*t)(const IterationController&)) +- { +- m_callback = t; +- } +- +- size_t iteration() const { return m_nit; } +- void setIteration(size_t i) { m_nit = i; } +- +- size_t maxIterarions() const { return m_maxiter; } +- void setMaxIterations(size_t i) { m_maxiter = i; } +- +- double rhsNorm() const { return m_rhsn; } +- void setRhsNorm(double r) { m_rhsn = r; } +- +- bool converged() const { return m_res <= m_rhsn * m_resmax; } +- bool converged(double nr) +- { +- using std::abs; +- m_res = abs(nr); +- m_resminreach = (std::min)(m_resminreach, m_res); +- return converged(); +- } +- template bool converged(const VectorType &v) +- { return converged(v.squaredNorm()); } +- +- bool finished(double nr) +- { +- if (m_callback) m_callback(*this); +- if (m_noise > 0 && !m_written) +- { +- converged(nr); +- m_written = true; +- } +- return (m_nit >= m_maxiter || converged(nr)); +- } +- template +- bool finished(const MatrixBase &v) +- { return finished(double(v.squaredNorm())); } +- +-}; +- +-} // end namespace Eigen +- +-#endif // EIGEN_ITERATION_CONTROLLER_H +-- +2.48.1 + diff --git a/meta-oe/recipes-support/libeigen/libeigen/0002-Remove-LGPL-Code-and-references.patch b/meta-oe/recipes-support/libeigen/libeigen/0002-Remove-LGPL-Code-and-references.patch deleted file mode 100644 index 2d19bc23c8..0000000000 --- a/meta-oe/recipes-support/libeigen/libeigen/0002-Remove-LGPL-Code-and-references.patch +++ /dev/null @@ -1,1040 +0,0 @@ -From e63a6950dbebf4dd95e5c74c423c06fd65df5182 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Antonio=20S=C3=A1nchez?= -Date: Wed, 8 Feb 2023 01:25:06 +0000 -Subject: [PATCH] Remove LGPL Code and references. - -Upstream-Status: Backport [https://gitlab.com/libeigen/eigen/-/commit/e256ad1823c2eddd6954241ddc99bfeb7bb29cb3] ---- - COPYING.LGPL | 502 ------------------ - COPYING.README | 16 +- - Eigen/src/Core/util/NonMPL2.h | 3 - - .../IncompleteCholesky.h | 3 +- - bench/tensors/eigen_sycl_bench.sh | 1 - - bench/tensors/eigen_sycl_bench_contract.sh | 2 +- - doc/PreprocessorDirectives.dox | 3 - - test/CMakeLists.txt | 1 - - test/mpl2only.cpp | 24 - - unsupported/Eigen/IterativeSolvers | 6 - - .../IterativeSolvers/ConstrainedConjGrad.h | 187 ------- - .../IterativeSolvers/IterationController.h | 154 ------ - 12 files changed, 4 insertions(+), 898 deletions(-) - delete mode 100644 COPYING.LGPL - delete mode 100644 Eigen/src/Core/util/NonMPL2.h - delete mode 100644 test/mpl2only.cpp - delete mode 100644 unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h - delete mode 100644 unsupported/Eigen/src/IterativeSolvers/IterationController.h - -diff --git a/COPYING.LGPL b/COPYING.LGPL -deleted file mode 100644 -index 4362b4915..000000000 ---- a/COPYING.LGPL -+++ /dev/null -@@ -1,502 +0,0 @@ -- GNU LESSER GENERAL PUBLIC LICENSE -- Version 2.1, February 1999 -- -- Copyright (C) 1991, 1999 Free Software Foundation, Inc. -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -- Everyone is permitted to copy and distribute verbatim copies -- of this license document, but changing it is not allowed. -- --[This is the first released version of the Lesser GPL. It also counts -- as the successor of the GNU Library Public License, version 2, hence -- the version number 2.1.] -- -- Preamble -- -- The licenses for most software are designed to take away your --freedom to share and change it. By contrast, the GNU General Public --Licenses are intended to guarantee your freedom to share and change --free software--to make sure the software is free for all its users. -- -- This license, the Lesser General Public License, applies to some --specially designated software packages--typically libraries--of the --Free Software Foundation and other authors who decide to use it. You --can use it too, but we suggest you first think carefully about whether --this license or the ordinary General Public License is the better --strategy to use in any particular case, based on the explanations below. -- -- When we speak of free software, we are referring to freedom of use, --not price. Our General Public Licenses are designed to make sure that --you have the freedom to distribute copies of free software (and charge --for this service if you wish); that you receive source code or can get --it if you want it; that you can change the software and use pieces of --it in new free programs; and that you are informed that you can do --these things. -- -- To protect your rights, we need to make restrictions that forbid --distributors to deny you these rights or to ask you to surrender these --rights. These restrictions translate to certain responsibilities for --you if you distribute copies of the library or if you modify it. -- -- For example, if you distribute copies of the library, whether gratis --or for a fee, you must give the recipients all the rights that we gave --you. You must make sure that they, too, receive or can get the source --code. If you link other code with the library, you must provide --complete object files to the recipients, so that they can relink them --with the library after making changes to the library and recompiling --it. And you must show them these terms so they know their rights. -- -- We protect your rights with a two-step method: (1) we copyright the --library, and (2) we offer you this license, which gives you legal --permission to copy, distribute and/or modify the library. -- -- To protect each distributor, we want to make it very clear that --there is no warranty for the free library. Also, if the library is --modified by someone else and passed on, the recipients should know --that what they have is not the original version, so that the original --author's reputation will not be affected by problems that might be --introduced by others. -- -- Finally, software patents pose a constant threat to the existence of --any free program. We wish to make sure that a company cannot --effectively restrict the users of a free program by obtaining a --restrictive license from a patent holder. Therefore, we insist that --any patent license obtained for a version of the library must be --consistent with the full freedom of use specified in this license. -- -- Most GNU software, including some libraries, is covered by the --ordinary GNU General Public License. This license, the GNU Lesser --General Public License, applies to certain designated libraries, and --is quite different from the ordinary General Public License. We use --this license for certain libraries in order to permit linking those --libraries into non-free programs. -- -- When a program is linked with a library, whether statically or using --a shared library, the combination of the two is legally speaking a --combined work, a derivative of the original library. The ordinary --General Public License therefore permits such linking only if the --entire combination fits its criteria of freedom. The Lesser General --Public License permits more lax criteria for linking other code with --the library. -- -- We call this license the "Lesser" General Public License because it --does Less to protect the user's freedom than the ordinary General --Public License. It also provides other free software developers Less --of an advantage over competing non-free programs. These disadvantages --are the reason we use the ordinary General Public License for many --libraries. However, the Lesser license provides advantages in certain --special circumstances. -- -- For example, on rare occasions, there may be a special need to --encourage the widest possible use of a certain library, so that it becomes --a de-facto standard. To achieve this, non-free programs must be --allowed to use the library. A more frequent case is that a free --library does the same job as widely used non-free libraries. In this --case, there is little to gain by limiting the free library to free --software only, so we use the Lesser General Public License. -- -- In other cases, permission to use a particular library in non-free --programs enables a greater number of people to use a large body of --free software. For example, permission to use the GNU C Library in --non-free programs enables many more people to use the whole GNU --operating system, as well as its variant, the GNU/Linux operating --system. -- -- Although the Lesser General Public License is Less protective of the --users' freedom, it does ensure that the user of a program that is --linked with the Library has the freedom and the wherewithal to run --that program using a modified version of the Library. -- -- The precise terms and conditions for copying, distribution and --modification follow. Pay close attention to the difference between a --"work based on the library" and a "work that uses the library". The --former contains code derived from the library, whereas the latter must --be combined with the library in order to run. -- -- GNU LESSER GENERAL PUBLIC LICENSE -- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -- -- 0. This License Agreement applies to any software library or other --program which contains a notice placed by the copyright holder or --other authorized party saying it may be distributed under the terms of --this Lesser General Public License (also called "this License"). --Each licensee is addressed as "you". -- -- A "library" means a collection of software functions and/or data --prepared so as to be conveniently linked with application programs --(which use some of those functions and data) to form executables. -- -- The "Library", below, refers to any such software library or work --which has been distributed under these terms. A "work based on the --Library" means either the Library or any derivative work under --copyright law: that is to say, a work containing the Library or a --portion of it, either verbatim or with modifications and/or translated --straightforwardly into another language. (Hereinafter, translation is --included without limitation in the term "modification".) -- -- "Source code" for a work means the preferred form of the work for --making modifications to it. For a library, complete source code means --all the source code for all modules it contains, plus any associated --interface definition files, plus the scripts used to control compilation --and installation of the library. -- -- Activities other than copying, distribution and modification are not --covered by this License; they are outside its scope. The act of --running a program using the Library is not restricted, and output from --such a program is covered only if its contents constitute a work based --on the Library (independent of the use of the Library in a tool for --writing it). Whether that is true depends on what the Library does --and what the program that uses the Library does. -- -- 1. You may copy and distribute verbatim copies of the Library's --complete source code as you receive it, in any medium, provided that --you conspicuously and appropriately publish on each copy an --appropriate copyright notice and disclaimer of warranty; keep intact --all the notices that refer to this License and to the absence of any --warranty; and distribute a copy of this License along with the --Library. -- -- You may charge a fee for the physical act of transferring a copy, --and you may at your option offer warranty protection in exchange for a --fee. -- -- 2. You may modify your copy or copies of the Library or any portion --of it, thus forming a work based on the Library, and copy and --distribute such modifications or work under the terms of Section 1 --above, provided that you also meet all of these conditions: -- -- a) The modified work must itself be a software library. -- -- b) You must cause the files modified to carry prominent notices -- stating that you changed the files and the date of any change. -- -- c) You must cause the whole of the work to be licensed at no -- charge to all third parties under the terms of this License. -- -- d) If a facility in the modified Library refers to a function or a -- table of data to be supplied by an application program that uses -- the facility, other than as an argument passed when the facility -- is invoked, then you must make a good faith effort to ensure that, -- in the event an application does not supply such function or -- table, the facility still operates, and performs whatever part of -- its purpose remains meaningful. -- -- (For example, a function in a library to compute square roots has -- a purpose that is entirely well-defined independent of the -- application. Therefore, Subsection 2d requires that any -- application-supplied function or table used by this function must -- be optional: if the application does not supply it, the square -- root function must still compute square roots.) -- --These requirements apply to the modified work as a whole. If --identifiable sections of that work are not derived from the Library, --and can be reasonably considered independent and separate works in --themselves, then this License, and its terms, do not apply to those --sections when you distribute them as separate works. But when you --distribute the same sections as part of a whole which is a work based --on the Library, the distribution of the whole must be on the terms of --this License, whose permissions for other licensees extend to the --entire whole, and thus to each and every part regardless of who wrote --it. -- --Thus, it is not the intent of this section to claim rights or contest --your rights to work written entirely by you; rather, the intent is to --exercise the right to control the distribution of derivative or --collective works based on the Library. -- --In addition, mere aggregation of another work not based on the Library --with the Library (or with a work based on the Library) on a volume of --a storage or distribution medium does not bring the other work under --the scope of this License. -- -- 3. You may opt to apply the terms of the ordinary GNU General Public --License instead of this License to a given copy of the Library. To do --this, you must alter all the notices that refer to this License, so --that they refer to the ordinary GNU General Public License, version 2, --instead of to this License. (If a newer version than version 2 of the --ordinary GNU General Public License has appeared, then you can specify --that version instead if you wish.) Do not make any other change in --these notices. -- -- Once this change is made in a given copy, it is irreversible for --that copy, so the ordinary GNU General Public License applies to all --subsequent copies and derivative works made from that copy. -- -- This option is useful when you wish to copy part of the code of --the Library into a program that is not a library. -- -- 4. You may copy and distribute the Library (or a portion or --derivative of it, under Section 2) in object code or executable form --under the terms of Sections 1 and 2 above provided that you accompany --it with the complete corresponding machine-readable source code, which --must be distributed under the terms of Sections 1 and 2 above on a --medium customarily used for software interchange. -- -- If distribution of object code is made by offering access to copy --from a designated place, then offering equivalent access to copy the --source code from the same place satisfies the requirement to --distribute the source code, even though third parties are not --compelled to copy the source along with the object code. -- -- 5. A program that contains no derivative of any portion of the --Library, but is designed to work with the Library by being compiled or --linked with it, is called a "work that uses the Library". Such a --work, in isolation, is not a derivative work of the Library, and --therefore falls outside the scope of this License. -- -- However, linking a "work that uses the Library" with the Library --creates an executable that is a derivative of the Library (because it --contains portions of the Library), rather than a "work that uses the --library". The executable is therefore covered by this License. --Section 6 states terms for distribution of such executables. -- -- When a "work that uses the Library" uses material from a header file --that is part of the Library, the object code for the work may be a --derivative work of the Library even though the source code is not. --Whether this is true is especially significant if the work can be --linked without the Library, or if the work is itself a library. The --threshold for this to be true is not precisely defined by law. -- -- If such an object file uses only numerical parameters, data --structure layouts and accessors, and small macros and small inline --functions (ten lines or less in length), then the use of the object --file is unrestricted, regardless of whether it is legally a derivative --work. (Executables containing this object code plus portions of the --Library will still fall under Section 6.) -- -- Otherwise, if the work is a derivative of the Library, you may --distribute the object code for the work under the terms of Section 6. --Any executables containing that work also fall under Section 6, --whether or not they are linked directly with the Library itself. -- -- 6. As an exception to the Sections above, you may also combine or --link a "work that uses the Library" with the Library to produce a --work containing portions of the Library, and distribute that work --under terms of your choice, provided that the terms permit --modification of the work for the customer's own use and reverse --engineering for debugging such modifications. -- -- You must give prominent notice with each copy of the work that the --Library is used in it and that the Library and its use are covered by --this License. You must supply a copy of this License. If the work --during execution displays copyright notices, you must include the --copyright notice for the Library among them, as well as a reference --directing the user to the copy of this License. Also, you must do one --of these things: -- -- a) Accompany the work with the complete corresponding -- machine-readable source code for the Library including whatever -- changes were used in the work (which must be distributed under -- Sections 1 and 2 above); and, if the work is an executable linked -- with the Library, with the complete machine-readable "work that -- uses the Library", as object code and/or source code, so that the -- user can modify the Library and then relink to produce a modified -- executable containing the modified Library. (It is understood -- that the user who changes the contents of definitions files in the -- Library will not necessarily be able to recompile the application -- to use the modified definitions.) -- -- b) Use a suitable shared library mechanism for linking with the -- Library. A suitable mechanism is one that (1) uses at run time a -- copy of the library already present on the user's computer system, -- rather than copying library functions into the executable, and (2) -- will operate properly with a modified version of the library, if -- the user installs one, as long as the modified version is -- interface-compatible with the version that the work was made with. -- -- c) Accompany the work with a written offer, valid for at -- least three years, to give the same user the materials -- specified in Subsection 6a, above, for a charge no more -- than the cost of performing this distribution. -- -- d) If distribution of the work is made by offering access to copy -- from a designated place, offer equivalent access to copy the above -- specified materials from the same place. -- -- e) Verify that the user has already received a copy of these -- materials or that you have already sent this user a copy. -- -- For an executable, the required form of the "work that uses the --Library" must include any data and utility programs needed for --reproducing the executable from it. However, as a special exception, --the materials to be distributed need not include anything that is --normally distributed (in either source or binary form) with the major --components (compiler, kernel, and so on) of the operating system on --which the executable runs, unless that component itself accompanies --the executable. -- -- It may happen that this requirement contradicts the license --restrictions of other proprietary libraries that do not normally --accompany the operating system. Such a contradiction means you cannot --use both them and the Library together in an executable that you --distribute. -- -- 7. You may place library facilities that are a work based on the --Library side-by-side in a single library together with other library --facilities not covered by this License, and distribute such a combined --library, provided that the separate distribution of the work based on --the Library and of the other library facilities is otherwise --permitted, and provided that you do these two things: -- -- a) Accompany the combined library with a copy of the same work -- based on the Library, uncombined with any other library -- facilities. This must be distributed under the terms of the -- Sections above. -- -- b) Give prominent notice with the combined library of the fact -- that part of it is a work based on the Library, and explaining -- where to find the accompanying uncombined form of the same work. -- -- 8. You may not copy, modify, sublicense, link with, or distribute --the Library except as expressly provided under this License. Any --attempt otherwise to copy, modify, sublicense, link with, or --distribute the Library is void, and will automatically terminate your --rights under this License. However, parties who have received copies, --or rights, from you under this License will not have their licenses --terminated so long as such parties remain in full compliance. -- -- 9. You are not required to accept this License, since you have not --signed it. However, nothing else grants you permission to modify or --distribute the Library or its derivative works. These actions are --prohibited by law if you do not accept this License. Therefore, by --modifying or distributing the Library (or any work based on the --Library), you indicate your acceptance of this License to do so, and --all its terms and conditions for copying, distributing or modifying --the Library or works based on it. -- -- 10. Each time you redistribute the Library (or any work based on the --Library), the recipient automatically receives a license from the --original licensor to copy, distribute, link with or modify the Library --subject to these terms and conditions. You may not impose any further --restrictions on the recipients' exercise of the rights granted herein. --You are not responsible for enforcing compliance by third parties with --this License. -- -- 11. If, as a consequence of a court judgment or allegation of patent --infringement or for any other reason (not limited to patent issues), --conditions are imposed on you (whether by court order, agreement or --otherwise) that contradict the conditions of this License, they do not --excuse you from the conditions of this License. If you cannot --distribute so as to satisfy simultaneously your obligations under this --License and any other pertinent obligations, then as a consequence you --may not distribute the Library at all. For example, if a patent --license would not permit royalty-free redistribution of the Library by --all those who receive copies directly or indirectly through you, then --the only way you could satisfy both it and this License would be to --refrain entirely from distribution of the Library. -- --If any portion of this section is held invalid or unenforceable under any --particular circumstance, the balance of the section is intended to apply, --and the section as a whole is intended to apply in other circumstances. -- --It is not the purpose of this section to induce you to infringe any --patents or other property right claims or to contest validity of any --such claims; this section has the sole purpose of protecting the --integrity of the free software distribution system which is --implemented by public license practices. Many people have made --generous contributions to the wide range of software distributed --through that system in reliance on consistent application of that --system; it is up to the author/donor to decide if he or she is willing --to distribute software through any other system and a licensee cannot --impose that choice. -- --This section is intended to make thoroughly clear what is believed to --be a consequence of the rest of this License. -- -- 12. If the distribution and/or use of the Library is restricted in --certain countries either by patents or by copyrighted interfaces, the --original copyright holder who places the Library under this License may add --an explicit geographical distribution limitation excluding those countries, --so that distribution is permitted only in or among countries not thus --excluded. In such case, this License incorporates the limitation as if --written in the body of this License. -- -- 13. The Free Software Foundation may publish revised and/or new --versions of the Lesser General Public License from time to time. --Such new versions will be similar in spirit to the present version, --but may differ in detail to address new problems or concerns. -- --Each version is given a distinguishing version number. If the Library --specifies a version number of this License which applies to it and --"any later version", you have the option of following the terms and --conditions either of that version or of any later version published by --the Free Software Foundation. If the Library does not specify a --license version number, you may choose any version ever published by --the Free Software Foundation. -- -- 14. If you wish to incorporate parts of the Library into other free --programs whose distribution conditions are incompatible with these, --write to the author to ask for permission. For software which is --copyrighted by the Free Software Foundation, write to the Free --Software Foundation; we sometimes make exceptions for this. Our --decision will be guided by the two goals of preserving the free status --of all derivatives of our free software and of promoting the sharing --and reuse of software generally. -- -- NO WARRANTY -- -- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO --WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. --EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR --OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY --KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE --IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR --PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE --LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME --THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. -- -- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN --WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY --AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU --FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR --CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE --LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING --RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A --FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF --SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH --DAMAGES. -- -- END OF TERMS AND CONDITIONS -- -- How to Apply These Terms to Your New Libraries -- -- If you develop a new library, and you want it to be of the greatest --possible use to the public, we recommend making it free software that --everyone can redistribute and change. You can do so by permitting --redistribution under these terms (or, alternatively, under the terms of the --ordinary General Public License). -- -- To apply these terms, attach the following notices to the library. It is --safest to attach them to the start of each source file to most effectively --convey the exclusion of warranty; and each file should have at least the --"copyright" line and a pointer to where the full notice is found. -- -- -- Copyright (C) -- -- This library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- This library 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 for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with this library; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -- --Also add information on how to contact you by electronic and paper mail. -- --You should also get your employer (if you work as a programmer) or your --school, if any, to sign a "copyright disclaimer" for the library, if --necessary. Here is a sample; alter the names: -- -- Yoyodyne, Inc., hereby disclaims all copyright interest in the -- library `Frob' (a library for tweaking knobs) written by James Random Hacker. -- -- , 1 April 1990 -- Ty Coon, President of Vice -- --That's all there is to it! -diff --git a/COPYING.README b/COPYING.README -index de5b63215..11af93ca7 100644 ---- a/COPYING.README -+++ b/COPYING.README -@@ -2,17 +2,5 @@ Eigen is primarily MPL2 licensed. See COPYING.MPL2 and these links: - http://www.mozilla.org/MPL/2.0/ - http://www.mozilla.org/MPL/2.0/FAQ.html - --Some files contain third-party code under BSD or LGPL licenses, whence the other --COPYING.* files here. -- --All the LGPL code is either LGPL 2.1-only, or LGPL 2.1-or-later. --For this reason, the COPYING.LGPL file contains the LGPL 2.1 text. -- --If you want to guarantee that the Eigen code that you are #including is licensed --under the MPL2 and possibly more permissive licenses (like BSD), #define this --preprocessor symbol: -- EIGEN_MPL2_ONLY --For example, with most compilers, you could add this to your project CXXFLAGS: -- -DEIGEN_MPL2_ONLY --This will cause a compilation error to be generated if you #include any code that is --LGPL licensed. -+Some files contain third-party code under BSD or other MPL2-compatible licenses, -+whence the other COPYING.* files here. -\ No newline at end of file -diff --git a/Eigen/src/Core/util/NonMPL2.h b/Eigen/src/Core/util/NonMPL2.h -deleted file mode 100644 -index 1af67cf18..000000000 ---- a/Eigen/src/Core/util/NonMPL2.h -+++ /dev/null -@@ -1,3 +0,0 @@ --#ifdef EIGEN_MPL2_ONLY --#error Including non-MPL2 code in EIGEN_MPL2_ONLY mode --#endif -diff --git a/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h b/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h -index 7803fd817..1a5d7faeb 100644 ---- a/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h -+++ b/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h -@@ -24,8 +24,7 @@ namespace Eigen { - * \tparam Scalar the scalar type of the input matrices - * \tparam _UpLo The triangular part that will be used for the computations. It can be Lower - * or Upper. Default is Lower. -- * \tparam _OrderingType The ordering method to use, either AMDOrdering<> or NaturalOrdering<>. Default is AMDOrdering, -- * unless EIGEN_MPL2_ONLY is defined, in which case the default is NaturalOrdering. -+ * \tparam _OrderingType The ordering method to use, either AMDOrdering<> or NaturalOrdering<>. Default is AMDOrdering. - * - * \implsparsesolverconcept - * -diff --git a/bench/tensors/eigen_sycl_bench.sh b/bench/tensors/eigen_sycl_bench.sh -index 3f67b3d86..4cb8f7be4 100755 ---- a/bench/tensors/eigen_sycl_bench.sh -+++ b/bench/tensors/eigen_sycl_bench.sh -@@ -10,7 +10,6 @@ benchmark_main.cc \ - -march=native \ - -O3 \ - -DNDEBUG \ ---DEIGEN_MPL2_ONLY \ - -DEIGEN_USE_SYCL=1 \ - -DEIGEN_SYCL_LOCAL_MEM=1 \ - -no-serial-memop \ -diff --git a/bench/tensors/eigen_sycl_bench_contract.sh b/bench/tensors/eigen_sycl_bench_contract.sh -index 73fd6c4a0..3ab0138a1 100644 ---- a/bench/tensors/eigen_sycl_bench_contract.sh -+++ b/bench/tensors/eigen_sycl_bench_contract.sh -@@ -1,7 +1,7 @@ - rm -f tensor_contract_sycl_bench - : "${COMPUTECPP_PACKAGE_ROOT_DIR:?Need to set COMPUTECPP_PACKAGE_ROOT_DIR}" - echo "COMPUTECPP_PACKAGE_ROOT_DIR is set to: "$COMPUTECPP_PACKAGE_ROOT_DIR --${COMPUTECPP_PACKAGE_ROOT_DIR}/bin/compute++ tensor_contract_sycl_bench.cc -I ../../ -I ${COMPUTECPP_PACKAGE_ROOT_DIR}/include/ -std=c++11 -O3 -DNDEBUG -DEIGEN_MPL2_ONLY -DEIGEN_USE_SYCL=1 -no-serial-memop -mllvm -inline-threshold=10000 -fsycl-ih-last -sycl-driver -Xclang -cl-mad-enable -lOpenCL -lComputeCpp -lpthread -o tensor_contract_sycl_bench ${@:1} -+${COMPUTECPP_PACKAGE_ROOT_DIR}/bin/compute++ tensor_contract_sycl_bench.cc -I ../../ -I ${COMPUTECPP_PACKAGE_ROOT_DIR}/include/ -std=c++11 -O3 -DNDEBUG -DEIGEN_USE_SYCL=1 -no-serial-memop -mllvm -inline-threshold=10000 -fsycl-ih-last -sycl-driver -Xclang -cl-mad-enable -lOpenCL -lComputeCpp -lpthread -o tensor_contract_sycl_bench ${@:1} - export LD_LIBRARY_PATH=${COMPUTECPP_PACKAGE_ROOT_DIR}/lib:$LD_LIBRARY_PATH - ./tensor_contract_sycl_bench - -diff --git a/doc/PreprocessorDirectives.dox b/doc/PreprocessorDirectives.dox -index 0f545b086..b7d59ccbc 100644 ---- a/doc/PreprocessorDirectives.dox -+++ b/doc/PreprocessorDirectives.dox -@@ -92,9 +92,6 @@ run time. However, these assertions do cost time and can thus be turned off. - - \b eigen_assert - macro with one argument that is used inside %Eigen for assertions. By default, it is - basically defined to be \c assert, which aborts the program if the assertion is violated. Redefine this - macro if you want to do something else, like throwing an exception. -- - \b EIGEN_MPL2_ONLY - disable non MPL2 compatible features, or in other words disable the features which -- are still under the LGPL. -- - - \section TopicPreprocessorDirectivesPerformance Alignment, vectorization and performance tweaking - -diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt -index 5136f82aa..9f557743a 100644 ---- a/test/CMakeLists.txt -+++ b/test/CMakeLists.txt -@@ -277,7 +277,6 @@ ei_add_test(special_numbers) - ei_add_test(rvalue_types) - ei_add_test(dense_storage) - ei_add_test(ctorleak) --ei_add_test(mpl2only) - ei_add_test(inplace_decomposition) - ei_add_test(half_float) - ei_add_test(bfloat16_float) -diff --git a/test/mpl2only.cpp b/test/mpl2only.cpp -deleted file mode 100644 -index 296350d08..000000000 ---- a/test/mpl2only.cpp -+++ /dev/null -@@ -1,24 +0,0 @@ --// This file is part of Eigen, a lightweight C++ template library --// for linear algebra. --// --// Copyright (C) 2015 Gael Guennebaud --// --// 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/. -- --#ifndef EIGEN_MPL2_ONLY --#define EIGEN_MPL2_ONLY --#endif --#include --#include --#include --#include --#include --#include --#include -- --int main() --{ -- return 0; --} -diff --git a/unsupported/Eigen/IterativeSolvers b/unsupported/Eigen/IterativeSolvers -index a3f58d676..f045fb607 100644 ---- a/unsupported/Eigen/IterativeSolvers -+++ b/unsupported/Eigen/IterativeSolvers -@@ -19,7 +19,6 @@ - * \defgroup IterativeLinearSolvers_Module Iterative solvers module - * This module aims to provide various iterative linear and non linear solver algorithms. - * It currently provides: -- * - a constrained conjugate gradient - * - a Householder GMRES implementation - * - an IDR(s) implementation - * - a DGMRES implementation -@@ -33,11 +32,6 @@ - - #include "../../Eigen/src/Core/util/DisableStupidWarnings.h" - --#ifndef EIGEN_MPL2_ONLY --#include "src/IterativeSolvers/IterationController.h" --#include "src/IterativeSolvers/ConstrainedConjGrad.h" --#endif -- - #include "src/IterativeSolvers/IncompleteLU.h" - #include "src/IterativeSolvers/GMRES.h" - #include "src/IterativeSolvers/DGMRES.h" -diff --git a/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h b/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h -deleted file mode 100644 -index e7d70f39d..000000000 ---- a/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h -+++ /dev/null -@@ -1,187 +0,0 @@ --// This file is part of Eigen, a lightweight C++ template library --// for linear algebra. --// --// Copyright (C) 2008 Gael Guennebaud -- --/* NOTE The functions of this file have been adapted from the GMM++ library */ -- --//======================================================================== --// --// Copyright (C) 2002-2007 Yves Renard --// --// This file is a part of GETFEM++ --// --// Getfem++ is free software; you can redistribute it and/or modify --// it under the terms of the GNU Lesser General Public License as --// published by the Free Software Foundation; version 2.1 of the License. --// --// This program 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 for more details. --// You should have received a copy of the GNU Lesser General Public --// License along with this program; if not, write to the Free Software --// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, --// USA. --// --//======================================================================== -- --#include "../../../../Eigen/src/Core/util/NonMPL2.h" -- --#ifndef EIGEN_CONSTRAINEDCG_H --#define EIGEN_CONSTRAINEDCG_H -- --#include "../../../../Eigen/Core" -- --namespace Eigen { -- --namespace internal { -- --/** \ingroup IterativeLinearSolvers_Module -- * Compute the pseudo inverse of the non-square matrix C such that -- * \f$ CINV = (C * C^T)^{-1} * C \f$ based on a conjugate gradient method. -- * -- * This function is internally used by constrained_cg. -- */ --template --void pseudo_inverse(const CMatrix &C, CINVMatrix &CINV) --{ -- // optimisable : copie de la ligne, precalcul de C * trans(C). -- typedef typename CMatrix::Scalar Scalar; -- typedef typename CMatrix::Index Index; -- // FIXME use sparse vectors ? -- typedef Matrix TmpVec; -- -- Index rows = C.rows(), cols = C.cols(); -- -- TmpVec d(rows), e(rows), l(cols), p(rows), q(rows), r(rows); -- Scalar rho, rho_1, alpha; -- d.setZero(); -- -- typedef Triplet T; -- std::vector tripletList; -- -- for (Index i = 0; i < rows; ++i) -- { -- d[i] = 1.0; -- rho = 1.0; -- e.setZero(); -- r = d; -- p = d; -- -- while (rho >= 1e-38) -- { /* conjugate gradient to compute e */ -- /* which is the i-th row of inv(C * trans(C)) */ -- l = C.transpose() * p; -- q = C * l; -- alpha = rho / p.dot(q); -- e += alpha * p; -- r += -alpha * q; -- rho_1 = rho; -- rho = r.dot(r); -- p = (rho/rho_1) * p + r; -- } -- -- l = C.transpose() * e; // l is the i-th row of CINV -- // FIXME add a generic "prune/filter" expression for both dense and sparse object to sparse -- for (Index j=0; j --void constrained_cg(const TMatrix& A, const CMatrix& C, VectorX& x, -- const VectorB& b, const VectorF& f, IterationController &iter) --{ -- using std::sqrt; -- typedef typename TMatrix::Scalar Scalar; -- typedef typename TMatrix::Index Index; -- typedef Matrix TmpVec; -- -- Scalar rho = 1.0, rho_1, lambda, gamma; -- Index xSize = x.size(); -- TmpVec p(xSize), q(xSize), q2(xSize), -- r(xSize), old_z(xSize), z(xSize), -- memox(xSize); -- std::vector satured(C.rows()); -- p.setZero(); -- iter.setRhsNorm(sqrt(b.dot(b))); // gael vect_sp(PS, b, b) -- if (iter.rhsNorm() == 0.0) iter.setRhsNorm(1.0); -- -- SparseMatrix CINV(C.rows(), C.cols()); -- pseudo_inverse(C, CINV); -- -- while(true) -- { -- // computation of residual -- old_z = z; -- memox = x; -- r = b; -- r += A * -x; -- z = r; -- bool transition = false; -- for (Index i = 0; i < C.rows(); ++i) -- { -- Scalar al = C.row(i).dot(x) - f.coeff(i); -- if (al >= -1.0E-15) -- { -- if (!satured[i]) -- { -- satured[i] = true; -- transition = true; -- } -- Scalar bb = CINV.row(i).dot(z); -- if (bb > 0.0) -- // FIXME: we should allow that: z += -bb * C.row(i); -- for (typename CMatrix::InnerIterator it(C,i); it; ++it) -- z.coeffRef(it.index()) -= bb*it.value(); -- } -- else -- satured[i] = false; -- } -- -- // descent direction -- rho_1 = rho; -- rho = r.dot(z); -- -- if (iter.finished(rho)) break; -- if (transition || iter.first()) gamma = 0.0; -- else gamma = (std::max)(0.0, (rho - old_z.dot(z)) / rho_1); -- p = z + gamma*p; -- -- ++iter; -- // one dimensionnal optimization -- q = A * p; -- lambda = rho / q.dot(p); -- for (Index i = 0; i < C.rows(); ++i) -- { -- if (!satured[i]) -- { -- Scalar bb = C.row(i).dot(p) - f[i]; -- if (bb > 0.0) -- lambda = (std::min)(lambda, (f.coeff(i)-C.row(i).dot(x)) / bb); -- } -- } -- x += lambda * p; -- memox -= x; -- } --} -- --} // end namespace internal -- --} // end namespace Eigen -- --#endif // EIGEN_CONSTRAINEDCG_H -diff --git a/unsupported/Eigen/src/IterativeSolvers/IterationController.h b/unsupported/Eigen/src/IterativeSolvers/IterationController.h -deleted file mode 100644 -index a116e09e2..000000000 ---- a/unsupported/Eigen/src/IterativeSolvers/IterationController.h -+++ /dev/null -@@ -1,154 +0,0 @@ --// This file is part of Eigen, a lightweight C++ template library --// for linear algebra. --// --// Copyright (C) 2008-2009 Gael Guennebaud -- --/* NOTE The class IterationController has been adapted from the iteration -- * class of the GMM++ and ITL libraries. -- */ -- --//======================================================================= --// Copyright (C) 1997-2001 --// Authors: Andrew Lumsdaine --// Lie-Quan Lee --// --// This file is part of the Iterative Template Library --// --// You should have received a copy of the License Agreement for the --// Iterative Template Library along with the software; see the --// file LICENSE. --// --// Permission to modify the code and to distribute modified code is --// granted, provided the text of this NOTICE is retained, a notice that --// the code was modified is included with the above COPYRIGHT NOTICE and --// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE --// file is distributed with the modified code. --// --// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. --// By way of example, but not limitation, Licensor MAKES NO --// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY --// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS --// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS --// OR OTHER RIGHTS. --//======================================================================= -- --//======================================================================== --// --// Copyright (C) 2002-2007 Yves Renard --// --// This file is a part of GETFEM++ --// --// Getfem++ is free software; you can redistribute it and/or modify --// it under the terms of the GNU Lesser General Public License as --// published by the Free Software Foundation; version 2.1 of the License. --// --// This program 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 for more details. --// You should have received a copy of the GNU Lesser General Public --// License along with this program; if not, write to the Free Software --// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, --// USA. --// --//======================================================================== -- --#include "../../../../Eigen/src/Core/util/NonMPL2.h" -- --#ifndef EIGEN_ITERATION_CONTROLLER_H --#define EIGEN_ITERATION_CONTROLLER_H -- --namespace Eigen { -- --/** \ingroup IterativeLinearSolvers_Module -- * \class IterationController -- * -- * \brief Controls the iterations of the iterative solvers -- * -- * This class has been adapted from the iteration class of GMM++ and ITL libraries. -- * -- */ --class IterationController --{ -- protected : -- double m_rhsn; ///< Right hand side norm -- size_t m_maxiter; ///< Max. number of iterations -- int m_noise; ///< if noise > 0 iterations are printed -- double m_resmax; ///< maximum residual -- double m_resminreach, m_resadd; -- size_t m_nit; ///< iteration number -- double m_res; ///< last computed residual -- bool m_written; -- void (*m_callback)(const IterationController&); -- public : -- -- void init() -- { -- m_nit = 0; m_res = 0.0; m_written = false; -- m_resminreach = 1E50; m_resadd = 0.0; -- m_callback = 0; -- } -- -- IterationController(double r = 1.0E-8, int noi = 0, size_t mit = size_t(-1)) -- : m_rhsn(1.0), m_maxiter(mit), m_noise(noi), m_resmax(r) { init(); } -- -- void operator ++(int) { m_nit++; m_written = false; m_resadd += m_res; } -- void operator ++() { (*this)++; } -- -- bool first() { return m_nit == 0; } -- -- /* get/set the "noisyness" (verbosity) of the solvers */ -- int noiseLevel() const { return m_noise; } -- void setNoiseLevel(int n) { m_noise = n; } -- void reduceNoiseLevel() { if (m_noise > 0) m_noise--; } -- -- double maxResidual() const { return m_resmax; } -- void setMaxResidual(double r) { m_resmax = r; } -- -- double residual() const { return m_res; } -- -- /* change the user-definable callback, called after each iteration */ -- void setCallback(void (*t)(const IterationController&)) -- { -- m_callback = t; -- } -- -- size_t iteration() const { return m_nit; } -- void setIteration(size_t i) { m_nit = i; } -- -- size_t maxIterarions() const { return m_maxiter; } -- void setMaxIterations(size_t i) { m_maxiter = i; } -- -- double rhsNorm() const { return m_rhsn; } -- void setRhsNorm(double r) { m_rhsn = r; } -- -- bool converged() const { return m_res <= m_rhsn * m_resmax; } -- bool converged(double nr) -- { -- using std::abs; -- m_res = abs(nr); -- m_resminreach = (std::min)(m_resminreach, m_res); -- return converged(); -- } -- template bool converged(const VectorType &v) -- { return converged(v.squaredNorm()); } -- -- bool finished(double nr) -- { -- if (m_callback) m_callback(*this); -- if (m_noise > 0 && !m_written) -- { -- converged(nr); -- m_written = true; -- } -- return (m_nit >= m_maxiter || converged(nr)); -- } -- template -- bool finished(const MatrixBase &v) -- { return finished(double(v.squaredNorm())); } -- --}; -- --} // end namespace Eigen -- --#endif // EIGEN_ITERATION_CONTROLLER_H diff --git a/meta-oe/recipes-support/libeigen/libeigen_3.4.0.bb b/meta-oe/recipes-support/libeigen/libeigen_3.4.0.bb deleted file mode 100644 index f5f874941a..0000000000 --- a/meta-oe/recipes-support/libeigen/libeigen_3.4.0.bb +++ /dev/null @@ -1,31 +0,0 @@ -DESCRIPTION = "Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms." -HOMEPAGE = "http://eigen.tuxfamily.org/" -LICENSE = "MPL-2.0 & Apache-2.0 & BSD-3-Clause & GPL-2.0-only & Minpack" -# The GPL code is only used for benchmark tests and does not affect what is installed. -LICENSE:${PN} = "MPL-2.0 & Apache-2.0 & BSD-3-Clause & Minpack" -LICENSE:${PN}-dbg = "MPL-2.0 & Apache-2.0 & BSD-3-Clause & Minpack" -LICENSE:${PN}-dev = "MPL-2.0 & Apache-2.0 & BSD-3-Clause & Minpack" -LIC_FILES_CHKSUM = "file://COPYING.MPL2;md5=815ca599c9df247a0c7f619bab123dad \ - file://COPYING.APACHE;md5=8de23b8e93c63005353056b2475e9aa5 \ - file://COPYING.BSD;md5=2dd0510ee95e59ca28834b875bc96596 \ - file://COPYING.GPL;md5=d32239bcb673463ab874e80d47fae504 \ - file://COPYING.MINPACK;md5=71d91b0f75ce79a75d3108a72bef8116 \ -" - -SRC_URI = "git://gitlab.com/libeigen/eigen.git;protocol=http;branch=3.4 \ - file://0001-Default-eigen_packet_wrapper-constructor.patch \ - file://0002-Remove-LGPL-Code-and-references.patch \ -" - -SRCREV = "3147391d946bb4b6c68edd901f2add6ac1f31f8c" - - -inherit cmake - -FILES:${PN}-dev += "${datadir}/eigen3/cmake" - -# ${PN} is empty so we need to tweak -dev and -dbg package dependencies -RDEPENDS:${PN}-dev = "" -RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta-oe/recipes-support/libeigen/libeigen_3.4.1.bb b/meta-oe/recipes-support/libeigen/libeigen_3.4.1.bb new file mode 100644 index 0000000000..c5421e4621 --- /dev/null +++ b/meta-oe/recipes-support/libeigen/libeigen_3.4.1.bb @@ -0,0 +1,39 @@ +DESCRIPTION = "Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms." +HOMEPAGE = "http://eigen.tuxfamily.org/" +LICENSE = "MPL-2.0 & Apache-2.0 & BSD-3-Clause & GPL-2.0-only & Minpack" +# The GPL code is only used for benchmark tests and does not affect what is installed. +LICENSE:${PN} = "MPL-2.0 & Apache-2.0 & BSD-3-Clause & Minpack" +LICENSE:${PN}-dbg = "MPL-2.0 & Apache-2.0 & BSD-3-Clause & Minpack" +LICENSE:${PN}-dev = "MPL-2.0 & Apache-2.0 & BSD-3-Clause & Minpack" +LIC_FILES_CHKSUM = "file://COPYING.MPL2;md5=815ca599c9df247a0c7f619bab123dad \ + file://COPYING.APACHE;md5=8de23b8e93c63005353056b2475e9aa5 \ + file://COPYING.BSD;md5=2dd0510ee95e59ca28834b875bc96596 \ + file://COPYING.GPL;md5=d32239bcb673463ab874e80d47fae504 \ + file://COPYING.MINPACK;md5=71d91b0f75ce79a75d3108a72bef8116 \ +" + +SRC_URI = "git://gitlab.com/libeigen/eigen.git;protocol=http;branch=3.4 \ + file://0001-Remove-LGPL-Code-and-references.patch \ +" + +SRCREV = "d71c30c47858effcbd39967097a2d99ee48db464" + + +inherit cmake + +PACKAGECONFIG ??= "" + +PACKAGECONFIG[blas] = "-DEIGEN_BUILD_BLAS=ON,-DEIGEN_BUILD_BLAS=OFF,libgfortran" +PACKAGECONFIG[lapack] = "-DEIGEN_BUILD_LAPACK=ON,-DEIGEN_BUILD_LAPACK=OFF,libgfortran" + +EXTRA_OECMAKE += " \ + -DEIGEN_BUILD_TESTING=OFF \ +" + +FILES:${PN}-dev += "${datadir}/eigen3/cmake" + +# ${PN} is empty so we need to tweak -dev and -dbg package dependencies +RDEPENDS:${PN}-dev = "" +RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" + +BBCLASSEXTEND = "native nativesdk" -- cgit v1.2.3-54-g00ecf