o/escriba/escriba-5.2'>distro/escriba/escriba-5.2 LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
path: root/external/coinmp
AgeCommit message (Collapse)Author
2024-04-24use --binary flag when applying patches with patch from git-bashChristian Lohmaier
Change-Id: Idbd4ad7ad89dc727e2f0cf851c4c62f05d5b2a0c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166328 Tested-by: Jenkins Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
2023-06-14external/coinmap: Address ODR violationsStephan Bergmann
...since 2193650b3373ee1889961cfb72d1fe97f73e2c23 "external/coinmp: Update to CoinMP 1.8.4", as reported by <https://ci.libreoffice.org/job/lo_ubsan/2805/>, > ==25531==ERROR: AddressSanitizer: odr-violation (0x7f3df9756e40): > [1] size=4 'CbcOrClpEnvironmentIndex' /home/tdf/lode/jenkins/workspace/lo_ubsan/workdir/UnpackedTarball/coinmp/Clp/src/CbcOrClpParam.cpp:1236:5 > [2] size=4 'CbcOrClpEnvironmentIndex' CbcOrClpParam.cpp:1236:5 > These globals were registered at these points: > [1]: > #0 0x43e508 in __asan_register_globals.part.13 /home/tdf/lode/packages/llvm-llvmorg-12.0.1.src/compiler-rt/lib/asan/asan_globals.cpp:360 > #1 0x7f3df9252a6b in asan.module_ctor (/instdir/program/libCbcSolver.so.3+0x21fa6b) > LLVMSymbolizer: error reading file: No such file or directory > #2 0x7ffda20d8279 ([stack]+0x32279) > > [2]: > #0 0x43e508 in __asan_register_globals.part.13 /home/tdf/lode/packages/llvm-llvmorg-12.0.1.src/compiler-rt/lib/asan/asan_globals.cpp:360 > #1 0x7f3df4973a4b in asan.module_ctor (/instdir/program/libClpSolver.so.1+0x127a4b) > #2 0x7ffda20d8279 ([stack]+0x32279) and similarly for CbcOrClpRead_mode and CbcOrClpReadCommand. There's code using those three extern variables in both libCbcSolver.so.3 and libClpSolver.so.1, and some of it is duplicated (in workdir/UnpackedTarball/coinmp/Clp/src/CbcOrClpParam.cpp, which is also included from workdir/UnpackedTarball/coinmp/Cbc/src/CbcCbcParam.cpp). Those libraries do not appear to make any use of symbol visibility hiding, and it is completely unclear to me how all that code is actually meant to work. But it also smells like all that code is only used within standalone programs (see main in workdir/UnpackedTarball/coinmp/Cbc/src/CoinSolve.cpp and workdir/UnpackedTarball/coinmp/Clp/src/ClpMain.cpp). So lets try to get away with properly sharing those three extern variables across those two libraries. Except on Windows, where linking the one library wouldn't find the extern variables from the other library (and I'm not sure whether that's a general issue on Windows, or is due to how 2193650b3373ee1889961cfb72d1fe97f73e2c23 modified external/coinmp/windows.build.patch.1). (This also appears to be fixed on recent upstream; <https://github.com/coin-or/Cbc> no longer mentions any of those three extern variables. Maybe a new tarball will eventually appear at <http://www.coin-or.org/download/source/CoinMP/> that includes a proper fix of these ODR violations.) Change-Id: I953c7dc31f8e35315c59dc2bedd3fdf780579638 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153001 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-06-09external/coinmp: Update to CoinMP 1.8.4Stephan Bergmann
...originally started mostly to simplify a then-upcoming change to address std::bind2nd gone from libc++ for C++17 (which turned out to already be partially addressed in this new CoinMP revision). But that has since been addressed with b97e8b9d13ef0f57f7cf0badbefcb038a8bbd137 "external/coinmp: Adapt to std::bind2nd gone from C++17" on top of the old CoinMP 1.7.6, because updating to 1.8.4 turned out to run into issues on Windows, see the email thread starting at <https://lists.freedesktop.org/archives/libreoffice/2022-September/089383.html> "Maintaining building external/coinmp on Windows". * <https://dev-www.libreoffice.org/src/CoinMP-1.8.4.tgz> is a copy of <https://www.coin-or.org/download/source/CoinMP/CoinMP-1.8.4.tgz>. * Various of our patches are meanwhile addressed upstream, partially or in whole. * The upstream configure scripts deteriorated and caused one of my Linux build's CC=/absolute/path/to/some/clang to be mistaken for MSVC which caused them to force LD=link, which in turn caused them to only build archives and not the shared libraries that we expect. external/coinmp/clang-with-path.patch addresses that. * There's apparently a new ClpSolver library now that also needs to be installed. Otherwise at least CppunitTest_sccomp_swarmsolvertest failed due to > warn:sal.osl:1950612:1950612:sal/osl/unx/module.cxx:152: dlopen(instdir/program/libsolverlo.so, 257): libClpSolver.so.1: cannot open shared object file: No such file or directory * Plus modifications to external/coinmp/windows.build.patch.1 thankfully done by Taichi Haradaguchi <20001722@ymail.ne.jp> to make this actually compile on Windows (cf. the mailing list thread starting at <https://lists.freedesktop.org/archives/libreoffice/2022-September/089383.html> "Maintaining building external/coinmp on Windows") Change-Id: I498c9513fa0d96d8ae2b9ba4c09dd792340db730 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140057 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-09-16external/coinmp: Adapt to std::bind2nd gone from C++17Stephan Bergmann
...which started to be an issue when building with recent Clang 16 trunk after <https://github.com/llvm/llvm-project/commit/3e99b8d947ac024831e59be2b604ac67a24fed94> "C++/ObjC++: switch to gnu++17 as the default standard" against libc++. (Recent versions of GCC similarly default to C++17, but libstdc++ by default still provides bind2nd even for C++17.) Alternatively, we could define _LIBCPP_ENABLE_CXX17_REMOVED_BINDERS to work around this. But as these appear to be the only leftover occurrence of bind2nd across all of the code base, and all but one of them have already been addressed upstream, lets address it for good with this little patch. (Where the last remaining occurrence not yet addressed upstream is fixed in the same way as the other upstream fixes, using a loop rather than e.g. a lambda that would force us to start to pass CXXFLAGS_CXX11 into ExternalProejct_coinmp.) Change-Id: Iddcdddd22ea4c6d537b64bf2cf0b887d11da162f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139931 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-05-17external/coinmp: Avoid -Werror,-Wc++2b-extensionsStephan Bergmann
> ClpSimplex.cpp:6038:2: error: use of a '#elifdef' directive is a C++2b extension [-Werror,-Wc++2b-extensions] > #elifdef COIN_HAS_MUMPS > ^ seen with Clang 15 trunk since <https://github.com/llvm/llvm-project/commit/a1545f51a9ef299ca6c6716bd80b862f360453ab> "Warn if using `elifdef` & `elifndef` in not C2x & C++2b mode" (and which is turned into an error because External_coinmp builds with --pedantic-errors) Change-Id: I1db213aec91bc17c720fd58270eab452b2e4e0f5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134478 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-01-31externals: always provide platform configure flagsJan-Marek Glogowski
No idea why we just provided the platform flags when cross- compiling. In the curious case, where the host platform is detected as x86_64-pc-mingw32 per default and we actually want to override it with x86_64-pc-cygwin, we don't do a cross compile, but must override the host platform. But there is additional special handling needed for the omitted cross-platform build in the special case of --host=i686-pc-cygwin and --build=x86_64-pc-cygwin, where we deliberatly ignore cross building; Windows is already a slow build, so try to keep this optimization (AMD64 can execute x86 binaries). There is the theoretical case, where the externals config.guess would have detected something else and that "magically" even worked, while the LO detected triplet would fail, but this should be fixed in the external in any way. Change-Id: Ib7a9719e0e406fe90334b7611dc3f01b51692bfa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129153 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-10-08Centralize VS-to-toolset mapping in configureMike Kaganski
This allows to define the mapping once, and avoid modification in multiple places each time a new VS version support is added Change-Id: I93de4c9d78c3f67a0a2e157007e9d13b6f557937 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123163 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-09-16Add preliminary VS 2022 supportHossein
This patch changes the configure.ac, so that LibreOffice compiles with the latest VS 2022 preview. The option --with-visual-studio=2022 should be added to the autogen.input, in order to use VS 2022 preview. Change-Id: Ia1d9bbeabbbd44ffe82af3624151b69d36c0a45c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122133 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>