From 04c6d161170df6a4ab07036c3bcee5faaaec01dc Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Tue, 22 Mar 2022 10:25:46 +0100 Subject: [PATCH 01/56] Rebuild for cgnslib-4.3.0 --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 9d72fd1..918497f 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -10,7 +10,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.9.5 -Release: 1%{?dist} +Release: 2%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -389,6 +389,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Tue Mar 22 2022 Sandro Mani - 4.9.5-2 +- Rebuild for cgnslib-4.3.0 + * Mon Feb 21 2022 Richard Shaw - 4.9.5-1 - Update to 4.9.5. From 171d2343683b623361dd65a0cd450ec0242b9e8d Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Tue, 26 Apr 2022 11:17:41 +0200 Subject: [PATCH 02/56] Update to 4.10.0 --- .gitignore | 1 + gmsh.spec | 9 +- gmsh_build.patch | 6 +- gmsh_install.patch | 20 +- gmsh_julia.patch | 34 +- gmsh_med.patch | 24 +- gmsh_python.patch | 3922 ++++++++++++++++++++++++++++++++++++- gmsh_unbundle_gl2ps.patch | 26 +- sources | 2 +- 9 files changed, 4001 insertions(+), 43 deletions(-) diff --git a/.gitignore b/.gitignore index 7a53a8f..a7ec2dd 100644 --- a/.gitignore +++ b/.gitignore @@ -61,3 +61,4 @@ /gmsh-4.9.3-source-fedora.tar.xz /gmsh-4.9.4-source-fedora.tar.xz /gmsh-4.9.5-source-fedora.tar.xz +/gmsh-4.10.0-source-fedora.tar.xz diff --git a/gmsh.spec b/gmsh.spec index 918497f..7871baa 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -1,7 +1,7 @@ %bcond_without openmpi %bcond_without mpich -%global sover 4.9 +%global sover 4.10 %if 0%{?fedora} >= 33 || 0%{?rhel} >= 9 %bcond_without flexiblas @@ -9,8 +9,8 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.9.5 -Release: 2%{?dist} +Version: 4.10.0 +Release: 1%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -389,6 +389,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Tue Apr 26 2022 Sandro Mani - 4.10.0-1 +- Update to 4.10.0 + * Tue Mar 22 2022 Sandro Mani - 4.9.5-2 - Rebuild for cgnslib-4.3.0 diff --git a/gmsh_build.patch b/gmsh_build.patch index 44b7e22..7ff490a 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.9.4-source/src/fltk/helpWindow.cpp gmsh-4.9.4-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.9.4-source/src/fltk/helpWindow.cpp 2022-02-04 08:50:19.245185779 +0100 -+++ gmsh-4.9.4-source-new/src/fltk/helpWindow.cpp 2022-02-04 08:50:19.682186719 +0100 +diff -rupN --no-dereference gmsh-4.10.0-source/src/fltk/helpWindow.cpp gmsh-4.10.0-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.10.0-source/src/fltk/helpWindow.cpp 2022-04-26 07:50:50.281004183 +0200 ++++ gmsh-4.10.0-source-new/src/fltk/helpWindow.cpp 2022-04-26 07:50:50.703000170 +0200 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index b0d5f68..5999348 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.9.4-source/CMakeLists.txt gmsh-4.9.4-source-new/CMakeLists.txt ---- gmsh-4.9.4-source/CMakeLists.txt 2022-02-04 08:50:19.467186257 +0100 -+++ gmsh-4.9.4-source-new/CMakeLists.txt 2022-02-04 08:50:19.470186263 +0100 -@@ -268,7 +268,7 @@ if(ENABLE_RPATH) +diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt gmsh-4.10.0-source-new/CMakeLists.txt +--- gmsh-4.10.0-source/CMakeLists.txt 2022-04-26 07:50:50.492002176 +0200 ++++ gmsh-4.10.0-source-new/CMakeLists.txt 2022-04-26 07:50:50.496002138 +0200 +@@ -270,7 +270,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) @@ -10,3 +10,15 @@ diff -rupN --no-dereference gmsh-4.9.4-source/CMakeLists.txt gmsh-4.9.4-source-n # add the automatically determined parts of the RPATH which point to # directories outside the build tree to the install RPATH +diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt.orig gmsh-4.10.0-source-new/CMakeLists.txt.orig +--- gmsh-4.10.0-source/CMakeLists.txt.orig 2022-04-26 07:50:50.493002167 +0200 ++++ gmsh-4.10.0-source-new/CMakeLists.txt.orig 2022-04-26 07:50:50.286004135 +0200 +@@ -1898,7 +1898,7 @@ endif() + if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) + install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) + install(FILES ${GMSH_PY} DESTINATION ${PYTHON3_SITE_PACKAGES}) +- install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB}) ++ install(FILES ${GMSH_JL} DESTINATION share/gmsh) + if(ENABLE_PRIVATE_API) + install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) + if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen diff --git a/gmsh_julia.patch b/gmsh_julia.patch index 2e1a239..f80ffa3 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.9.4-source/CMakeLists.txt gmsh-4.9.4-source-new/CMakeLists.txt ---- gmsh-4.9.4-source/CMakeLists.txt 2022-02-04 08:50:19.020185295 +0100 -+++ gmsh-4.9.4-source-new/CMakeLists.txt 2022-02-04 08:50:19.248185786 +0100 -@@ -1892,7 +1892,7 @@ endif() +diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt gmsh-4.10.0-source-new/CMakeLists.txt +--- gmsh-4.10.0-source/CMakeLists.txt 2022-04-26 07:50:50.064006246 +0200 ++++ gmsh-4.10.0-source-new/CMakeLists.txt 2022-04-26 07:50:50.286004135 +0200 +@@ -1898,7 +1898,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) install(FILES ${GMSH_PY} DESTINATION ${PYTHON3_SITE_PACKAGES}) @@ -10,3 +10,29 @@ diff -rupN --no-dereference gmsh-4.9.4-source/CMakeLists.txt gmsh-4.9.4-source-n if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen +diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt.orig gmsh-4.10.0-source-new/CMakeLists.txt.orig +--- gmsh-4.10.0-source/CMakeLists.txt.orig 2022-04-26 07:50:50.064006246 +0200 ++++ gmsh-4.10.0-source-new/CMakeLists.txt.orig 2022-04-26 07:50:49.801008751 +0200 +@@ -1880,6 +1880,8 @@ else() + set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) + endif() + ++execute_process ( COMMAND python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" OUTPUT_VARIABLE PYTHON3_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE) ++ + # mark targets as optional so we can install them separately if needed + # (e.g. "make lib" or "make shared" followed by "make install/fast") + install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL) +@@ -1891,11 +1893,11 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_D + endif() + + if(ENABLE_ONELAB AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab) +- install(FILES ${ONELAB_PY} DESTINATION ${GMSH_BIN}) ++ install(FILES ${ONELAB_PY} DESTINATION ${PYTHON3_SITE_PACKAGES}) + endif() + if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) + install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) +- install(FILES ${GMSH_PY} DESTINATION ${GMSH_LIB}) ++ install(FILES ${GMSH_PY} DESTINATION ${PYTHON3_SITE_PACKAGES}) + install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB}) + if(ENABLE_PRIVATE_API) + install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) diff --git a/gmsh_med.patch b/gmsh_med.patch index f1edde5..1cb6ef8 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.9.4-source/src/common/CommandLine.cpp gmsh-4.9.4-source-new/src/common/CommandLine.cpp ---- gmsh-4.9.4-source/src/common/CommandLine.cpp 2022-01-11 20:34:46.000000000 +0100 -+++ gmsh-4.9.4-source-new/src/common/CommandLine.cpp 2022-02-04 08:50:19.024185304 +0100 +diff -rupN --no-dereference gmsh-4.10.0-source/src/common/CommandLine.cpp gmsh-4.10.0-source-new/src/common/CommandLine.cpp +--- gmsh-4.10.0-source/src/common/CommandLine.cpp 2022-04-25 15:27:25.000000000 +0200 ++++ gmsh-4.10.0-source-new/src/common/CommandLine.cpp 2022-04-26 07:50:50.069006199 +0200 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.9.4-source/src/common/CommandLine.cpp gmsh-4. #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.9.4-source/src/fltk/helpWindow.cpp gmsh-4.9.4-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.9.4-source/src/fltk/helpWindow.cpp 2022-01-11 20:34:46.000000000 +0100 -+++ gmsh-4.9.4-source-new/src/fltk/helpWindow.cpp 2022-02-04 08:50:19.024185304 +0100 +diff -rupN --no-dereference gmsh-4.10.0-source/src/fltk/helpWindow.cpp gmsh-4.10.0-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.10.0-source/src/fltk/helpWindow.cpp 2022-01-11 20:34:46.000000000 +0100 ++++ gmsh-4.10.0-source-new/src/fltk/helpWindow.cpp 2022-04-26 07:50:50.069006199 +0200 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.9.4-source/src/fltk/helpWindow.cpp gmsh-4.9.4 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.9.4-source/src/geo/GModelIO_MED.cpp gmsh-4.9.4-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.9.4-source/src/geo/GModelIO_MED.cpp 2022-01-11 20:34:47.000000000 +0100 -+++ gmsh-4.9.4-source-new/src/geo/GModelIO_MED.cpp 2022-02-04 08:50:19.024185304 +0100 +diff -rupN --no-dereference gmsh-4.10.0-source/src/geo/GModelIO_MED.cpp gmsh-4.10.0-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.10.0-source/src/geo/GModelIO_MED.cpp 2022-01-11 20:34:47.000000000 +0100 ++++ gmsh-4.10.0-source-new/src/geo/GModelIO_MED.cpp 2022-04-26 07:50:50.069006199 +0200 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.9.4-source/src/geo/GModelIO_MED.cpp gmsh-4.9. #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.9.4-source/src/post/PViewDataGModelIO.cpp gmsh-4.9.4-source-new/src/post/PViewDataGModelIO.cpp ---- gmsh-4.9.4-source/src/post/PViewDataGModelIO.cpp 2022-01-11 20:34:48.000000000 +0100 -+++ gmsh-4.9.4-source-new/src/post/PViewDataGModelIO.cpp 2022-02-04 08:50:19.025185306 +0100 +diff -rupN --no-dereference gmsh-4.10.0-source/src/post/PViewDataGModelIO.cpp gmsh-4.10.0-source-new/src/post/PViewDataGModelIO.cpp +--- gmsh-4.10.0-source/src/post/PViewDataGModelIO.cpp 2022-01-11 20:34:48.000000000 +0100 ++++ gmsh-4.10.0-source-new/src/post/PViewDataGModelIO.cpp 2022-04-26 07:50:50.070006189 +0200 @@ -542,7 +542,7 @@ void PViewDataGModel::importLists(int N[ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index d202f4f..3aa682f 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.9.4-source/CMakeLists.txt gmsh-4.9.4-source-new/CMakeLists.txt ---- gmsh-4.9.4-source/CMakeLists.txt 2022-02-03 19:58:00.000000000 +0100 -+++ gmsh-4.9.4-source-new/CMakeLists.txt 2022-02-04 08:50:18.805184832 +0100 -@@ -1874,6 +1874,8 @@ else() +diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt gmsh-4.10.0-source-new/CMakeLists.txt +--- gmsh-4.10.0-source/CMakeLists.txt 2022-03-11 15:43:41.000000000 +0100 ++++ gmsh-4.10.0-source-new/CMakeLists.txt 2022-04-26 07:50:49.801008751 +0200 +@@ -1880,6 +1880,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -10,7 +10,7 @@ diff -rupN --no-dereference gmsh-4.9.4-source/CMakeLists.txt gmsh-4.9.4-source-n # mark targets as optional so we can install them separately if needed # (e.g. "make lib" or "make shared" followed by "make install/fast") install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL) -@@ -1885,11 +1887,11 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_D +@@ -1891,11 +1893,11 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_D endif() if(ENABLE_ONELAB AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab) @@ -24,10 +24,2221 @@ diff -rupN --no-dereference gmsh-4.9.4-source/CMakeLists.txt gmsh-4.9.4-source-n install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB}) if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) -diff -rupN --no-dereference gmsh-4.9.4-source/src/common/GmshMessage.cpp gmsh-4.9.4-source-new/src/common/GmshMessage.cpp ---- gmsh-4.9.4-source/src/common/GmshMessage.cpp 2022-01-11 20:34:46.000000000 +0100 -+++ gmsh-4.9.4-source-new/src/common/GmshMessage.cpp 2022-02-04 08:50:18.805184832 +0100 -@@ -171,14 +171,6 @@ void Msg::Initialize(int argc, char **ar +diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt.orig gmsh-4.10.0-source-new/CMakeLists.txt.orig +--- gmsh-4.10.0-source/CMakeLists.txt.orig 1970-01-01 01:00:00.000000000 +0100 ++++ gmsh-4.10.0-source-new/CMakeLists.txt.orig 2022-03-11 15:43:41.000000000 +0100 +@@ -0,0 +1,2207 @@ ++# Gmsh - Copyright (C) 1997-2022 C. Geuzaine, J.-F. Remacle ++# ++# See the LICENSE.txt file in the Gmsh root directory for license information. ++# Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. ++ ++cmake_minimum_required(VERSION 3.3 FATAL_ERROR) ++ ++# if CMAKE_BUILD_TYPE is specified use it; otherwise set the default ++# build type to "RelWithDebInfo" ("-O2 -g" with gcc) prior to calling ++# project() ++if(DEFINED CMAKE_BUILD_TYPE) ++ set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose build type") ++else() ++ set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose build type") ++endif() ++ ++project(gmsh CXX C) ++ ++# require C++11 and request C99 ++set(CMAKE_CXX_STANDARD 11) ++set(CMAKE_CXX_STANDARD_REQUIRED ON) ++set(CMAKE_C_STANDARD 99) ++ ++# this variable controls the default value of the options which are normally set ++# to ON (useful if you want to configure a minimal version of Gmsh: e.g. "cmake ++# -DDEFAULT=0 -DENABLE_POST=1 -DENABLE_PARSER=1") ++set(DEFAULT ON CACHE INTERNAL "Default value for enabled-by-default options") ++ ++macro(opt OPTION HELP VALUE) ++ option(ENABLE_${OPTION} ${HELP} ${VALUE}) ++ set(OPT_TEXI "${OPT_TEXI}\n@item ENABLE_${OPTION}\n${HELP} (default: ${VALUE})") ++endmacro() ++ ++opt(3M "Enable proprietary 3M extension" OFF) ++opt(ALGLIB "Enable ALGLIB (used by some mesh optimizers)" ${DEFAULT}) ++opt(ANN "Enable ANN (used for fast point search in mesh/post)" ${DEFAULT}) ++opt(BAMG "Enable Bamg 2D anisotropic mesh generator" ${DEFAULT}) ++opt(BLAS_LAPACK "Enable BLAS/Lapack for linear algebra (if Eigen if disabled)" OFF) ++opt(BLOSSOM "Enable Blossom algorithm (needed for full quad meshing)" ${DEFAULT}) ++opt(BUILD_LIB "Enable 'lib' target for building static Gmsh library" OFF) ++opt(BUILD_SHARED "Enable 'shared' target for building shared Gmsh library" OFF) ++opt(BUILD_DYNAMIC "Enable dynamic Gmsh executable (linked with shared library)" OFF) ++opt(BUILD_ANDROID "Enable Android NDK library target (experimental)" OFF) ++opt(BUILD_IOS "Enable iOS library target (experimental)" OFF) ++opt(CGNS "Enable CGNS import/export (experimental)" ${DEFAULT}) ++opt(CGNS_CPEX0045 "Enable high-order CGNS import/export following CPEX0045 (experimental)" OFF) ++opt(CAIRO "Enable Cairo to render fonts (experimental)" ${DEFAULT}) ++opt(PROFILE "Enable profiling compiler flags" OFF) ++opt(DINTEGRATION "Enable discrete integration (needed for levelsets)" ${DEFAULT}) ++opt(DOMHEX "Enable experimental DOMHEX code" ${DEFAULT}) ++opt(EIGEN "Enable Eigen for linear algebra (instead of Blas/Lapack)" ON) ++opt(FLTK "Enable FLTK graphical user interface (requires mesh/post)" ${DEFAULT}) ++opt(GEOMETRYCENTRAL "Enable geometry-central library (experimental)" ${DEFAULT}) ++opt(GETDP "Enable GetDP solver (linked as a library, experimental)" ${DEFAULT}) ++opt(GMM "Enable GMM linear solvers (simple alternative to PETSc)" ${DEFAULT}) ++opt(GMP "Enable GMP for Kbipack (advanced)" ON) ++opt(GRAPHICS "Enable building graphics lib even without GUI (advanced)" OFF) ++opt(HXT "Enable HXT library (for reparametrization and meshing)" ${DEFAULT}) ++opt(KBIPACK "Enable Kbipack (neeeded by homology solver)" ${DEFAULT}) ++opt(MATHEX "Enable Mathex expression parser (used by plugins and options)" ${DEFAULT}) ++opt(MED "Enable MED mesh and post file formats" ${DEFAULT}) ++opt(MESH "Enable mesh module" ${DEFAULT}) ++opt(METIS "Enable Metis mesh partitioner" ${DEFAULT}) ++opt(MMG "Enable Mmg mesh adaptation interface" ${DEFAULT}) ++opt(MPEG_ENCODE "Enable built-in MPEG movie encoder" ${DEFAULT}) ++opt(MPI "Enable MPI (experimental, not used for meshing)" OFF) ++opt(MSVC_STATIC_RUNTIME "Enable static Visual C++ runtime" OFF) ++opt(MUMPS "Enable MUMPS sparse direct linear solver" OFF) ++opt(NETGEN "Enable Netgen 3D frontal mesh generator" ${DEFAULT}) ++opt(NUMPY "Enable fullMatrix and numpy array conversion for private API" OFF) ++opt(PETSC4PY "Enable petsc4py wrappers for petsc matrices for private API" OFF) ++opt(OCC "Enable OpenCASCADE CAD kernel" ${DEFAULT}) ++opt(OCC_CAF "Enable OpenCASCADE CAF module (for STEP/IGES attributes)" ${DEFAULT}) ++opt(OCC_STATIC "Link OpenCASCADE static instead of dynamic libraries (requires ENABLE_OCC)" OFF) ++opt(OCC_TBB "Add TBB libraries in list of OCC libraries" OFF) ++opt(ONELAB "Enable ONELAB solver interface" ${DEFAULT}) ++opt(ONELAB_METAMODEL "Enable ONELAB metamodels (experimental)" ${DEFAULT}) ++opt(OPENACC "Enable OpenACC" OFF) ++opt(OPENMP "Enable OpenMP" ${DEFAULT}) ++opt(OPTHOM "Enable high-order mesh optimization tools" ${DEFAULT}) ++opt(OS_SPECIFIC_INSTALL "Enable OS-specific (e.g. app bundle) installation" OFF) ++opt(OSMESA "Enable OSMesa for offscreen rendering (experimental)" OFF) ++opt(P4EST "Enable p4est for enabling automatic mesh size field (experimental)" OFF) ++opt(PACKAGE_STRIP "Strip symbols in install packages to reduce install size" ON) ++opt(PARSER "Enable GEO file parser (required for .geo/.pos scripts)" ${DEFAULT}) ++opt(PETSC "Enable PETSc linear solvers (required for SLEPc)" OFF) ++opt(PLUGINS "Enable post-processing plugins" ${DEFAULT}) ++opt(POST "Enable post-processing module (required by GUI)" ${DEFAULT}) ++opt(POPPLER "Enable Poppler for displaying PDF documents (experimental)" OFF) ++opt(PRIVATE_API "Enable private API" OFF) ++opt(PRO "Enable PRO extensions" ${DEFAULT}) ++opt(QUADMESHINGTOOLS "Enable QuadMeshingTools extensions" ${DEFAULT}) ++opt(QUADTRI "Enable QuadTri structured meshing extensions" ${DEFAULT}) ++opt(REVOROPT "Enable Revoropt (used for CVT remeshing)" OFF) ++opt(RPATH "Use RPATH in dynamically linked targets" ON) ++opt(SLEPC "Enable SLEPc eigensolvers" OFF) ++opt(SOLVER "Enable built-in finite element solvers (required for reparametrization)" ${DEFAULT}) ++opt(SYSTEM_CONTRIB "Use system versions of contrib libraries, when possible" OFF) ++opt(TCMALLOC "Enable libtcmalloc (fast malloc that does not release memory)" OFF) ++opt(TESTS "Enable tests" ${DEFAULT}) ++opt(TOUCHBAR "Enable Apple Touch bar" ${DEFAULT}) ++opt(VISUDEV "Enable additional visualization capabilities for development purposes" OFF) ++opt(VOROPP "Enable voro++ (for hex meshing, experimental)" ${DEFAULT}) ++opt(WINSLOWUNTANGLER "Enable WinslowUntangler extensions (requires ALGLIB)" ${DEFAULT}) ++opt(WRAP_JAVA "Generate SWIG Java wrappers for private API" OFF) ++opt(WRAP_PYTHON "Generate SWIG Python wrappers for private API (not used by public API)" OFF) ++opt(ZIPPER "Enable Zip file compression/decompression" OFF) ++ ++set(GMSH_MAJOR_VERSION 4) ++set(GMSH_MINOR_VERSION 10) ++set(GMSH_PATCH_VERSION 0) ++if(NOT GMSH_EXTRA_VERSION) ++ set(GMSH_EXTRA_VERSION "") ++endif() ++set(GMSH_EXTRA_VERSION_TEXI "${GMSH_EXTRA_VERSION}") ++set(GMSH_EXTRA_VERSION_ORIG ${GMSH_EXTRA_VERSION}) ++ ++if(NOT GMSH_RELEASE) ++ find_package(Git) ++ if(GIT_FOUND) ++ execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%h ++ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ERROR_QUIET ++ OUTPUT_VARIABLE GIT_COMMIT_HASH ++ OUTPUT_STRIP_TRAILING_WHITESPACE) ++ endif() ++ if(GIT_COMMIT_HASH) ++ set(GMSH_EXTRA_VERSION "${GMSH_EXTRA_VERSION}-git-${GIT_COMMIT_HASH}") ++ endif() ++ set(GMSH_EXTRA_VERSION_TEXI "${GMSH_EXTRA_VERSION_TEXI} (development version)") ++endif() ++ ++set(GMSH_SHORT_VERSION ++ "${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION}") ++set(GMSH_VERSION "${GMSH_SHORT_VERSION}${GMSH_EXTRA_VERSION}") ++set(GMSH_SHORT_LICENSE "GNU General Public License") ++ ++set(GMSH_GITLAB_PREFIX "https://gitlab.onelab.info/gmsh/gmsh") ++if(GMSH_RELEASE) ++ string(REPLACE "\." "_" GMSH_SHORT_VERSION_ ${GMSH_SHORT_VERSION}) ++ set(GMSH_GITLAB_PREFIX "${GMSH_GITLAB_PREFIX}/blob/gmsh_${GMSH_SHORT_VERSION_}") ++else() ++ set(GMSH_GITLAB_PREFIX "${GMSH_GITLAB_PREFIX}/blob/master") ++endif() ++ ++set(GMSH_API api/gmsh.h api/gmshc.h api/gmsh.h_cwrap api/gmshf.h) ++ ++if(ENABLE_PRIVATE_API) ++ message(WARNING "The private API is unsupported and undocumented. It is meant " ++ "for expert Gmsh developers, not for regular Gmsh users, who should rely " ++ "on the stable public API (gmsh/api) instead.") ++ file(GLOB_RECURSE HEADERS src/common/*.h src/numeric/*.h src/numeric/*.hpp ++ src/geo/*.h src/mesh/*.h src/solver/*.h src/post/*.h src/plugin/*.h ++ src/graphics/*.h contrib/kbipack/*.h contrib/DiscreteIntegration/*.h ++ contrib/HighOrderMeshOptimizer/*.h contrib/MeshOptimizer/*.h ++ contrib/MeshQualityOptimizer/*.h) ++ set(GMSH_PRIVATE_API ${CMAKE_CURRENT_BINARY_DIR}/src/common/GmshConfig.h ++ ${CMAKE_CURRENT_BINARY_DIR}/src/common/GmshVersion.h ${HEADERS}) ++ get_property(IAMCHILD DIRECTORY PROPERTY PARENT_DIRECTORY) ++ if(IAMCHILD) ++ set(GMSH_PRIVATE_API ${GMSH_PRIVATE_API} PARENT_SCOPE) ++ endif() ++ if(ENABLE_WRAP_PYTHON OR ENABLE_WRAP_JAVA) ++ set(ENABLE_BUILD_DYNAMIC ON) ++ message(WARNING "SWIG wrappers for the private API are unsupported and " ++ "undocumented. The stable public Python API does not required SWIG.") ++ endif() ++endif() ++ ++set(ONELAB_PY contrib/onelab/python/onelab.py) ++set(GMSH_PY api/gmsh.py) ++set(GMSH_JL api/gmsh.jl) ++ ++if(${CMAKE_MAJOR_VERSION} GREATER 2) ++ string(TIMESTAMP DATE "%Y%m%d") ++else() ++ execute_process(COMMAND date "+%Y%m%d" OUTPUT_VARIABLE DATE ++ OUTPUT_STRIP_TRAILING_WHITESPACE) ++endif() ++ ++if(NOT DATE) ++ set(DATE "unknown") ++endif() ++set(GMSH_DATE "${DATE}") ++ ++if(NOT GMSH_HOST) ++ execute_process(COMMAND hostname OUTPUT_VARIABLE HOST ++ OUTPUT_STRIP_TRAILING_WHITESPACE) ++ if(NOT HOST) ++ set(HOST "unknown") ++ endif() ++ set(GMSH_HOST "${HOST}") ++endif() ++ ++if(NOT GMSH_PACKAGER) ++ execute_process(COMMAND whoami OUTPUT_VARIABLE PACKAGER ++ OUTPUT_STRIP_TRAILING_WHITESPACE) ++ if(NOT PACKAGER) ++ set(PACKAGER "unknown") ++ endif() ++ string(REPLACE "\\" " " PACKAGER ${PACKAGER}) ++ set(GMSH_PACKAGER "${PACKAGER}") ++endif() ++ ++if(APPLE) ++ set(GMSH_OS "MacOSX") ++ # build universal binary ++ #SET(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "Build architectures for macOS" FORCE) ++elseif(CYGWIN OR MSYS) ++ # detect if we use the MinGW compilers on Cygwin - if we do, handle the build ++ # as a pure Windows build and make cmake find pure Windows import libraries ++ # (.lib) ++ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR ++ CMAKE_CXX_COMPILER_ID MATCHES "Clang") ++ execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine ++ OUTPUT_VARIABLE CXX_COMPILER_MACHINE ++ OUTPUT_STRIP_TRAILING_WHITESPACE) ++ if(CXX_COMPILER_MACHINE MATCHES "mingw") ++ set(GMSH_OS "Windows") ++ set(WIN32 1) ++ add_definitions(-DWIN32) ++ set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "") ++ set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".so" ".lib" ".LIB" ".dll" ".DLL" ".dll.a") ++ endif() ++ endif() ++else() ++ set(GMSH_OS "${CMAKE_SYSTEM_NAME}") ++endif() ++ ++include(CheckTypeSize) ++include(CheckFunctionExists) ++include(CheckIncludeFile) ++include(CheckCXXCompilerFlag) ++include(CheckCCompilerFlag) ++ ++macro(set_config_option VARNAME STRING) ++ set(${VARNAME} TRUE) ++ list(APPEND CONFIG_OPTIONS ${STRING}) ++ message(STATUS "Found " ${STRING}) ++endmacro() ++ ++# check the size of size_t ++check_type_size("size_t" SIZEOF_SIZE_T) ++if(SIZEOF_SIZE_T EQUAL 8) ++ set_config_option(HAVE_64BIT_SIZE_T "64Bit") ++endif() ++ ++# append 32/64 to the build name on Linux and Windows ++if(NOT APPLE) ++ if(HAVE_64BIT_SIZE_T) ++ set(GMSH_OS "${GMSH_OS}64") ++ else() ++ set(GMSH_OS "${GMSH_OS}32") ++ endif() ++endif() ++ ++if(ENABLE_BUILD_DYNAMIC) ++ set(GMSH_OS "${GMSH_OS}-sdk") ++endif() ++ ++if(ENABLE_RPATH) ++ set(CMAKE_MACOSX_RPATH 1) ++ ++ # make sure that dynamic libraries can be found when installing/ displacing ++ # the binaries: from https://gitlab.kitware.com/cmake/community/wikis/doc/ ++ # cmake/RPATH-handling: ++ ++ # use, i.e. don't skip the full RPATH for the build tree ++ set(CMAKE_SKIP_BUILD_RPATH FALSE) ++ ++ # when building, don't use the install RPATH already (but later on when ++ # installing) ++ set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) ++ set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") ++ ++ # add the automatically determined parts of the RPATH which point to ++ # directories outside the build tree to the install RPATH ++ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) ++ ++ # the RPATH to be used when installing, but only if it's not a system directory ++ list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" ++ isSystemDir) ++ if("${isSystemDir}" STREQUAL "-1") ++ if(APPLE) ++ set(CMAKE_INSTALL_RPATH "@executable_path/../lib") ++ else() ++ set(CMAKE_INSTALL_RPATH "\\\$ORIGIN/../lib") ++ endif() ++ endif() ++else() ++ set(CMAKE_MACOSX_RPATH 0) ++ set(CMAKE_SKIP_BUILD_RPATH TRUE) ++endif() ++ ++if(MSVC) ++ # remove annoying warning about bool/int cast performance ++ set(GMSH_CONFIG_PRAGMAS "#pragma warning(disable:4800 4244 4267)") ++ foreach(VAR ++ CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE ++ CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO ++ CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE ++ CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO) ++ if(ENABLE_MSVC_STATIC_RUNTIME AND ${VAR} MATCHES "/MD") ++ string(REGEX REPLACE "/MD" "/MT" ${VAR} "${${VAR}}") ++ endif() ++ if(NOT ${VAR} MATCHES "/MP") # enable parallel compilation ++ set(${VAR} "${${VAR}} /MP") ++ endif() ++ endforeach() ++ if(ENABLE_PRIVATE_API) ++ if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED) ++ # automatically export .def file with all symbols (requires CMake 3.4); ++ # depending on the compiling options this might lead to more than 64k export ++ # symbols; just trim the .def file to keep the ones you need ++ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) ++ endif() ++ endif() ++endif() ++ ++# reduce memory usage of GCC on 32 bit systems ++if(NOT HAVE_64BIT_SIZE_T AND CMAKE_CXX_COMPILER_ID MATCHES "GNU") ++ set(CMAKE_CXX_FLAGS ++ "${CMAKE_CXX_FLAGS} --param ggc-min-expand=1 --param ggc-min-heapsize=512000") ++endif() ++ ++if(ENABLE_OPENMP) ++ find_package(OpenMP) ++ if(OpenMP_FOUND OR OPENMP_FOUND) ++ set_config_option(HAVE_OPENMP "OpenMP") ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") ++ list(APPEND EXTERNAL_LIBRARIES "${OpenMP_CXX_LIBRARIES}") ++ elseif(APPLE AND EXISTS "/opt/local/lib/libomp") ++ # official Apple compiler with macports' libomp ++ set_config_option(HAVE_OPENMP "OpenMP[MacPorts]") ++ set(CMAKE_C_FLAGS ++ "${CMAKE_C_FLAGS} -Xpreprocessor -fopenmp -I/opt/local/include/libomp") ++ set(CMAKE_CXX_FLAGS ++ "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp -I/opt/local/include/libomp") ++ list(APPEND EXTERNAL_LIBRARIES "-L/opt/local/lib/libomp -lomp") ++ elseif(APPLE AND EXISTS "/usr/local/lib/libomp.dylib") ++ # official Apple compiler with homebrew's libomp ++ set_config_option(HAVE_OPENMP "OpenMP[Homebrew]") ++ set(CMAKE_C_FLAGS ++ "${CMAKE_C_FLAGS} -Xpreprocessor -fopenmp") ++ set(CMAKE_CXX_FLAGS ++ "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp") ++ list(APPEND EXTERNAL_LIBRARIES "-L/usr/local/lib -lomp") ++ elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux" AND EXISTS "/usr/local/lib64/libgomp.a") ++ # custom static openmp for official linux builds ++ set_config_option(HAVE_OPENMP "OpenMP[static]") ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Xpreprocessor -fopenmp") ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp") ++ list(APPEND EXTERNAL_LIBRARIES "/usr/local/lib64/libgomp.a") ++ endif() ++endif() ++ ++if(ENABLE_OPENACC) ++ find_package(OpenACC) ++ if(OpenACC_C_FOUND AND OpenACC_CXX_FOUND) ++ set_config_option(HAVE_OPENACC "OpenACC") ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenACC_C_FLAGS}") ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenACC_CXX_FLAGS}") ++ endif() ++endif() ++ ++if(ENABLE_PROFILE) ++ # Using the perf set of profiling tools doesn't work without the frame ++ # pointer and a common optimisation is to remove it ++ check_cxx_compiler_flag("-fno-omit-frame-pointer" FNOFP) ++ if(FNOFP) ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer") ++ endif() ++endif() ++ ++macro(append_gmsh_src DIRNAME FILES) ++ foreach(FILE ${FILES}) ++ list(APPEND LIST ${DIRNAME}/${FILE}) ++ endforeach() ++ set(GMSH_SRC ${GMSH_SRC};${LIST} PARENT_SCOPE) ++ set(GMSH_DIRS ${GMSH_DIRS};${DIRNAME} PARENT_SCOPE) ++endmacro() ++ ++macro(find_all_libraries VARNAME LISTNAME PATH SUFFIX) ++ set(${VARNAME}) ++ list(LENGTH ${LISTNAME} NUM_LIST) ++ foreach(LIB ${${LISTNAME}}) ++ if("${PATH}" STREQUAL "") ++ find_library(FOUND_LIB ${LIB} PATH_SUFFIXES ${SUFFIX}) ++ else() ++ find_library(FOUND_LIB ${LIB} PATHS ${PATH} NO_DEFAULT_PATH) ++ endif() ++ if(FOUND_LIB) ++ list(APPEND ${VARNAME} ${FOUND_LIB}) ++ endif() ++ unset(FOUND_LIB CACHE) ++ endforeach() ++ list(LENGTH ${VARNAME} NUM_FOUND_LIBRARIES) ++ if(NUM_FOUND_LIBRARIES LESS NUM_LIST) ++ set(${VARNAME}) ++ endif() ++endmacro() ++ ++macro(set_compile_flags LISTNAME FLAGS) ++ foreach(FILE ${${LISTNAME}}) ++ get_source_file_property(PROP ${FILE} COMPILE_FLAGS) ++ if(PROP) ++ set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS "${PROP} ${FLAGS}") ++ else() ++ set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS "${FLAGS}") ++ endif() ++ endforeach() ++endmacro() ++ ++if(ENABLE_GEOMETRYCENTRAL) ++ find_library(GEOMETRYCENTRAL_LIB NAMES geometry-central) ++ find_path(GEOMETRYCENTRAL_INC "surface/meshio.h" PATH_SUFFIXES geometrycentral) ++ if(GEOMETRYCENTRAL_LIB AND GEOMETRYCENTRAL_INC) ++ list(APPEND EXTERNAL_LIBRARIES ${GEOMETRYCENTRAL_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${GEOMETRYCENTRAL_INC}) ++ set_config_option(HAVE_GEOMETRYCENTRAL "geometry-central") ++ endif() ++endif() ++ ++if(ENABLE_EIGEN) ++ if(ENABLE_SYSTEM_CONTRIB) ++ find_path(EIGEN_INC "Eigen/Dense" HINTS eigen3) ++ if(EIGEN_INC) ++ include_directories(${EIGEN_INC}) ++ set_config_option(HAVE_EIGEN "Eigen") ++ set(HAVE_CONTRIB_EIGEN FALSE) ++ endif() ++ endif() ++ if(NOT HAVE_EIGEN AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/eigen) ++ include_directories(contrib/eigen) ++ set_config_option(HAVE_EIGEN "Eigen[contrib]") ++ set(HAVE_CONTRIB_EIGEN TRUE) ++ endif() ++ # We could also add an option to use BLAS with Eigen ++ # add_definitions(-DEIGEN_USE_BLAS) ++endif() ++ ++if(NOT HAVE_EIGEN AND ENABLE_BLAS_LAPACK) ++ if(BLAS_LAPACK_LIBRARIES) ++ # use libs as specified in the BLAS_LAPACK_LIBRARIES variable ++ set_config_option(HAVE_BLAS "Blas[custom]") ++ set_config_option(HAVE_LAPACK "Lapack[custom]") ++ set(LAPACK_LIBRARIES ${BLAS_LAPACK_LIBRARIES}) ++ else() ++ if(MSVC) ++ # on Windows with Visual C++ try really hard to find blas/lapack *without* ++ # requiring a Fortran compiler: 1) try to find the Intel MKL libs using ++ # the standard search path; if not found 2) try to get the reference ++ # blas/lapack libs (useful for users with no Fortran compiler and no MKL ++ # license, who can just download our precompiled "gmsh-dep" package) ++ if(HAVE_64BIT_SIZE_T) ++ set(MKL_PATH em64t/lib) ++ set(MKL_LIBS_REQUIRED libguide40 mkl_intel_lp64 mkl_intel_thread mkl_core) ++ else() ++ set(MKL_PATH ia32/lib) ++ set(MKL_LIBS_REQUIRED libguide40 mkl_intel_c mkl_intel_thread mkl_core) ++ endif() ++ find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH}) ++ if(LAPACK_LIBRARIES) ++ set_config_option(HAVE_BLAS "Blas[mkl]") ++ set_config_option(HAVE_LAPACK "Lapack[mkl]") ++ else() ++ set(REFLAPACK_LIBS_REQUIRED lapack blas g2c gcc) ++ find_all_libraries(LAPACK_LIBRARIES REFLAPACK_LIBS_REQUIRED "" "") ++ if(LAPACK_LIBRARIES) ++ set_config_option(HAVE_BLAS "Blas[ref]") ++ set_config_option(HAVE_LAPACK "Lapack[ref]") ++ endif() ++ endif() ++ elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") ++ # on Linux try to find the Intel MKL without a Fortran compiler ++ if(HAVE_64BIT_SIZE_T) ++ set(MKL_PATH lib/em64t) ++ else() ++ set(MKL_PATH lib/32) ++ endif() ++ set(MKL_LIBS_REQUIRED mkl_gf_lp64 iomp5 mkl_gnu_thread mkl_core guide pthread) ++ find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH}) ++ if(NOT LAPACK_LIBRARIES) ++ # match lapack 9.0 on 64bit ++ set(MKL_LIBS_REQUIRED mkl_lapack mkl_em64t guide) ++ find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH}) ++ endif() ++ if(LAPACK_LIBRARIES) ++ set_config_option(HAVE_BLAS "Blas[mkl]") ++ set_config_option(HAVE_LAPACK "Lapack[mkl]") ++ else() ++ # on Linux also try to find ATLAS without a Fortran compiler, because ++ # cmake ships with a buggy FindBLAS e.g. on Ubuntu Lucid Lynx ++ set(ATLAS_LIBS_REQUIRED lapack f77blas cblas atlas) ++ find_all_libraries(LAPACK_LIBRARIES ATLAS_LIBS_REQUIRED "" "") ++ if(LAPACK_LIBRARIES) ++ set_config_option(HAVE_BLAS "Blas[atlas]") ++ set_config_option(HAVE_LAPACK "Lapack[atlas]") ++ else() ++ # try with generic names ++ set(GENERIC_LIBS_REQUIRED lapack blas pthread) ++ find_all_libraries(LAPACK_LIBRARIES GENERIC_LIBS_REQUIRED "" "") ++ if(LAPACK_LIBRARIES) ++ set_config_option(HAVE_BLAS "Blas[generic]") ++ set_config_option(HAVE_LAPACK "Lapack[generic]") ++ find_library(GFORTRAN_LIB gfortran) ++ if(GFORTRAN_LIB) ++ list(APPEND LAPACK_LIBRARIES ${GFORTRAN_LIB}) ++ endif() ++ endif() ++ endif() ++ endif() ++ elseif(${CMAKE_SYSTEM_NAME} MATCHES "SunOS") ++ # on SunOS we know blas and lapack are available in sunperf ++ set(LAPACK_LIBRARIES -library=sunperf) ++ set_config_option(HAVE_BLAS "Blas[sunperf]") ++ set_config_option(HAVE_LAPACK "Lapack[sunperf]") ++ elseif(APPLE) ++ # on Mac we also know that blas and lapack are available ++ set(LAPACK_LIBRARIES "-llapack -lblas") ++ set_config_option(HAVE_BLAS "Blas[veclib]") ++ set_config_option(HAVE_LAPACK "Lapack[veclib]") ++ endif() ++ ++ if(NOT HAVE_BLAS OR NOT HAVE_LAPACK) ++ # if we haven't found blas and lapack check for OpenBlas ++ set(OPENBLAS_LIBS_REQUIRED openblas) ++ find_all_libraries(LAPACK_LIBRARIES OPENBLAS_LIBS_REQUIRED "" "") ++ if(LAPACK_LIBRARIES) ++ set_config_option(HAVE_BLAS "Blas[openblas]") ++ set_config_option(HAVE_LAPACK "Lapack[openblas]") ++ find_library(GFORTRAN_LIB gfortran) ++ if(GFORTRAN_LIB) ++ list(APPEND LAPACK_LIBRARIES ${GFORTRAN_LIB}) ++ endif() ++ endif() ++ endif() ++ ++ if(NOT HAVE_BLAS OR NOT HAVE_LAPACK) ++ # if we still haven't found blas and lapack, use the standard cmake tests, ++ # which require a working Fortran compiler ++ enable_language(Fortran) ++ find_package(BLAS) ++ if(BLAS_FOUND) ++ set_config_option(HAVE_BLAS "Blas") ++ find_package(LAPACK) ++ if(LAPACK_FOUND) ++ set_config_option(HAVE_LAPACK "Lapack") ++ else() ++ set(LAPACK_LIBRARIES ${BLAS_LIBRARIES}) ++ endif() ++ if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") ++ if(CMAKE_Fortran_COMPILER MATCHES "gfortran") ++ list(APPEND LAPACK_LIBRARIES gfortran) ++ elseif(CMAKE_Fortran_COMPILER MATCHES "f95") ++ list(APPEND LAPACK_LIBRARIES gfortran) ++ elseif(CMAKE_Fortran_COMPILER MATCHES "g77") ++ list(APPEND LAPACK_LIBRARIES g2c) ++ endif() ++ elseif(CMAKE_Fortran_COMPILER MATCHES "pgi") ++ list(APPEND LAPACK_LIBRARIES -pgf77libs) ++ endif() ++ endif() ++ endif() ++ endif() ++endif() ++ ++if(ENABLE_TCMALLOC) ++ find_library(TCMALLOC tcmalloc) ++ if(TCMALLOC) ++ set_config_option(HAVE_TCMALLOC "TCMalloc") ++ list(APPEND EXTERNAL_LIBRARIES ${TCMALLOC}) ++ endif() ++endif() ++ ++add_subdirectory(src/common) ++add_subdirectory(src/numeric) ++add_subdirectory(src/geo) ++ ++if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/mesh AND ENABLE_MESH) ++ add_subdirectory(src/mesh) ++ set_config_option(HAVE_MESH "Mesh") ++endif() ++ ++if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/solver AND ENABLE_SOLVER) ++ add_subdirectory(src/solver) ++ set_config_option(HAVE_SOLVER "Solver") ++endif() ++ ++if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/post AND ENABLE_POST) ++ add_subdirectory(src/post) ++ set_config_option(HAVE_POST "Post") ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/plugin AND ENABLE_PLUGINS) ++ add_subdirectory(src/plugin) ++ set_config_option(HAVE_PLUGINS "Plugins") ++ endif() ++endif() ++ ++if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/parser AND ENABLE_PARSER) ++ add_subdirectory(src/parser) ++ set_config_option(HAVE_PARSER "Parser") ++endif() ++ ++if(ENABLE_VISUDEV) ++ set_config_option(HAVE_VISUDEV "VisuDev") ++endif() ++ ++if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk AND ENABLE_FLTK) ++ # first, try to use fltk-config for fltk >= 1.3 (FindFLTK is buggy on Unix, ++ # where e.g. xft and xinerama options are not dealt with) ++ find_program(FLTK_CONFIG_SCRIPT fltk-config) ++ if(FLTK_CONFIG_SCRIPT) ++ execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --api-version ++ OUTPUT_VARIABLE FLTK_VERSION) ++ string(STRIP "${FLTK_VERSION}" FLTK_VERSION) ++ if(FLTK_VERSION VERSION_GREATER 1.3) ++ add_subdirectory(src/fltk) ++ set_config_option(HAVE_FLTK "Fltk") ++ message(STATUS "Using fltk-config script for Fltk " ${FLTK_VERSION}) ++ execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --includedir ++ OUTPUT_VARIABLE FLTK_INCLUDE_DIR) ++ string(STRIP ${FLTK_INCLUDE_DIR} FLTK_INCLUDE_DIR) ++ list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}) ++ execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --ldflags ++ OUTPUT_VARIABLE FLTK_LIBRARIES) ++ string(STRIP ${FLTK_LIBRARIES} FLTK_LIBRARIES) ++ endif() ++ endif() ++ # then try the built-in FindFLTK module ++ if(NOT HAVE_FLTK) ++ set(FLTK_SKIP_FORMS TRUE) ++ set(FLTK_SKIP_FLUID TRUE) ++ find_package(FLTK) ++ if(FLTK_FOUND) ++ add_subdirectory(src/fltk) ++ set_config_option(HAVE_FLTK "Fltk") ++ list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}) ++ endif() ++ endif() ++ # workaround for Fedora/Suse messing up fltk-config (see issue #417) ++ if(HAVE_FLTK AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux") ++ string(REGEX MATCH "X11" FLTK_X11 ${FLTK_LIBRARIES}) ++ if(NOT FLTK_X11) ++ find_package(X11) ++ if(X11_FOUND) ++ list(APPEND EXTERNAL_INCLUDES ${X11_INCLUDE_DIR}) ++ list(APPEND EXTERNAL_LIBRARIES ${X11_LIBRARIES}) ++ endif() ++ endif() ++ endif() ++endif() ++ ++if(APPLE AND HAVE_FLTK AND ENABLE_TOUCHBAR) ++ STRING(REGEX MATCH "([0-9]+.[0-9]+)" OSX_SDK_VERSION "${CMAKE_OSX_SYSROOT}") ++ if(OSX_SDK_VERSION) ++ if(${OSX_SDK_VERSION} VERSION_GREATER 10.11) ++ set(GMSH_SRC ${GMSH_SRC};src/fltk/touchBar.mm) ++ set_config_option(HAVE_TOUCHBAR "TouchBar") ++ endif() ++ endif() ++endif() ++ ++if(ENABLE_ONELAB) ++ set_config_option(HAVE_ONELAB "ONELAB") ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab) ++ if(ENABLE_ONELAB_METAMODEL) ++ add_subdirectory(contrib/onelab) ++ include_directories(contrib/onelab) ++ set_config_option(HAVE_ONELAB_METAMODEL "ONELABMetamodel") ++ endif() ++ file(COPY ${ONELAB_PY} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) ++ endif() ++endif() ++ ++if(ENABLE_BUILD_IOS) ++ find_file(CMAKE_TOOLCHAIN_FILE "ios.cmake") ++ if(NOT CMAKE_TOOLCHAIN_FILE) ++ message(FATAL_ERROR "Cannot compile Gmsh for iOS without a toolchain") ++ endif() ++ add_definitions(-DBUILD_IOS) ++endif() ++ ++if(HAVE_FLTK OR ENABLE_GRAPHICS) ++ if(NOT HAVE_POST OR NOT HAVE_PLUGINS OR NOT HAVE_ONELAB) ++ message(SEND_ERROR "Cannot compile GUI without Post, Plugin and ONELAB") ++ endif() ++ ++ find_package(JPEG) ++ if(JPEG_FOUND) ++ set_config_option(HAVE_LIBJPEG "Jpeg") ++ list(APPEND EXTERNAL_LIBRARIES ${JPEG_LIBRARIES}) ++ list(APPEND EXTERNAL_INCLUDES ${JPEG_INCLUDE_DIR}) ++ endif() ++ ++ find_package(ZLIB) ++ if(ZLIB_FOUND) ++ set_config_option(HAVE_LIBZ "Zlib") ++ list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES}) ++ list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR}) ++ endif() ++ ++ if(HAVE_LIBZ) ++ find_package(PNG) ++ if(PNG_FOUND) ++ set_config_option(HAVE_LIBPNG "Png") ++ list(APPEND EXTERNAL_LIBRARIES ${PNG_LIBRARIES}) ++ list(APPEND EXTERNAL_INCLUDES ${PNG_INCLUDE_DIR}) ++ endif() ++ endif() ++ ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/mpeg_encode AND ++ ENABLE_MPEG_ENCODE) ++ add_subdirectory(contrib/mpeg_encode) ++ include_directories(contrib/mpeg_encode/headers) ++ set_config_option(HAVE_MPEG_ENCODE "Mpeg") ++ endif() ++ ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/3M AND ENABLE_3M) ++ add_subdirectory(contrib/3M) ++ include_directories(contrib/3M) ++ set_config_option(HAVE_3M "3M") ++ endif() ++ ++ if(ENABLE_OSMESA) ++ find_library(OSMESA_LIB OSMesa) ++ if(OSMESA_LIB) ++ set_config_option(HAVE_OSMESA "OSMesa") ++ list(APPEND EXTERNAL_LIBRARIES ${OSMESA_LIB}) ++ endif() ++ endif() ++ ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/graphics) ++ set(OpenGL_GL_PREFERENCE "LEGACY") ++ find_package(OpenGL REQUIRED) ++ if(OPENGL_GLU_FOUND AND OPENGL_FOUND) ++ add_subdirectory(src/graphics) ++ set_config_option(HAVE_OPENGL "OpenGL") ++ else() ++ message(SEND_ERROR "Could not find GLU: disabling OpenGL support") ++ endif() ++ endif() ++endif() ++ ++if(ENABLE_ANN) ++ find_library(ANN_LIB ANN PATH_SUFFIXES lib) ++ find_path(ANN_INC "ANN.h" PATH_SUFFIXES src include ANN) ++ if(ENABLE_SYSTEM_CONTRIB AND ANN_LIB AND ANN_INC) ++ message(STATUS "Using system version of ANN") ++ list(APPEND EXTERNAL_LIBRARIES ${ANN_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${ANN_INC}) ++ set_config_option(HAVE_ANN "ANN") ++ elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ANN) ++ add_subdirectory(contrib/ANN) ++ include_directories(contrib/ANN/include) ++ set_config_option(HAVE_ANN "ANN[contrib]") ++ endif() ++endif() ++ ++if(ENABLE_ALGLIB) ++ find_library(ALGLIB_LIB alglib) ++ find_path(ALGLIB_INC "stdafx.h" PATH_SUFFIXES libalglib) ++ if(ENABLE_SYSTEM_CONTRIB AND ALGLIB_LIB AND ALGLIB_INC) ++ list(APPEND EXTERNAL_LIBRARIES ${ALGLIB_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${ALGLIB_INC}) ++ set_config_option(HAVE_ALGLIB "ALGLIB") ++ elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ALGLIB) ++ add_subdirectory(contrib/ALGLIB) ++ include_directories(contrib/ALGLIB) ++ set_config_option(HAVE_ALGLIB "ALGLIB[contrib]") ++ endif() ++endif() ++ ++if(HAVE_FLTK AND ENABLE_CAIRO) ++ find_library(CAIRO_LIB cairo) ++ find_path(CAIRO_INC "cairo/cairo.h" PATH_SUFFIXES include) ++ if(CAIRO_INC AND CAIRO_LIB) ++ set_config_option(HAVE_CAIRO "Cairo") ++ list(APPEND EXTERNAL_LIBRARIES ${CAIRO_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${CAIRO_INC}) ++ endif() ++endif() ++ ++if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/DiscreteIntegration AND ++ ENABLE_DINTEGRATION) ++ add_subdirectory(contrib/DiscreteIntegration) ++ include_directories(contrib/DiscreteIntegration) ++ set_config_option(HAVE_DINTEGRATION "DIntegration") ++endif() ++ ++if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/kbipack AND ENABLE_KBIPACK) ++ set_config_option(HAVE_KBIPACK "Kbipack") ++ add_subdirectory(contrib/kbipack) ++ include_directories(contrib/kbipack) ++ if(ENABLE_GMP) ++ find_library(GMP_LIB gmp) ++ find_path(GMP_INC "gmp.h" PATH_SUFFIXES src include) ++ endif() ++ if(GMP_LIB AND GMP_INC) ++ set_config_option(HAVE_GMP "GMP") ++ list(APPEND EXTERNAL_LIBRARIES ${GMP_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${GMP_INC}) ++ else() ++ message(STATUS "GMP not found: Kbipack uses long int") ++ endif() ++endif() ++ ++if(ENABLE_MATHEX) ++ find_library(MATHEX_LIB mathex PATH_SUFFIXES lib) ++ find_path(MATHEX_INC "mathex.h" PATH_SUFFIXES src include) ++ if(ENABLE_SYSTEM_CONTRIB AND MATHEX_LIB AND MATHEX_INC) ++ list(APPEND EXTERNAL_LIBRARIES ${MATHEX_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${MATHEX_INC}) ++ set_config_option(HAVE_MATHEX "MathEx") ++ elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MathEx) ++ add_subdirectory(contrib/MathEx) ++ include_directories(contrib/MathEx) ++ set_config_option(HAVE_MATHEX "MathEx[contrib]") ++ endif() ++endif() ++ ++if(ENABLE_MPI) ++ find_package(MPI) ++ if(MPI_FOUND) ++ set_config_option(HAVE_MPI "MPI") ++ list(APPEND EXTERNAL_INCLUDES ${MPI_CXX_INCLUDE_PATH}) ++ list(APPEND EXTERNAL_LIBRARIES ${MPI_CXX_LIBRARIES}) ++ set(CMAKE_C_COMPILER ${MPI_C_COMPILER}) ++ set(CMAKE_CXX_COMPILER ${MPI_CXX_COMPILER}) ++ set(CMAKE_Fortran_COMPILER ${MPI_Fortran_COMPILER}) ++ endif() ++endif() ++ ++if(ENABLE_POPPLER) ++ find_library(POPPLER_LIB poppler) ++ find_library(POPPLER_CPP_LIB poppler-cpp) ++ find_path(POPPLER_INC "poppler/cpp/poppler-document.h" PATH_SUFFIXES src include) ++ if(POPPLER_LIB AND POPPLER_INC) ++ set_config_option(HAVE_POPPLER "Poppler") ++ list(APPEND EXTERNAL_LIBRARIES ${POPPLER_LIB}) ++ list(APPEND EXTERNAL_LIBRARIES ${POPPLER_CPP_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${POPPLER_INC}) ++ endif() ++endif() ++ ++if(ENABLE_P4EST) ++ find_library(P4EST_LIB p4est) ++ find_path(P4EST_INC "p4est.h" PATH_SUFFIXES src) ++ find_library(SC_LIB sc) ++ if(P4EST_LIB AND P4EST_INC AND SC_LIB) ++ set_config_option(HAVE_P4EST "P4est") ++ list(APPEND EXTERNAL_LIBRARIES ${P4EST_LIB} ${SC_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${P4EST_INC}) ++ endif() ++endif() ++ ++if(HAVE_MESH OR HAVE_SOLVER) ++ if(ENABLE_METIS) ++ find_library(METIS_LIB metis PATH_SUFFIXES lib) ++ find_path(METIS_INC "metis.h" PATH_SUFFIXES include) ++ if(ENABLE_SYSTEM_CONTRIB AND METIS_LIB AND METIS_INC) ++ message(STATUS "Using system version of METIS") ++ list(APPEND EXTERNAL_LIBRARIES ${METIS_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${METIS_INC}) ++ set_config_option(HAVE_METIS "Metis") ++ elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/metis) ++ add_definitions(-DUSE_GKREGEX) ++ add_subdirectory(contrib/metis) ++ include_directories(contrib/metis/include contrib/metis/libmetis ++ contrib/metis/GKlib) ++ set_config_option(HAVE_METIS "Metis[contrib]") ++ endif() ++ endif() ++endif() ++ ++if(HAVE_MESH) ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/mesh/tetgenBR.cxx) ++ set_config_option(HAVE_TETGENBR "TetGen/BR") ++ endif() ++ ++ if(ENABLE_VOROPP) ++ find_library(VOROPP_LIB voro++) ++ find_path(VOROPP_INC "voro++.hh" PATH_SUFFIXES voro++) ++ if(ENABLE_SYSTEM_CONTRIB AND VOROPP_LIB AND VOROPP_INC) ++ message(STATUS "Using system version of voro++") ++ list(APPEND EXTERNAL_LIBRARIES ${VOROPP_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${VOROPP_INC}) ++ set_config_option(HAVE_VOROPP "Voro++") ++ elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/voro++) ++ add_subdirectory(contrib/voro++) ++ include_directories(contrib/voro++/src) ++ set_config_option(HAVE_VOROPP "Voro++[contrib]") ++ endif() ++ endif() ++ ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/HighOrderMeshOptimizer AND ++ EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MeshOptimizer AND ++ EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MeshQualityOptimizer AND ++ ENABLE_OPTHOM) ++ add_subdirectory(contrib/HighOrderMeshOptimizer) ++ include_directories(contrib/HighOrderMeshOptimizer) ++ add_subdirectory(contrib/MeshOptimizer) ++ include_directories(contrib/MeshOptimizer) ++ include_directories(${CMAKE_CURRENT_BINARY_DIR}/contrib/MeshOptimizer) ++ add_subdirectory(contrib/MeshQualityOptimizer) ++ include_directories(contrib/MeshQualityOptimizer) ++ set_config_option(HAVE_OPTHOM "OptHom") ++ endif() ++ ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/domhex AND ENABLE_DOMHEX) ++ add_subdirectory(contrib/domhex) ++ include_directories(contrib/domhex) ++ set_config_option(HAVE_DOMHEX "DomHex") ++ endif() ++ ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/QuadTri AND ENABLE_QUADTRI) ++ add_subdirectory(contrib/QuadTri) ++ include_directories(contrib/QuadTri) ++ set_config_option(HAVE_QUADTRI "QuadTri") ++ endif() ++ ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/blossom AND ENABLE_BLOSSOM) ++ add_subdirectory(contrib/blossom) ++ include_directories(contrib/blossom/MATCH contrib/blossom/concorde97 ++ contrib/blossom/concorde97/INCLUDE) ++ set_config_option(HAVE_BLOSSOM "Blossom") ++ endif() ++ ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/Netgen AND ENABLE_NETGEN) ++ add_subdirectory(contrib/Netgen) ++ include_directories(contrib/Netgen contrib/Netgen/libsrc/include ++ contrib/Netgen/nglib) ++ set_config_option(HAVE_NETGEN "Netgen") ++ add_definitions(-DNO_PARALLEL_THREADS -DNOTCL) ++ endif() ++ ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/bamg AND ENABLE_BAMG) ++ add_subdirectory(contrib/bamg) ++ include_directories(contrib/bamg contrib/bamg/bamglib) ++ set_config_option(HAVE_BAMG "Bamg") ++ endif() ++ ++ if(ENABLE_MMG) ++ find_library(MMG_LIB NAMES Mmg mmg) ++ find_path(MMG_INC "libmmg.h" PATH_SUFFIXES mmg) ++ if(MMG_LIB AND MMG_INC) ++ list(APPEND EXTERNAL_LIBRARIES ${MMG_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${MMG_INC}) ++ set_config_option(HAVE_MMG "Mmg") ++ endif() ++ endif() ++ ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt AND ENABLE_HXT) ++ add_subdirectory(contrib/hxt) ++ include_directories(BEFORE ${HXT_INC_DIRS}) ++ set_config_option(HAVE_HXT "Hxt") ++ # do not use arithmetic contraction in predicates.c ++ if(MSVC OR (CMAKE_C_COMPILER_ID STREQUAL "Intel" AND WIN32)) ++ set_source_files_properties( ++ "${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt/predicates/src/predicates.c" ++ PROPERTIES COMPILE_FLAGS "/fp:strict") ++ elseif(CMAKE_C_COMPILER_ID STREQUAL "Intel") ++ set_source_files_properties( ++ "${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt/predicates/src/predicates.c" ++ PROPERTIES COMPILE_FLAGS "-fp-model strict") ++ elseif(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") ++ set_source_files_properties( ++ "${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt/predicates/src/predicates.c" ++ PROPERTIES COMPILE_FLAGS "-fno-unsafe-math-optimizations -ffp-contract=off") ++ else() ++ message(WARNING "Unknown compiler: make sure compiled functions from " ++ "predicates.c do not use extended double precision and follow " ++ "the IEEE754 standard. It is crucial for the robustness of " ++ "geometric predicates.") ++ endif() ++ if(MSVC) ++ add_definitions(/bigobj) ++ endif() ++ endif() ++ ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/QuadMeshingTools ++ AND ENABLE_QUADMESHINGTOOLS) ++ set_config_option(HAVE_QUADMESHINGTOOLS "QuadMeshingTools") ++ add_subdirectory(contrib/QuadMeshingTools) ++ include_directories(BEFORE contrib/QuadMeshingTools) ++ endif() ++ ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/WinslowUntangler ++ AND ENABLE_WINSLOWUNTANGLER) ++ set_config_option(HAVE_WINSLOWUNTANGLER "WinslowUntangler") ++ add_subdirectory(contrib/WinslowUntangler) ++ include_directories(BEFORE contrib/WinslowUntangler) ++ endif() ++endif() ++ ++if(ENABLE_MED OR ENABLE_CGNS) ++ find_package(HDF5) ++ if(HDF5_FOUND) ++ set(HDF5_LIB "${HDF5_C_LIBRARIES}") ++ list(APPEND EXTERNAL_INCLUDES ${HDF5_INCLUDE_DIRS}) ++ if(ENABLE_MED) ++ find_library(MED_LIB medC) ++ if(MED_LIB) ++ set_config_option(HAVE_MED "Med") ++ list(APPEND EXTERNAL_LIBRARIES ${MED_LIB}) ++ endif() ++ endif() ++ if(ENABLE_CGNS) ++ find_library(CGNS_LIB cgns HINTS ENV CGNS_ROOT PATH_SUFFIXES lib) ++ find_path(CGNS_INC "cgnslib.h" HINTS ENV CGNS_ROOT PATH_SUFFIXES include) ++ if(CGNS_LIB AND CGNS_INC) ++ set_config_option(HAVE_LIBCGNS "Cgns") ++ list(APPEND EXTERNAL_LIBRARIES ${CGNS_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${CGNS_INC}) ++ if(ENABLE_CGNS_CPEX0045) ++ set_config_option(HAVE_LIBCGNS_CPEX0045 "Cgns_CPEX0045") ++ endif() ++ endif() ++ endif() ++ if(MED_LIB OR CGNS_LIB) ++ list(APPEND EXTERNAL_LIBRARIES ${HDF5_LIB}) ++ find_library(SZ_LIB NAMES szlib sz) ++ if(SZ_LIB) ++ list(APPEND EXTERNAL_LIBRARIES ${SZ_LIB}) ++ endif() ++ if(NOT HAVE_LIBZ) # necessary for non-GUI builds ++ find_package(ZLIB) ++ if(ZLIB_FOUND) ++ set_config_option(HAVE_LIBZ "Zlib") ++ list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES}) ++ endif() ++ endif() ++ endif() ++ else() ++ message(STATUS "HDF5 not found") ++ endif() ++endif() ++ ++if(HAVE_SOLVER) ++ if(ENABLE_GMM) ++ find_path(GMM_INC "gmm.h" PATH_SUFFIXES src include include/gmm) ++ if(ENABLE_SYSTEM_CONTRIB AND GMM_INC) ++ message(STATUS "Using system version of GMM") ++ list(APPEND EXTERNAL_INCLUDES ${GMM_INC}) ++ set_config_option(HAVE_GMM "Gmm") ++ elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/gmm) ++ include_directories(contrib/gmm) ++ set_config_option(HAVE_GMM "Gmm[contrib]") ++ endif() ++ endif() ++ ++ if(ENABLE_PETSC) ++ if(PETSC_DIR) ++ set(ENV_PETSC_DIR ${PETSC_DIR}) ++ else() ++ set(ENV_PETSC_DIR $ENV{PETSC_DIR}) ++ endif() ++ if(PETSC_ARCH) ++ set(ENV_PETSC_ARCH ${PETSC_ARCH}) ++ else() ++ set(ENV_PETSC_ARCH $ENV{PETSC_ARCH}) ++ endif() ++ set(PETSC_POSSIBLE_CONF_FILES ++ ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables ++ ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc-conf/petscvariables ++ ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc/conf/petscvariables) ++ foreach(FILE ${PETSC_POSSIBLE_CONF_FILES}) ++ if(EXISTS ${FILE}) ++ # old-style PETSc installations (using PETSC_DIR and PETSC_ARCH) ++ message(STATUS "Using PETSc dir: ${ENV_PETSC_DIR}") ++ message(STATUS "Using PETSc arch: ${ENV_PETSC_ARCH}") ++ # find includes by parsing the petscvariables file ++ file(STRINGS ${FILE} PETSC_VARIABLES NEWLINE_CONSUME) ++ endif() ++ endforeach() ++ if(PETSC_VARIABLES) ++ # try to find PETSC_CC_INCLUDES for PETSc >= 3.4 ++ string(REGEX MATCH "PETSC_CC_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES ++ ${PETSC_VARIABLES}) ++ if(PETSC_PACKAGES_INCLUDES) ++ string(REPLACE "PETSC_CC_INCLUDES = " "" PETSC_PACKAGES_INCLUDES ++ ${PETSC_PACKAGES_INCLUDES}) ++ else() ++ # try to find PETSC_PACKAGES_INCLUDES in older versions ++ list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/include) ++ list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include) ++ string(REGEX MATCH "PACKAGES_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES ++ ${PETSC_VARIABLES}) ++ string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES ++ ${PETSC_PACKAGES_INCLUDES}) ++ endif() ++ if(PETSC_PACKAGES_INCLUDES) ++ if(PETSC_PACKAGES_INCLUDES) ++ string(REPLACE "-I" "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES}) ++ string(REPLACE " " ";" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES}) ++ foreach(VAR ${PETSC_PACKAGES_INCLUDES}) ++ # seem to include unexisting directories (/usr/include/lib64) ++ # check to avoid warnings ++ if(EXISTS ${VAR}) ++ list(APPEND EXTERNAL_INCLUDES ${VAR}) ++ endif() ++ endforeach() ++ endif() ++ endif() ++ # find libraries (<= 3.0) ++ set(PETSC_LIBS_REQUIRED petscksp petscdm petscmat petscvec petsc) ++ find_all_libraries(PETSC_LIBS PETSC_LIBS_REQUIRED ++ ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib "") ++ # petsc 3.1 creates only one library (libpetsc) ++ if(NOT PETSC_LIBS) ++ find_library(PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib ++ NO_DEFAULT_PATH) ++ endif() ++ if(PETSC_LIBS) ++ set_config_option(HAVE_PETSC "PETSc") ++ if(NOT HAVE_BLAS) ++ set_config_option(HAVE_BLAS "Blas[petsc]") ++ endif() ++ if(NOT HAVE_LAPACK) ++ set_config_option(HAVE_LAPACK "Lapack[petsc]") ++ endif() ++ endif() ++ # find slepc (needs to be linked in before petsc) ++ if(ENABLE_SLEPC) ++ if(SLEPC_DIR) ++ set(ENV_SLEPC_DIR ${SLEPC_DIR}) ++ else() ++ set(ENV_SLEPC_DIR $ENV{SLEPC_DIR}) ++ endif() ++ find_library(SLEPC_LIB slepc PATHS ${ENV_SLEPC_DIR}/${ENV_PETSC_ARCH}/lib ++ NO_DEFAULT_PATH) ++ if(SLEPC_LIB) ++ find_path(SLEPC_INC "slepc.h" PATHS ${ENV_SLEPC_DIR} PATH_SUFFIXES include ++ ${ENV_PETSC_ARCH}/include include/slepc NO_DEFAULT_PATH) ++ if(SLEPC_INC) ++ message(STATUS "Using SLEPc dir: ${ENV_SLEPC_DIR}") ++ set_config_option(HAVE_SLEPC "SLEPc") ++ list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC}) ++ find_path(SLEPC_INC2 "slepcconf.h" PATHS ${ENV_SLEPC_DIR} ++ PATH_SUFFIXES ${ENV_PETSC_ARCH}/include NO_DEFAULT_PATH) ++ if(SLEPC_INC2) ++ list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC2}) ++ endif() ++ endif() ++ endif() ++ endif() ++ list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS}) ++ # find additional libraries to link with ++ string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PLIBS ${PETSC_VARIABLES}) ++ if(PLIBS) ++ string(REPLACE "PACKAGES_LIBS = " "" PLIBS ${PLIBS}) ++ string(STRIP ${PLIBS} PLIBS) ++ list(APPEND EXTERNAL_LIBRARIES "${PLIBS}") ++ endif() ++ string(REGEX MATCH "PETSC_EXTERNAL_LIB_BASIC = [^\n\r]*" PLIBS_BASIC ${PETSC_VARIABLES}) ++ if(PLIBS_BASIC) ++ string(REPLACE "PETSC_EXTERNAL_LIB_BASIC = " "" PLIBS_BASIC ${PLIBS_BASIC}) ++ string(STRIP ${PLIBS_BASIC} PLIBS_BASIC) ++ separate_arguments(PLIBS_BASIC) ++ list(APPEND EXTERNAL_LIBRARIES "${PLIBS_BASIC}") ++ endif() ++ string(REGEX MATCH "PCC_LINKER_LIBS = [^\n\r]*" LLIBS ${PETSC_VARIABLES}) ++ if(LLIBS) ++ string(REPLACE "PCC_LINKER_LIBS = " "" LLIBS ${LLIBS}) ++ string(STRIP ${LLIBS} LLIBS) ++ list(APPEND EXTERNAL_LIBRARIES "${LLIBS}") ++ endif() ++ else() ++ # new-style PETSc installations (in standard system directories) ++ find_library(PETSC_LIBS petsc) ++ find_path(PETSC_INC "petsc.h" PATH_SUFFIXES include/petsc) ++ if(PETSC_LIBS AND PETSC_INC) ++ set_config_option(HAVE_PETSC "PETSc") ++ if(ENABLE_SLEPC) ++ find_library(SLEPC_LIB slepc) ++ find_path(SLEPC_INC "slepc.h" PATH_SUFFIXES include/slepc) ++ if(SLEPC_LIB AND SLEPC_INC) ++ set_config_option(HAVE_SLEPC "SLEPc") ++ list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC}) ++ endif() ++ endif() ++ list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS}) ++ list(APPEND EXTERNAL_INCLUDES ${PETSC_INC}) ++ endif() ++ endif() ++ endif() ++ ++ if(ENABLE_MUMPS AND HAVE_BLAS AND HAVE_LAPACK) ++ set(MUMPS_LIBS_REQUIRED smumps dmumps cmumps zmumps mumps_common pord) ++ if(NOT ENABLE_MPI) ++ list(APPEND MUMPS_LIBS_REQUIRED mpiseq) ++ endif() ++ find_all_libraries(MUMPS_LIBRARIES MUMPS_LIBS_REQUIRED "" "lib") ++ find_path(SMUMPS_INC "smumps_c.h" PATH_SUFFIXES src include) ++ find_path(DMUMPS_INC "dmumps_c.h" PATH_SUFFIXES src include) ++ find_path(CMUMPS_INC "cmumps_c.h" PATH_SUFFIXES src include) ++ find_path(ZMUMPS_INC "zmumps_c.h" PATH_SUFFIXES src include) ++ if(MUMPS_LIBRARIES AND SMUMPS_INC AND DMUMPS_INC AND CMUMPS_INC AND ZMUMPS_INC) ++ set_config_option(HAVE_MUMPS "MUMPS") ++ list(APPEND EXTERNAL_LIBRARIES ${MUMPS_LIBRARIES}) ++ list(APPEND EXTERNAL_INCLUDES ${SMUMPS_INC}) ++ list(APPEND EXTERNAL_INCLUDES ${DMUMPS_INC}) ++ list(APPEND EXTERNAL_INCLUDES ${CMUMPS_INC}) ++ list(APPEND EXTERNAL_INCLUDES ${ZMUMPS_INC}) ++ find_library(GFORTRAN_LIB gfortran) ++ if(GFORTRAN_LIB) ++ list(APPEND EXTERNAL_LIBRARIES ${GFORTRAN_LIB}) ++ endif() ++ if(ENABLE_GMM) # use GMM/MUMPS interface ++ add_definitions(-DGMM_USES_MUMPS) ++ endif() ++ endif() ++ endif() ++ ++ if(ENABLE_GETDP) ++ find_library(GETDP_LIB GetDP) ++ find_path(GETDP_INC "GetDP.h" PATH_SUFFIXES getdp) ++ if(GETDP_LIB AND GETDP_INC) ++ set_config_option(HAVE_GETDP "GetDP") ++ list(APPEND EXTERNAL_LIBRARIES ${GETDP_LIB}) ++ list(APPEND EXTERNAL_INCLUDES ${GETDP_INC}) ++ endif() ++ endif() ++endif() ++ ++if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/pro AND ENABLE_PRO) ++ add_subdirectory(pro) ++endif() ++ ++if(ENABLE_OCC) ++ set(OCC_MINIMAL_VERSION "6.9.1") ++ if(WIN32) ++ if(HAVE_64BIT_SIZE_T) ++ set(OCC_SYS_NAME win64) ++ else() ++ set(OCC_SYS_NAME win32) ++ endif() ++ else() ++ set(OCC_SYS_NAME ${CMAKE_SYSTEM_NAME}) ++ endif() ++ find_path(OCC_INC "Standard_Version.hxx" HINTS ENV CASROOT PATH_SUFFIXES ++ inc include include/oce opencascade include/opencascade ++ occt include/occt) ++ if(OCC_INC) ++ file(STRINGS ${OCC_INC}/Standard_Version.hxx ++ OCC_MAJOR REGEX "#define OCC_VERSION_MAJOR.*") ++ file(STRINGS ${OCC_INC}/Standard_Version.hxx ++ OCC_MINOR REGEX "#define OCC_VERSION_MINOR.*") ++ file(STRINGS ${OCC_INC}/Standard_Version.hxx ++ OCC_MAINT REGEX "#define OCC_VERSION_MAINTENANCE.*") ++ if(OCC_MAJOR AND OCC_MINOR AND OCC_MAINT) ++ string(REGEX MATCH "[0-9]+" OCC_MAJOR "${OCC_MAJOR}") ++ string(REGEX MATCH "[0-9]+" OCC_MINOR "${OCC_MINOR}") ++ string(REGEX MATCH "[0-9]+" OCC_MAINT "${OCC_MAINT}") ++ set(OCC_VERSION "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}") ++ message(STATUS "Found OpenCASCADE version ${OCC_VERSION} in ${OCC_INC}") ++ endif() ++ endif() ++ if(OCC_VERSION AND OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION}) ++ message(WARNING "Gmsh requires OpenCASCADE >= ${OCC_MINIMAL_VERSION}. " ++ "Use CMAKE_PREFIX_PATH or the CASROOT environment variable " ++ "to explicitly specify the installation path of OpenCASCADE") ++ elseif(OCC_INC) ++ set(OCC_LIBS_REQUIRED ++ # subset of DataExchange ++ TKSTEP TKSTEP209 TKSTEPAttr TKSTEPBase TKIGES TKXSBase ++ # ModelingAlgorithms ++ TKOffset TKFeat TKFillet TKBool TKMesh TKHLR TKBO TKPrim TKShHealing ++ TKTopAlgo TKGeomAlgo ++ # ModelingData ++ TKBRep TKGeomBase TKG3d TKG2d ++ # FoundationClasses ++ TKMath TKernel) ++ if(ENABLE_OCC_TBB) ++ list(APPEND OCC_LIBS_REQUIRED tbb tbbmalloc) ++ endif() ++ list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS_REQUIRED) ++ if(OCC_LIBS) ++ message(STATUS "OCC libraries specified explicitly: " ${OCC_LIBS}) ++ list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS) ++ else() ++ set(OCC_LIBS) ++ foreach(OCC ${OCC_LIBS_REQUIRED}) ++ find_library(OCC_LIB ${OCC} HINTS ENV CASROOT PATH_SUFFIXES ++ lib ${OCC_SYS_NAME}/vc8/lib ${OCC_SYS_NAME}/vc9/lib ++ ${OCC_SYS_NAME}/vc10/lib ${OCC_SYS_NAME}/vc11/lib ++ ${OCC_SYS_NAME}/vc12/lib ${OCC_SYS_NAME}/vc14/lib ++ ${OCC_SYS_NAME}/gcc/lib ${OCC_SYS_NAME}/gcc/bin ++ ${OCC_SYS_NAME}/lib) ++ if(OCC_LIB) ++ list(APPEND OCC_LIBS ${OCC_LIB}) ++ else() ++ message(STATUS "OCC lib " ${OCC} " not Found") ++ endif() ++ unset(OCC_LIB CACHE) ++ endforeach() ++ list(LENGTH OCC_LIBS NUM_OCC_LIBS) ++ endif() ++ endif() ++ ++ # additional OCC libraries to handle reading of STEP/IGES attributes. Oh my... ++ if(ENABLE_OCC_CAF) ++ find_package(Freetype) ++ if(FREETYPE_FOUND) ++ set(OCC_CAF_LIBS_REQUIRED ++ TKXDESTEP TKXDEIGES TKXCAF TKLCAF TKVCAF TKCAF TKV3d TKService TKCDF) ++ list(LENGTH OCC_CAF_LIBS_REQUIRED NUM_OCC_CAF_LIBS_REQUIRED) ++ set(OCC_CAF_LIBS) ++ foreach(OCC ${OCC_CAF_LIBS_REQUIRED}) ++ find_library(OCC_CAF_LIB ${OCC} HINTS ENV CASROOT PATH_SUFFIXES ++ lib ${OCC_SYS_NAME}/vc8/lib ${OCC_SYS_NAME}/vc9/lib ++ ${OCC_SYS_NAME}/vc10/lib ${OCC_SYS_NAME}/vc11/lib ++ ${OCC_SYS_NAME}/vc12/lib ${OCC_SYS_NAME}/vc14/lib ++ ${OCC_SYS_NAME}/gcc/lib ${OCC_SYS_NAME}/gcc/bin ++ ${OCC_SYS_NAME}/lib) ++ if(OCC_CAF_LIB) ++ list(APPEND OCC_CAF_LIBS ${OCC_CAF_LIB}) ++ else() ++ message(STATUS "OCC CAF lib " ${OCC} " not Found") ++ endif() ++ unset(OCC_CAF_LIB CACHE) ++ endforeach() ++ list(LENGTH OCC_CAF_LIBS NUM_OCC_CAF_LIBS) ++ endif() ++ endif() ++ ++ if(NUM_OCC_LIBS EQUAL NUM_OCC_LIBS_REQUIRED) ++ # append OCC CAF libraries first... ++ if(NUM_OCC_CAF_LIBS EQUAL NUM_OCC_CAF_LIBS_REQUIRED) ++ set_config_option(HAVE_OCC_CAF "OpenCASCADE-CAF") ++ list(APPEND EXTERNAL_LIBRARIES ${OCC_CAF_LIBS} ${FREETYPE_LIBRARIES}) ++ list(APPEND EXTERNAL_INCLUDES ${FREETYPE_INCLUDE_DIRS}) ++ if(WIN32) ++ list(APPEND EXTERNAL_LIBRARIES "windowscodecs") ++ list(APPEND EXTERNAL_LIBRARIES "ole32") ++ endif() ++ endif() ++ # then append OCC libraries ++ set_config_option(HAVE_OCC "OpenCASCADE") ++ list(APPEND EXTERNAL_LIBRARIES ${OCC_LIBS}) ++ list(APPEND EXTERNAL_INCLUDES ${OCC_INC}) ++ if(WIN32 AND NOT MSVC) ++ add_definitions(-DOCC_CONVERT_SIGNALS) ++ endif() ++ endif() ++endif() ++ ++if(ENABLE_ZIPPER) ++ if(ENABLE_BUILD_IOS) ++ set_config_option(HAVE_LIBZ "Zlib") ++ endif() ++ if(NOT HAVE_LIBZ) # necessary for non-GUI builds ++ find_package(ZLIB) ++ if(ZLIB_FOUND) ++ set_config_option(HAVE_LIBZ "Zlib") ++ list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES}) ++ list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR}) ++ endif() ++ endif() ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/zipper AND HAVE_LIBZ) ++ add_subdirectory(contrib/zipper) ++ include_directories(contrib/zipper) ++ set_config_option(HAVE_ZIPPER "Zipper") ++ endif() ++endif() ++ ++if(ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON) ++ find_package(SWIG REQUIRED) ++ include(${SWIG_USE_FILE}) ++ find_package(PythonLibs) ++ if(SWIG_FOUND AND PYTHONLIBS_FOUND) ++ message(STATUS "Found SWIG version " ${SWIG_VERSION}) ++ find_package(PythonInterp) ++ string(SUBSTRING ${SWIG_VERSION} 0 1 SWIG_MAJOR_VERSION) ++ if(SWIG_MAJOR_VERSION EQUAL 1) ++ message(WARNING "Python bindings require SWIG >= 2: disabling Python") ++ else() ++ set_config_option(HAVE_PYTHON "Python") ++ mark_as_advanced(CLEAR PYTHON_LIBRARY PYTHON_INCLUDE_DIR) ++ if(ENABLE_NUMPY) ++ if (NOT NUMPY_INC) ++ EXEC_PROGRAM (${PYTHON_EXECUTABLE} ++ ARGS "-c \"import numpy; print(numpy.get_include())\"" ++ OUTPUT_VARIABLE NUMPY_INC ++ RETURN_VALUE NUMPY_NOT_FOUND) ++ endif() ++ if(NUMPY_INC) ++ list(APPEND EXTERNAL_INCLUDES ${NUMPY_INC}) ++ set_config_option(HAVE_NUMPY "Numpy") ++ endif() ++ endif() ++ if(HAVE_PETSC) ++ if(ENABLE_PETSC4PY) ++ EXECUTE_PROCESS( ++ COMMAND ${PYTHON_EXECUTABLE} -c "import petsc4py; print(petsc4py.get_include())" ++ OUTPUT_VARIABLE PETSC4PY_INC ++ RESULT_VARIABLE PETSC4PY_NOT_FOUND ++ ERROR_QUIET ++ OUTPUT_STRIP_TRAILING_WHITESPACE) ++ if(PETSC4PY_INC) ++ list(APPEND EXTERNAL_INCLUDES ${PETSC4PY_INC}) ++ set_config_option(HAVE_PETSC4PY "PETSc4py") ++ endif() ++ endif() ++ endif() ++ endif() ++ endif() ++endif() ++ ++check_function_exists(vsnprintf HAVE_VSNPRINTF) ++if(NOT HAVE_VSNPRINTF AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID) ++ set_config_option(HAVE_NO_VSNPRINTF "NoVsnprintf") ++endif() ++ ++check_include_file(sys/socket.h HAVE_SYS_SOCKET_H) ++if(HAVE_SYS_SOCKET_H) ++ set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h) ++endif() ++check_type_size(socklen_t SOCKLEN_T_SIZE) ++set(CMAKE_EXTRA_INCLUDE_FILES) ++if(NOT SOCKLEN_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID) ++ set_config_option(HAVE_NO_SOCKLEN_T "NoSocklenT") ++endif() ++ ++check_include_file(stdint.h HAVE_STDINT_H) ++if(HAVE_STDINT_H) ++ set(CMAKE_EXTRA_INCLUDE_FILES stdint.h) ++else() ++ set_config_option(HAVE_NO_STDINT_H "NoStdintH") ++endif() ++check_type_size(intptr_t INTPTR_T_SIZE) ++set(CMAKE_EXTRA_INCLUDE_FILES) ++if(NOT INTPTR_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID) ++ set_config_option(HAVE_NO_INTPTR_T "NoIntptrT") ++endif() ++ ++check_include_file(dlfcn.h DLFCN_H) ++if(DLFCN_H) ++ set_config_option(HAVE_DLOPEN "Dlopen") ++ list(APPEND EXTERNAL_LIBRARIES ${CMAKE_DL_LIBS}) ++endif() ++ ++if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") ++ check_include_file(linux/joystick.h LINUX_JOYSTICK_H) ++ if(LINUX_JOYSTICK_H) ++ set_config_option(HAVE_LINUX_JOYSTICK "LinuxJoystick") ++ endif() ++endif() ++ ++if(WIN32) ++ add_definitions(-D_USE_MATH_DEFINES) ++ list(APPEND EXTERNAL_LIBRARIES winmm wsock32 ws2_32 psapi) ++endif() ++ ++if(MSVC) ++ add_definitions(-DNOMINMAX -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS ++ -D_SCL_SECURE_NO_DEPRECATE) ++endif() ++ ++# add C functions API ++set(GMSH_SRC ${GMSH_SRC};api/gmshc.cpp) ++ ++# force full warnings to encourage everybody to write clean(er) code ++check_cxx_compiler_flag("-Wall" WALL) ++if(WALL AND NOT MSVC) ++ file(GLOB_RECURSE WALL_SRC src/common/*.cpp src/fltk/*.cpp FunctionSpace/*.cpp ++ src/geo/*.cpp src/graphics/*.cpp src/mesh/*.cpp src/numeric/*.cpp src/parser/*.cpp ++ src/plugin/*.cpp src/post/*.cpp src/solver/*.cpp) ++ set(WF "-Wall") ++ check_cxx_compiler_flag("-Wint-to-void-pointer-cast" WCAST) ++ if(WCAST) ++ set(WF "${WF} -Wno-int-to-void-pointer-cast") ++ endif() ++ check_cxx_compiler_flag("-Wdeprecated-declarations" WDEPREC) ++ if(WDEPREC) ++ # FIXME: remove this when we have fixed the deprecated GLU code for OpenGL3 ++ set(WF "${WF} -Wno-deprecated-declarations") ++ endif() ++ check_cxx_compiler_flag("-Wmisleading-indentation" WIND) ++ if(WIND) ++ set(WF "${WF} -Wno-misleading-indentation") ++ endif() ++ check_cxx_compiler_flag("-Wno-attributes" WATTR) ++ if(WATTR) ++ # FIXME: remove this when GCC behaves more intelligently ++ set(WF "${WF} -Wno-attributes") ++ endif() ++ if(WIN32 OR NOT HAVE_64BIT_SIZE_T) ++ # FIXME: remove printf family warnings on 32 bit systems and windows ++ check_cxx_compiler_flag("-Wno-format" WFORMAT) ++ if(WFORMAT) ++ set(WF "${WF} -Wno-format") ++ endif() ++ endif() ++ set_compile_flags(WALL_SRC ${WF}) ++endif() ++ ++# don't issue warnings for contributed libraries and for autogenerated files ++check_cxx_compiler_flag("-w" NOWARN) ++if(NOWARN) ++ file(GLOB_RECURSE NOWARN_SRC contrib/*.cpp contrib/*.cc contrib/*.cxx ++ contrib/*.c src/parser/Gmsh.*.cpp) ++ set_compile_flags(NOWARN_SRC "-w") ++endif() ++ ++# fine-tune optimization flags for particular files ++check_cxx_compiler_flag("-O0" NOOPT) ++if(NOOPT OR ENABLE_BUILD_IOS) ++ if(ENABLE_BUILD_IOS) ++ # optimized builds on iOS 10 64 bits fail spectacularly ++ file(GLOB_RECURSE NOOPT_SRC src/geo/G*.cpp src/mesh/BDS.cpp ++ src/parser/Gmsh.tab.cpp contrib/blossom/* contrib/bamg/* ++ src/mesh/Background*) ++ else() ++ # bamg fails even with -O1 ++ file(GLOB_RECURSE NOOPT_SRC contrib/bamg/*) ++ endif() ++ set_compile_flags(NOOPT_SRC "-O0") ++endif() ++if(MSVC OR (CMAKE_C_COMPILER_ID STREQUAL "Intel" AND WIN32)) ++ set_source_files_properties( ++ "${CMAKE_CURRENT_SOURCE_DIR}/src/numeric/robustPredicates.cpp" ++ PROPERTIES COMPILE_FLAGS "/fp:strict") ++elseif(CMAKE_C_COMPILER_ID STREQUAL "Intel") ++ set_source_files_properties( ++ "${CMAKE_CURRENT_SOURCE_DIR}/src/numeric/robustPredicates.cpp" ++ PROPERTIES COMPILE_FLAGS "-fp-model strict") ++elseif(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") ++ set_source_files_properties( ++ "${CMAKE_CURRENT_SOURCE_DIR}/src/numeric/robustPredicates.cpp" ++ PROPERTIES COMPILE_FLAGS "-fno-unsafe-math-optimizations -ffp-contract=off") ++else() ++ message(WARNING "Unknown compiler: make sure compiled functions from " ++ "src/numeric/robustPredicates.cpp do not use extended double precision " ++ "and follow the IEEE754 standard. It is crucial for the robustness of " ++ "geometric predicates.") ++endif() ++ ++# enable Revoropt and set compile flags for the corresponding plugin ++if(ENABLE_REVOROPT) ++ if(HAVE_EIGEN AND HAVE_MESH AND HAVE_PLUGINS AND HAVE_ANN AND HAVE_ALGLIB) ++ list(APPEND EXTERNAL_INCLUDES contrib/Revoropt/include) ++ set_config_option(HAVE_REVOROPT "Revoropt") ++ add_definitions(-DUSE_ANN) ++ else() ++ message(WARNING "Revoropt requires Eigen, Mesh, Plugins, ANN and ALGLIB") ++ endif() ++endif() ++ ++if(HAVE_MESH AND NOT HAVE_EIGEN AND NOT HAVE_LAPACK) ++ message(WARNING "Most meshing algorithms will not be functional without " ++ "Eigen or Lapack") ++endif() ++ ++list(SORT CONFIG_OPTIONS) ++set(GMSH_CONFIG_OPTIONS "") ++foreach(OPT ${CONFIG_OPTIONS}) ++ set(GMSH_CONFIG_OPTIONS "${GMSH_CONFIG_OPTIONS} ${OPT}") ++endforeach() ++ ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/common/GmshConfig.h.in ++ ${CMAKE_CURRENT_BINARY_DIR}/src/common/GmshConfig.h) ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/common/GmshVersion.h.in ++ ${CMAKE_CURRENT_BINARY_DIR}/src/common/GmshVersion.h) ++ ++# the texi and pypi version files are modified in the source directory (not ++# ideal for version.texi, but since git tracks the contents of the file this is ++# acceptable as it will only change when the actual version is changed - not for ++# each git hash) ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi.in ++ ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi) ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/utils/pypi/setup-wheel.py.in ++ ${CMAKE_CURRENT_BINARY_DIR}/setup-wheel.py) ++ ++file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/version.txt ${GMSH_SHORT_VERSION}) ++ ++# process cmake environment variables so we can append them to the -I include ++# commands. This is not recommended (we should only use the cache variables) but ++# it is very convenient: otherwise we have to remember providing the ++# -D... options to cmake for each new build. ++set(ENV_CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH}) ++set(ENV_CMAKE_INCLUDE_PATH $ENV{CMAKE_INCLUDE_PATH}) ++if(UNIX) ++ if(ENV_CMAKE_PREFIX_PATH) ++ string(REPLACE ":" ";" ENV_CMAKE_PREFIX_PATH ${ENV_CMAKE_PREFIX_PATH}) ++ endif() ++ if(ENV_CMAKE_INCLUDE_PATH) ++ string(REPLACE ":" ";" ENV_CMAKE_INCLUDE_PATH ${ENV_CMAKE_INCLUDE_PATH}) ++ endif() ++endif() ++list(APPEND EXTERNAL_INCLUDES ${CMAKE_INCLUDE_PATH} ${ENV_CMAKE_INCLUDE_PATH}) ++list(APPEND EXTERNAL_INCLUDES ${CMAKE_PREFIX_PATH} ${ENV_CMAKE_PREFIX_PATH}) ++foreach(DIR ${CMAKE_PREFIX_PATH} ${ENV_CMAKE_PREFIX_PATH}) ++ list(APPEND EXTERNAL_INCLUDES ${DIR}/include) ++endforeach() ++ ++if(EXTERNAL_INCLUDES) ++ list(REMOVE_DUPLICATES EXTERNAL_INCLUDES) ++endif() ++ ++if(HAVE_FLTK) ++ set(LINK_LIBRARIES ${FLTK_LIBRARIES} ${EXTERNAL_LIBRARIES} ++ ${OPENGL_LIBRARIES} ${LAPACK_LIBRARIES}) ++elseif(HAVE_OPENGL) ++ set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${OPENGL_LIBRARIES} ++ ${LAPACK_LIBRARIES}) ++else() ++ set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES}) ++endif() ++ ++# try to use static gfortran on static builds (cannot do this on dynamic builds ++# as e.g. Debian compiles libgfortran.a without -fPIC: sigh...) ++if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENABLE_BUILD_SHARED) ++ find_library(GFORTRAN_STATIC libgfortran.a) ++ if(GFORTRAN_STATIC) ++ set(CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES) ++ message(STATUS "Using static libgfortran") ++ foreach(STR ${LINK_LIBRARIES}) ++ string(REPLACE "-lgfortran" ${GFORTRAN_STATIC} STR2 ${STR}) ++ list(APPEND LINK_LIBRARIES2 ${STR2}) ++ endforeach() ++ set(LINK_LIBRARIES ${LINK_LIBRARIES2}) ++ endif() ++endif() ++ ++# Linux-specific linker options ++if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") ++ if(HAVE_OCC) ++ find_library(RT_LIB rt) ++ if(RT_LIB) ++ list(APPEND LINK_LIBRARIES ${RT_LIB}) ++ endif() ++ endif() ++ if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Intel") ++ add_definitions(-fPIC) ++ endif() ++endif() ++ ++# we could specify include dirs more selectively, but this is simpler ++include_directories(src/common src/fltk src/geo src/graphics src/mesh src/solver ++ src/numeric src/parser src/plugin src/post api ++ ${EXTERNAL_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}/src/common) ++ ++# set this for external codes that might include this CMakeList file ++set(GMSH_EXTERNAL_INCLUDE_DIRS ${EXTERNAL_INCLUDES} CACHE ++ STRING "External include directories" FORCE) ++set(GMSH_EXTERNAL_LIBRARIES ${LINK_LIBRARIES} CACHE ++ STRING "External libraries" FORCE) ++ ++# group sources for easier navigation in IDEs ++foreach(DIR ${GMSH_DIRS}) ++ string(REGEX REPLACE "\\+" "\\\\+" DIR ${DIR}) ++ source_group(${DIR} REGULAR_EXPRESSION ${DIR}/.*) ++endforeach() ++ ++# static library target ++if(ENABLE_BUILD_LIB) ++ add_library(lib STATIC ${GMSH_SRC}) ++ set_target_properties(lib PROPERTIES OUTPUT_NAME gmsh) ++ if(MSVC) ++ set_target_properties(lib PROPERTIES DEBUG_POSTFIX d) ++ if(ENABLE_MSVC_STATIC_RUNTIME) ++ set_target_properties(lib PROPERTIES LINK_FLAGS_RELEASE "/nodefaultlib:LIBCMT") ++ endif() ++ endif() ++endif() ++ ++# shared library target ++if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) ++ add_library(shared SHARED ${GMSH_SRC}) ++ set_target_properties(shared PROPERTIES OUTPUT_NAME gmsh ++ VERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION} ++ SOVERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}) ++ if(WIN32) ++ set_target_properties(shared PROPERTIES PREFIX "" IMPORT_PREFIX "" ++ IMPORT_SUFFIX ".lib" COMPILE_FLAGS "-DGMSH_DLL -DGMSH_DLL_EXPORT") ++ elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND NOT ENABLE_PRIVATE_API) ++ # hide all symbols by default (if not exporting the private API); symbols to ++ # export should be marked with __attribute__ ((visibility("default"))) ++ set_target_properties(shared PROPERTIES COMPILE_FLAGS "-fvisibility=hidden") ++ endif() ++ target_link_libraries(shared ${LINK_LIBRARIES}) ++ # don't define LC_RPATH in dylib for development, to not get endless warnings ++ # about code signing ++ if(APPLE AND NOT GMSH_RELEASE) ++ set_target_properties(shared PROPERTIES INSTALL_RPATH "") ++ endif() ++ if(MSVC AND ENABLE_MSVC_STATIC_RUNTIME) ++ message(STATUS "Note: By enabling ENABLE_MSVC_STATIC_RUNTIME, shared library " ++ "won't link. In MSVC change /MT to /MD in the shared project properties") ++ endif() ++endif() ++ ++# binary targets ++if(HAVE_FLTK) ++ if(ENABLE_BUILD_DYNAMIC) ++ add_executable(gmsh WIN32 src/common/Main.cpp) ++ target_link_libraries(gmsh shared) ++ else() ++ add_executable(gmsh WIN32 src/common/Main.cpp ${GMSH_SRC}) ++ endif() ++ # we could add this to create a minimal app bundle even without install ++ # if(APPLE AND NOT ENABLE_OS_SPECIFIC_INSTALL) ++ # set_target_properties(gmsh PROPERTIES MACOSX_BUNDLE ON ++ # MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_dev.plist) ++ # endif() ++else() ++ if(ENABLE_BUILD_DYNAMIC) ++ add_executable(gmsh src/common/Main.cpp) ++ target_link_libraries(gmsh shared) ++ else() ++ add_executable(gmsh src/common/Main.cpp ${GMSH_SRC}) ++ endif() ++endif() ++target_link_libraries(gmsh ${LINK_LIBRARIES}) ++ ++# Windows specific linker options ++if(WIN32 AND NOT MSVC) ++ set(FLAGS "-Wl,--stack,16777216 -Wl,--image-base -Wl,0x10000000 -static") ++ if(HAVE_FLTK) ++ set(APPFLAGS "${FLAGS} -municode -mwindows") ++ if(HAVE_64BIT_SIZE_T) ++ set(APPFLAGS "${APPFLAGS} \"${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/Win64Icon.res\"") ++ else() ++ set(APPFLAGS "${APPFLAGS} \"${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/Win32Icon.res\"") ++ endif() ++ else() ++ set(APPFLAGS "${FLAGS} -municode -mconsole") ++ endif() ++ set_target_properties(gmsh PROPERTIES LINK_FLAGS "${APPFLAGS}") ++ if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED) ++ set_target_properties(shared PROPERTIES LINK_FLAGS "${FLAGS}") ++ endif() ++ # remove -Wl,-Bdynamic flags ++ set(CMAKE_EXE_LINK_DYNAMIC_C_FLAGS) ++ set(CMAKE_EXE_LINK_DYNAMIC_CXX_FLAGS) ++elseif(MSVC) ++ set_target_properties(gmsh PROPERTIES LINK_FLAGS "/STACK:16777216 /SAFESEH:NO") ++endif() ++ ++# android target ++if(ENABLE_BUILD_ANDROID) ++ find_file(CMAKE_TOOLCHAIN_FILE "android.toolchain.cmake") ++ if(NOT CMAKE_TOOLCHAIN_FILE) ++ message(FATAL_ERROR "Cannot compile Gmsh for android without android-cmake") ++ endif() ++ add_definitions(-D_GLIBCXX_USE_C99_MATH=1) ++ set(CMAKE_BUILD_TYPE Release) ++ set(LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_CURRENT_BINARY_DIR}) ++ set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/libs/) ++ add_definitions(-DBUILD_ANDROID) ++ add_definitions(-DPICOJSON_USE_LOCALE=0) ++ add_library(androidGmsh SHARED ${GMSH_SRC}) ++ set_target_properties(androidGmsh PROPERTIES OUTPUT_NAME gmsh) ++ target_link_libraries(androidGmsh ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES}) ++ add_custom_command(TARGET androidGmsh POST_BUILD COMMAND ++ ${CMAKE_STRIP} ${LIBRARY_OUTPUT_PATH}/libgmsh.so) ++endif() ++ ++# parser target ++find_program(BISON bison) ++find_program(FLEX flex) ++if(BISON AND FLEX) ++ add_custom_target(parser ++ COMMAND ${BISON} -p gmsh_yy --output Gmsh.tab.cpp -d Gmsh.y ++ COMMAND ${FLEX} -P gmsh_yy -o Gmsh.yy.cpp Gmsh.l ++ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/parser) ++endif() ++ ++if(UNIX) ++ # cannot use cmake's file search functions here (they would only find files ++ # existing at configuration time) ++ add_custom_target(purge ++ COMMAND rm -f `find . -name *~ -o -name *~~` ++ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) ++ add_custom_target(etags ++ COMMAND etags `find . -name *.cpp -o -name *.h -o -name *.y` ++ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) ++endif() ++ ++if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR ++ CMAKE_CXX_COMPILER_ID MATCHES "Clang") ++ execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion ++ OUTPUT_VARIABLE CXX_COMPILER_VERSION ++ OUTPUT_STRIP_TRAILING_WHITESPACE) ++else() ++ set(CXX_COMPILER_VERSION "Unknown") ++endif() ++ ++set(WELCOME_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/WELCOME.txt) ++set(SDK_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/SDK.txt) ++set(LICENSE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt) ++set(CREDITS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CREDITS.txt) ++set(CHANGELOG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.txt) ++file(GLOB TUTORIALS_GEO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorials/?*.*) ++file(GLOB TUTORIALS_CPP_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorials/c++/?*.*) ++file(GLOB TUTORIALS_C_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorials/c/?*.*) ++file(GLOB TUTORIALS_PY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorials/python/?*.*) ++file(GLOB TUTORIALS_JL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorials/julia/?*.*) ++file(GLOB EXAMPLES ${CMAKE_CURRENT_SOURCE_DIR}/examples/*) ++foreach(SUBDIR ${EXAMPLES}) ++ if(IS_DIRECTORY ${SUBDIR}) ++ list(APPEND EXAMPLES_DIRS ${SUBDIR}) ++ endif() ++endforeach() ++set(TEX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo) ++file(GLOB TEX_SRC ${TEX_DIR}/*.texi) ++set(TEX_OBJ ${TEX_DIR}/gmsh.aux ${TEX_DIR}/gmsh.cp ${TEX_DIR}/gmsh.cps ++ ${TEX_DIR}/gmsh.fn ${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.ky ++ ${TEX_DIR}/gmsh.log ${TEX_DIR}/gmsh.pdf ${TEX_DIR}/gmsh.pg ${TEX_DIR}/gmsh.toc ++ ${TEX_DIR}/gmsh.tp ${TEX_DIR}/gmsh.tps ${TEX_DIR}/gmsh.txt ${TEX_DIR}/gmsh.vr) ++ ++macro(unix2dos VARNAME UNIQUEPATH) ++ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${UNIQUEPATH}) ++ set(UNIX2DOS_FILES) ++ foreach(FILE ${${VARNAME}}) ++ file(READ ${FILE} F0) ++ get_filename_component(N ${FILE} NAME) ++ if(CYGWIN) ++ string(REGEX REPLACE "\n" "\r\n" F1 "${F0}") ++ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${UNIQUEPATH}/${N} "${F1}") ++ else() # if not in Cygwin, cmake adds '\r's automatically ++ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${UNIQUEPATH}/${N} "${F0}") ++ endif() ++ list(APPEND UNIX2DOS_FILES ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${UNIQUEPATH}/${N}) ++ endforeach() ++ set(${VARNAME} ${UNIX2DOS_FILES}) ++endmacro() ++ ++if(WIN32) ++ if(ENABLE_OS_SPECIFIC_INSTALL) ++ set(GMSH_BIN .) ++ set(GMSH_LIB .) ++ set(GMSH_DOC .) ++ set(GMSH_MAN .) ++ set(GMSH_INC .) ++ else() ++ include(GNUInstallDirs) ++ set(GMSH_BIN ${CMAKE_INSTALL_BINDIR}) ++ set(GMSH_LIB ${CMAKE_INSTALL_LIBDIR}) ++ set(GMSH_DOC ${CMAKE_INSTALL_DOCDIR}) ++ set(GMSH_MAN ${CMAKE_INSTALL_MANDIR}/man1) ++ set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) ++ endif() ++ if(CYGWIN) ++ unix2dos(GMSH_API "api") ++ if(ENABLE_PRIVATE_API) ++ unix2dos(GMSH_PRIVATE_API "private_api") ++ endif() ++ unix2dos(WELCOME_FILE "welcome") ++ unix2dos(SDK_FILE "sdk") ++ unix2dos(LICENSE_FILE "license") ++ unix2dos(CREDITS_FILE "credits") ++ unix2dos(CHANGELOG_FILE "changelog") ++ unix2dos(TUTORIALS_GEO_FILES "geo") ++ unix2dos(TUTORIALS_CPP_FILES "cpp") ++ unix2dos(TUTORIALS_C_FILES "c") ++ unix2dos(TUTORIALS_PY_FILES "python") ++ unix2dos(TUTORIALS_JL_FILES "julia") ++ foreach(DIR ${EXAMPLES_DIRS}) ++ file(GLOB EXAMPLES_FILES ${DIR}/?*.*) ++ unix2dos(EXAMPLES_FILES "examples") ++ endforeach() ++ endif() ++elseif(APPLE AND ENABLE_OS_SPECIFIC_INSTALL) ++ # set these so that the files get installed nicely in the MacOSX ++ # .app bundle ++ set(GMSH_BIN ../MacOS) ++ set(GMSH_LIB ../MacOS) ++ set(GMSH_DOC ../../..) ++ set(GMSH_MAN ../../..) ++ set(GMSH_INC ../MacOS) ++else() ++ include(GNUInstallDirs) ++ set(GMSH_BIN ${CMAKE_INSTALL_BINDIR}) ++ set(GMSH_LIB ${CMAKE_INSTALL_LIBDIR}) ++ set(GMSH_DOC ${CMAKE_INSTALL_DOCDIR}) ++ set(GMSH_MAN ${CMAKE_INSTALL_MANDIR}/man1) ++ set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) ++endif() ++ ++# mark targets as optional so we can install them separately if needed ++# (e.g. "make lib" or "make shared" followed by "make install/fast") ++install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL) ++if(ENABLE_BUILD_LIB) ++ install(TARGETS lib DESTINATION ${GMSH_LIB} OPTIONAL) ++endif() ++if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) ++ install(TARGETS shared DESTINATION ${GMSH_LIB} OPTIONAL) ++endif() ++ ++if(ENABLE_ONELAB AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab) ++ install(FILES ${ONELAB_PY} DESTINATION ${GMSH_BIN}) ++endif() ++if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) ++ install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) ++ install(FILES ${GMSH_PY} DESTINATION ${GMSH_LIB}) ++ install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB}) ++ if(ENABLE_PRIVATE_API) ++ install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) ++ if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen ++ install(DIRECTORY contrib/eigen/Eigen DESTINATION ${GMSH_INC}/gmsh) ++ endif() ++ endif() ++endif() ++if(INSTALL_SDK_README) ++ configure_file(${SDK_FILE} ${CMAKE_CURRENT_BINARY_DIR}/README.txt) ++ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/README.txt DESTINATION .) ++endif() ++install(FILES ${WELCOME_FILE} DESTINATION ${GMSH_DOC} RENAME README.txt) ++install(FILES ${LICENSE_FILE} DESTINATION ${GMSH_DOC}) ++install(FILES ${CREDITS_FILE} DESTINATION ${GMSH_DOC}) ++install(FILES ${CHANGELOG_FILE} DESTINATION ${GMSH_DOC}) ++install(FILES ${TUTORIALS_GEO_FILES} DESTINATION ${GMSH_DOC}/tutorials) ++install(FILES ${TUTORIALS_CPP_FILES} DESTINATION ${GMSH_DOC}/tutorials/c++) ++install(FILES ${TUTORIALS_C_FILES} DESTINATION ${GMSH_DOC}/tutorials/c) ++install(FILES ${TUTORIALS_PY_FILES} DESTINATION ${GMSH_DOC}/tutorials/python) ++install(FILES ${TUTORIALS_JL_FILES} DESTINATION ${GMSH_DOC}/tutorials/julia) ++foreach(DIR ${EXAMPLES_DIRS}) ++ get_filename_component(EXAMPLES_DIR_NAME ${DIR} NAME) ++ file(GLOB EXAMPLES_FILES ${DIR}/?*.*) ++ install(FILES ${EXAMPLES_FILES} DESTINATION ${GMSH_DOC}/examples/${EXAMPLES_DIR_NAME}) ++endforeach() ++if(UNIX AND NOT CYGWIN) ++ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/gmsh.1 DESTINATION ${GMSH_MAN}) ++endif() ++ ++add_custom_target(get_headers ++ COMMAND ${CMAKE_COMMAND} -E make_directory Headers/gmsh ++ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) ++foreach(FILE ${GMSH_API}) ++ add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND} ++ -E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/ ++ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) ++endforeach() ++if(ENABLE_PRIVATE_API) ++ foreach(FILE ${GMSH_PRIVATE_API}) ++ add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND} ++ -E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/gmsh/ ++ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) ++ endforeach() ++ if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen ++ add_custom_command(TARGET get_headers POST_BUILD ++ COMMAND ${CMAKE_COMMAND} -E copy_directory contrib/eigen/Eigen ++ ${CMAKE_CURRENT_BINARY_DIR}/Headers/gmsh/Eigen ++ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) ++ endif() ++endif() ++ ++find_program(MAKEINFO makeinfo) ++if(MAKEINFO) ++ add_custom_command(OUTPUT ${TEX_DIR}/gmsh.info DEPENDS ${TEX_SRC} ++ COMMAND ${MAKEINFO} --split-size 1000000 ++ ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR}) ++ add_custom_target(info DEPENDS ${TEX_DIR}/gmsh.info) ++ add_custom_command(OUTPUT ${TEX_DIR}/gmsh.txt DEPENDS ${TEX_SRC} ++ COMMAND ${MAKEINFO} --plaintext -o gmsh.txt ++ ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR}) ++ add_custom_target(txt DEPENDS ${TEX_DIR}/gmsh.txt) ++ add_custom_command(OUTPUT ${TEX_DIR}/gmsh.html DEPENDS ${TEX_SRC} ++ COMMAND ${MAKEINFO} --html --css-ref=/gmsh.css ++ --no-split --set-customization-variable ++ EXTRA_HEAD='' ++ ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR}) ++ add_custom_target(html DEPENDS ${TEX_DIR}/gmsh.html) ++ install(FILES ${TEX_DIR}/gmsh.html DESTINATION ${GMSH_DOC} OPTIONAL) ++else() ++ add_custom_target(html COMMAND ${CMAKE_COMMAND} -E touch ${TEX_DIR}/gmsh.html) ++endif() ++ ++find_program(TEXI2PDF texi2pdf) ++if(TEXI2PDF) ++ add_custom_command(OUTPUT ${TEX_DIR}/gmsh.pdf DEPENDS ${TEX_SRC} ++ COMMAND ${TEXI2PDF} ARGS gmsh.texi ++ WORKING_DIRECTORY ${TEX_DIR}) ++ add_custom_target(pdf DEPENDS ${TEX_DIR}/gmsh.pdf) ++ install(FILES ${TEX_DIR}/gmsh.pdf DESTINATION ${GMSH_DOC} OPTIONAL) ++endif() ++ ++execute_process(COMMAND ${CMAKE_COMMAND} -E echo ++ "@c This file was generated by cmake: do not edit manually!\n${OPT_TEXI}" ++ OUTPUT_FILE cmake_options.texi) ++ ++if(MAKEINFO AND TEXI2PDF) ++ add_custom_target(doc COMMAND ${CMAKE_COMMAND} -E tar zcf ++ ${CMAKE_CURRENT_BINARY_DIR}/gmsh-${GMSH_VERSION}-doc.tgz ++ CREDITS.txt LICENSE.txt CHANGELOG.txt ++ doc/gmsh.1 doc/texinfo/gmsh.html doc/texinfo/gmsh.info ++ doc/texinfo/gmsh.pdf doc/texinfo/gmsh.txt ++ COMMAND ${CMAKE_COMMAND} -E remove ${TEX_OBJ} ++ DEPENDS ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.txt ++ ${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.pdf ++ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) ++endif() ++ ++if(MAKEINFO OR TEXI2PDF) ++ add_custom_target(clean_doc COMMAND ${CMAKE_COMMAND} -E remove ${TEX_OBJ}) ++endif() ++ ++if(APPLE AND ENABLE_BUILD_LIB) ++ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_framework.plist F0) ++ string(REPLACE GMSH_VERSION "${GMSH_VERSION}" F1 "${F0}") ++ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Info_framework.plist "${F1}") ++ set(LIBNAME $) ++ add_custom_target(framework DEPENDS lib ++ COMMAND ${CMAKE_COMMAND} -E remove_directory gmsh.framework ++ COMMAND ${CMAKE_COMMAND} -E make_directory gmsh.framework/Headers ++ COMMAND ${CMAKE_COMMAND} -E make_directory gmsh.framework/Resources ++ COMMAND ${CMAKE_COMMAND} -E copy ${LIBNAME} gmsh.framework/gmsh ++ COMMAND ${CMAKE_COMMAND} -E copy Info_framework.plist ++ gmsh.framework/Resources/Info.plist ++ COMMAND ${CMAKE_COMMAND} -E create_symlink . gmsh.framework/Headers/gmsh ++ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) ++ foreach(FILE ${GMSH_API}) ++ add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ++ ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/ ++ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) ++ endforeach() ++ if(ENABLE_PRIVATE_API) ++ foreach(FILE ${GMSH_PRIVATE_API}) ++ add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ++ ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/ ++ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) ++ endforeach() ++ if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen ++ add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} ++ -E copy_directory contrib/eigen/Eigen ++ ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/Eigen ++ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) ++ endif() ++ endif() ++endif() ++ ++set(CPACK_PACKAGE_VENDOR "Christophe Geuzaine and Jean-Francois Remacle") ++set(CPACK_PACKAGE_VERSION_MAJOR ${GMSH_MAJOR_VERSION}) ++set(CPACK_PACKAGE_VERSION_MINOR ${GMSH_MINOR_VERSION}) ++set(CPACK_PACKAGE_VERSION_PATCH ${GMSH_PATCH_VERSION}) ++set(CPACK_PACKAGE_DESCRIPTION_FILE ${WELCOME_FILE}) ++set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ++ "3D finite element mesh generator with built-in CAD engine and post-processor") ++if(GMSH_EXTRA_VERSION MATCHES "-git.*") # so that we'll overwrite the archives ++ set(CPACK_PACKAGE_FILE_NAME gmsh${GMSH_EXTRA_VERSION_ORIG}-git-${GMSH_OS}) ++ set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh${GMSH_EXTRA_VERSION_ORIG}-git-source) ++else() ++ set(CPACK_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-${GMSH_OS}) ++ set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-source) ++endif() ++set(CPACK_PACKAGE_INSTALL_DIRECTORY "gmsh") ++set(CPACK_RESOURCE_FILE_LICENSE ${LICENSE_FILE}) ++set(CPACK_RESOURCE_FILE_README ${WELCOME_FILE}) ++set(CPACK_RESOURCE_FILE_WELCOME ${WELCOME_FILE}) ++set(CPACK_PACKAGE_EXECUTABLE "gmsh") ++if(ENABLE_PACKAGE_STRIP) ++ set(CPACK_STRIP_FILES TRUE) ++else() ++ set(CPACK_STRIP_FILES FALSE) ++endif() ++set(CPACK_SOURCE_GENERATOR TGZ) ++set(CPACK_SOURCE_IGNORE_FILES "${CMAKE_CURRENT_BINARY_DIR}" "/CVS/" "/.svn" "/.git" ++ "~$" "DS_Store$" "GmshConfig.h$" "GmshVersion.h$" "/benchmarks/" "/tmp/" ++ "/bin/" "/lib/" "/nightly/" "GPATH" "GRTAGS" "GSYMS" "GTAGS" "/HTML/" ++ "/contrib/3M/" "/contrib/Parasolid/") ++ ++if(UNIX) ++ # make sure we remove previous installs before doing the next one (on Mac for ++ # example "make package; make package_source" would lead to huge file lists ++ # getting generated due to the 'Applications' symlink in the bundle) ++ set(CPACK_INSTALL_COMMANDS "rm -rf ${CMAKE_CURRENT_BINARY_DIR}/_CPack_Packages") ++endif() ++ ++if(APPLE AND ENABLE_OS_SPECIFIC_INSTALL AND HAVE_FLTK) ++ set(CPACK_GENERATOR Bundle) ++ set(CPACK_BUNDLE_NAME Gmsh) ++ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_app.plist F0) ++ string(REPLACE GMSH_VERSION "${GMSH_VERSION}" F1 "${F0}") ++ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Info.plist "${F1}") ++ set(CPACK_BUNDLE_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist) ++ set(CPACK_BUNDLE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/MacIcons.icns) ++ if(PACKAGER STREQUAL "geuzaine") ++ # automatic codesigning of the .app ++ set(CPACK_BUNDLE_APPLE_CERT_APP "Developer ID Application: Christophe Geuzaine") ++ # enable hardened runtime (necessary for notarization and app store) ++ set(CPACK_BUNDLE_APPLE_CODESIGN_PARAMETER "--deep --force --options runtime") ++ endif() ++ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/MacIconsGeo.icns DESTINATION . ++ RENAME GmshGeo.icns) ++ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/MacIconsMsh.icns DESTINATION . ++ RENAME GmshMsh.icns) ++ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/MacIconsSol.icns DESTINATION . ++ RENAME GmshSol.icns) ++ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/MacIconsPos.icns DESTINATION . ++ RENAME GmshPos.icns) ++ set(CPACK_PACKAGE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/MacIcons.icns) ++elseif(WIN32) ++ set(CPACK_GENERATOR ZIP) ++else() ++ set(CPACK_GENERATOR TGZ) ++endif() ++ ++if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/utils/wrappers/gmshpy AND ++ ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON AND HAVE_PYTHON) ++ add_subdirectory(utils/wrappers/gmshpy) ++endif() ++ ++if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/utils/wrappers/java AND ++ ENABLE_PRIVATE_API AND ENABLE_WRAP_JAVA) ++ add_subdirectory(utils/wrappers/java) ++endif() ++ ++include(CPack) ++ ++macro(filter_tests IN OUT) ++ unset(${OUT}) ++ foreach(FILE ${IN}) ++ unset(BAD1) ++ unset(BAD2) ++ unset(BAD3) ++ # OpenCASCADE ++ if(NOT HAVE_OCC AND NOT BAD1 AND NOT BAD2 AND NOT BAD3) ++ file(STRINGS ${FILE} BAD1 REGEX "^SetFactory.*OpenCASCADE.*") ++ file(STRINGS ${FILE} BAD2 REGEX ".*occ\\.synchronize.*") ++ file(STRINGS ${FILE} BAD3 REGEX ".*occ::synchronize.*") ++ endif() ++ # Metis ++ if(NOT HAVE_METIS AND NOT BAD1 AND NOT BAD2 AND NOT BAD3) ++ file(STRINGS ${FILE} BAD1 REGEX ".*PartitionMesh.*") ++ file(STRINGS ${FILE} BAD2 REGEX ".*mesh\\.partition.*") ++ file(STRINGS ${FILE} BAD3 REGEX ".*mesh::partition.*") ++ endif() ++ if(BAD1 OR BAD2 OR BAD3) ++ message("Skipping test " ${FILE}) ++ else() ++ list(APPEND ${OUT} ${FILE}) ++ endif() ++ endforeach() ++endmacro() ++ ++if(ENABLE_TESTS AND NOT DISABLE_GMSH_TESTS) ++ # disabling tests is useful when including this CMakeLists in an external project ++ include(CTest) ++ file(GLOB_RECURSE ALLFILES ++ tutorials/*.geo examples/*.geo benchmarks/?d/*.geo benchmarks/extrude/*.geo ++ benchmarks/occ/*.geo) ++ filter_tests("${ALLFILES}" TESTFILES) ++ foreach(TESTFILE ${TESTFILES}) ++ # use relative path for Cygwin/MinGW (the pure win exe built with the MinGW ++ # compilers does not understand a full Cygwin-style path) ++ FILE(RELATIVE_PATH TEST ${CMAKE_CURRENT_BINARY_DIR} ${TESTFILE}) ++ add_test(${TEST} ./gmsh ${TEST} -3 -nopopup -o ./tmp.msh) ++ endforeach() ++ # test c++ api tutorials with dynamic builds ++ if(ENABLE_BUILD_DYNAMIC) ++ file(GLOB_RECURSE ALLFILES tutorials/c++/*.cpp tutorials/c/*.c) ++ filter_tests("${ALLFILES}" TESTFILES) ++ foreach(TESTFILE ${TESTFILES}) ++ get_filename_component(TEST ${TESTFILE} NAME) ++ string(REPLACE "\." "_" TEST ${TEST}) ++ add_executable(${TEST} WIN32 ${TESTFILE}) ++ target_link_libraries(${TEST} shared) ++ if(WIN32 AND NOT MSVC) ++ set(FLAGS "-static") ++ if(HAVE_FLTK) ++ set(FLAGS "${FLAGS} -mwindows") ++ else() ++ set(FLAGS "${FLAGS} -mconsole") ++ endif() ++ set_target_properties(${TEST} PROPERTIES LINK_FLAGS "${FLAGS}") ++ endif() ++ add_test(${TEST} ${TEST} -nopopup) ++ endforeach() ++ endif() ++ # enable this once we have worked out the path issues on the build machines ++ if(0 AND ENABLE_BUILD_DYNAMIC) ++ find_package(PythonInterp) ++ if(PYTHONINTERP_FOUND) ++ file(GLOB_RECURSE ALLFILES tutorials/python/*.py examples/api/*.py) ++ filter_tests("${ALLFILES}" TESTFILES) ++ foreach(TESTFILE ${TESTFILES}) ++ get_filename_component(TEST ${TESTFILE} NAME) ++ string(REPLACE "\." "_" TEST ${TEST}) ++ add_test(NAME ${TEST} COMMAND ${PYTHON_EXECUTABLE} ${TESTFILE} -nopopup) ++ set_property(TEST ${TEST} APPEND PROPERTY ENVIRONMENT ++ "PYTHONPATH=${CMAKE_SOURCE_DIR}/api") ++ set_property(TEST ${TEST} APPEND PROPERTY ENVIRONMENT ++ "LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}") ++ endforeach() ++ endif() ++ endif() ++endif() ++ ++message(STATUS "") ++message(STATUS "Gmsh ${GMSH_VERSION} has been configured for ${GMSH_OS}") ++message(STATUS "") ++message(STATUS " * Build options:" ${GMSH_CONFIG_OPTIONS}) ++message(STATUS " * Build type: " ${CMAKE_BUILD_TYPE}) ++message(STATUS " * C compiler: " ${CMAKE_C_COMPILER}) ++message(STATUS " * C++ compiler: " ${CMAKE_CXX_COMPILER}) ++message(STATUS " * Install prefix: " ${CMAKE_INSTALL_PREFIX}) ++message(STATUS "") ++ ++mark_as_advanced(ANN_INC ANN_LIB CAIRO_LIB CAIRO_INC CGNS_INC GMM_INC ++ GMP_INC GMP_LIB MMG_INC MMG_LIB HDF5_LIB ++ MED_LIB OCC_INC SZ_LIB ++ PETSC_LIBS SLEPC_INC SLEPC_INC2 SLEPC_LIB ++ BISON FLEX MAKEINFO TEXI2PDF FLTK_CONFIG_SCRIPT ++ GMSH_EXTERNAL_INCLUDE_DIRS GMSH_EXTERNAL_LIBRARIES) +diff -rupN --no-dereference gmsh-4.10.0-source/src/common/GmshMessage.cpp gmsh-4.10.0-source-new/src/common/GmshMessage.cpp +--- gmsh-4.10.0-source/src/common/GmshMessage.cpp 2022-04-25 15:27:25.000000000 +0200 ++++ gmsh-4.10.0-source-new/src/common/GmshMessage.cpp 2022-04-26 07:50:49.801008751 +0200 +@@ -169,14 +169,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; @@ -42,3 +2253,1696 @@ diff -rupN --no-dereference gmsh-4.9.4-source/src/common/GmshMessage.cpp gmsh-4. if(_locale) { // make sure to use the "C" locale; in particular this ensures that we will // use a dot for for the decimal separator when writing ASCII mesh files +diff -rupN --no-dereference gmsh-4.10.0-source/src/common/GmshMessage.cpp.orig gmsh-4.10.0-source-new/src/common/GmshMessage.cpp.orig +--- gmsh-4.10.0-source/src/common/GmshMessage.cpp.orig 1970-01-01 01:00:00.000000000 +0100 ++++ gmsh-4.10.0-source-new/src/common/GmshMessage.cpp.orig 2022-04-25 15:27:25.000000000 +0200 +@@ -0,0 +1,1689 @@ ++// Gmsh - Copyright (C) 1997-2022 C. Geuzaine, J.-F. Remacle ++// ++// See the LICENSE.txt file in the Gmsh root directory for license information. ++// Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. ++ ++#include "GmshConfig.h" ++ ++#if defined(HAVE_MPI) ++#include ++#endif ++ ++#if !defined(WIN32) || defined(__CYGWIN__) ++#include ++#endif ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "GmshMessage.h" ++#include "GmshSocket.h" ++#include "GmshGlobal.h" ++#include "GModel.h" ++#include "Options.h" ++#include "Context.h" ++#include "OpenFile.h" ++#include "StringUtils.h" ++#include "OS.h" ++ ++#if defined(HAVE_ONELAB) ++#include "onelab.h" ++#include "onelabUtils.h" ++#endif ++ ++#include "gmshLocalNetworkClient.h" ++ ++#if defined(HAVE_PETSC) ++#include ++#endif ++ ++#if defined(HAVE_SLEPC) ++#include ++#endif ++ ++#if defined(HAVE_FLTK) ++#include ++#include "FlGui.h" ++#include "extraDialogs.h" ++#endif ++ ++#if defined(_OPENMP) ++#include ++#endif ++ ++int Msg::_commRank = 0; ++int Msg::_commSize = 1; ++int Msg::_verbosity = 5; ++int Msg::_progressMeterStep = 10; ++std::atomic Msg::_progressMeterCurrent(-1); ++int Msg::_progressMeterTotal = 0; ++std::map Msg::_timers; ++bool Msg::_infoCpu = false; ++bool Msg::_infoMem = false; ++double Msg::_startTime = 0.; ++int Msg::_warningCount = 0; ++int Msg::_errorCount = 0; ++int Msg::_atLeastOneErrorInRun = 0; ++std::string Msg::_firstWarning; ++std::string Msg::_firstError; ++std::string Msg::_lastError; ++GmshMessage *Msg::_callback = nullptr; ++std::vector Msg::_commandLineArgs; ++std::string Msg::_launchDate; ++std::map > Msg::_commandLineNumbers; ++std::map Msg::_commandLineStrings; ++GmshClient *Msg::_client = nullptr; ++std::string Msg::_execName; ++#if defined(HAVE_ONELAB) ++onelab::client *Msg::_onelabClient = nullptr; ++onelab::server *onelab::server::_server = nullptr; ++#endif ++std::string Msg::_logFileName; ++FILE *Msg::_logFile = nullptr; ++ ++#if defined(_MSC_VER) && (_MSC_VER >= 1310) //NET 2003 ++#define vsnprintf _vsnprintf ++#else ++#if defined(HAVE_NO_VSNPRINTF) ++static int vsnprintf(char *str, size_t size, const char *fmt, va_list ap) ++{ ++ if (strlen(fmt) > size - 1) { // just copy the format ++ strncpy(str, fmt, size - 1); ++ str[size - 1] = '\0'; ++ return size; ++ } ++ return vsprintf(str, fmt, ap); ++} ++#endif ++#endif ++ ++static void addGmshPathToEnvironmentVar(const std::string &name) ++{ ++ std::string gmshPath = SplitFileName(CTX::instance()->exeFileName)[0]; ++ if(gmshPath.size()){ ++ std::string tmp = GetEnvironmentVar(name); ++ if(tmp.find(gmshPath) != std::string::npos) return; // already there ++ std::string path; ++ if(tmp.empty()) { ++ path = gmshPath; ++ } ++ else { ++#if defined(WIN32) ++ path = tmp + ";" + gmshPath; ++#else ++ path = tmp + ":" + gmshPath; ++#endif ++ } ++ SetEnvironmentVar(name, path); ++ } ++} ++ ++void Msg::Initialize(int argc, char **argv) ++{ ++ _startTime = TimeOfDay(); ++#if defined(HAVE_MPI) ++ int flag; ++ MPI_Initialized(&flag); ++ if(!flag) MPI_Init(&argc, &argv); ++ MPI_Comm_rank(MPI_COMM_WORLD, &_commRank); ++ MPI_Comm_size(MPI_COMM_WORLD, &_commSize); ++ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); ++#endif ++#if defined(HAVE_PETSC) ++ int sargc = 0; ++ char **sargv = new char*[argc + 1]; ++ // prune argv from gmsh-specific options that make PETSc verbose ++ for(int i = 0; i < argc; i++){ ++ std::string val(argv[i]); ++ if(val != "-info" && val != "-help" && val != "-version" && val != "-v") ++ sargv[sargc++] = argv[i]; ++ } ++ sargv[sargc] = nullptr; ++ PetscInitialize(&sargc, &sargv, PETSC_NULL, PETSC_NULL); ++ PetscPopSignalHandler(); ++#if defined(HAVE_SLEPC) ++ SlepcInitialize(&sargc, &sargv, PETSC_NULL, PETSC_NULL); ++#endif ++ delete [] sargv; ++#endif ++ time_t now; ++ time(&now); ++ _launchDate = ctime(&now); ++ _launchDate.resize(_launchDate.size() - 1); ++ ++ bool _env = true, _locale = true; ++ _commandLineArgs.resize(argc); ++ for(int i = 0; i < argc; i++) { ++ _commandLineArgs[i] = argv[i]; ++ if(_commandLineArgs[i] == "-noenv") ++ _env = false; ++ else if(_commandLineArgs[i] == "-nolocale") ++ _locale = false; ++ } ++ ++ CTX::instance()->exeFileName = GetExecutableFileName(); ++ if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) ++ CTX::instance()->exeFileName = _commandLineArgs[0]; ++ ++ if(_env) { ++ // add the directory where the binary is installed to the path where Python ++ // looks for modules, and to the path for executables (this allows us to ++ // find the onelab.py module or subclients automatically) ++ addGmshPathToEnvironmentVar("PYTHONPATH"); ++ addGmshPathToEnvironmentVar("PATH"); ++ } ++ ++ if(_locale) { ++ // make sure to use the "C" locale; in particular this ensures that we will ++ // use a dot for for the decimal separator when writing ASCII mesh files ++ std::setlocale(LC_ALL, "C.UTF-8"); ++ std::setlocale(LC_NUMERIC, "C"); ++ } ++ ++ InitializeOnelab("Gmsh"); ++ ++#if defined(_OPENMP) ++ // this is deprecated ++ //omp_set_nested(true); ++#endif ++} ++ ++void Msg::Finalize() ++{ ++ // close log file ++ if(_logFile){ ++ fclose(_logFile); ++ _logFile = nullptr; ++ } ++ ++#if defined(HAVE_SLEPC) ++ SlepcFinalize(); ++#endif ++#if defined(HAVE_PETSC) ++ // this often crashes when called multiple times ++ //PetscFinalize(); ++#endif ++#if defined(HAVE_MPI) ++ int finalized; // Some PETSc versions call MPI_FINALIZE ++ MPI_Finalized(&finalized); ++ if (!finalized) ++ MPI_Finalize(); ++#endif ++ FinalizeOnelab(); ++} ++ ++int Msg::GetCommRank() ++{ ++ return _commRank; ++} ++ ++int Msg::GetCommSize() ++{ ++ return _commSize; ++} ++ ++void Msg::SetCommRank(int val) ++{ ++ _commRank = val; ++} ++ ++void Msg::SetCommSize(int val) ++{ ++ _commSize = val; ++} ++ ++void Msg::SetCallback(GmshMessage *callback) ++{ ++ _callback = callback; ++} ++ ++GmshMessage *Msg::GetCallback() ++{ ++ return _callback; ++} ++ ++void Msg::SetVerbosity(int val) ++{ ++ _verbosity = val; ++} ++ ++int Msg::GetVerbosity() ++{ ++ return _verbosity; ++} ++ ++void Msg::SetLogFile(const std::string &name) ++{ ++ _logFileName = name; ++ if(_logFile) fclose(_logFile); ++ if(name.size()){ ++ _logFile = Fopen(name.c_str(), "w"); ++ if(!_logFile) ++ Msg::Error("Could not open file '%s'", name.c_str()); ++ } ++ else ++ _logFile = nullptr; ++} ++ ++std::string Msg::GetLaunchDate() ++{ ++ return _launchDate; ++} ++ ++std::vector &Msg::GetCommandLineArgs() ++{ ++ return _commandLineArgs; ++} ++ ++std::string Msg::GetCommandLineFull() ++{ ++ std::string tmp; ++ for(std::size_t i = 0; i < _commandLineArgs.size(); i++){ ++ if(i) tmp += " "; ++ tmp += _commandLineArgs[i]; ++ } ++ return tmp; ++} ++ ++std::map > &Msg::GetCommandLineNumbers() ++{ ++ return _commandLineNumbers; ++} ++ ++std::map &Msg::GetCommandLineStrings() ++{ ++ return _commandLineStrings; ++} ++ ++void Msg::SetProgressMeterStep(int step) ++{ ++ _progressMeterStep = step; ++} ++ ++int Msg::GetProgressMeterStep() ++{ ++ return _progressMeterStep; ++} ++ ++void Msg::StartProgressMeter(int ntotal) ++{ ++ _progressMeterCurrent = 0; ++ _progressMeterTotal = ntotal; ++} ++ ++void Msg::StopProgressMeter() ++{ ++ _progressMeterCurrent = -1; ++ _progressMeterTotal = 0; ++#if defined(HAVE_FLTK) ++ if(FlGui::available()){ ++ FlGui::instance()->setProgress("", 0, 0, 1); ++ FlGui::check(true); ++ } ++#endif ++} ++ ++void Msg::SetInfoCpu(bool val) ++{ ++ _infoCpu = val; ++} ++ ++void Msg::SetInfoMem(bool val) ++{ ++ _infoMem = val; ++} ++ ++double &Msg::Timer(const std::string &str) { return _timers[str]; } ++ ++int Msg::GetWarningCount() ++{ ++ return _warningCount; ++} ++ ++int Msg::GetErrorCount() ++{ ++ return _errorCount; ++} ++ ++std::string Msg::GetFirstWarning() ++{ ++ return _firstWarning; ++} ++ ++std::string Msg::GetFirstError() ++{ ++ return _firstError; ++} ++ ++std::string Msg::GetLastError() ++{ ++ return _lastError; ++} ++ ++void Msg::SetExecutableName(const std::string &name) ++{ ++ _execName.assign(name); ++} ++ ++std::string Msg::GetExecutableName() ++{ ++ return _execName; ++} ++ ++#if defined(HAVE_ONELAB) ++onelab::client *Msg::GetOnelabClient() ++{ ++ return _onelabClient; ++} ++#endif ++ ++void Msg::Exit(int level) ++{ ++ Finalize(); ++#if defined(HAVE_MPI) ++ if(level) MPI_Abort(MPI_COMM_WORLD, level); ++#endif ++ exit(level ? level : _atLeastOneErrorInRun); ++} ++ ++static int streamIsFile(FILE *stream) ++{ ++ // the given stream is definitely not interactive if it is a regular file ++ struct stat stream_stat; ++ if(fstat(fileno(stream), &stream_stat) == 0){ ++ if(stream_stat.st_mode & S_IFREG) return 1; ++ } ++ return 0; ++} ++ ++static int streamIsVT100(FILE *stream) ++{ ++ // on unix directly check if the file descriptor refers to a terminal ++#if !defined(WIN32) || defined(__CYGWIN__) ++ return isatty(fileno(stream)); ++#endif ++ ++ // otherwise try to detect some known cases: ++ ++ // if running inside emacs the terminal is not VT100 ++ const char* emacs = getenv("EMACS"); ++ if(emacs && *emacs == 't') return 0; ++ ++ // list of known terminal names (from cmake) ++ static const char* names[] = ++ {"Eterm", "ansi", "color-xterm", "con132x25", "con132x30", "con132x43", ++ "con132x60", "con80x25", "con80x28", "con80x30", "con80x43", "con80x50", ++ "con80x60", "cons25", "console", "cygwin", "dtterm", "eterm-color", "gnome", ++ "gnome-256color", "konsole", "konsole-256color", "kterm", "linux", "msys", ++ "linux-c", "mach-color", "mlterm", "putty", "rxvt", "rxvt-256color", ++ "rxvt-cygwin", "rxvt-cygwin-native", "rxvt-unicode", "rxvt-unicode-256color", ++ "screen", "screen-256color", "screen-256color-bce", "screen-bce", "screen-w", ++ "screen.linux", "vt100", "xterm", "xterm-16color", "xterm-256color", ++ "xterm-88color", "xterm-color", "xterm-debian", nullptr}; ++ const char** t = nullptr; ++ const char* term = getenv("TERM"); ++ if(term){ ++ for(t = names; *t && strcmp(term, *t) != 0; ++t) {} ++ } ++ if(!(t && *t)) return 0; ++ return 1; ++} ++ ++std::string Msg::PrintResources(bool printDate, bool printWallTime, ++ bool printCpu, bool printMem) ++{ ++ long mem = GetMemoryUsage(); ++ ++ std::string pdate = ""; ++ if(printDate){ ++ time_t now; ++ time(&now); ++ pdate = ctime(&now); ++ pdate.resize(pdate.size() - 1); ++ if(printWallTime || printCpu || (printMem && mem)) ++ pdate += ", "; ++ } ++ ++ std::string pwall = ""; ++ if(printWallTime){ ++ char tmp[128]; ++ sprintf(tmp, "Wall %gs", TimeOfDay() - _startTime); ++ pwall = tmp; ++ if(printCpu || (printMem && mem)) ++ pwall += ", "; ++ } ++ ++ std::string pcpu = ""; ++ if(printCpu){ ++ char tmp[128]; ++ sprintf(tmp, "CPU %gs", Cpu()); ++ pcpu = tmp; ++ if(printMem && mem) ++ pcpu += ", "; ++ } ++ ++ std::string pmem = ""; ++ if(mem && printMem){ ++ char tmp[128]; ++ sprintf(tmp, "Mem %gMb", (double)mem / 1024. / 1024.); ++ pmem = tmp; ++ } ++ ++ std::string str; ++ if(pdate.size() || pwall.size() || pcpu.size() || pmem.size()) ++ str += " (From start: " + pdate + pwall + pcpu + pmem + ")"; ++ return str; ++} ++ ++void Msg::Error(const char *fmt, ...) ++{ ++#pragma omp critical(MsgError) ++ { ++ _errorCount++; ++ _atLeastOneErrorInRun = 1; ++ } ++ char str[5000]; ++ va_list args; ++ va_start(args, fmt); ++ vsnprintf(str, sizeof(str), fmt, args); ++ va_end(args); ++ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; ++ ++#pragma omp critical(MsgError) ++ { ++ if(_firstError.empty()) _firstError = str; ++ _lastError = str; ++ } ++ ++ if(GetVerbosity() >= 1) { ++ if(_logFile) fprintf(_logFile, "Error: %s\n", str); ++ if(_callback) (*_callback)("Error", str); ++ if(_client) _client->Error(str); ++#if defined(HAVE_FLTK) ++ if(FlGui::available()){ ++ std::string tmp = std::string(CTX::instance()->guiColorScheme ? "@B72@." : "@C1@.") ++ + "Error : " + str; ++ FlGui::instance()->addMessage(tmp.c_str()); ++ FlGui::instance()->setLastStatus ++ (CTX::instance()->guiColorScheme ? FL_DARK_RED : FL_RED); ++ FlGui::check(true); ++ } ++#endif ++ if(CTX::instance()->terminal){ ++ const char *c0 = "", *c1 = ""; ++ if(!streamIsFile(stderr) && streamIsVT100(stderr)){ ++ c0 = "\33[1m\33[31m"; c1 = "\33[0m"; // bold red ++ } ++ if(_commSize > 1) ++ fprintf(stderr, "%sError : [rank %3d] %s%s\n", c0, GetCommRank(), str, c1); ++ else ++ fprintf(stderr, "%sError : %s%s\n", c0, str, c1); ++ fflush(stderr); ++ } ++ } ++ ++ if(CTX::instance()->abortOnError == 2) { ++#if defined(HAVE_FLTK) ++ if(FlGui::available()) return; // don't throw if GUI is running ++#endif ++ throw std::runtime_error(_lastError); ++ } ++ else if(CTX::instance()->abortOnError == 3) { ++ throw std::runtime_error(_lastError); ++ } ++ else if(CTX::instance()->abortOnError == 4) { ++ Exit(1); ++ } ++} ++ ++void Msg::Warning(const char *fmt, ...) ++{ ++#pragma omp critical(MsgWarning) ++ { ++ _warningCount++; ++ } ++ ++ if(GetVerbosity() < 2) return; ++ ++ char str[5000]; ++ va_list args; ++ va_start(args, fmt); ++ vsnprintf(str, sizeof(str), fmt, args); ++ va_end(args); ++ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; ++ ++ if(_logFile) fprintf(_logFile, "Warning: %s\n", str); ++ if(_callback) (*_callback)("Warning", str); ++ if(_client) _client->Warning(str); ++ ++#if defined(HAVE_FLTK) ++ if(FlGui::available()){ ++ std::string tmp = std::string(CTX::instance()->guiColorScheme ? "@B152@." : "@C5@.") ++ + "Warning : " + str; ++ FlGui::instance()->addMessage(tmp.c_str()); ++ if(_firstWarning.empty()) _firstWarning = str; ++ FlGui::instance()->setLastStatus(); ++ FlGui::check(true); ++ } ++#endif ++ ++ if(CTX::instance()->terminal){ ++ const char *c0 = "", *c1 = ""; ++ if(!streamIsFile(stderr) && streamIsVT100(stderr)){ ++ c0 = "\33[35m"; c1 = "\33[0m"; // magenta ++ } ++ if(_commSize > 1) ++ fprintf(stderr, "%sWarning : [rank %3d] %s%s\n", c0, GetCommRank(), str, c1); ++ else ++ fprintf(stderr, "%sWarning : %s%s\n", c0, str, c1); ++ fflush(stderr); ++ } ++} ++ ++void Msg::Info(const char *fmt, ...) ++{ ++ if(GetVerbosity() < 4) return; ++ ++ char str[5000]; ++ va_list args; ++ va_start(args, fmt); ++ vsnprintf(str, sizeof(str), fmt, args); ++ va_end(args); ++ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; ++ ++ if(_infoCpu || _infoMem){ ++ std::string res = PrintResources(false, _infoCpu, _infoCpu, _infoMem); ++ strcat(str, res.c_str()); ++ } ++ ++ if(_logFile) fprintf(_logFile, "Info: %s\n", str); ++ if(_callback) (*_callback)("Info", str); ++ if(_client) _client->Info(str); ++ ++#if defined(HAVE_FLTK) ++ if(FlGui::available()){ ++ std::string tmp = std::string("Info : ") + str; ++ FlGui::instance()->addMessage(tmp.c_str()); ++ FlGui::check(true); ++ } ++#endif ++ ++ if(CTX::instance()->terminal){ ++ if(_progressMeterCurrent >= 0 && _progressMeterTotal > 1 && ++ _commSize == 1) { ++ int p = _progressMeterCurrent; ++ fprintf(stdout, "Info : [%3d%%] %s\n", p, str); ++ } ++ else if(_commSize > 1) ++ fprintf(stdout, "Info : [rank %3d] %s\n", GetCommRank(), str); ++ else ++ fprintf(stdout, "Info : %s\n", str); ++ fflush(stdout); ++ } ++} ++ ++void Msg::RequestRender() ++{ ++ if(_callback) (*_callback)("RequestRender", ""); ++} ++ ++void Msg::Direct(const char *fmt, ...) ++{ ++ if(GetVerbosity() < 3) return; ++ ++ char str[5000]; ++ va_list args; ++ va_start(args, fmt); ++ vsnprintf(str, sizeof(str), fmt, args); ++ va_end(args); ++ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; ++ ++ if(_logFile) fprintf(_logFile, "Direct: %s\n", str); ++ if(_callback) (*_callback)("Direct", str); ++ if(_client) _client->Info(str); ++ ++#if defined(HAVE_FLTK) ++ if(FlGui::available()){ ++ std::string tmp = std::string(CTX::instance()->guiColorScheme ? "@B136@." : "@C4@.") ++ + str; ++ FlGui::instance()->addMessage(tmp.c_str()); ++ FlGui::check(true); ++ } ++#endif ++ ++ if(CTX::instance()->terminal){ ++ const char *c0 = "", *c1 = ""; ++ if(!streamIsFile(stdout) && streamIsVT100(stdout)){ ++ c0 = "\33[34m"; c1 = "\33[0m"; // blue ++ } ++ if(_commSize > 1) ++ fprintf(stdout, "%s[rank %3d] %s%s\n", c0, GetCommRank(), str, c1); ++ else ++ fprintf(stdout, "%s%s%s\n", c0, str, c1); ++ fflush(stdout); ++ } ++} ++ ++void Msg::Auto(const char *fmt, ...) ++{ ++ char str[5000]; ++ va_list args; ++ va_start(args, fmt); ++ vsnprintf(str, sizeof(str), fmt, args); ++ va_end(args); ++ if(strstr(str, "Error") || strstr(str, "error") || strstr(str, "ERROR")) ++ Msg::Error("%s", str); ++ else if(strstr(str, "Warning") || strstr(str, "warning") || strstr(str, "WARNING")) ++ Msg::Warning("%s", str); ++ else ++ Msg::Info("%s", str); ++} ++ ++void Msg::StatusBar(bool log, const char *fmt, ...) ++{ ++ if(GetVerbosity() < 4) return; ++ ++ char str[5000]; ++ va_list args; ++ va_start(args, fmt); ++ vsnprintf(str, sizeof(str), fmt, args); ++ va_end(args); ++ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; ++ ++ if(_infoCpu || _infoMem){ ++ std::string res = PrintResources(false, _infoCpu, _infoCpu, _infoMem); ++ strcat(str, res.c_str()); ++ } ++ ++ if(_logFile) fprintf(_logFile, "Info: %s\n", str); ++ if(_callback && log) (*_callback)("Info", str); ++ if(_client && log) _client->Info(str); ++ ++#if defined(HAVE_FLTK) ++ if(FlGui::available()){ ++ if(!log || GetVerbosity() > 4) ++ FlGui::instance()->setStatus(str); ++ if(log){ ++ std::string tmp = std::string("Info : ") + str; ++ FlGui::instance()->addMessage(tmp.c_str()); ++ FlGui::check(true); ++ } ++ } ++#endif ++ ++ if(log && CTX::instance()->terminal){ ++ if(_commSize > 1) ++ fprintf(stdout, "Info : [rank %3d] %s\n", GetCommRank(), str); ++ else ++ fprintf(stdout, "Info : %s\n", str); ++ fflush(stdout); ++ } ++} ++ ++void Msg::StatusGl(const char *fmt, ...) ++{ ++#if defined(HAVE_FLTK) ++ if(GetCommRank()) return; ++ char str[5000]; ++ va_list args; ++ va_start(args, fmt); ++ vsnprintf(str, sizeof(str), fmt, args); ++ va_end(args); ++ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; ++ ++ if(FlGui::available()) ++ FlGui::instance()->setStatus(str, true); ++#endif ++} ++ ++void Msg::SetWindowTitle(const std::string &title) ++{ ++#if defined(HAVE_FLTK) ++ if(FlGui::available()){ ++ FlGui::instance()->setGraphicTitle(title); ++ } ++#endif ++} ++ ++void Msg::Debug(const char *fmt, ...) ++{ ++ if(GetVerbosity() < 99) return; ++ ++ char str[5000]; ++ va_list args; ++ va_start(args, fmt); ++ vsnprintf(str, sizeof(str), fmt, args); ++ va_end(args); ++ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; ++ ++ if(_logFile) fprintf(_logFile, "Debug: %s\n", str); ++ if(_callback) (*_callback)("Debug", str); ++ if(_client) _client->Info(str); ++ ++#if defined(HAVE_FLTK) ++ if(FlGui::available()){ ++ std::string tmp = std::string("Debug : ") + str; ++ FlGui::instance()->addMessage(tmp.c_str()); ++ } ++#endif ++ ++ if(CTX::instance()->terminal){ ++ if(_commSize > 1) ++ fprintf(stdout, "Debug : [rank %3d] %s\n", GetCommRank(), str); ++ else ++ fprintf(stdout, "Debug : %s\n", str); ++ fflush(stdout); ++ } ++} ++ ++void Msg::ProgressMeter(int n, bool log, const char *fmt, ...) ++{ ++ if(GetCommRank() || GetVerbosity() < 4) return; ++ if(_progressMeterStep <= 0 || _progressMeterStep >= 100) return; ++ if(_progressMeterTotal <= 0) return; ++ ++ int N = _progressMeterTotal; ++ double percent = 100. * (double)n / (double)N; ++ ++ if(percent >= _progressMeterCurrent || n > N - 1){ ++ int p = _progressMeterCurrent; ++ while(p < percent) p += _progressMeterStep; ++ if(p >= 100) p = 100; ++ ++ _progressMeterCurrent = p; ++ ++ // TODO With C++11 use std::string (contiguous layout) and avoid all these C ++ // problems ++ // str2 needs to have at least 5018 bytes or buffer overflow will occur ++ char str[5000], str2[5100]; ++ va_list args; ++ va_start(args, fmt); ++ vsnprintf(str, sizeof(str), fmt, args); ++ va_end(args); ++ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; ++ sprintf(str2, "Info : [%3d%%] %s", p, str); ++ ++ if(_client) _client->Progress(str2); ++ ++#if defined(HAVE_FLTK) ++ if(FlGui::available() && GetVerbosity() > 4){ ++ FlGui::instance()->setProgress(str, (n > N - 1) ? 0 : n, 0, N); ++ FlGui::check(true); ++ } ++#endif ++ if(_logFile) fprintf(_logFile, "Progress: %s\n", str); ++ if(_callback) (*_callback)("Progress", str); ++ if(!streamIsFile(stdout) && log && CTX::instance()->terminal){ ++ fprintf(stdout, "%s \r", ++ (n > N - 1) ? "" : str2); ++ fflush(stdout); ++ } ++ } ++} ++ ++void Msg::PrintTimers() ++{ ++ // do a single stdio call! ++ std::string str; ++ for(auto it = _timers.begin(); ++ it != _timers.end(); it++){ ++ if(it != _timers.begin()) str += ", "; ++ char tmp[256]; ++ sprintf(tmp, "%s = %gs ", it->first.c_str(), it->second); ++ str += std::string(tmp); ++ } ++ if(!str.size()) return; ++ ++ if(CTX::instance()->terminal){ ++ if(_commSize > 1) ++ fprintf(stdout, "Timers : [rank %3d] %s\n", GetCommRank(), str.c_str()); ++ else ++ fprintf(stdout, "Timers : %s\n", str.c_str()); ++ fflush(stdout); ++ } ++} ++ ++void Msg::ResetErrorCounter() ++{ ++ _warningCount = 0; _errorCount = 0; ++ _firstWarning.clear(); _firstError.clear(); _lastError.clear(); ++#if defined(HAVE_FLTK) ++ if(FlGui::available()) FlGui::instance()->setLastStatus(); ++#endif ++} ++ ++void Msg::PrintErrorCounter(const char *title) ++{ ++ if(GetCommRank() || GetVerbosity() < 1) return; ++ if(!GetWarningCount() && !GetErrorCount()) return; ++ ++ std::string prefix = GetErrorCount() ? "Error : " : "Warning : "; ++ std::string help("Check the full log for details"); ++ std::string line(std::max(strlen(title), help.size()), '-'); ++ char warn[128], err[128]; ++ sprintf(warn, "%5d warning%s", GetWarningCount(), GetWarningCount() == 1 ? "" : "s"); ++ sprintf(err, "%5d error%s", GetErrorCount(), GetErrorCount() == 1 ? "" : "s"); ++ ++#if defined(HAVE_FLTK) ++ if(FlGui::available()){ ++ std::string col = GetErrorCount() ? ++ std::string(CTX::instance()->guiColorScheme ? "@B72@." : "@C1@.") : ++ std::string(CTX::instance()->guiColorScheme ? "@B152@." : "@C5@."); ++ FlGui::instance()->addMessage((col + prefix + line).c_str()); ++ FlGui::instance()->addMessage((col + prefix + title).c_str()); ++ FlGui::instance()->addMessage((col + prefix + warn).c_str()); ++ FlGui::instance()->addMessage((col + prefix + err).c_str()); ++ FlGui::instance()->addMessage((col + prefix + help).c_str()); ++ FlGui::instance()->addMessage((col + prefix + line).c_str()); ++ if(GetErrorCount()) fl_beep(); ++ } ++#endif ++ ++ if(CTX::instance()->terminal){ ++ const char *c0 = "", *c1 = ""; ++ if(!streamIsFile(stderr) && streamIsVT100(stderr)){ ++ c0 = GetErrorCount() ? "\33[1m\33[31m" : "\33[35m"; // bold red or magenta ++ c1 = "\33[0m"; ++ } ++ fprintf(stderr, "%s%s\n%s\n%s\n%s\n%s\n%s%s\n", c0, (prefix + line).c_str(), ++ (prefix + title).c_str(), (prefix + warn).c_str(), ++ (prefix + err).c_str(), (prefix + help).c_str(), ++ (prefix + line).c_str(), c1); ++ fflush(stderr); ++ } ++} ++ ++double Msg::GetValue(const char *text, double defaultval) ++{ ++ // if a callback is given let's assume we don't want to be bothered ++ // with interactive stuff ++ if(CTX::instance()->noPopup || _callback) return defaultval; ++ ++#if defined(HAVE_FLTK) ++ if(FlGui::available()){ ++ char defaultstr[256]; ++ sprintf(defaultstr, "%.16g", defaultval); ++ const char *ret = fl_input(text, defaultstr, ""); ++ if(!ret) ++ return defaultval; ++ else ++ return atof(ret); ++ } ++#endif ++ ++ printf("%s (default=%.16g): ", text, defaultval); ++ char str[256]; ++ char *ret = fgets(str, sizeof(str), stdin); ++ if(!ret || !strlen(str) || !strcmp(str, "\n")) ++ return defaultval; ++ else ++ return atof(str); ++} ++ ++std::string Msg::GetString(const char *text, const std::string &defaultval) ++{ ++ // if a callback is given let's assume we don't want to be bothered ++ // with interactive stuff ++ if(CTX::instance()->noPopup || _callback) return defaultval; ++ ++#if defined(HAVE_FLTK) ++ if(FlGui::available()){ ++ const char *ret = fl_input(text, defaultval.c_str(), ""); ++ if(!ret) ++ return defaultval; ++ else ++ return std::string(ret); ++ } ++#endif ++ ++ printf("%s (default=%s): ", text, defaultval.c_str()); ++ char str[256]; ++ char *ret = fgets(str, sizeof(str), stdin); ++ if(!ret || !strlen(str) || !strcmp(str, "\n")) ++ return defaultval; ++ else ++ return std::string(str); ++} ++ ++int Msg::GetAnswer(const char *question, int defaultval, const char *zero, ++ const char *one, const char *two) ++{ ++ // if a callback is given let's assume we don't want to be bothered ++ // with interactive stuff ++ if(CTX::instance()->noPopup || _callback) return defaultval; ++ ++#if defined(HAVE_FLTK) ++ if(FlGui::available()) ++ return fl_choice(question, zero, one, two, ""); ++#endif ++ ++ if(two) ++ printf("%s\n\n0=[%s] 1=[%s] 2=[%s] (default=%d): ", question, ++ zero, one, two, defaultval); ++ else ++ printf("%s\n\n0=[%s] 1=[%s] (default=%d): ", question, ++ zero, one, defaultval); ++ char str[256]; ++ char *ret = fgets(str, sizeof(str), stdin); ++ if(!ret || !strlen(str) || !strcmp(str, "\n")) ++ return defaultval; ++ else ++ return atoi(ret); ++} ++ ++bool Msg::UseOnelab() ++{ ++#if defined(HAVE_ONELAB) ++ return _onelabClient ? true : false; ++#else ++ return false; ++#endif ++} ++ ++void Msg::SetOnelabNumber(const std::string &name, double val, bool visible, ++ bool persistent, bool readOnly, int changedValue) ++{ ++#if defined(HAVE_ONELAB) ++ if(_onelabClient){ ++ // get if first so we can keep its options ++ std::vector numbers; ++ _onelabClient->get(numbers, name); ++ if(numbers.empty()){ ++ numbers.resize(1); ++ numbers[0].setName(name); ++ } ++ numbers[0].setValue(val); ++ if(!visible) numbers[0].setVisible(false); ++ if(persistent) numbers[0].setAttribute("Persistent", "1"); ++ numbers[0].setReadOnly(readOnly); ++ numbers[0].setChangedValue(changedValue); ++ _onelabClient->set(numbers[0]); ++ } ++#endif ++} ++ ++void Msg::SetOnelabNumber(const std::string &name, const std::vector &val, ++ bool visible) ++{ ++#if defined(HAVE_ONELAB) ++ if(_onelabClient){ ++ onelab::number n(name, val); ++ if(!visible) n.setVisible(false); ++ _onelabClient->set(n); ++ } ++#endif ++} ++ ++void Msg::SetOnelabString(const std::string &name, const std::string &val, ++ bool visible, bool persistent, bool readOnly, ++ int changedValue, const std::string &kind) ++{ ++#if defined(HAVE_ONELAB) ++ if(_onelabClient){ ++ // get if first so we can keep its options ++ std::vector strings; ++ _onelabClient->get(strings, name); ++ if(strings.empty()){ ++ strings.resize(1); ++ strings[0].setName(name); ++ } ++ strings[0].setValue(val); ++ if(!visible) strings[0].setVisible(false); ++ if(persistent) strings[0].setAttribute("Persistent", "1"); ++ strings[0].setReadOnly(readOnly); ++ strings[0].setChangedValue(changedValue); ++ if(kind.size()) strings[0].setKind(kind); ++ _onelabClient->set(strings[0]); ++ } ++#endif ++} ++ ++void Msg::AddOnelabStringChoice(const std::string &name, ++ const std::string &kind, ++ const std::string &value, bool updateValue, ++ bool readOnly, bool visible) ++{ ++#if defined(HAVE_ONELAB) ++ if(_onelabClient){ ++ std::vector choices; ++ std::vector ps; ++ _onelabClient->get(ps, name); ++ if(ps.size()){ ++ choices = ps[0].getChoices(); ++ if(std::find(choices.begin(), choices.end(), value) == choices.end()) ++ choices.push_back(value); ++ if(updateValue) ++ ps[0].setValue(value); ++ } ++ else{ ++ ps.resize(1); ++ ps[0].setName(name); ++ ps[0].setKind(kind); ++ ps[0].setValue(value); ++ choices.push_back(value); ++ } ++ ps[0].setChoices(choices); ++ if(readOnly){ ++ ps[0].setReadOnly(true); ++ ps[0].setAttribute("AutoCheck", "0"); ++ } ++ else{ ++ ps[0].setReadOnly(false); ++ ps[0].setAttribute("AutoCheck", "1"); ++ } ++ ps[0].setVisible(visible); ++ _onelabClient->set(ps[0]); ++ } ++#endif ++} ++ ++double Msg::GetOnelabNumber(const std::string &name, double defaultValue, ++ bool errorIfMissing) ++{ ++#if defined(HAVE_ONELAB) ++ if(_onelabClient){ ++ std::vector numbers; ++ _onelabClient->get(numbers, name); ++ if(numbers.empty()){ ++ if(errorIfMissing) ++ Msg::Error("Unknown ONELAB number parameter '%s'", name.c_str()); ++ return defaultValue; ++ } ++ else ++ return numbers[0].getValue(); ++ } ++#endif ++ if(errorIfMissing) ++ Msg::Error("GetNumber requires a ONELAB client"); ++ return defaultValue; ++} ++ ++std::string Msg::GetOnelabString(const std::string &name, ++ const std::string &defaultValue, ++ bool errorIfMissing) ++{ ++#if defined(HAVE_ONELAB) ++ if(_onelabClient){ ++ std::vector strings; ++ _onelabClient->get(strings, name); ++ if(strings.empty()){ ++ if(errorIfMissing) ++ Msg::Error("Unknown ONELAB string parameter '%s'", name.c_str()); ++ return defaultValue; ++ } ++ else ++ return strings[0].getValue(); ++ } ++#endif ++ if(errorIfMissing) ++ Msg::Error("GetString requires a ONELAB client"); ++ return defaultValue; ++} ++ ++#if defined(HAVE_ONELAB) ++class localGmsh : public onelab::localClient { ++public: ++ localGmsh() : onelab::localClient("Gmsh") {} ++ // redefinition of virtual onelab_client::sendMergeFileRequest ++ void sendMergeFileRequest(const std::string &name) ++ { ++ if(name.find(".geo") != std::string::npos){ ++ MergePostProcessingFile(name, CTX::instance()->solver.autoShowViews, ++ CTX::instance()->solver.autoShowLastStep, true); ++ GModel::current()->setFileName(name); ++ } ++ else if((name.find(".opt") != std::string::npos)){ ++ MergeFile(name); ++ } ++ else if((name.find(".macro") != std::string::npos)){ ++ MergeFile(name); ++ } ++ else ++ MergePostProcessingFile(name, CTX::instance()->solver.autoShowViews, ++ CTX::instance()->solver.autoShowLastStep, true); ++ } ++ void sendInfo(const std::string &msg){ Msg::Info("%s", msg.c_str()); } ++ void sendWarning(const std::string &msg){ Msg::Warning("%s", msg.c_str()); } ++ void sendError(const std::string &msg){ Msg::Error("%s", msg.c_str()); } ++}; ++#endif ++ ++void Msg::InitializeOnelab(const std::string &name, const std::string &sockname) ++{ ++#if defined(HAVE_ONELAB) ++ if(_onelabClient) delete _onelabClient; ++ if(sockname.empty()){ ++ _onelabClient = new localGmsh(); ++ if(name != "Gmsh"){ // load db from file: ++ FILE *fp = Fopen(name.c_str(), "rb"); ++ if(fp){ ++ Msg::Info("Reading ONELAB database '%s'", name.c_str()); ++ _onelabClient->fromFile(fp); ++ fclose(fp); ++ } ++ else ++ Error("Error loading onelab database '%s'", name.c_str()); ++ } ++ } ++ else{ ++ onelab::remoteNetworkClient *c = new onelab::remoteNetworkClient(name, sockname); ++ _onelabClient = c; ++ _client = c->getGmshClient(); ++ ++ SetOnelabNumber(name + "/Use command line", 1, false); ++ SetOnelabString(name + "/File extension", ".geo", false); ++ SetOnelabString(name + "/9CheckCommand", "-", false); ++ SetOnelabString(name + "/9ComputeCommand", "-3", false); ++ ++ std::vector ps; ++ _onelabClient->get(ps, name + "/Action"); ++ if(ps.size()){ ++ //removed message, as terminal is set to 1 when we get here ++ //Info("Performing ONELAB '%s'", ps[0].getValue().c_str()); ++ if(ps[0].getValue() == "initialize") Exit(0); ++ } ++ } ++ ++ // default onelab button mode ++ SetOnelabString("ONELAB/Button", "", false, true); ++#endif ++} ++ ++void Msg::FinalizeOnelab() ++{ ++#if defined(HAVE_ONELAB) ++ // kill any running clients ++ for(auto it = onelab::server::instance()->firstClient(); ++ it != onelab::server::instance()->lastClient(); it++){ ++ (*it)->kill(); ++ } ++ // delete local client ++ if(_onelabClient){ ++ delete _onelabClient; ++ _onelabClient = nullptr; ++ _client = nullptr; ++ } ++#endif ++} ++ ++void Msg::SetOnelabAction(const std::string &action) ++{ ++#if defined(HAVE_ONELAB) ++ if(_onelabClient){ ++ onelab::string o(_onelabClient->getName() + "/Action", action); ++ o.setVisible(false); ++ o.setChangedValue(0); ++ _onelabClient->set(o); ++ } ++#endif ++} ++ ++std::string Msg::GetOnelabAction() ++{ ++#if defined(HAVE_ONELAB) ++ if(_onelabClient){ ++ std::vector ps; ++ _onelabClient->get(ps, _onelabClient->getName() + "/Action"); ++ if(ps.size()) return ps[0].getValue(); ++ } ++#endif ++ return ""; ++} ++ ++void Msg::LoadOnelabClient(const std::string &clientName, const std::string &sockName) ++{ ++#if defined(HAVE_ONELAB) ++ onelab::remoteNetworkClient *client = nullptr; ++ client = new onelab::remoteNetworkClient(clientName, sockName); ++ if(client){ ++ std::string action, cmd; ++ std::vector ps; ++ client->get(ps, clientName + "/Action"); ++ if(ps.size() && ps[0].getValue().size()) ++ action.assign(ps[0].getValue()); ++ //cmd.assign(""); ++ if(!action.compare("compute")){ ++ std::vector ps; ++ client->get(ps,clientName+"/FullCmdLine"); ++ if(ps.size() && ps[0].getValue().size()) ++ cmd.assign(ps[0].getValue()); ++ ++ if(cmd.size()){ ++ Msg::Info("Loader calls <%s>", cmd.c_str()); ++ //client->sendInfo(strcat("Loader calls",cmd.c_str())); ++ std::cout << "Loader calls " << cmd << std::endl; ++ SystemCall(cmd.c_str(), true); //true->blocking ++ } ++ else ++ Msg::Info("No full command line found for <%s>", ++ clientName.c_str()); ++ } ++ Msg::Info("Stopping client <%s>", clientName.c_str()); ++ delete client; ++ } ++ exit(1); ++#endif ++} ++ ++GmshClient *Msg::GetGmshClient() ++{ ++ return _client; ++} ++ ++int Msg::GetNumOnelabClients() ++{ ++#if defined(HAVE_ONELAB) ++ return onelab::server::instance()->getNumClients(); ++#endif ++ return 0; ++} ++ ++#if defined(HAVE_ONELAB) ++static void _setStandardOptions(onelab::parameter *p, ++ std::map > &fopt, ++ std::map > &copt) ++{ ++ // strings ++ if(copt.count("Label")) p->setLabel(copt["Label"][0]); ++ if(copt.count("ShortHelp")) // for backward compatibility ++ p->setLabel(copt["ShortHelp"][0]); ++ if(copt.count("Help")) p->setHelp(copt["Help"][0]); ++ if(copt.count("Highlight")) p->setAttribute("Highlight", copt["Highlight"][0]); ++ if(copt.count("Macro")) p->setAttribute("Macro", copt["Macro"][0]); ++ if(copt.count("GmshOption")) p->setAttribute("GmshOption", copt["GmshOption"][0]); ++ if(copt.count("ServerAction")) p->setAttribute("ServerAction", copt["ServerAction"][0]); ++ if(copt.count("Units")) p->setAttribute("Units", copt["Units"][0]); ++ if(copt.count("AutoCheck")) // for backward compatibility ++ p->setAttribute("AutoCheck", copt["AutoCheck"][0]); ++ ++ // numbers ++ if(fopt.count("Visible")) p->setVisible(fopt["Visible"][0] ? true : false); ++ if(fopt.count("ReadOnly")) p->setReadOnly(fopt["ReadOnly"][0] ? true : false); ++ if(fopt.count("NeverChanged")) p->setNeverChanged(fopt["NeverChanged"][0] ? true : false); ++ if(fopt.count("ChangedValue")) p->setChangedValue(fopt["ChangedValue"][0]); ++ if(fopt.count("ReadOnlyRange")) ++ p->setAttribute("ReadOnlyRange", fopt["ReadOnlyRange"][0] ? "1" : "0"); ++ if(fopt.count("AutoCheck")) ++ p->setAttribute("AutoCheck", fopt["AutoCheck"][0] ? "1" : "0"); ++} ++ ++static void _setOtherAttributes(onelab::parameter *p, ++ std::map > &copt) ++{ ++ for(auto it = copt.begin(); it != copt.end(); it++) ++ if(p->getAttribute(it->first).empty() && ++ it->first.compare("Name") && ++ it->first.compare("Label") && ++ it->first.compare("ShortHelp") && ++ it->first.compare("Help") && ++ it->first.compare("Visible") && ++ it->first.compare("ReadOnly") && ++ it->first.compare("NeverChanged") && ++ it->first.compare("ChangedValue")) // Attribute 'it' was not already set ++ p->setAttribute(it->first, it->second[0]); ++} ++ ++static std::string _getParameterName(const std::string &key, ++ std::map > &copt) ++{ ++ std::string name(key); ++ if(copt.count("Path")){ ++ std::string path = copt["Path"][0]; ++ // if path ends with a number, assume it's for ordering purposes ++ if(path.size() && path[path.size() - 1] >= '0' && path[path.size() - 1] <= '9') ++ name = path + name; ++ else if(path.size() && path[path.size() - 1] == '/') ++ name = path + name; ++ else ++ name = path + "/" + name; ++ } ++ return name; ++} ++#endif ++ ++void Msg::ExchangeOnelabParameter(const std::string &key, ++ std::vector &val, ++ std::map > &fopt, ++ std::map > &copt) ++{ ++#if defined(HAVE_ONELAB) ++ if(!_onelabClient) return; ++ ++ std::string name; ++ if(copt.count("Name")) ++ name = copt["Name"][0]; ++ ++ if(name.empty()){ ++ if(copt.size() || fopt.size()) ++ Msg::Error("From now on you need to use the `Name' attribute to create a " ++ "ONELAB parameter: `Name \"%s\"'", ++ _getParameterName(key, copt).c_str()); ++ return; ++ } ++ ++ std::vector ps; ++ _onelabClient->get(ps, name); ++ bool noRange = true, noChoices = true, noLoop = true; ++ bool noGraph = true, noClosed = true; ++ if(ps.size()){ ++ bool useLocalValue = ps[0].getReadOnly(); ++ if(fopt.count("ReadOnly")) useLocalValue = fopt["ReadOnly"][0]; ++ if(useLocalValue) ++ ps[0].setValues(val); ++ else ++ val = ps[0].getValues(); // use value from server ++ // keep track of these attributes, which can be changed server-side (unless ++ // they are not visible or, for the range/choices, when explicitly setting ++ // these attributes as ReadOnly) ++ if(ps[0].getVisible()){ ++ if(!(fopt.count("ReadOnlyRange") && fopt["ReadOnlyRange"][0])){ ++ if(ps[0].getMin() != -onelab::parameter::maxNumber() || ++ ps[0].getMax() != onelab::parameter::maxNumber() || ++ ps[0].getStep() != 0.) noRange = false; ++ if(ps[0].getChoices().size()) noChoices = false; ++ } ++ if(ps[0].getAttribute("Loop").size()) noLoop = false; ++ if(ps[0].getAttribute("Graph").size()) noGraph = false; ++ if(ps[0].getAttribute("Closed").size()) noClosed = false; ++ } ++ } ++ else{ ++ ps.resize(1); ++ ps[0].setName(name); ++ ps[0].setValues(val); ++ } ++ // send updated parameter to server ++ if(noRange && fopt.count("Range") && fopt["Range"].size() == 2){ ++ ps[0].setMin(fopt["Range"][0]); ps[0].setMax(fopt["Range"][1]); ++ } ++ else if(noRange && fopt.count("Min") && fopt.count("Max")){ ++ ps[0].setMin(fopt["Min"][0]); ps[0].setMax(fopt["Max"][0]); ++ } ++ else if(noRange && fopt.count("Min")){ ++ ps[0].setMin(fopt["Min"][0]); ps[0].setMax(onelab::parameter::maxNumber()); ++ } ++ else if(noRange && fopt.count("Max")){ ++ ps[0].setMax(fopt["Max"][0]); ps[0].setMin(-onelab::parameter::maxNumber()); ++ } ++ if(noRange && fopt.count("Step")) ps[0].setStep(fopt["Step"][0]); ++ // if no range/min/max/step info is provided, try to compute a reasonnable ++ // range and step (this makes the gui much nicer to use) ++ if(val.size() && noRange && !fopt.count("Range") && !fopt.count("Step") && ++ !fopt.count("Min") && !fopt.count("Max")){ ++ bool isInteger = (floor(val[0]) == val[0]); ++ double fact = isInteger ? 5. : 20.; ++ if(val[0] > 0){ ++ ps[0].setMin(val[0] / fact); ++ ps[0].setMax(val[0] * fact); ++ ps[0].setStep((ps[0].getMax() - ps[0].getMin()) / 100.); ++ } ++ else if(val[0] < 0){ ++ ps[0].setMin(val[0] * fact); ++ ps[0].setMax(val[0] / fact); ++ ps[0].setStep((ps[0].getMax() - ps[0].getMin()) / 100.); ++ } ++ if(val[0] && isInteger){ ++ ps[0].setMin((int)ps[0].getMin()); ++ ps[0].setMax((int)ps[0].getMax()); ++ ps[0].setStep((int)ps[0].getStep()); ++ } ++ } ++ if(noChoices && fopt.count("Choices")){ ++ ps[0].setChoices(fopt["Choices"]); ++ if(copt.count("Choices")) ps[0].setChoiceLabels(copt["Choices"]); ++ } ++ if(noLoop && copt.count("Loop")) // for backward compatibity ++ ps[0].setAttribute("Loop", copt["Loop"][0]); ++ if(noLoop && fopt.count("Loop")) ++ ps[0].setAttribute("Loop", (fopt["Loop"][0] == 3.) ? "3" : ++ (fopt["Loop"][0] == 2.) ? "2" : ++ (fopt["Loop"][0] == 1.) ? "1" : ""); ++ if(noGraph && copt.count("Graph")) ps[0].setAttribute("Graph", copt["Graph"][0]); ++ if(noClosed && copt.count("Closed")) // for backward compatibility ++ ps[0].setAttribute("Closed", copt["Closed"][0]); ++ if(noClosed && fopt.count("Closed")) ++ ps[0].setAttribute("Closed", fopt["Closed"][0] ? "1" : "0"); ++ if(copt.count("NumberFormat")) ++ ps[0].setAttribute("NumberFormat", copt["NumberFormat"][0]); ++ _setStandardOptions(&ps[0], fopt, copt); ++ _setOtherAttributes(&ps[0], copt); ++ _onelabClient->set(ps[0]); ++#endif ++} ++ ++void Msg::ExchangeOnelabParameter(const std::string &key, ++ std::string &val, ++ std::map > &fopt, ++ std::map > &copt) ++{ ++#if defined(HAVE_ONELAB) ++ if(!_onelabClient) return; ++ ++ std::string name; ++ if(copt.count("Name")) ++ name = copt["Name"][0]; ++ ++ if(name.empty()){ ++ if(copt.size() || fopt.size()) ++ Msg::Error("From now on you need to use the `Name' attribute to create a " ++ "ONELAB parameter: `Name \"%s\"'", ++ _getParameterName(key, copt).c_str()); ++ return; ++ } ++ ++ std::vector ps; ++ _onelabClient->get(ps, name); ++ bool noChoices = true, noClosed = true, noMultipleSelection = true; ++ if(ps.size()){ ++ bool useLocalValue = ps[0].getReadOnly(); ++ if(fopt.count("ReadOnly")) useLocalValue = fopt["ReadOnly"][0]; ++ if(useLocalValue) ++ ps[0].setValue(val); // use local value ++ else ++ val = ps[0].getValue(); // use value from server ++ // keep track of these attributes, which can be changed server-side (unless ++ // they are not visible) ++ if(ps[0].getVisible()){ ++ if(ps[0].getChoices().size()) noChoices = false; ++ if(ps[0].getAttribute("Closed").size()) noClosed = false; ++ if(ps[0].getAttribute("MultipleSelection").size()) noMultipleSelection = false; ++ } ++ } ++ else{ ++ ps.resize(1); ++ ps[0].setName(name); ++ ps[0].setValue(val); ++ } ++ if(copt.count("Kind")) ps[0].setKind(copt["Kind"][0]); ++ if(noChoices && copt.count("Choices")) ps[0].setChoices(copt["Choices"]); ++ if(noClosed && copt.count("Closed")) // for backward compatibility ++ ps[0].setAttribute("Closed", copt["Closed"][0]); ++ if(noClosed && fopt.count("Closed")) ++ ps[0].setAttribute("Closed", fopt["Closed"][0] ? "1" : "0"); ++ if(noMultipleSelection && copt.count("MultipleSelection")) ++ ps[0].setAttribute("MultipleSelection", copt["MultipleSelection"][0]); ++ _setStandardOptions(&ps[0], fopt, copt); ++ _setOtherAttributes(&ps[0], copt); ++ _onelabClient->set(ps[0]); ++#endif ++} ++ ++void Msg::UndefineOnelabParameter(const std::string &name) ++{ ++#if defined(HAVE_ONELAB) ++ if(!_onelabClient) return; ++ _onelabClient->clear(name); ++#endif ++} ++ ++void Msg::ImportPhysicalGroupsInOnelab() ++{ ++#if defined(HAVE_ONELAB) ++ if(_onelabClient){ ++ std::vector oldn; ++ _onelabClient->get(oldn, "Gmsh/Number of physical groups"); ++ int oldsize = 0; ++ if(oldn.size()) oldsize = (int)oldn[0].getValue(); ++ ++ std::map > groups[4]; ++ GModel::current()->getPhysicalGroups(groups); ++ int size = 0; ++ for(int dim = 0; dim <= 3; dim++) ++ size += groups[dim].size(); ++ onelab::number n("Gmsh/Number of physical groups", size); ++ n.setReadOnly(true); ++ n.setChangedValue(1); ++ n.setVisible(false); ++ n.setAttribute("Closed", "1"); ++ _onelabClient->set(n); ++ ++ onelab::number nd("Gmsh/Model dimension", GModel::current()->getDim()); ++ nd.setReadOnly(true); ++ nd.setChangedValue(1); ++ nd.setVisible(false); ++ nd.setAttribute("Closed", "1"); ++ _onelabClient->set(nd); ++ ++ int index = 1; ++ for(int dim = 0; dim <= 3; dim++){ ++ for(auto it = groups[dim].begin(); ++ it != groups[dim].end(); it++){ ++ int num = it->first; ++ std::string name = GModel::current()->getPhysicalName(dim, it->first); ++ char tmp[256]; ++ if(name.empty()){ ++ sprintf(tmp, "Physical %s %d", (dim == 3) ? "Volume" : (dim == 2) ? "Surface" : ++ (dim == 1) ? "Curve" : "Point", num); ++ name = tmp; ++ } ++ sprintf(tmp, "Gmsh/Physical group %d/", index); ++ std::string str = tmp; ++ onelab::number n1(str + "Dimension", dim); ++ n1.setReadOnly(true); ++ n1.setChangedValue(1); ++ n1.setVisible(false); ++ _onelabClient->set(n1); ++ onelab::number n2(str + "Number", num); ++ n2.setReadOnly(true); ++ n2.setChangedValue(1); ++ n2.setVisible(false); ++ _onelabClient->set(n2); ++ onelab::string s(str + "Name", name); ++ s.setReadOnly(true); ++ s.setChangedValue(1); ++ s.setVisible(false); ++ _onelabClient->set(s); ++ index++; ++ } ++ } ++ ++ // remove old ones ++ for(int index = size + 1; index < oldsize + 1; index++){ ++ char tmp[256]; ++ sprintf(tmp, "Gmsh/Physical group %d/Dimension", index); ++ _onelabClient->clear(tmp); ++ sprintf(tmp, "Gmsh/Physical group %d/Number", index); ++ _onelabClient->clear(tmp); ++ sprintf(tmp, "Gmsh/Physical group %d/Name", index); ++ _onelabClient->clear(tmp); ++ } ++ ++#if defined(HAVE_FLTK) ++ if(FlGui::available()){ ++ FlGui::instance()->resetVisibility(); ++ FlGui::instance()->rebuildTree(false); ++ } ++#endif ++ } ++#endif ++} ++ ++void Msg::RunOnelabClient(const std::string &name, const std::string &command) ++{ ++#if defined(HAVE_ONELAB) ++ onelabUtils::runClient(name, command); ++#endif ++} ++ ++void Msg::SetOnelabChanged(int value, const std::string &client) ++{ ++#if defined(HAVE_ONELAB) ++ onelab::server::instance()->setChanged(value, client); ++#endif ++} ++ ++void Msg::Barrier() ++{ ++#if defined(HAVE_MPI) ++ MPI_Barrier(MPI_COMM_WORLD); ++#endif ++} ++ ++#if defined(_OPENMP) ++ ++int Msg::GetNumThreads(){ return omp_get_num_threads(); } ++void Msg::SetNumThreads(int num){ omp_set_num_threads(num); } ++int Msg::GetMaxThreads(){ return omp_get_max_threads(); } ++int Msg::GetThreadNum(){ return omp_get_thread_num(); } ++ ++#else ++ ++int Msg::GetNumThreads(){ return 1; } ++void Msg::SetNumThreads(int num){ } ++int Msg::GetMaxThreads(){ return 1; } ++int Msg::GetThreadNum(){ return 0; } ++ ++#endif ++ ++MsgProgressStatus::MsgProgressStatus(int num) ++ : _totalElementToTreat(num), _currentI(0), _nextIToCheck(0), ++ _initialTime(Cpu()), _lastTime(_initialTime), _lastPercentage(0), ++ _progressMeterStep(Msg::GetProgressMeterStep()) ++{ ++ Msg::SetProgressMeterStep(1); ++ Msg::StartProgressMeter(_totalElementToTreat); ++} ++ ++MsgProgressStatus::~MsgProgressStatus() ++{ ++ Msg::ProgressMeter(_totalElementToTreat, true, "done"); ++ Msg::SetProgressMeterStep(_progressMeterStep); ++ Msg::StopProgressMeter(); ++} ++ ++void MsgProgressStatus::next() ++{ ++ if(Msg::GetCommRank() || Msg::GetNumThreads() > 1) return; ++ ++ ++_currentI; ++ if (_currentI < _nextIToCheck) return; ++ ++ int currentPercentage = _currentI * 100 / _totalElementToTreat; ++ // check every percentage only ++ _nextIToCheck = (currentPercentage + 1) * _totalElementToTreat / 100 + 1; ++ ++ double currentTime = Cpu(); ++ if ((currentPercentage < 5 && currentTime - _lastTime > 15.) || ++ (currentPercentage > _lastPercentage + 4 && currentTime - _lastTime > 10.)) { ++ _lastPercentage = currentPercentage; ++ _lastTime = currentTime; ++ const double remaining = (currentTime - _initialTime) / (_currentI + 1) * ++ (_totalElementToTreat - _currentI - 1); ++ if (remaining < 60*2) ++ Msg::ProgressMeter(_currentI - 1, true, ++ "%d%% (remaining time ~%g seconds)", ++ currentPercentage, remaining); ++ else if (remaining < 60*60*2) ++ Msg::ProgressMeter(_currentI - 1, true, ++ "%d%% (remaining time ~%g minutes)", ++ currentPercentage, remaining / 60); ++ else ++ Msg::ProgressMeter(_currentI - 1, true, ++ "%d%% (remaining time ~%g hours)", ++ currentPercentage, remaining / 3600); ++ } ++} diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index c6ebfbd..deb4a74 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.9.4-source/CMakeLists.txt gmsh-4.9.4-source-new/CMakeLists.txt ---- gmsh-4.9.4-source/CMakeLists.txt 2022-02-04 08:50:19.679186713 +0100 -+++ gmsh-4.9.4-source-new/CMakeLists.txt 2022-02-04 08:50:19.890187167 +0100 -@@ -1622,6 +1622,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB +diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt gmsh-4.10.0-source-new/CMakeLists.txt +--- gmsh-4.10.0-source/CMakeLists.txt 2022-04-26 07:50:50.699000208 +0200 ++++ gmsh-4.10.0-source-new/CMakeLists.txt 2022-04-26 07:50:50.916998135 +0200 +@@ -1624,6 +1624,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,21 @@ diff -rupN --no-dereference gmsh-4.9.4-source/CMakeLists.txt gmsh-4.9.4-source-n # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.9.4-source/src/graphics/CMakeLists.txt gmsh-4.9.4-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.9.4-source/src/graphics/CMakeLists.txt 2022-01-11 20:34:47.000000000 +0100 -+++ gmsh-4.9.4-source-new/src/graphics/CMakeLists.txt 2022-02-04 08:50:19.891187169 +0100 +diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt.orig gmsh-4.10.0-source-new/CMakeLists.txt.orig +--- gmsh-4.10.0-source/CMakeLists.txt.orig 2022-04-26 07:50:50.700000198 +0200 ++++ gmsh-4.10.0-source-new/CMakeLists.txt.orig 2022-04-26 07:50:50.496002138 +0200 +@@ -270,7 +270,7 @@ if(ENABLE_RPATH) + # when building, don't use the install RPATH already (but later on when + # installing) + set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) +- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") ++ set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_LIBDIR}") + + # add the automatically determined parts of the RPATH which point to + # directories outside the build tree to the install RPATH +diff -rupN --no-dereference gmsh-4.10.0-source/src/graphics/CMakeLists.txt gmsh-4.10.0-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.10.0-source/src/graphics/CMakeLists.txt 2022-01-11 20:34:47.000000000 +0100 ++++ gmsh-4.10.0-source-new/src/graphics/CMakeLists.txt 2022-04-26 07:50:50.916998135 +0200 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index 9379b19..b893d8c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.9.5-source-fedora.tar.xz) = 51b139b7d2dc2812fdc178eecb2282ad2b962eaeae9cfdfc81ddf4ff7dd0b232e90ae32f5e8e8c540eb07dcb6110407f8a52a07bc8f444ac02d27d89f183b844 +SHA512 (gmsh-4.10.0-source-fedora.tar.xz) = de14d664cb4c4bcc9387c3dcda2d87c8e871b128f90457cf1fe498b48c92912404b9d3d3312c445b19df277ccd097d32d0e134731731eb2792bd26de3f75938a From c591bafb5300d2be690210c4b3b5a2cd07384d82 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Tue, 3 May 2022 10:24:40 +0200 Subject: [PATCH 03/56] Update to 4.10.1 --- .gitignore | 1 + gmsh.spec | 5 +- gmsh_build.patch | 6 +- gmsh_install.patch | 18 +- gmsh_julia.patch | 32 +- gmsh_med.patch | 24 +- gmsh_python.patch | 3916 +------------------------------------ gmsh_unbundle_gl2ps.patch | 24 +- sources | 2 +- 9 files changed, 39 insertions(+), 3989 deletions(-) diff --git a/.gitignore b/.gitignore index a7ec2dd..51a5269 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,4 @@ /gmsh-4.9.4-source-fedora.tar.xz /gmsh-4.9.5-source-fedora.tar.xz /gmsh-4.10.0-source-fedora.tar.xz +/gmsh-4.10.1-source-fedora.tar.xz diff --git a/gmsh.spec b/gmsh.spec index 7871baa..3fe801a 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -9,7 +9,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.10.0 +Version: 4.10.1 Release: 1%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt @@ -389,6 +389,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Tue May 03 2022 Sandro Mani - 4.10.1-1 +- Update to 4.10.1 + * Tue Apr 26 2022 Sandro Mani - 4.10.0-1 - Update to 4.10.0 diff --git a/gmsh_build.patch b/gmsh_build.patch index 7ff490a..cd98c6c 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.0-source/src/fltk/helpWindow.cpp gmsh-4.10.0-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.10.0-source/src/fltk/helpWindow.cpp 2022-04-26 07:50:50.281004183 +0200 -+++ gmsh-4.10.0-source-new/src/fltk/helpWindow.cpp 2022-04-26 07:50:50.703000170 +0200 +diff -rupN --no-dereference gmsh-4.10.1-source/src/fltk/helpWindow.cpp gmsh-4.10.1-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.10.1-source/src/fltk/helpWindow.cpp 2022-05-03 08:34:45.094584919 +0200 ++++ gmsh-4.10.1-source-new/src/fltk/helpWindow.cpp 2022-05-03 08:34:45.541591689 +0200 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index 5999348..389e328 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt gmsh-4.10.0-source-new/CMakeLists.txt ---- gmsh-4.10.0-source/CMakeLists.txt 2022-04-26 07:50:50.492002176 +0200 -+++ gmsh-4.10.0-source-new/CMakeLists.txt 2022-04-26 07:50:50.496002138 +0200 +diff -rupN --no-dereference gmsh-4.10.1-source/CMakeLists.txt gmsh-4.10.1-source-new/CMakeLists.txt +--- gmsh-4.10.1-source/CMakeLists.txt 2022-05-03 08:34:45.323588387 +0200 ++++ gmsh-4.10.1-source-new/CMakeLists.txt 2022-05-03 08:34:45.327588448 +0200 @@ -270,7 +270,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) @@ -10,15 +10,3 @@ diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt gmsh-4.10.0-source # add the automatically determined parts of the RPATH which point to # directories outside the build tree to the install RPATH -diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt.orig gmsh-4.10.0-source-new/CMakeLists.txt.orig ---- gmsh-4.10.0-source/CMakeLists.txt.orig 2022-04-26 07:50:50.493002167 +0200 -+++ gmsh-4.10.0-source-new/CMakeLists.txt.orig 2022-04-26 07:50:50.286004135 +0200 -@@ -1898,7 +1898,7 @@ endif() - if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) - install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) - install(FILES ${GMSH_PY} DESTINATION ${PYTHON3_SITE_PACKAGES}) -- install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB}) -+ install(FILES ${GMSH_JL} DESTINATION share/gmsh) - if(ENABLE_PRIVATE_API) - install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) - if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen diff --git a/gmsh_julia.patch b/gmsh_julia.patch index f80ffa3..2612ee9 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt gmsh-4.10.0-source-new/CMakeLists.txt ---- gmsh-4.10.0-source/CMakeLists.txt 2022-04-26 07:50:50.064006246 +0200 -+++ gmsh-4.10.0-source-new/CMakeLists.txt 2022-04-26 07:50:50.286004135 +0200 +diff -rupN --no-dereference gmsh-4.10.1-source/CMakeLists.txt gmsh-4.10.1-source-new/CMakeLists.txt +--- gmsh-4.10.1-source/CMakeLists.txt 2022-05-03 08:34:44.874581180 +0200 ++++ gmsh-4.10.1-source-new/CMakeLists.txt 2022-05-03 08:34:45.098584980 +0200 @@ -1898,7 +1898,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) @@ -10,29 +10,3 @@ diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt gmsh-4.10.0-source if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen -diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt.orig gmsh-4.10.0-source-new/CMakeLists.txt.orig ---- gmsh-4.10.0-source/CMakeLists.txt.orig 2022-04-26 07:50:50.064006246 +0200 -+++ gmsh-4.10.0-source-new/CMakeLists.txt.orig 2022-04-26 07:50:49.801008751 +0200 -@@ -1880,6 +1880,8 @@ else() - set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) - endif() - -+execute_process ( COMMAND python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" OUTPUT_VARIABLE PYTHON3_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE) -+ - # mark targets as optional so we can install them separately if needed - # (e.g. "make lib" or "make shared" followed by "make install/fast") - install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL) -@@ -1891,11 +1893,11 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_D - endif() - - if(ENABLE_ONELAB AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab) -- install(FILES ${ONELAB_PY} DESTINATION ${GMSH_BIN}) -+ install(FILES ${ONELAB_PY} DESTINATION ${PYTHON3_SITE_PACKAGES}) - endif() - if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) - install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) -- install(FILES ${GMSH_PY} DESTINATION ${GMSH_LIB}) -+ install(FILES ${GMSH_PY} DESTINATION ${PYTHON3_SITE_PACKAGES}) - install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB}) - if(ENABLE_PRIVATE_API) - install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) diff --git a/gmsh_med.patch b/gmsh_med.patch index 1cb6ef8..a3cefd5 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.0-source/src/common/CommandLine.cpp gmsh-4.10.0-source-new/src/common/CommandLine.cpp ---- gmsh-4.10.0-source/src/common/CommandLine.cpp 2022-04-25 15:27:25.000000000 +0200 -+++ gmsh-4.10.0-source-new/src/common/CommandLine.cpp 2022-04-26 07:50:50.069006199 +0200 +diff -rupN --no-dereference gmsh-4.10.1-source/src/common/CommandLine.cpp gmsh-4.10.1-source-new/src/common/CommandLine.cpp +--- gmsh-4.10.1-source/src/common/CommandLine.cpp 2022-04-26 17:50:41.000000000 +0200 ++++ gmsh-4.10.1-source-new/src/common/CommandLine.cpp 2022-05-03 08:34:44.878581254 +0200 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.10.0-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.10.0-source/src/fltk/helpWindow.cpp gmsh-4.10.0-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.10.0-source/src/fltk/helpWindow.cpp 2022-01-11 20:34:46.000000000 +0100 -+++ gmsh-4.10.0-source-new/src/fltk/helpWindow.cpp 2022-04-26 07:50:50.069006199 +0200 +diff -rupN --no-dereference gmsh-4.10.1-source/src/fltk/helpWindow.cpp gmsh-4.10.1-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.10.1-source/src/fltk/helpWindow.cpp 2022-01-11 20:34:46.000000000 +0100 ++++ gmsh-4.10.1-source-new/src/fltk/helpWindow.cpp 2022-05-03 08:34:44.878581254 +0200 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.10.0-source/src/fltk/helpWindow.cpp gmsh-4.10 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.10.0-source/src/geo/GModelIO_MED.cpp gmsh-4.10.0-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.10.0-source/src/geo/GModelIO_MED.cpp 2022-01-11 20:34:47.000000000 +0100 -+++ gmsh-4.10.0-source-new/src/geo/GModelIO_MED.cpp 2022-04-26 07:50:50.069006199 +0200 +diff -rupN --no-dereference gmsh-4.10.1-source/src/geo/GModelIO_MED.cpp gmsh-4.10.1-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.10.1-source/src/geo/GModelIO_MED.cpp 2022-01-11 20:34:47.000000000 +0100 ++++ gmsh-4.10.1-source-new/src/geo/GModelIO_MED.cpp 2022-05-03 08:34:44.879581272 +0200 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.10.0-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.10.0-source/src/post/PViewDataGModelIO.cpp gmsh-4.10.0-source-new/src/post/PViewDataGModelIO.cpp ---- gmsh-4.10.0-source/src/post/PViewDataGModelIO.cpp 2022-01-11 20:34:48.000000000 +0100 -+++ gmsh-4.10.0-source-new/src/post/PViewDataGModelIO.cpp 2022-04-26 07:50:50.070006189 +0200 +diff -rupN --no-dereference gmsh-4.10.1-source/src/post/PViewDataGModelIO.cpp gmsh-4.10.1-source-new/src/post/PViewDataGModelIO.cpp +--- gmsh-4.10.1-source/src/post/PViewDataGModelIO.cpp 2022-01-11 20:34:48.000000000 +0100 ++++ gmsh-4.10.1-source-new/src/post/PViewDataGModelIO.cpp 2022-05-03 08:34:44.879581272 +0200 @@ -542,7 +542,7 @@ void PViewDataGModel::importLists(int N[ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index 3aa682f..2a6ef04 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt gmsh-4.10.0-source-new/CMakeLists.txt ---- gmsh-4.10.0-source/CMakeLists.txt 2022-03-11 15:43:41.000000000 +0100 -+++ gmsh-4.10.0-source-new/CMakeLists.txt 2022-04-26 07:50:49.801008751 +0200 +diff -rupN --no-dereference gmsh-4.10.1-source/CMakeLists.txt gmsh-4.10.1-source-new/CMakeLists.txt +--- gmsh-4.10.1-source/CMakeLists.txt 2022-04-27 00:14:45.000000000 +0200 ++++ gmsh-4.10.1-source-new/CMakeLists.txt 2022-05-03 08:34:44.655577156 +0200 @@ -1880,6 +1880,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -24,2220 +24,9 @@ diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt gmsh-4.10.0-source install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB}) if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) -diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt.orig gmsh-4.10.0-source-new/CMakeLists.txt.orig ---- gmsh-4.10.0-source/CMakeLists.txt.orig 1970-01-01 01:00:00.000000000 +0100 -+++ gmsh-4.10.0-source-new/CMakeLists.txt.orig 2022-03-11 15:43:41.000000000 +0100 -@@ -0,0 +1,2207 @@ -+# Gmsh - Copyright (C) 1997-2022 C. Geuzaine, J.-F. Remacle -+# -+# See the LICENSE.txt file in the Gmsh root directory for license information. -+# Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. -+ -+cmake_minimum_required(VERSION 3.3 FATAL_ERROR) -+ -+# if CMAKE_BUILD_TYPE is specified use it; otherwise set the default -+# build type to "RelWithDebInfo" ("-O2 -g" with gcc) prior to calling -+# project() -+if(DEFINED CMAKE_BUILD_TYPE) -+ set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose build type") -+else() -+ set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose build type") -+endif() -+ -+project(gmsh CXX C) -+ -+# require C++11 and request C99 -+set(CMAKE_CXX_STANDARD 11) -+set(CMAKE_CXX_STANDARD_REQUIRED ON) -+set(CMAKE_C_STANDARD 99) -+ -+# this variable controls the default value of the options which are normally set -+# to ON (useful if you want to configure a minimal version of Gmsh: e.g. "cmake -+# -DDEFAULT=0 -DENABLE_POST=1 -DENABLE_PARSER=1") -+set(DEFAULT ON CACHE INTERNAL "Default value for enabled-by-default options") -+ -+macro(opt OPTION HELP VALUE) -+ option(ENABLE_${OPTION} ${HELP} ${VALUE}) -+ set(OPT_TEXI "${OPT_TEXI}\n@item ENABLE_${OPTION}\n${HELP} (default: ${VALUE})") -+endmacro() -+ -+opt(3M "Enable proprietary 3M extension" OFF) -+opt(ALGLIB "Enable ALGLIB (used by some mesh optimizers)" ${DEFAULT}) -+opt(ANN "Enable ANN (used for fast point search in mesh/post)" ${DEFAULT}) -+opt(BAMG "Enable Bamg 2D anisotropic mesh generator" ${DEFAULT}) -+opt(BLAS_LAPACK "Enable BLAS/Lapack for linear algebra (if Eigen if disabled)" OFF) -+opt(BLOSSOM "Enable Blossom algorithm (needed for full quad meshing)" ${DEFAULT}) -+opt(BUILD_LIB "Enable 'lib' target for building static Gmsh library" OFF) -+opt(BUILD_SHARED "Enable 'shared' target for building shared Gmsh library" OFF) -+opt(BUILD_DYNAMIC "Enable dynamic Gmsh executable (linked with shared library)" OFF) -+opt(BUILD_ANDROID "Enable Android NDK library target (experimental)" OFF) -+opt(BUILD_IOS "Enable iOS library target (experimental)" OFF) -+opt(CGNS "Enable CGNS import/export (experimental)" ${DEFAULT}) -+opt(CGNS_CPEX0045 "Enable high-order CGNS import/export following CPEX0045 (experimental)" OFF) -+opt(CAIRO "Enable Cairo to render fonts (experimental)" ${DEFAULT}) -+opt(PROFILE "Enable profiling compiler flags" OFF) -+opt(DINTEGRATION "Enable discrete integration (needed for levelsets)" ${DEFAULT}) -+opt(DOMHEX "Enable experimental DOMHEX code" ${DEFAULT}) -+opt(EIGEN "Enable Eigen for linear algebra (instead of Blas/Lapack)" ON) -+opt(FLTK "Enable FLTK graphical user interface (requires mesh/post)" ${DEFAULT}) -+opt(GEOMETRYCENTRAL "Enable geometry-central library (experimental)" ${DEFAULT}) -+opt(GETDP "Enable GetDP solver (linked as a library, experimental)" ${DEFAULT}) -+opt(GMM "Enable GMM linear solvers (simple alternative to PETSc)" ${DEFAULT}) -+opt(GMP "Enable GMP for Kbipack (advanced)" ON) -+opt(GRAPHICS "Enable building graphics lib even without GUI (advanced)" OFF) -+opt(HXT "Enable HXT library (for reparametrization and meshing)" ${DEFAULT}) -+opt(KBIPACK "Enable Kbipack (neeeded by homology solver)" ${DEFAULT}) -+opt(MATHEX "Enable Mathex expression parser (used by plugins and options)" ${DEFAULT}) -+opt(MED "Enable MED mesh and post file formats" ${DEFAULT}) -+opt(MESH "Enable mesh module" ${DEFAULT}) -+opt(METIS "Enable Metis mesh partitioner" ${DEFAULT}) -+opt(MMG "Enable Mmg mesh adaptation interface" ${DEFAULT}) -+opt(MPEG_ENCODE "Enable built-in MPEG movie encoder" ${DEFAULT}) -+opt(MPI "Enable MPI (experimental, not used for meshing)" OFF) -+opt(MSVC_STATIC_RUNTIME "Enable static Visual C++ runtime" OFF) -+opt(MUMPS "Enable MUMPS sparse direct linear solver" OFF) -+opt(NETGEN "Enable Netgen 3D frontal mesh generator" ${DEFAULT}) -+opt(NUMPY "Enable fullMatrix and numpy array conversion for private API" OFF) -+opt(PETSC4PY "Enable petsc4py wrappers for petsc matrices for private API" OFF) -+opt(OCC "Enable OpenCASCADE CAD kernel" ${DEFAULT}) -+opt(OCC_CAF "Enable OpenCASCADE CAF module (for STEP/IGES attributes)" ${DEFAULT}) -+opt(OCC_STATIC "Link OpenCASCADE static instead of dynamic libraries (requires ENABLE_OCC)" OFF) -+opt(OCC_TBB "Add TBB libraries in list of OCC libraries" OFF) -+opt(ONELAB "Enable ONELAB solver interface" ${DEFAULT}) -+opt(ONELAB_METAMODEL "Enable ONELAB metamodels (experimental)" ${DEFAULT}) -+opt(OPENACC "Enable OpenACC" OFF) -+opt(OPENMP "Enable OpenMP" ${DEFAULT}) -+opt(OPTHOM "Enable high-order mesh optimization tools" ${DEFAULT}) -+opt(OS_SPECIFIC_INSTALL "Enable OS-specific (e.g. app bundle) installation" OFF) -+opt(OSMESA "Enable OSMesa for offscreen rendering (experimental)" OFF) -+opt(P4EST "Enable p4est for enabling automatic mesh size field (experimental)" OFF) -+opt(PACKAGE_STRIP "Strip symbols in install packages to reduce install size" ON) -+opt(PARSER "Enable GEO file parser (required for .geo/.pos scripts)" ${DEFAULT}) -+opt(PETSC "Enable PETSc linear solvers (required for SLEPc)" OFF) -+opt(PLUGINS "Enable post-processing plugins" ${DEFAULT}) -+opt(POST "Enable post-processing module (required by GUI)" ${DEFAULT}) -+opt(POPPLER "Enable Poppler for displaying PDF documents (experimental)" OFF) -+opt(PRIVATE_API "Enable private API" OFF) -+opt(PRO "Enable PRO extensions" ${DEFAULT}) -+opt(QUADMESHINGTOOLS "Enable QuadMeshingTools extensions" ${DEFAULT}) -+opt(QUADTRI "Enable QuadTri structured meshing extensions" ${DEFAULT}) -+opt(REVOROPT "Enable Revoropt (used for CVT remeshing)" OFF) -+opt(RPATH "Use RPATH in dynamically linked targets" ON) -+opt(SLEPC "Enable SLEPc eigensolvers" OFF) -+opt(SOLVER "Enable built-in finite element solvers (required for reparametrization)" ${DEFAULT}) -+opt(SYSTEM_CONTRIB "Use system versions of contrib libraries, when possible" OFF) -+opt(TCMALLOC "Enable libtcmalloc (fast malloc that does not release memory)" OFF) -+opt(TESTS "Enable tests" ${DEFAULT}) -+opt(TOUCHBAR "Enable Apple Touch bar" ${DEFAULT}) -+opt(VISUDEV "Enable additional visualization capabilities for development purposes" OFF) -+opt(VOROPP "Enable voro++ (for hex meshing, experimental)" ${DEFAULT}) -+opt(WINSLOWUNTANGLER "Enable WinslowUntangler extensions (requires ALGLIB)" ${DEFAULT}) -+opt(WRAP_JAVA "Generate SWIG Java wrappers for private API" OFF) -+opt(WRAP_PYTHON "Generate SWIG Python wrappers for private API (not used by public API)" OFF) -+opt(ZIPPER "Enable Zip file compression/decompression" OFF) -+ -+set(GMSH_MAJOR_VERSION 4) -+set(GMSH_MINOR_VERSION 10) -+set(GMSH_PATCH_VERSION 0) -+if(NOT GMSH_EXTRA_VERSION) -+ set(GMSH_EXTRA_VERSION "") -+endif() -+set(GMSH_EXTRA_VERSION_TEXI "${GMSH_EXTRA_VERSION}") -+set(GMSH_EXTRA_VERSION_ORIG ${GMSH_EXTRA_VERSION}) -+ -+if(NOT GMSH_RELEASE) -+ find_package(Git) -+ if(GIT_FOUND) -+ execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%h -+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ERROR_QUIET -+ OUTPUT_VARIABLE GIT_COMMIT_HASH -+ OUTPUT_STRIP_TRAILING_WHITESPACE) -+ endif() -+ if(GIT_COMMIT_HASH) -+ set(GMSH_EXTRA_VERSION "${GMSH_EXTRA_VERSION}-git-${GIT_COMMIT_HASH}") -+ endif() -+ set(GMSH_EXTRA_VERSION_TEXI "${GMSH_EXTRA_VERSION_TEXI} (development version)") -+endif() -+ -+set(GMSH_SHORT_VERSION -+ "${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION}") -+set(GMSH_VERSION "${GMSH_SHORT_VERSION}${GMSH_EXTRA_VERSION}") -+set(GMSH_SHORT_LICENSE "GNU General Public License") -+ -+set(GMSH_GITLAB_PREFIX "https://gitlab.onelab.info/gmsh/gmsh") -+if(GMSH_RELEASE) -+ string(REPLACE "\." "_" GMSH_SHORT_VERSION_ ${GMSH_SHORT_VERSION}) -+ set(GMSH_GITLAB_PREFIX "${GMSH_GITLAB_PREFIX}/blob/gmsh_${GMSH_SHORT_VERSION_}") -+else() -+ set(GMSH_GITLAB_PREFIX "${GMSH_GITLAB_PREFIX}/blob/master") -+endif() -+ -+set(GMSH_API api/gmsh.h api/gmshc.h api/gmsh.h_cwrap api/gmshf.h) -+ -+if(ENABLE_PRIVATE_API) -+ message(WARNING "The private API is unsupported and undocumented. It is meant " -+ "for expert Gmsh developers, not for regular Gmsh users, who should rely " -+ "on the stable public API (gmsh/api) instead.") -+ file(GLOB_RECURSE HEADERS src/common/*.h src/numeric/*.h src/numeric/*.hpp -+ src/geo/*.h src/mesh/*.h src/solver/*.h src/post/*.h src/plugin/*.h -+ src/graphics/*.h contrib/kbipack/*.h contrib/DiscreteIntegration/*.h -+ contrib/HighOrderMeshOptimizer/*.h contrib/MeshOptimizer/*.h -+ contrib/MeshQualityOptimizer/*.h) -+ set(GMSH_PRIVATE_API ${CMAKE_CURRENT_BINARY_DIR}/src/common/GmshConfig.h -+ ${CMAKE_CURRENT_BINARY_DIR}/src/common/GmshVersion.h ${HEADERS}) -+ get_property(IAMCHILD DIRECTORY PROPERTY PARENT_DIRECTORY) -+ if(IAMCHILD) -+ set(GMSH_PRIVATE_API ${GMSH_PRIVATE_API} PARENT_SCOPE) -+ endif() -+ if(ENABLE_WRAP_PYTHON OR ENABLE_WRAP_JAVA) -+ set(ENABLE_BUILD_DYNAMIC ON) -+ message(WARNING "SWIG wrappers for the private API are unsupported and " -+ "undocumented. The stable public Python API does not required SWIG.") -+ endif() -+endif() -+ -+set(ONELAB_PY contrib/onelab/python/onelab.py) -+set(GMSH_PY api/gmsh.py) -+set(GMSH_JL api/gmsh.jl) -+ -+if(${CMAKE_MAJOR_VERSION} GREATER 2) -+ string(TIMESTAMP DATE "%Y%m%d") -+else() -+ execute_process(COMMAND date "+%Y%m%d" OUTPUT_VARIABLE DATE -+ OUTPUT_STRIP_TRAILING_WHITESPACE) -+endif() -+ -+if(NOT DATE) -+ set(DATE "unknown") -+endif() -+set(GMSH_DATE "${DATE}") -+ -+if(NOT GMSH_HOST) -+ execute_process(COMMAND hostname OUTPUT_VARIABLE HOST -+ OUTPUT_STRIP_TRAILING_WHITESPACE) -+ if(NOT HOST) -+ set(HOST "unknown") -+ endif() -+ set(GMSH_HOST "${HOST}") -+endif() -+ -+if(NOT GMSH_PACKAGER) -+ execute_process(COMMAND whoami OUTPUT_VARIABLE PACKAGER -+ OUTPUT_STRIP_TRAILING_WHITESPACE) -+ if(NOT PACKAGER) -+ set(PACKAGER "unknown") -+ endif() -+ string(REPLACE "\\" " " PACKAGER ${PACKAGER}) -+ set(GMSH_PACKAGER "${PACKAGER}") -+endif() -+ -+if(APPLE) -+ set(GMSH_OS "MacOSX") -+ # build universal binary -+ #SET(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "Build architectures for macOS" FORCE) -+elseif(CYGWIN OR MSYS) -+ # detect if we use the MinGW compilers on Cygwin - if we do, handle the build -+ # as a pure Windows build and make cmake find pure Windows import libraries -+ # (.lib) -+ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR -+ CMAKE_CXX_COMPILER_ID MATCHES "Clang") -+ execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine -+ OUTPUT_VARIABLE CXX_COMPILER_MACHINE -+ OUTPUT_STRIP_TRAILING_WHITESPACE) -+ if(CXX_COMPILER_MACHINE MATCHES "mingw") -+ set(GMSH_OS "Windows") -+ set(WIN32 1) -+ add_definitions(-DWIN32) -+ set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "") -+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".so" ".lib" ".LIB" ".dll" ".DLL" ".dll.a") -+ endif() -+ endif() -+else() -+ set(GMSH_OS "${CMAKE_SYSTEM_NAME}") -+endif() -+ -+include(CheckTypeSize) -+include(CheckFunctionExists) -+include(CheckIncludeFile) -+include(CheckCXXCompilerFlag) -+include(CheckCCompilerFlag) -+ -+macro(set_config_option VARNAME STRING) -+ set(${VARNAME} TRUE) -+ list(APPEND CONFIG_OPTIONS ${STRING}) -+ message(STATUS "Found " ${STRING}) -+endmacro() -+ -+# check the size of size_t -+check_type_size("size_t" SIZEOF_SIZE_T) -+if(SIZEOF_SIZE_T EQUAL 8) -+ set_config_option(HAVE_64BIT_SIZE_T "64Bit") -+endif() -+ -+# append 32/64 to the build name on Linux and Windows -+if(NOT APPLE) -+ if(HAVE_64BIT_SIZE_T) -+ set(GMSH_OS "${GMSH_OS}64") -+ else() -+ set(GMSH_OS "${GMSH_OS}32") -+ endif() -+endif() -+ -+if(ENABLE_BUILD_DYNAMIC) -+ set(GMSH_OS "${GMSH_OS}-sdk") -+endif() -+ -+if(ENABLE_RPATH) -+ set(CMAKE_MACOSX_RPATH 1) -+ -+ # make sure that dynamic libraries can be found when installing/ displacing -+ # the binaries: from https://gitlab.kitware.com/cmake/community/wikis/doc/ -+ # cmake/RPATH-handling: -+ -+ # use, i.e. don't skip the full RPATH for the build tree -+ set(CMAKE_SKIP_BUILD_RPATH FALSE) -+ -+ # when building, don't use the install RPATH already (but later on when -+ # installing) -+ set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) -+ set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") -+ -+ # add the automatically determined parts of the RPATH which point to -+ # directories outside the build tree to the install RPATH -+ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) -+ -+ # the RPATH to be used when installing, but only if it's not a system directory -+ list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" -+ isSystemDir) -+ if("${isSystemDir}" STREQUAL "-1") -+ if(APPLE) -+ set(CMAKE_INSTALL_RPATH "@executable_path/../lib") -+ else() -+ set(CMAKE_INSTALL_RPATH "\\\$ORIGIN/../lib") -+ endif() -+ endif() -+else() -+ set(CMAKE_MACOSX_RPATH 0) -+ set(CMAKE_SKIP_BUILD_RPATH TRUE) -+endif() -+ -+if(MSVC) -+ # remove annoying warning about bool/int cast performance -+ set(GMSH_CONFIG_PRAGMAS "#pragma warning(disable:4800 4244 4267)") -+ foreach(VAR -+ CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE -+ CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO -+ CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE -+ CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO) -+ if(ENABLE_MSVC_STATIC_RUNTIME AND ${VAR} MATCHES "/MD") -+ string(REGEX REPLACE "/MD" "/MT" ${VAR} "${${VAR}}") -+ endif() -+ if(NOT ${VAR} MATCHES "/MP") # enable parallel compilation -+ set(${VAR} "${${VAR}} /MP") -+ endif() -+ endforeach() -+ if(ENABLE_PRIVATE_API) -+ if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED) -+ # automatically export .def file with all symbols (requires CMake 3.4); -+ # depending on the compiling options this might lead to more than 64k export -+ # symbols; just trim the .def file to keep the ones you need -+ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) -+ endif() -+ endif() -+endif() -+ -+# reduce memory usage of GCC on 32 bit systems -+if(NOT HAVE_64BIT_SIZE_T AND CMAKE_CXX_COMPILER_ID MATCHES "GNU") -+ set(CMAKE_CXX_FLAGS -+ "${CMAKE_CXX_FLAGS} --param ggc-min-expand=1 --param ggc-min-heapsize=512000") -+endif() -+ -+if(ENABLE_OPENMP) -+ find_package(OpenMP) -+ if(OpenMP_FOUND OR OPENMP_FOUND) -+ set_config_option(HAVE_OPENMP "OpenMP") -+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") -+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") -+ list(APPEND EXTERNAL_LIBRARIES "${OpenMP_CXX_LIBRARIES}") -+ elseif(APPLE AND EXISTS "/opt/local/lib/libomp") -+ # official Apple compiler with macports' libomp -+ set_config_option(HAVE_OPENMP "OpenMP[MacPorts]") -+ set(CMAKE_C_FLAGS -+ "${CMAKE_C_FLAGS} -Xpreprocessor -fopenmp -I/opt/local/include/libomp") -+ set(CMAKE_CXX_FLAGS -+ "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp -I/opt/local/include/libomp") -+ list(APPEND EXTERNAL_LIBRARIES "-L/opt/local/lib/libomp -lomp") -+ elseif(APPLE AND EXISTS "/usr/local/lib/libomp.dylib") -+ # official Apple compiler with homebrew's libomp -+ set_config_option(HAVE_OPENMP "OpenMP[Homebrew]") -+ set(CMAKE_C_FLAGS -+ "${CMAKE_C_FLAGS} -Xpreprocessor -fopenmp") -+ set(CMAKE_CXX_FLAGS -+ "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp") -+ list(APPEND EXTERNAL_LIBRARIES "-L/usr/local/lib -lomp") -+ elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux" AND EXISTS "/usr/local/lib64/libgomp.a") -+ # custom static openmp for official linux builds -+ set_config_option(HAVE_OPENMP "OpenMP[static]") -+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Xpreprocessor -fopenmp") -+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp") -+ list(APPEND EXTERNAL_LIBRARIES "/usr/local/lib64/libgomp.a") -+ endif() -+endif() -+ -+if(ENABLE_OPENACC) -+ find_package(OpenACC) -+ if(OpenACC_C_FOUND AND OpenACC_CXX_FOUND) -+ set_config_option(HAVE_OPENACC "OpenACC") -+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenACC_C_FLAGS}") -+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenACC_CXX_FLAGS}") -+ endif() -+endif() -+ -+if(ENABLE_PROFILE) -+ # Using the perf set of profiling tools doesn't work without the frame -+ # pointer and a common optimisation is to remove it -+ check_cxx_compiler_flag("-fno-omit-frame-pointer" FNOFP) -+ if(FNOFP) -+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer") -+ endif() -+endif() -+ -+macro(append_gmsh_src DIRNAME FILES) -+ foreach(FILE ${FILES}) -+ list(APPEND LIST ${DIRNAME}/${FILE}) -+ endforeach() -+ set(GMSH_SRC ${GMSH_SRC};${LIST} PARENT_SCOPE) -+ set(GMSH_DIRS ${GMSH_DIRS};${DIRNAME} PARENT_SCOPE) -+endmacro() -+ -+macro(find_all_libraries VARNAME LISTNAME PATH SUFFIX) -+ set(${VARNAME}) -+ list(LENGTH ${LISTNAME} NUM_LIST) -+ foreach(LIB ${${LISTNAME}}) -+ if("${PATH}" STREQUAL "") -+ find_library(FOUND_LIB ${LIB} PATH_SUFFIXES ${SUFFIX}) -+ else() -+ find_library(FOUND_LIB ${LIB} PATHS ${PATH} NO_DEFAULT_PATH) -+ endif() -+ if(FOUND_LIB) -+ list(APPEND ${VARNAME} ${FOUND_LIB}) -+ endif() -+ unset(FOUND_LIB CACHE) -+ endforeach() -+ list(LENGTH ${VARNAME} NUM_FOUND_LIBRARIES) -+ if(NUM_FOUND_LIBRARIES LESS NUM_LIST) -+ set(${VARNAME}) -+ endif() -+endmacro() -+ -+macro(set_compile_flags LISTNAME FLAGS) -+ foreach(FILE ${${LISTNAME}}) -+ get_source_file_property(PROP ${FILE} COMPILE_FLAGS) -+ if(PROP) -+ set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS "${PROP} ${FLAGS}") -+ else() -+ set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS "${FLAGS}") -+ endif() -+ endforeach() -+endmacro() -+ -+if(ENABLE_GEOMETRYCENTRAL) -+ find_library(GEOMETRYCENTRAL_LIB NAMES geometry-central) -+ find_path(GEOMETRYCENTRAL_INC "surface/meshio.h" PATH_SUFFIXES geometrycentral) -+ if(GEOMETRYCENTRAL_LIB AND GEOMETRYCENTRAL_INC) -+ list(APPEND EXTERNAL_LIBRARIES ${GEOMETRYCENTRAL_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${GEOMETRYCENTRAL_INC}) -+ set_config_option(HAVE_GEOMETRYCENTRAL "geometry-central") -+ endif() -+endif() -+ -+if(ENABLE_EIGEN) -+ if(ENABLE_SYSTEM_CONTRIB) -+ find_path(EIGEN_INC "Eigen/Dense" HINTS eigen3) -+ if(EIGEN_INC) -+ include_directories(${EIGEN_INC}) -+ set_config_option(HAVE_EIGEN "Eigen") -+ set(HAVE_CONTRIB_EIGEN FALSE) -+ endif() -+ endif() -+ if(NOT HAVE_EIGEN AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/eigen) -+ include_directories(contrib/eigen) -+ set_config_option(HAVE_EIGEN "Eigen[contrib]") -+ set(HAVE_CONTRIB_EIGEN TRUE) -+ endif() -+ # We could also add an option to use BLAS with Eigen -+ # add_definitions(-DEIGEN_USE_BLAS) -+endif() -+ -+if(NOT HAVE_EIGEN AND ENABLE_BLAS_LAPACK) -+ if(BLAS_LAPACK_LIBRARIES) -+ # use libs as specified in the BLAS_LAPACK_LIBRARIES variable -+ set_config_option(HAVE_BLAS "Blas[custom]") -+ set_config_option(HAVE_LAPACK "Lapack[custom]") -+ set(LAPACK_LIBRARIES ${BLAS_LAPACK_LIBRARIES}) -+ else() -+ if(MSVC) -+ # on Windows with Visual C++ try really hard to find blas/lapack *without* -+ # requiring a Fortran compiler: 1) try to find the Intel MKL libs using -+ # the standard search path; if not found 2) try to get the reference -+ # blas/lapack libs (useful for users with no Fortran compiler and no MKL -+ # license, who can just download our precompiled "gmsh-dep" package) -+ if(HAVE_64BIT_SIZE_T) -+ set(MKL_PATH em64t/lib) -+ set(MKL_LIBS_REQUIRED libguide40 mkl_intel_lp64 mkl_intel_thread mkl_core) -+ else() -+ set(MKL_PATH ia32/lib) -+ set(MKL_LIBS_REQUIRED libguide40 mkl_intel_c mkl_intel_thread mkl_core) -+ endif() -+ find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH}) -+ if(LAPACK_LIBRARIES) -+ set_config_option(HAVE_BLAS "Blas[mkl]") -+ set_config_option(HAVE_LAPACK "Lapack[mkl]") -+ else() -+ set(REFLAPACK_LIBS_REQUIRED lapack blas g2c gcc) -+ find_all_libraries(LAPACK_LIBRARIES REFLAPACK_LIBS_REQUIRED "" "") -+ if(LAPACK_LIBRARIES) -+ set_config_option(HAVE_BLAS "Blas[ref]") -+ set_config_option(HAVE_LAPACK "Lapack[ref]") -+ endif() -+ endif() -+ elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") -+ # on Linux try to find the Intel MKL without a Fortran compiler -+ if(HAVE_64BIT_SIZE_T) -+ set(MKL_PATH lib/em64t) -+ else() -+ set(MKL_PATH lib/32) -+ endif() -+ set(MKL_LIBS_REQUIRED mkl_gf_lp64 iomp5 mkl_gnu_thread mkl_core guide pthread) -+ find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH}) -+ if(NOT LAPACK_LIBRARIES) -+ # match lapack 9.0 on 64bit -+ set(MKL_LIBS_REQUIRED mkl_lapack mkl_em64t guide) -+ find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH}) -+ endif() -+ if(LAPACK_LIBRARIES) -+ set_config_option(HAVE_BLAS "Blas[mkl]") -+ set_config_option(HAVE_LAPACK "Lapack[mkl]") -+ else() -+ # on Linux also try to find ATLAS without a Fortran compiler, because -+ # cmake ships with a buggy FindBLAS e.g. on Ubuntu Lucid Lynx -+ set(ATLAS_LIBS_REQUIRED lapack f77blas cblas atlas) -+ find_all_libraries(LAPACK_LIBRARIES ATLAS_LIBS_REQUIRED "" "") -+ if(LAPACK_LIBRARIES) -+ set_config_option(HAVE_BLAS "Blas[atlas]") -+ set_config_option(HAVE_LAPACK "Lapack[atlas]") -+ else() -+ # try with generic names -+ set(GENERIC_LIBS_REQUIRED lapack blas pthread) -+ find_all_libraries(LAPACK_LIBRARIES GENERIC_LIBS_REQUIRED "" "") -+ if(LAPACK_LIBRARIES) -+ set_config_option(HAVE_BLAS "Blas[generic]") -+ set_config_option(HAVE_LAPACK "Lapack[generic]") -+ find_library(GFORTRAN_LIB gfortran) -+ if(GFORTRAN_LIB) -+ list(APPEND LAPACK_LIBRARIES ${GFORTRAN_LIB}) -+ endif() -+ endif() -+ endif() -+ endif() -+ elseif(${CMAKE_SYSTEM_NAME} MATCHES "SunOS") -+ # on SunOS we know blas and lapack are available in sunperf -+ set(LAPACK_LIBRARIES -library=sunperf) -+ set_config_option(HAVE_BLAS "Blas[sunperf]") -+ set_config_option(HAVE_LAPACK "Lapack[sunperf]") -+ elseif(APPLE) -+ # on Mac we also know that blas and lapack are available -+ set(LAPACK_LIBRARIES "-llapack -lblas") -+ set_config_option(HAVE_BLAS "Blas[veclib]") -+ set_config_option(HAVE_LAPACK "Lapack[veclib]") -+ endif() -+ -+ if(NOT HAVE_BLAS OR NOT HAVE_LAPACK) -+ # if we haven't found blas and lapack check for OpenBlas -+ set(OPENBLAS_LIBS_REQUIRED openblas) -+ find_all_libraries(LAPACK_LIBRARIES OPENBLAS_LIBS_REQUIRED "" "") -+ if(LAPACK_LIBRARIES) -+ set_config_option(HAVE_BLAS "Blas[openblas]") -+ set_config_option(HAVE_LAPACK "Lapack[openblas]") -+ find_library(GFORTRAN_LIB gfortran) -+ if(GFORTRAN_LIB) -+ list(APPEND LAPACK_LIBRARIES ${GFORTRAN_LIB}) -+ endif() -+ endif() -+ endif() -+ -+ if(NOT HAVE_BLAS OR NOT HAVE_LAPACK) -+ # if we still haven't found blas and lapack, use the standard cmake tests, -+ # which require a working Fortran compiler -+ enable_language(Fortran) -+ find_package(BLAS) -+ if(BLAS_FOUND) -+ set_config_option(HAVE_BLAS "Blas") -+ find_package(LAPACK) -+ if(LAPACK_FOUND) -+ set_config_option(HAVE_LAPACK "Lapack") -+ else() -+ set(LAPACK_LIBRARIES ${BLAS_LIBRARIES}) -+ endif() -+ if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") -+ if(CMAKE_Fortran_COMPILER MATCHES "gfortran") -+ list(APPEND LAPACK_LIBRARIES gfortran) -+ elseif(CMAKE_Fortran_COMPILER MATCHES "f95") -+ list(APPEND LAPACK_LIBRARIES gfortran) -+ elseif(CMAKE_Fortran_COMPILER MATCHES "g77") -+ list(APPEND LAPACK_LIBRARIES g2c) -+ endif() -+ elseif(CMAKE_Fortran_COMPILER MATCHES "pgi") -+ list(APPEND LAPACK_LIBRARIES -pgf77libs) -+ endif() -+ endif() -+ endif() -+ endif() -+endif() -+ -+if(ENABLE_TCMALLOC) -+ find_library(TCMALLOC tcmalloc) -+ if(TCMALLOC) -+ set_config_option(HAVE_TCMALLOC "TCMalloc") -+ list(APPEND EXTERNAL_LIBRARIES ${TCMALLOC}) -+ endif() -+endif() -+ -+add_subdirectory(src/common) -+add_subdirectory(src/numeric) -+add_subdirectory(src/geo) -+ -+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/mesh AND ENABLE_MESH) -+ add_subdirectory(src/mesh) -+ set_config_option(HAVE_MESH "Mesh") -+endif() -+ -+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/solver AND ENABLE_SOLVER) -+ add_subdirectory(src/solver) -+ set_config_option(HAVE_SOLVER "Solver") -+endif() -+ -+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/post AND ENABLE_POST) -+ add_subdirectory(src/post) -+ set_config_option(HAVE_POST "Post") -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/plugin AND ENABLE_PLUGINS) -+ add_subdirectory(src/plugin) -+ set_config_option(HAVE_PLUGINS "Plugins") -+ endif() -+endif() -+ -+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/parser AND ENABLE_PARSER) -+ add_subdirectory(src/parser) -+ set_config_option(HAVE_PARSER "Parser") -+endif() -+ -+if(ENABLE_VISUDEV) -+ set_config_option(HAVE_VISUDEV "VisuDev") -+endif() -+ -+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk AND ENABLE_FLTK) -+ # first, try to use fltk-config for fltk >= 1.3 (FindFLTK is buggy on Unix, -+ # where e.g. xft and xinerama options are not dealt with) -+ find_program(FLTK_CONFIG_SCRIPT fltk-config) -+ if(FLTK_CONFIG_SCRIPT) -+ execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --api-version -+ OUTPUT_VARIABLE FLTK_VERSION) -+ string(STRIP "${FLTK_VERSION}" FLTK_VERSION) -+ if(FLTK_VERSION VERSION_GREATER 1.3) -+ add_subdirectory(src/fltk) -+ set_config_option(HAVE_FLTK "Fltk") -+ message(STATUS "Using fltk-config script for Fltk " ${FLTK_VERSION}) -+ execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --includedir -+ OUTPUT_VARIABLE FLTK_INCLUDE_DIR) -+ string(STRIP ${FLTK_INCLUDE_DIR} FLTK_INCLUDE_DIR) -+ list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}) -+ execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --ldflags -+ OUTPUT_VARIABLE FLTK_LIBRARIES) -+ string(STRIP ${FLTK_LIBRARIES} FLTK_LIBRARIES) -+ endif() -+ endif() -+ # then try the built-in FindFLTK module -+ if(NOT HAVE_FLTK) -+ set(FLTK_SKIP_FORMS TRUE) -+ set(FLTK_SKIP_FLUID TRUE) -+ find_package(FLTK) -+ if(FLTK_FOUND) -+ add_subdirectory(src/fltk) -+ set_config_option(HAVE_FLTK "Fltk") -+ list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}) -+ endif() -+ endif() -+ # workaround for Fedora/Suse messing up fltk-config (see issue #417) -+ if(HAVE_FLTK AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux") -+ string(REGEX MATCH "X11" FLTK_X11 ${FLTK_LIBRARIES}) -+ if(NOT FLTK_X11) -+ find_package(X11) -+ if(X11_FOUND) -+ list(APPEND EXTERNAL_INCLUDES ${X11_INCLUDE_DIR}) -+ list(APPEND EXTERNAL_LIBRARIES ${X11_LIBRARIES}) -+ endif() -+ endif() -+ endif() -+endif() -+ -+if(APPLE AND HAVE_FLTK AND ENABLE_TOUCHBAR) -+ STRING(REGEX MATCH "([0-9]+.[0-9]+)" OSX_SDK_VERSION "${CMAKE_OSX_SYSROOT}") -+ if(OSX_SDK_VERSION) -+ if(${OSX_SDK_VERSION} VERSION_GREATER 10.11) -+ set(GMSH_SRC ${GMSH_SRC};src/fltk/touchBar.mm) -+ set_config_option(HAVE_TOUCHBAR "TouchBar") -+ endif() -+ endif() -+endif() -+ -+if(ENABLE_ONELAB) -+ set_config_option(HAVE_ONELAB "ONELAB") -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab) -+ if(ENABLE_ONELAB_METAMODEL) -+ add_subdirectory(contrib/onelab) -+ include_directories(contrib/onelab) -+ set_config_option(HAVE_ONELAB_METAMODEL "ONELABMetamodel") -+ endif() -+ file(COPY ${ONELAB_PY} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) -+ endif() -+endif() -+ -+if(ENABLE_BUILD_IOS) -+ find_file(CMAKE_TOOLCHAIN_FILE "ios.cmake") -+ if(NOT CMAKE_TOOLCHAIN_FILE) -+ message(FATAL_ERROR "Cannot compile Gmsh for iOS without a toolchain") -+ endif() -+ add_definitions(-DBUILD_IOS) -+endif() -+ -+if(HAVE_FLTK OR ENABLE_GRAPHICS) -+ if(NOT HAVE_POST OR NOT HAVE_PLUGINS OR NOT HAVE_ONELAB) -+ message(SEND_ERROR "Cannot compile GUI without Post, Plugin and ONELAB") -+ endif() -+ -+ find_package(JPEG) -+ if(JPEG_FOUND) -+ set_config_option(HAVE_LIBJPEG "Jpeg") -+ list(APPEND EXTERNAL_LIBRARIES ${JPEG_LIBRARIES}) -+ list(APPEND EXTERNAL_INCLUDES ${JPEG_INCLUDE_DIR}) -+ endif() -+ -+ find_package(ZLIB) -+ if(ZLIB_FOUND) -+ set_config_option(HAVE_LIBZ "Zlib") -+ list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES}) -+ list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR}) -+ endif() -+ -+ if(HAVE_LIBZ) -+ find_package(PNG) -+ if(PNG_FOUND) -+ set_config_option(HAVE_LIBPNG "Png") -+ list(APPEND EXTERNAL_LIBRARIES ${PNG_LIBRARIES}) -+ list(APPEND EXTERNAL_INCLUDES ${PNG_INCLUDE_DIR}) -+ endif() -+ endif() -+ -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/mpeg_encode AND -+ ENABLE_MPEG_ENCODE) -+ add_subdirectory(contrib/mpeg_encode) -+ include_directories(contrib/mpeg_encode/headers) -+ set_config_option(HAVE_MPEG_ENCODE "Mpeg") -+ endif() -+ -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/3M AND ENABLE_3M) -+ add_subdirectory(contrib/3M) -+ include_directories(contrib/3M) -+ set_config_option(HAVE_3M "3M") -+ endif() -+ -+ if(ENABLE_OSMESA) -+ find_library(OSMESA_LIB OSMesa) -+ if(OSMESA_LIB) -+ set_config_option(HAVE_OSMESA "OSMesa") -+ list(APPEND EXTERNAL_LIBRARIES ${OSMESA_LIB}) -+ endif() -+ endif() -+ -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/graphics) -+ set(OpenGL_GL_PREFERENCE "LEGACY") -+ find_package(OpenGL REQUIRED) -+ if(OPENGL_GLU_FOUND AND OPENGL_FOUND) -+ add_subdirectory(src/graphics) -+ set_config_option(HAVE_OPENGL "OpenGL") -+ else() -+ message(SEND_ERROR "Could not find GLU: disabling OpenGL support") -+ endif() -+ endif() -+endif() -+ -+if(ENABLE_ANN) -+ find_library(ANN_LIB ANN PATH_SUFFIXES lib) -+ find_path(ANN_INC "ANN.h" PATH_SUFFIXES src include ANN) -+ if(ENABLE_SYSTEM_CONTRIB AND ANN_LIB AND ANN_INC) -+ message(STATUS "Using system version of ANN") -+ list(APPEND EXTERNAL_LIBRARIES ${ANN_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${ANN_INC}) -+ set_config_option(HAVE_ANN "ANN") -+ elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ANN) -+ add_subdirectory(contrib/ANN) -+ include_directories(contrib/ANN/include) -+ set_config_option(HAVE_ANN "ANN[contrib]") -+ endif() -+endif() -+ -+if(ENABLE_ALGLIB) -+ find_library(ALGLIB_LIB alglib) -+ find_path(ALGLIB_INC "stdafx.h" PATH_SUFFIXES libalglib) -+ if(ENABLE_SYSTEM_CONTRIB AND ALGLIB_LIB AND ALGLIB_INC) -+ list(APPEND EXTERNAL_LIBRARIES ${ALGLIB_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${ALGLIB_INC}) -+ set_config_option(HAVE_ALGLIB "ALGLIB") -+ elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ALGLIB) -+ add_subdirectory(contrib/ALGLIB) -+ include_directories(contrib/ALGLIB) -+ set_config_option(HAVE_ALGLIB "ALGLIB[contrib]") -+ endif() -+endif() -+ -+if(HAVE_FLTK AND ENABLE_CAIRO) -+ find_library(CAIRO_LIB cairo) -+ find_path(CAIRO_INC "cairo/cairo.h" PATH_SUFFIXES include) -+ if(CAIRO_INC AND CAIRO_LIB) -+ set_config_option(HAVE_CAIRO "Cairo") -+ list(APPEND EXTERNAL_LIBRARIES ${CAIRO_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${CAIRO_INC}) -+ endif() -+endif() -+ -+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/DiscreteIntegration AND -+ ENABLE_DINTEGRATION) -+ add_subdirectory(contrib/DiscreteIntegration) -+ include_directories(contrib/DiscreteIntegration) -+ set_config_option(HAVE_DINTEGRATION "DIntegration") -+endif() -+ -+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/kbipack AND ENABLE_KBIPACK) -+ set_config_option(HAVE_KBIPACK "Kbipack") -+ add_subdirectory(contrib/kbipack) -+ include_directories(contrib/kbipack) -+ if(ENABLE_GMP) -+ find_library(GMP_LIB gmp) -+ find_path(GMP_INC "gmp.h" PATH_SUFFIXES src include) -+ endif() -+ if(GMP_LIB AND GMP_INC) -+ set_config_option(HAVE_GMP "GMP") -+ list(APPEND EXTERNAL_LIBRARIES ${GMP_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${GMP_INC}) -+ else() -+ message(STATUS "GMP not found: Kbipack uses long int") -+ endif() -+endif() -+ -+if(ENABLE_MATHEX) -+ find_library(MATHEX_LIB mathex PATH_SUFFIXES lib) -+ find_path(MATHEX_INC "mathex.h" PATH_SUFFIXES src include) -+ if(ENABLE_SYSTEM_CONTRIB AND MATHEX_LIB AND MATHEX_INC) -+ list(APPEND EXTERNAL_LIBRARIES ${MATHEX_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${MATHEX_INC}) -+ set_config_option(HAVE_MATHEX "MathEx") -+ elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MathEx) -+ add_subdirectory(contrib/MathEx) -+ include_directories(contrib/MathEx) -+ set_config_option(HAVE_MATHEX "MathEx[contrib]") -+ endif() -+endif() -+ -+if(ENABLE_MPI) -+ find_package(MPI) -+ if(MPI_FOUND) -+ set_config_option(HAVE_MPI "MPI") -+ list(APPEND EXTERNAL_INCLUDES ${MPI_CXX_INCLUDE_PATH}) -+ list(APPEND EXTERNAL_LIBRARIES ${MPI_CXX_LIBRARIES}) -+ set(CMAKE_C_COMPILER ${MPI_C_COMPILER}) -+ set(CMAKE_CXX_COMPILER ${MPI_CXX_COMPILER}) -+ set(CMAKE_Fortran_COMPILER ${MPI_Fortran_COMPILER}) -+ endif() -+endif() -+ -+if(ENABLE_POPPLER) -+ find_library(POPPLER_LIB poppler) -+ find_library(POPPLER_CPP_LIB poppler-cpp) -+ find_path(POPPLER_INC "poppler/cpp/poppler-document.h" PATH_SUFFIXES src include) -+ if(POPPLER_LIB AND POPPLER_INC) -+ set_config_option(HAVE_POPPLER "Poppler") -+ list(APPEND EXTERNAL_LIBRARIES ${POPPLER_LIB}) -+ list(APPEND EXTERNAL_LIBRARIES ${POPPLER_CPP_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${POPPLER_INC}) -+ endif() -+endif() -+ -+if(ENABLE_P4EST) -+ find_library(P4EST_LIB p4est) -+ find_path(P4EST_INC "p4est.h" PATH_SUFFIXES src) -+ find_library(SC_LIB sc) -+ if(P4EST_LIB AND P4EST_INC AND SC_LIB) -+ set_config_option(HAVE_P4EST "P4est") -+ list(APPEND EXTERNAL_LIBRARIES ${P4EST_LIB} ${SC_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${P4EST_INC}) -+ endif() -+endif() -+ -+if(HAVE_MESH OR HAVE_SOLVER) -+ if(ENABLE_METIS) -+ find_library(METIS_LIB metis PATH_SUFFIXES lib) -+ find_path(METIS_INC "metis.h" PATH_SUFFIXES include) -+ if(ENABLE_SYSTEM_CONTRIB AND METIS_LIB AND METIS_INC) -+ message(STATUS "Using system version of METIS") -+ list(APPEND EXTERNAL_LIBRARIES ${METIS_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${METIS_INC}) -+ set_config_option(HAVE_METIS "Metis") -+ elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/metis) -+ add_definitions(-DUSE_GKREGEX) -+ add_subdirectory(contrib/metis) -+ include_directories(contrib/metis/include contrib/metis/libmetis -+ contrib/metis/GKlib) -+ set_config_option(HAVE_METIS "Metis[contrib]") -+ endif() -+ endif() -+endif() -+ -+if(HAVE_MESH) -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/mesh/tetgenBR.cxx) -+ set_config_option(HAVE_TETGENBR "TetGen/BR") -+ endif() -+ -+ if(ENABLE_VOROPP) -+ find_library(VOROPP_LIB voro++) -+ find_path(VOROPP_INC "voro++.hh" PATH_SUFFIXES voro++) -+ if(ENABLE_SYSTEM_CONTRIB AND VOROPP_LIB AND VOROPP_INC) -+ message(STATUS "Using system version of voro++") -+ list(APPEND EXTERNAL_LIBRARIES ${VOROPP_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${VOROPP_INC}) -+ set_config_option(HAVE_VOROPP "Voro++") -+ elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/voro++) -+ add_subdirectory(contrib/voro++) -+ include_directories(contrib/voro++/src) -+ set_config_option(HAVE_VOROPP "Voro++[contrib]") -+ endif() -+ endif() -+ -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/HighOrderMeshOptimizer AND -+ EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MeshOptimizer AND -+ EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MeshQualityOptimizer AND -+ ENABLE_OPTHOM) -+ add_subdirectory(contrib/HighOrderMeshOptimizer) -+ include_directories(contrib/HighOrderMeshOptimizer) -+ add_subdirectory(contrib/MeshOptimizer) -+ include_directories(contrib/MeshOptimizer) -+ include_directories(${CMAKE_CURRENT_BINARY_DIR}/contrib/MeshOptimizer) -+ add_subdirectory(contrib/MeshQualityOptimizer) -+ include_directories(contrib/MeshQualityOptimizer) -+ set_config_option(HAVE_OPTHOM "OptHom") -+ endif() -+ -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/domhex AND ENABLE_DOMHEX) -+ add_subdirectory(contrib/domhex) -+ include_directories(contrib/domhex) -+ set_config_option(HAVE_DOMHEX "DomHex") -+ endif() -+ -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/QuadTri AND ENABLE_QUADTRI) -+ add_subdirectory(contrib/QuadTri) -+ include_directories(contrib/QuadTri) -+ set_config_option(HAVE_QUADTRI "QuadTri") -+ endif() -+ -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/blossom AND ENABLE_BLOSSOM) -+ add_subdirectory(contrib/blossom) -+ include_directories(contrib/blossom/MATCH contrib/blossom/concorde97 -+ contrib/blossom/concorde97/INCLUDE) -+ set_config_option(HAVE_BLOSSOM "Blossom") -+ endif() -+ -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/Netgen AND ENABLE_NETGEN) -+ add_subdirectory(contrib/Netgen) -+ include_directories(contrib/Netgen contrib/Netgen/libsrc/include -+ contrib/Netgen/nglib) -+ set_config_option(HAVE_NETGEN "Netgen") -+ add_definitions(-DNO_PARALLEL_THREADS -DNOTCL) -+ endif() -+ -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/bamg AND ENABLE_BAMG) -+ add_subdirectory(contrib/bamg) -+ include_directories(contrib/bamg contrib/bamg/bamglib) -+ set_config_option(HAVE_BAMG "Bamg") -+ endif() -+ -+ if(ENABLE_MMG) -+ find_library(MMG_LIB NAMES Mmg mmg) -+ find_path(MMG_INC "libmmg.h" PATH_SUFFIXES mmg) -+ if(MMG_LIB AND MMG_INC) -+ list(APPEND EXTERNAL_LIBRARIES ${MMG_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${MMG_INC}) -+ set_config_option(HAVE_MMG "Mmg") -+ endif() -+ endif() -+ -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt AND ENABLE_HXT) -+ add_subdirectory(contrib/hxt) -+ include_directories(BEFORE ${HXT_INC_DIRS}) -+ set_config_option(HAVE_HXT "Hxt") -+ # do not use arithmetic contraction in predicates.c -+ if(MSVC OR (CMAKE_C_COMPILER_ID STREQUAL "Intel" AND WIN32)) -+ set_source_files_properties( -+ "${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt/predicates/src/predicates.c" -+ PROPERTIES COMPILE_FLAGS "/fp:strict") -+ elseif(CMAKE_C_COMPILER_ID STREQUAL "Intel") -+ set_source_files_properties( -+ "${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt/predicates/src/predicates.c" -+ PROPERTIES COMPILE_FLAGS "-fp-model strict") -+ elseif(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") -+ set_source_files_properties( -+ "${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt/predicates/src/predicates.c" -+ PROPERTIES COMPILE_FLAGS "-fno-unsafe-math-optimizations -ffp-contract=off") -+ else() -+ message(WARNING "Unknown compiler: make sure compiled functions from " -+ "predicates.c do not use extended double precision and follow " -+ "the IEEE754 standard. It is crucial for the robustness of " -+ "geometric predicates.") -+ endif() -+ if(MSVC) -+ add_definitions(/bigobj) -+ endif() -+ endif() -+ -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/QuadMeshingTools -+ AND ENABLE_QUADMESHINGTOOLS) -+ set_config_option(HAVE_QUADMESHINGTOOLS "QuadMeshingTools") -+ add_subdirectory(contrib/QuadMeshingTools) -+ include_directories(BEFORE contrib/QuadMeshingTools) -+ endif() -+ -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/WinslowUntangler -+ AND ENABLE_WINSLOWUNTANGLER) -+ set_config_option(HAVE_WINSLOWUNTANGLER "WinslowUntangler") -+ add_subdirectory(contrib/WinslowUntangler) -+ include_directories(BEFORE contrib/WinslowUntangler) -+ endif() -+endif() -+ -+if(ENABLE_MED OR ENABLE_CGNS) -+ find_package(HDF5) -+ if(HDF5_FOUND) -+ set(HDF5_LIB "${HDF5_C_LIBRARIES}") -+ list(APPEND EXTERNAL_INCLUDES ${HDF5_INCLUDE_DIRS}) -+ if(ENABLE_MED) -+ find_library(MED_LIB medC) -+ if(MED_LIB) -+ set_config_option(HAVE_MED "Med") -+ list(APPEND EXTERNAL_LIBRARIES ${MED_LIB}) -+ endif() -+ endif() -+ if(ENABLE_CGNS) -+ find_library(CGNS_LIB cgns HINTS ENV CGNS_ROOT PATH_SUFFIXES lib) -+ find_path(CGNS_INC "cgnslib.h" HINTS ENV CGNS_ROOT PATH_SUFFIXES include) -+ if(CGNS_LIB AND CGNS_INC) -+ set_config_option(HAVE_LIBCGNS "Cgns") -+ list(APPEND EXTERNAL_LIBRARIES ${CGNS_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${CGNS_INC}) -+ if(ENABLE_CGNS_CPEX0045) -+ set_config_option(HAVE_LIBCGNS_CPEX0045 "Cgns_CPEX0045") -+ endif() -+ endif() -+ endif() -+ if(MED_LIB OR CGNS_LIB) -+ list(APPEND EXTERNAL_LIBRARIES ${HDF5_LIB}) -+ find_library(SZ_LIB NAMES szlib sz) -+ if(SZ_LIB) -+ list(APPEND EXTERNAL_LIBRARIES ${SZ_LIB}) -+ endif() -+ if(NOT HAVE_LIBZ) # necessary for non-GUI builds -+ find_package(ZLIB) -+ if(ZLIB_FOUND) -+ set_config_option(HAVE_LIBZ "Zlib") -+ list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES}) -+ endif() -+ endif() -+ endif() -+ else() -+ message(STATUS "HDF5 not found") -+ endif() -+endif() -+ -+if(HAVE_SOLVER) -+ if(ENABLE_GMM) -+ find_path(GMM_INC "gmm.h" PATH_SUFFIXES src include include/gmm) -+ if(ENABLE_SYSTEM_CONTRIB AND GMM_INC) -+ message(STATUS "Using system version of GMM") -+ list(APPEND EXTERNAL_INCLUDES ${GMM_INC}) -+ set_config_option(HAVE_GMM "Gmm") -+ elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/gmm) -+ include_directories(contrib/gmm) -+ set_config_option(HAVE_GMM "Gmm[contrib]") -+ endif() -+ endif() -+ -+ if(ENABLE_PETSC) -+ if(PETSC_DIR) -+ set(ENV_PETSC_DIR ${PETSC_DIR}) -+ else() -+ set(ENV_PETSC_DIR $ENV{PETSC_DIR}) -+ endif() -+ if(PETSC_ARCH) -+ set(ENV_PETSC_ARCH ${PETSC_ARCH}) -+ else() -+ set(ENV_PETSC_ARCH $ENV{PETSC_ARCH}) -+ endif() -+ set(PETSC_POSSIBLE_CONF_FILES -+ ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables -+ ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc-conf/petscvariables -+ ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc/conf/petscvariables) -+ foreach(FILE ${PETSC_POSSIBLE_CONF_FILES}) -+ if(EXISTS ${FILE}) -+ # old-style PETSc installations (using PETSC_DIR and PETSC_ARCH) -+ message(STATUS "Using PETSc dir: ${ENV_PETSC_DIR}") -+ message(STATUS "Using PETSc arch: ${ENV_PETSC_ARCH}") -+ # find includes by parsing the petscvariables file -+ file(STRINGS ${FILE} PETSC_VARIABLES NEWLINE_CONSUME) -+ endif() -+ endforeach() -+ if(PETSC_VARIABLES) -+ # try to find PETSC_CC_INCLUDES for PETSc >= 3.4 -+ string(REGEX MATCH "PETSC_CC_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES -+ ${PETSC_VARIABLES}) -+ if(PETSC_PACKAGES_INCLUDES) -+ string(REPLACE "PETSC_CC_INCLUDES = " "" PETSC_PACKAGES_INCLUDES -+ ${PETSC_PACKAGES_INCLUDES}) -+ else() -+ # try to find PETSC_PACKAGES_INCLUDES in older versions -+ list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/include) -+ list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include) -+ string(REGEX MATCH "PACKAGES_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES -+ ${PETSC_VARIABLES}) -+ string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES -+ ${PETSC_PACKAGES_INCLUDES}) -+ endif() -+ if(PETSC_PACKAGES_INCLUDES) -+ if(PETSC_PACKAGES_INCLUDES) -+ string(REPLACE "-I" "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES}) -+ string(REPLACE " " ";" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES}) -+ foreach(VAR ${PETSC_PACKAGES_INCLUDES}) -+ # seem to include unexisting directories (/usr/include/lib64) -+ # check to avoid warnings -+ if(EXISTS ${VAR}) -+ list(APPEND EXTERNAL_INCLUDES ${VAR}) -+ endif() -+ endforeach() -+ endif() -+ endif() -+ # find libraries (<= 3.0) -+ set(PETSC_LIBS_REQUIRED petscksp petscdm petscmat petscvec petsc) -+ find_all_libraries(PETSC_LIBS PETSC_LIBS_REQUIRED -+ ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib "") -+ # petsc 3.1 creates only one library (libpetsc) -+ if(NOT PETSC_LIBS) -+ find_library(PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib -+ NO_DEFAULT_PATH) -+ endif() -+ if(PETSC_LIBS) -+ set_config_option(HAVE_PETSC "PETSc") -+ if(NOT HAVE_BLAS) -+ set_config_option(HAVE_BLAS "Blas[petsc]") -+ endif() -+ if(NOT HAVE_LAPACK) -+ set_config_option(HAVE_LAPACK "Lapack[petsc]") -+ endif() -+ endif() -+ # find slepc (needs to be linked in before petsc) -+ if(ENABLE_SLEPC) -+ if(SLEPC_DIR) -+ set(ENV_SLEPC_DIR ${SLEPC_DIR}) -+ else() -+ set(ENV_SLEPC_DIR $ENV{SLEPC_DIR}) -+ endif() -+ find_library(SLEPC_LIB slepc PATHS ${ENV_SLEPC_DIR}/${ENV_PETSC_ARCH}/lib -+ NO_DEFAULT_PATH) -+ if(SLEPC_LIB) -+ find_path(SLEPC_INC "slepc.h" PATHS ${ENV_SLEPC_DIR} PATH_SUFFIXES include -+ ${ENV_PETSC_ARCH}/include include/slepc NO_DEFAULT_PATH) -+ if(SLEPC_INC) -+ message(STATUS "Using SLEPc dir: ${ENV_SLEPC_DIR}") -+ set_config_option(HAVE_SLEPC "SLEPc") -+ list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC}) -+ find_path(SLEPC_INC2 "slepcconf.h" PATHS ${ENV_SLEPC_DIR} -+ PATH_SUFFIXES ${ENV_PETSC_ARCH}/include NO_DEFAULT_PATH) -+ if(SLEPC_INC2) -+ list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC2}) -+ endif() -+ endif() -+ endif() -+ endif() -+ list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS}) -+ # find additional libraries to link with -+ string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PLIBS ${PETSC_VARIABLES}) -+ if(PLIBS) -+ string(REPLACE "PACKAGES_LIBS = " "" PLIBS ${PLIBS}) -+ string(STRIP ${PLIBS} PLIBS) -+ list(APPEND EXTERNAL_LIBRARIES "${PLIBS}") -+ endif() -+ string(REGEX MATCH "PETSC_EXTERNAL_LIB_BASIC = [^\n\r]*" PLIBS_BASIC ${PETSC_VARIABLES}) -+ if(PLIBS_BASIC) -+ string(REPLACE "PETSC_EXTERNAL_LIB_BASIC = " "" PLIBS_BASIC ${PLIBS_BASIC}) -+ string(STRIP ${PLIBS_BASIC} PLIBS_BASIC) -+ separate_arguments(PLIBS_BASIC) -+ list(APPEND EXTERNAL_LIBRARIES "${PLIBS_BASIC}") -+ endif() -+ string(REGEX MATCH "PCC_LINKER_LIBS = [^\n\r]*" LLIBS ${PETSC_VARIABLES}) -+ if(LLIBS) -+ string(REPLACE "PCC_LINKER_LIBS = " "" LLIBS ${LLIBS}) -+ string(STRIP ${LLIBS} LLIBS) -+ list(APPEND EXTERNAL_LIBRARIES "${LLIBS}") -+ endif() -+ else() -+ # new-style PETSc installations (in standard system directories) -+ find_library(PETSC_LIBS petsc) -+ find_path(PETSC_INC "petsc.h" PATH_SUFFIXES include/petsc) -+ if(PETSC_LIBS AND PETSC_INC) -+ set_config_option(HAVE_PETSC "PETSc") -+ if(ENABLE_SLEPC) -+ find_library(SLEPC_LIB slepc) -+ find_path(SLEPC_INC "slepc.h" PATH_SUFFIXES include/slepc) -+ if(SLEPC_LIB AND SLEPC_INC) -+ set_config_option(HAVE_SLEPC "SLEPc") -+ list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC}) -+ endif() -+ endif() -+ list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS}) -+ list(APPEND EXTERNAL_INCLUDES ${PETSC_INC}) -+ endif() -+ endif() -+ endif() -+ -+ if(ENABLE_MUMPS AND HAVE_BLAS AND HAVE_LAPACK) -+ set(MUMPS_LIBS_REQUIRED smumps dmumps cmumps zmumps mumps_common pord) -+ if(NOT ENABLE_MPI) -+ list(APPEND MUMPS_LIBS_REQUIRED mpiseq) -+ endif() -+ find_all_libraries(MUMPS_LIBRARIES MUMPS_LIBS_REQUIRED "" "lib") -+ find_path(SMUMPS_INC "smumps_c.h" PATH_SUFFIXES src include) -+ find_path(DMUMPS_INC "dmumps_c.h" PATH_SUFFIXES src include) -+ find_path(CMUMPS_INC "cmumps_c.h" PATH_SUFFIXES src include) -+ find_path(ZMUMPS_INC "zmumps_c.h" PATH_SUFFIXES src include) -+ if(MUMPS_LIBRARIES AND SMUMPS_INC AND DMUMPS_INC AND CMUMPS_INC AND ZMUMPS_INC) -+ set_config_option(HAVE_MUMPS "MUMPS") -+ list(APPEND EXTERNAL_LIBRARIES ${MUMPS_LIBRARIES}) -+ list(APPEND EXTERNAL_INCLUDES ${SMUMPS_INC}) -+ list(APPEND EXTERNAL_INCLUDES ${DMUMPS_INC}) -+ list(APPEND EXTERNAL_INCLUDES ${CMUMPS_INC}) -+ list(APPEND EXTERNAL_INCLUDES ${ZMUMPS_INC}) -+ find_library(GFORTRAN_LIB gfortran) -+ if(GFORTRAN_LIB) -+ list(APPEND EXTERNAL_LIBRARIES ${GFORTRAN_LIB}) -+ endif() -+ if(ENABLE_GMM) # use GMM/MUMPS interface -+ add_definitions(-DGMM_USES_MUMPS) -+ endif() -+ endif() -+ endif() -+ -+ if(ENABLE_GETDP) -+ find_library(GETDP_LIB GetDP) -+ find_path(GETDP_INC "GetDP.h" PATH_SUFFIXES getdp) -+ if(GETDP_LIB AND GETDP_INC) -+ set_config_option(HAVE_GETDP "GetDP") -+ list(APPEND EXTERNAL_LIBRARIES ${GETDP_LIB}) -+ list(APPEND EXTERNAL_INCLUDES ${GETDP_INC}) -+ endif() -+ endif() -+endif() -+ -+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/pro AND ENABLE_PRO) -+ add_subdirectory(pro) -+endif() -+ -+if(ENABLE_OCC) -+ set(OCC_MINIMAL_VERSION "6.9.1") -+ if(WIN32) -+ if(HAVE_64BIT_SIZE_T) -+ set(OCC_SYS_NAME win64) -+ else() -+ set(OCC_SYS_NAME win32) -+ endif() -+ else() -+ set(OCC_SYS_NAME ${CMAKE_SYSTEM_NAME}) -+ endif() -+ find_path(OCC_INC "Standard_Version.hxx" HINTS ENV CASROOT PATH_SUFFIXES -+ inc include include/oce opencascade include/opencascade -+ occt include/occt) -+ if(OCC_INC) -+ file(STRINGS ${OCC_INC}/Standard_Version.hxx -+ OCC_MAJOR REGEX "#define OCC_VERSION_MAJOR.*") -+ file(STRINGS ${OCC_INC}/Standard_Version.hxx -+ OCC_MINOR REGEX "#define OCC_VERSION_MINOR.*") -+ file(STRINGS ${OCC_INC}/Standard_Version.hxx -+ OCC_MAINT REGEX "#define OCC_VERSION_MAINTENANCE.*") -+ if(OCC_MAJOR AND OCC_MINOR AND OCC_MAINT) -+ string(REGEX MATCH "[0-9]+" OCC_MAJOR "${OCC_MAJOR}") -+ string(REGEX MATCH "[0-9]+" OCC_MINOR "${OCC_MINOR}") -+ string(REGEX MATCH "[0-9]+" OCC_MAINT "${OCC_MAINT}") -+ set(OCC_VERSION "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}") -+ message(STATUS "Found OpenCASCADE version ${OCC_VERSION} in ${OCC_INC}") -+ endif() -+ endif() -+ if(OCC_VERSION AND OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION}) -+ message(WARNING "Gmsh requires OpenCASCADE >= ${OCC_MINIMAL_VERSION}. " -+ "Use CMAKE_PREFIX_PATH or the CASROOT environment variable " -+ "to explicitly specify the installation path of OpenCASCADE") -+ elseif(OCC_INC) -+ set(OCC_LIBS_REQUIRED -+ # subset of DataExchange -+ TKSTEP TKSTEP209 TKSTEPAttr TKSTEPBase TKIGES TKXSBase -+ # ModelingAlgorithms -+ TKOffset TKFeat TKFillet TKBool TKMesh TKHLR TKBO TKPrim TKShHealing -+ TKTopAlgo TKGeomAlgo -+ # ModelingData -+ TKBRep TKGeomBase TKG3d TKG2d -+ # FoundationClasses -+ TKMath TKernel) -+ if(ENABLE_OCC_TBB) -+ list(APPEND OCC_LIBS_REQUIRED tbb tbbmalloc) -+ endif() -+ list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS_REQUIRED) -+ if(OCC_LIBS) -+ message(STATUS "OCC libraries specified explicitly: " ${OCC_LIBS}) -+ list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS) -+ else() -+ set(OCC_LIBS) -+ foreach(OCC ${OCC_LIBS_REQUIRED}) -+ find_library(OCC_LIB ${OCC} HINTS ENV CASROOT PATH_SUFFIXES -+ lib ${OCC_SYS_NAME}/vc8/lib ${OCC_SYS_NAME}/vc9/lib -+ ${OCC_SYS_NAME}/vc10/lib ${OCC_SYS_NAME}/vc11/lib -+ ${OCC_SYS_NAME}/vc12/lib ${OCC_SYS_NAME}/vc14/lib -+ ${OCC_SYS_NAME}/gcc/lib ${OCC_SYS_NAME}/gcc/bin -+ ${OCC_SYS_NAME}/lib) -+ if(OCC_LIB) -+ list(APPEND OCC_LIBS ${OCC_LIB}) -+ else() -+ message(STATUS "OCC lib " ${OCC} " not Found") -+ endif() -+ unset(OCC_LIB CACHE) -+ endforeach() -+ list(LENGTH OCC_LIBS NUM_OCC_LIBS) -+ endif() -+ endif() -+ -+ # additional OCC libraries to handle reading of STEP/IGES attributes. Oh my... -+ if(ENABLE_OCC_CAF) -+ find_package(Freetype) -+ if(FREETYPE_FOUND) -+ set(OCC_CAF_LIBS_REQUIRED -+ TKXDESTEP TKXDEIGES TKXCAF TKLCAF TKVCAF TKCAF TKV3d TKService TKCDF) -+ list(LENGTH OCC_CAF_LIBS_REQUIRED NUM_OCC_CAF_LIBS_REQUIRED) -+ set(OCC_CAF_LIBS) -+ foreach(OCC ${OCC_CAF_LIBS_REQUIRED}) -+ find_library(OCC_CAF_LIB ${OCC} HINTS ENV CASROOT PATH_SUFFIXES -+ lib ${OCC_SYS_NAME}/vc8/lib ${OCC_SYS_NAME}/vc9/lib -+ ${OCC_SYS_NAME}/vc10/lib ${OCC_SYS_NAME}/vc11/lib -+ ${OCC_SYS_NAME}/vc12/lib ${OCC_SYS_NAME}/vc14/lib -+ ${OCC_SYS_NAME}/gcc/lib ${OCC_SYS_NAME}/gcc/bin -+ ${OCC_SYS_NAME}/lib) -+ if(OCC_CAF_LIB) -+ list(APPEND OCC_CAF_LIBS ${OCC_CAF_LIB}) -+ else() -+ message(STATUS "OCC CAF lib " ${OCC} " not Found") -+ endif() -+ unset(OCC_CAF_LIB CACHE) -+ endforeach() -+ list(LENGTH OCC_CAF_LIBS NUM_OCC_CAF_LIBS) -+ endif() -+ endif() -+ -+ if(NUM_OCC_LIBS EQUAL NUM_OCC_LIBS_REQUIRED) -+ # append OCC CAF libraries first... -+ if(NUM_OCC_CAF_LIBS EQUAL NUM_OCC_CAF_LIBS_REQUIRED) -+ set_config_option(HAVE_OCC_CAF "OpenCASCADE-CAF") -+ list(APPEND EXTERNAL_LIBRARIES ${OCC_CAF_LIBS} ${FREETYPE_LIBRARIES}) -+ list(APPEND EXTERNAL_INCLUDES ${FREETYPE_INCLUDE_DIRS}) -+ if(WIN32) -+ list(APPEND EXTERNAL_LIBRARIES "windowscodecs") -+ list(APPEND EXTERNAL_LIBRARIES "ole32") -+ endif() -+ endif() -+ # then append OCC libraries -+ set_config_option(HAVE_OCC "OpenCASCADE") -+ list(APPEND EXTERNAL_LIBRARIES ${OCC_LIBS}) -+ list(APPEND EXTERNAL_INCLUDES ${OCC_INC}) -+ if(WIN32 AND NOT MSVC) -+ add_definitions(-DOCC_CONVERT_SIGNALS) -+ endif() -+ endif() -+endif() -+ -+if(ENABLE_ZIPPER) -+ if(ENABLE_BUILD_IOS) -+ set_config_option(HAVE_LIBZ "Zlib") -+ endif() -+ if(NOT HAVE_LIBZ) # necessary for non-GUI builds -+ find_package(ZLIB) -+ if(ZLIB_FOUND) -+ set_config_option(HAVE_LIBZ "Zlib") -+ list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES}) -+ list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR}) -+ endif() -+ endif() -+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/zipper AND HAVE_LIBZ) -+ add_subdirectory(contrib/zipper) -+ include_directories(contrib/zipper) -+ set_config_option(HAVE_ZIPPER "Zipper") -+ endif() -+endif() -+ -+if(ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON) -+ find_package(SWIG REQUIRED) -+ include(${SWIG_USE_FILE}) -+ find_package(PythonLibs) -+ if(SWIG_FOUND AND PYTHONLIBS_FOUND) -+ message(STATUS "Found SWIG version " ${SWIG_VERSION}) -+ find_package(PythonInterp) -+ string(SUBSTRING ${SWIG_VERSION} 0 1 SWIG_MAJOR_VERSION) -+ if(SWIG_MAJOR_VERSION EQUAL 1) -+ message(WARNING "Python bindings require SWIG >= 2: disabling Python") -+ else() -+ set_config_option(HAVE_PYTHON "Python") -+ mark_as_advanced(CLEAR PYTHON_LIBRARY PYTHON_INCLUDE_DIR) -+ if(ENABLE_NUMPY) -+ if (NOT NUMPY_INC) -+ EXEC_PROGRAM (${PYTHON_EXECUTABLE} -+ ARGS "-c \"import numpy; print(numpy.get_include())\"" -+ OUTPUT_VARIABLE NUMPY_INC -+ RETURN_VALUE NUMPY_NOT_FOUND) -+ endif() -+ if(NUMPY_INC) -+ list(APPEND EXTERNAL_INCLUDES ${NUMPY_INC}) -+ set_config_option(HAVE_NUMPY "Numpy") -+ endif() -+ endif() -+ if(HAVE_PETSC) -+ if(ENABLE_PETSC4PY) -+ EXECUTE_PROCESS( -+ COMMAND ${PYTHON_EXECUTABLE} -c "import petsc4py; print(petsc4py.get_include())" -+ OUTPUT_VARIABLE PETSC4PY_INC -+ RESULT_VARIABLE PETSC4PY_NOT_FOUND -+ ERROR_QUIET -+ OUTPUT_STRIP_TRAILING_WHITESPACE) -+ if(PETSC4PY_INC) -+ list(APPEND EXTERNAL_INCLUDES ${PETSC4PY_INC}) -+ set_config_option(HAVE_PETSC4PY "PETSc4py") -+ endif() -+ endif() -+ endif() -+ endif() -+ endif() -+endif() -+ -+check_function_exists(vsnprintf HAVE_VSNPRINTF) -+if(NOT HAVE_VSNPRINTF AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID) -+ set_config_option(HAVE_NO_VSNPRINTF "NoVsnprintf") -+endif() -+ -+check_include_file(sys/socket.h HAVE_SYS_SOCKET_H) -+if(HAVE_SYS_SOCKET_H) -+ set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h) -+endif() -+check_type_size(socklen_t SOCKLEN_T_SIZE) -+set(CMAKE_EXTRA_INCLUDE_FILES) -+if(NOT SOCKLEN_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID) -+ set_config_option(HAVE_NO_SOCKLEN_T "NoSocklenT") -+endif() -+ -+check_include_file(stdint.h HAVE_STDINT_H) -+if(HAVE_STDINT_H) -+ set(CMAKE_EXTRA_INCLUDE_FILES stdint.h) -+else() -+ set_config_option(HAVE_NO_STDINT_H "NoStdintH") -+endif() -+check_type_size(intptr_t INTPTR_T_SIZE) -+set(CMAKE_EXTRA_INCLUDE_FILES) -+if(NOT INTPTR_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID) -+ set_config_option(HAVE_NO_INTPTR_T "NoIntptrT") -+endif() -+ -+check_include_file(dlfcn.h DLFCN_H) -+if(DLFCN_H) -+ set_config_option(HAVE_DLOPEN "Dlopen") -+ list(APPEND EXTERNAL_LIBRARIES ${CMAKE_DL_LIBS}) -+endif() -+ -+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") -+ check_include_file(linux/joystick.h LINUX_JOYSTICK_H) -+ if(LINUX_JOYSTICK_H) -+ set_config_option(HAVE_LINUX_JOYSTICK "LinuxJoystick") -+ endif() -+endif() -+ -+if(WIN32) -+ add_definitions(-D_USE_MATH_DEFINES) -+ list(APPEND EXTERNAL_LIBRARIES winmm wsock32 ws2_32 psapi) -+endif() -+ -+if(MSVC) -+ add_definitions(-DNOMINMAX -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -+ -D_SCL_SECURE_NO_DEPRECATE) -+endif() -+ -+# add C functions API -+set(GMSH_SRC ${GMSH_SRC};api/gmshc.cpp) -+ -+# force full warnings to encourage everybody to write clean(er) code -+check_cxx_compiler_flag("-Wall" WALL) -+if(WALL AND NOT MSVC) -+ file(GLOB_RECURSE WALL_SRC src/common/*.cpp src/fltk/*.cpp FunctionSpace/*.cpp -+ src/geo/*.cpp src/graphics/*.cpp src/mesh/*.cpp src/numeric/*.cpp src/parser/*.cpp -+ src/plugin/*.cpp src/post/*.cpp src/solver/*.cpp) -+ set(WF "-Wall") -+ check_cxx_compiler_flag("-Wint-to-void-pointer-cast" WCAST) -+ if(WCAST) -+ set(WF "${WF} -Wno-int-to-void-pointer-cast") -+ endif() -+ check_cxx_compiler_flag("-Wdeprecated-declarations" WDEPREC) -+ if(WDEPREC) -+ # FIXME: remove this when we have fixed the deprecated GLU code for OpenGL3 -+ set(WF "${WF} -Wno-deprecated-declarations") -+ endif() -+ check_cxx_compiler_flag("-Wmisleading-indentation" WIND) -+ if(WIND) -+ set(WF "${WF} -Wno-misleading-indentation") -+ endif() -+ check_cxx_compiler_flag("-Wno-attributes" WATTR) -+ if(WATTR) -+ # FIXME: remove this when GCC behaves more intelligently -+ set(WF "${WF} -Wno-attributes") -+ endif() -+ if(WIN32 OR NOT HAVE_64BIT_SIZE_T) -+ # FIXME: remove printf family warnings on 32 bit systems and windows -+ check_cxx_compiler_flag("-Wno-format" WFORMAT) -+ if(WFORMAT) -+ set(WF "${WF} -Wno-format") -+ endif() -+ endif() -+ set_compile_flags(WALL_SRC ${WF}) -+endif() -+ -+# don't issue warnings for contributed libraries and for autogenerated files -+check_cxx_compiler_flag("-w" NOWARN) -+if(NOWARN) -+ file(GLOB_RECURSE NOWARN_SRC contrib/*.cpp contrib/*.cc contrib/*.cxx -+ contrib/*.c src/parser/Gmsh.*.cpp) -+ set_compile_flags(NOWARN_SRC "-w") -+endif() -+ -+# fine-tune optimization flags for particular files -+check_cxx_compiler_flag("-O0" NOOPT) -+if(NOOPT OR ENABLE_BUILD_IOS) -+ if(ENABLE_BUILD_IOS) -+ # optimized builds on iOS 10 64 bits fail spectacularly -+ file(GLOB_RECURSE NOOPT_SRC src/geo/G*.cpp src/mesh/BDS.cpp -+ src/parser/Gmsh.tab.cpp contrib/blossom/* contrib/bamg/* -+ src/mesh/Background*) -+ else() -+ # bamg fails even with -O1 -+ file(GLOB_RECURSE NOOPT_SRC contrib/bamg/*) -+ endif() -+ set_compile_flags(NOOPT_SRC "-O0") -+endif() -+if(MSVC OR (CMAKE_C_COMPILER_ID STREQUAL "Intel" AND WIN32)) -+ set_source_files_properties( -+ "${CMAKE_CURRENT_SOURCE_DIR}/src/numeric/robustPredicates.cpp" -+ PROPERTIES COMPILE_FLAGS "/fp:strict") -+elseif(CMAKE_C_COMPILER_ID STREQUAL "Intel") -+ set_source_files_properties( -+ "${CMAKE_CURRENT_SOURCE_DIR}/src/numeric/robustPredicates.cpp" -+ PROPERTIES COMPILE_FLAGS "-fp-model strict") -+elseif(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") -+ set_source_files_properties( -+ "${CMAKE_CURRENT_SOURCE_DIR}/src/numeric/robustPredicates.cpp" -+ PROPERTIES COMPILE_FLAGS "-fno-unsafe-math-optimizations -ffp-contract=off") -+else() -+ message(WARNING "Unknown compiler: make sure compiled functions from " -+ "src/numeric/robustPredicates.cpp do not use extended double precision " -+ "and follow the IEEE754 standard. It is crucial for the robustness of " -+ "geometric predicates.") -+endif() -+ -+# enable Revoropt and set compile flags for the corresponding plugin -+if(ENABLE_REVOROPT) -+ if(HAVE_EIGEN AND HAVE_MESH AND HAVE_PLUGINS AND HAVE_ANN AND HAVE_ALGLIB) -+ list(APPEND EXTERNAL_INCLUDES contrib/Revoropt/include) -+ set_config_option(HAVE_REVOROPT "Revoropt") -+ add_definitions(-DUSE_ANN) -+ else() -+ message(WARNING "Revoropt requires Eigen, Mesh, Plugins, ANN and ALGLIB") -+ endif() -+endif() -+ -+if(HAVE_MESH AND NOT HAVE_EIGEN AND NOT HAVE_LAPACK) -+ message(WARNING "Most meshing algorithms will not be functional without " -+ "Eigen or Lapack") -+endif() -+ -+list(SORT CONFIG_OPTIONS) -+set(GMSH_CONFIG_OPTIONS "") -+foreach(OPT ${CONFIG_OPTIONS}) -+ set(GMSH_CONFIG_OPTIONS "${GMSH_CONFIG_OPTIONS} ${OPT}") -+endforeach() -+ -+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/common/GmshConfig.h.in -+ ${CMAKE_CURRENT_BINARY_DIR}/src/common/GmshConfig.h) -+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/common/GmshVersion.h.in -+ ${CMAKE_CURRENT_BINARY_DIR}/src/common/GmshVersion.h) -+ -+# the texi and pypi version files are modified in the source directory (not -+# ideal for version.texi, but since git tracks the contents of the file this is -+# acceptable as it will only change when the actual version is changed - not for -+# each git hash) -+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi.in -+ ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi) -+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/utils/pypi/setup-wheel.py.in -+ ${CMAKE_CURRENT_BINARY_DIR}/setup-wheel.py) -+ -+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/version.txt ${GMSH_SHORT_VERSION}) -+ -+# process cmake environment variables so we can append them to the -I include -+# commands. This is not recommended (we should only use the cache variables) but -+# it is very convenient: otherwise we have to remember providing the -+# -D... options to cmake for each new build. -+set(ENV_CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH}) -+set(ENV_CMAKE_INCLUDE_PATH $ENV{CMAKE_INCLUDE_PATH}) -+if(UNIX) -+ if(ENV_CMAKE_PREFIX_PATH) -+ string(REPLACE ":" ";" ENV_CMAKE_PREFIX_PATH ${ENV_CMAKE_PREFIX_PATH}) -+ endif() -+ if(ENV_CMAKE_INCLUDE_PATH) -+ string(REPLACE ":" ";" ENV_CMAKE_INCLUDE_PATH ${ENV_CMAKE_INCLUDE_PATH}) -+ endif() -+endif() -+list(APPEND EXTERNAL_INCLUDES ${CMAKE_INCLUDE_PATH} ${ENV_CMAKE_INCLUDE_PATH}) -+list(APPEND EXTERNAL_INCLUDES ${CMAKE_PREFIX_PATH} ${ENV_CMAKE_PREFIX_PATH}) -+foreach(DIR ${CMAKE_PREFIX_PATH} ${ENV_CMAKE_PREFIX_PATH}) -+ list(APPEND EXTERNAL_INCLUDES ${DIR}/include) -+endforeach() -+ -+if(EXTERNAL_INCLUDES) -+ list(REMOVE_DUPLICATES EXTERNAL_INCLUDES) -+endif() -+ -+if(HAVE_FLTK) -+ set(LINK_LIBRARIES ${FLTK_LIBRARIES} ${EXTERNAL_LIBRARIES} -+ ${OPENGL_LIBRARIES} ${LAPACK_LIBRARIES}) -+elseif(HAVE_OPENGL) -+ set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${OPENGL_LIBRARIES} -+ ${LAPACK_LIBRARIES}) -+else() -+ set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES}) -+endif() -+ -+# try to use static gfortran on static builds (cannot do this on dynamic builds -+# as e.g. Debian compiles libgfortran.a without -fPIC: sigh...) -+if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENABLE_BUILD_SHARED) -+ find_library(GFORTRAN_STATIC libgfortran.a) -+ if(GFORTRAN_STATIC) -+ set(CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES) -+ message(STATUS "Using static libgfortran") -+ foreach(STR ${LINK_LIBRARIES}) -+ string(REPLACE "-lgfortran" ${GFORTRAN_STATIC} STR2 ${STR}) -+ list(APPEND LINK_LIBRARIES2 ${STR2}) -+ endforeach() -+ set(LINK_LIBRARIES ${LINK_LIBRARIES2}) -+ endif() -+endif() -+ -+# Linux-specific linker options -+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") -+ if(HAVE_OCC) -+ find_library(RT_LIB rt) -+ if(RT_LIB) -+ list(APPEND LINK_LIBRARIES ${RT_LIB}) -+ endif() -+ endif() -+ if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Intel") -+ add_definitions(-fPIC) -+ endif() -+endif() -+ -+# we could specify include dirs more selectively, but this is simpler -+include_directories(src/common src/fltk src/geo src/graphics src/mesh src/solver -+ src/numeric src/parser src/plugin src/post api -+ ${EXTERNAL_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}/src/common) -+ -+# set this for external codes that might include this CMakeList file -+set(GMSH_EXTERNAL_INCLUDE_DIRS ${EXTERNAL_INCLUDES} CACHE -+ STRING "External include directories" FORCE) -+set(GMSH_EXTERNAL_LIBRARIES ${LINK_LIBRARIES} CACHE -+ STRING "External libraries" FORCE) -+ -+# group sources for easier navigation in IDEs -+foreach(DIR ${GMSH_DIRS}) -+ string(REGEX REPLACE "\\+" "\\\\+" DIR ${DIR}) -+ source_group(${DIR} REGULAR_EXPRESSION ${DIR}/.*) -+endforeach() -+ -+# static library target -+if(ENABLE_BUILD_LIB) -+ add_library(lib STATIC ${GMSH_SRC}) -+ set_target_properties(lib PROPERTIES OUTPUT_NAME gmsh) -+ if(MSVC) -+ set_target_properties(lib PROPERTIES DEBUG_POSTFIX d) -+ if(ENABLE_MSVC_STATIC_RUNTIME) -+ set_target_properties(lib PROPERTIES LINK_FLAGS_RELEASE "/nodefaultlib:LIBCMT") -+ endif() -+ endif() -+endif() -+ -+# shared library target -+if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) -+ add_library(shared SHARED ${GMSH_SRC}) -+ set_target_properties(shared PROPERTIES OUTPUT_NAME gmsh -+ VERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION} -+ SOVERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}) -+ if(WIN32) -+ set_target_properties(shared PROPERTIES PREFIX "" IMPORT_PREFIX "" -+ IMPORT_SUFFIX ".lib" COMPILE_FLAGS "-DGMSH_DLL -DGMSH_DLL_EXPORT") -+ elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND NOT ENABLE_PRIVATE_API) -+ # hide all symbols by default (if not exporting the private API); symbols to -+ # export should be marked with __attribute__ ((visibility("default"))) -+ set_target_properties(shared PROPERTIES COMPILE_FLAGS "-fvisibility=hidden") -+ endif() -+ target_link_libraries(shared ${LINK_LIBRARIES}) -+ # don't define LC_RPATH in dylib for development, to not get endless warnings -+ # about code signing -+ if(APPLE AND NOT GMSH_RELEASE) -+ set_target_properties(shared PROPERTIES INSTALL_RPATH "") -+ endif() -+ if(MSVC AND ENABLE_MSVC_STATIC_RUNTIME) -+ message(STATUS "Note: By enabling ENABLE_MSVC_STATIC_RUNTIME, shared library " -+ "won't link. In MSVC change /MT to /MD in the shared project properties") -+ endif() -+endif() -+ -+# binary targets -+if(HAVE_FLTK) -+ if(ENABLE_BUILD_DYNAMIC) -+ add_executable(gmsh WIN32 src/common/Main.cpp) -+ target_link_libraries(gmsh shared) -+ else() -+ add_executable(gmsh WIN32 src/common/Main.cpp ${GMSH_SRC}) -+ endif() -+ # we could add this to create a minimal app bundle even without install -+ # if(APPLE AND NOT ENABLE_OS_SPECIFIC_INSTALL) -+ # set_target_properties(gmsh PROPERTIES MACOSX_BUNDLE ON -+ # MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_dev.plist) -+ # endif() -+else() -+ if(ENABLE_BUILD_DYNAMIC) -+ add_executable(gmsh src/common/Main.cpp) -+ target_link_libraries(gmsh shared) -+ else() -+ add_executable(gmsh src/common/Main.cpp ${GMSH_SRC}) -+ endif() -+endif() -+target_link_libraries(gmsh ${LINK_LIBRARIES}) -+ -+# Windows specific linker options -+if(WIN32 AND NOT MSVC) -+ set(FLAGS "-Wl,--stack,16777216 -Wl,--image-base -Wl,0x10000000 -static") -+ if(HAVE_FLTK) -+ set(APPFLAGS "${FLAGS} -municode -mwindows") -+ if(HAVE_64BIT_SIZE_T) -+ set(APPFLAGS "${APPFLAGS} \"${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/Win64Icon.res\"") -+ else() -+ set(APPFLAGS "${APPFLAGS} \"${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/Win32Icon.res\"") -+ endif() -+ else() -+ set(APPFLAGS "${FLAGS} -municode -mconsole") -+ endif() -+ set_target_properties(gmsh PROPERTIES LINK_FLAGS "${APPFLAGS}") -+ if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED) -+ set_target_properties(shared PROPERTIES LINK_FLAGS "${FLAGS}") -+ endif() -+ # remove -Wl,-Bdynamic flags -+ set(CMAKE_EXE_LINK_DYNAMIC_C_FLAGS) -+ set(CMAKE_EXE_LINK_DYNAMIC_CXX_FLAGS) -+elseif(MSVC) -+ set_target_properties(gmsh PROPERTIES LINK_FLAGS "/STACK:16777216 /SAFESEH:NO") -+endif() -+ -+# android target -+if(ENABLE_BUILD_ANDROID) -+ find_file(CMAKE_TOOLCHAIN_FILE "android.toolchain.cmake") -+ if(NOT CMAKE_TOOLCHAIN_FILE) -+ message(FATAL_ERROR "Cannot compile Gmsh for android without android-cmake") -+ endif() -+ add_definitions(-D_GLIBCXX_USE_C99_MATH=1) -+ set(CMAKE_BUILD_TYPE Release) -+ set(LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_CURRENT_BINARY_DIR}) -+ set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/libs/) -+ add_definitions(-DBUILD_ANDROID) -+ add_definitions(-DPICOJSON_USE_LOCALE=0) -+ add_library(androidGmsh SHARED ${GMSH_SRC}) -+ set_target_properties(androidGmsh PROPERTIES OUTPUT_NAME gmsh) -+ target_link_libraries(androidGmsh ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES}) -+ add_custom_command(TARGET androidGmsh POST_BUILD COMMAND -+ ${CMAKE_STRIP} ${LIBRARY_OUTPUT_PATH}/libgmsh.so) -+endif() -+ -+# parser target -+find_program(BISON bison) -+find_program(FLEX flex) -+if(BISON AND FLEX) -+ add_custom_target(parser -+ COMMAND ${BISON} -p gmsh_yy --output Gmsh.tab.cpp -d Gmsh.y -+ COMMAND ${FLEX} -P gmsh_yy -o Gmsh.yy.cpp Gmsh.l -+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/parser) -+endif() -+ -+if(UNIX) -+ # cannot use cmake's file search functions here (they would only find files -+ # existing at configuration time) -+ add_custom_target(purge -+ COMMAND rm -f `find . -name *~ -o -name *~~` -+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -+ add_custom_target(etags -+ COMMAND etags `find . -name *.cpp -o -name *.h -o -name *.y` -+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -+endif() -+ -+if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR -+ CMAKE_CXX_COMPILER_ID MATCHES "Clang") -+ execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion -+ OUTPUT_VARIABLE CXX_COMPILER_VERSION -+ OUTPUT_STRIP_TRAILING_WHITESPACE) -+else() -+ set(CXX_COMPILER_VERSION "Unknown") -+endif() -+ -+set(WELCOME_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/WELCOME.txt) -+set(SDK_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/SDK.txt) -+set(LICENSE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt) -+set(CREDITS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CREDITS.txt) -+set(CHANGELOG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.txt) -+file(GLOB TUTORIALS_GEO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorials/?*.*) -+file(GLOB TUTORIALS_CPP_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorials/c++/?*.*) -+file(GLOB TUTORIALS_C_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorials/c/?*.*) -+file(GLOB TUTORIALS_PY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorials/python/?*.*) -+file(GLOB TUTORIALS_JL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorials/julia/?*.*) -+file(GLOB EXAMPLES ${CMAKE_CURRENT_SOURCE_DIR}/examples/*) -+foreach(SUBDIR ${EXAMPLES}) -+ if(IS_DIRECTORY ${SUBDIR}) -+ list(APPEND EXAMPLES_DIRS ${SUBDIR}) -+ endif() -+endforeach() -+set(TEX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo) -+file(GLOB TEX_SRC ${TEX_DIR}/*.texi) -+set(TEX_OBJ ${TEX_DIR}/gmsh.aux ${TEX_DIR}/gmsh.cp ${TEX_DIR}/gmsh.cps -+ ${TEX_DIR}/gmsh.fn ${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.ky -+ ${TEX_DIR}/gmsh.log ${TEX_DIR}/gmsh.pdf ${TEX_DIR}/gmsh.pg ${TEX_DIR}/gmsh.toc -+ ${TEX_DIR}/gmsh.tp ${TEX_DIR}/gmsh.tps ${TEX_DIR}/gmsh.txt ${TEX_DIR}/gmsh.vr) -+ -+macro(unix2dos VARNAME UNIQUEPATH) -+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${UNIQUEPATH}) -+ set(UNIX2DOS_FILES) -+ foreach(FILE ${${VARNAME}}) -+ file(READ ${FILE} F0) -+ get_filename_component(N ${FILE} NAME) -+ if(CYGWIN) -+ string(REGEX REPLACE "\n" "\r\n" F1 "${F0}") -+ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${UNIQUEPATH}/${N} "${F1}") -+ else() # if not in Cygwin, cmake adds '\r's automatically -+ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${UNIQUEPATH}/${N} "${F0}") -+ endif() -+ list(APPEND UNIX2DOS_FILES ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${UNIQUEPATH}/${N}) -+ endforeach() -+ set(${VARNAME} ${UNIX2DOS_FILES}) -+endmacro() -+ -+if(WIN32) -+ if(ENABLE_OS_SPECIFIC_INSTALL) -+ set(GMSH_BIN .) -+ set(GMSH_LIB .) -+ set(GMSH_DOC .) -+ set(GMSH_MAN .) -+ set(GMSH_INC .) -+ else() -+ include(GNUInstallDirs) -+ set(GMSH_BIN ${CMAKE_INSTALL_BINDIR}) -+ set(GMSH_LIB ${CMAKE_INSTALL_LIBDIR}) -+ set(GMSH_DOC ${CMAKE_INSTALL_DOCDIR}) -+ set(GMSH_MAN ${CMAKE_INSTALL_MANDIR}/man1) -+ set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) -+ endif() -+ if(CYGWIN) -+ unix2dos(GMSH_API "api") -+ if(ENABLE_PRIVATE_API) -+ unix2dos(GMSH_PRIVATE_API "private_api") -+ endif() -+ unix2dos(WELCOME_FILE "welcome") -+ unix2dos(SDK_FILE "sdk") -+ unix2dos(LICENSE_FILE "license") -+ unix2dos(CREDITS_FILE "credits") -+ unix2dos(CHANGELOG_FILE "changelog") -+ unix2dos(TUTORIALS_GEO_FILES "geo") -+ unix2dos(TUTORIALS_CPP_FILES "cpp") -+ unix2dos(TUTORIALS_C_FILES "c") -+ unix2dos(TUTORIALS_PY_FILES "python") -+ unix2dos(TUTORIALS_JL_FILES "julia") -+ foreach(DIR ${EXAMPLES_DIRS}) -+ file(GLOB EXAMPLES_FILES ${DIR}/?*.*) -+ unix2dos(EXAMPLES_FILES "examples") -+ endforeach() -+ endif() -+elseif(APPLE AND ENABLE_OS_SPECIFIC_INSTALL) -+ # set these so that the files get installed nicely in the MacOSX -+ # .app bundle -+ set(GMSH_BIN ../MacOS) -+ set(GMSH_LIB ../MacOS) -+ set(GMSH_DOC ../../..) -+ set(GMSH_MAN ../../..) -+ set(GMSH_INC ../MacOS) -+else() -+ include(GNUInstallDirs) -+ set(GMSH_BIN ${CMAKE_INSTALL_BINDIR}) -+ set(GMSH_LIB ${CMAKE_INSTALL_LIBDIR}) -+ set(GMSH_DOC ${CMAKE_INSTALL_DOCDIR}) -+ set(GMSH_MAN ${CMAKE_INSTALL_MANDIR}/man1) -+ set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) -+endif() -+ -+# mark targets as optional so we can install them separately if needed -+# (e.g. "make lib" or "make shared" followed by "make install/fast") -+install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL) -+if(ENABLE_BUILD_LIB) -+ install(TARGETS lib DESTINATION ${GMSH_LIB} OPTIONAL) -+endif() -+if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) -+ install(TARGETS shared DESTINATION ${GMSH_LIB} OPTIONAL) -+endif() -+ -+if(ENABLE_ONELAB AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab) -+ install(FILES ${ONELAB_PY} DESTINATION ${GMSH_BIN}) -+endif() -+if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) -+ install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) -+ install(FILES ${GMSH_PY} DESTINATION ${GMSH_LIB}) -+ install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB}) -+ if(ENABLE_PRIVATE_API) -+ install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) -+ if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen -+ install(DIRECTORY contrib/eigen/Eigen DESTINATION ${GMSH_INC}/gmsh) -+ endif() -+ endif() -+endif() -+if(INSTALL_SDK_README) -+ configure_file(${SDK_FILE} ${CMAKE_CURRENT_BINARY_DIR}/README.txt) -+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/README.txt DESTINATION .) -+endif() -+install(FILES ${WELCOME_FILE} DESTINATION ${GMSH_DOC} RENAME README.txt) -+install(FILES ${LICENSE_FILE} DESTINATION ${GMSH_DOC}) -+install(FILES ${CREDITS_FILE} DESTINATION ${GMSH_DOC}) -+install(FILES ${CHANGELOG_FILE} DESTINATION ${GMSH_DOC}) -+install(FILES ${TUTORIALS_GEO_FILES} DESTINATION ${GMSH_DOC}/tutorials) -+install(FILES ${TUTORIALS_CPP_FILES} DESTINATION ${GMSH_DOC}/tutorials/c++) -+install(FILES ${TUTORIALS_C_FILES} DESTINATION ${GMSH_DOC}/tutorials/c) -+install(FILES ${TUTORIALS_PY_FILES} DESTINATION ${GMSH_DOC}/tutorials/python) -+install(FILES ${TUTORIALS_JL_FILES} DESTINATION ${GMSH_DOC}/tutorials/julia) -+foreach(DIR ${EXAMPLES_DIRS}) -+ get_filename_component(EXAMPLES_DIR_NAME ${DIR} NAME) -+ file(GLOB EXAMPLES_FILES ${DIR}/?*.*) -+ install(FILES ${EXAMPLES_FILES} DESTINATION ${GMSH_DOC}/examples/${EXAMPLES_DIR_NAME}) -+endforeach() -+if(UNIX AND NOT CYGWIN) -+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/gmsh.1 DESTINATION ${GMSH_MAN}) -+endif() -+ -+add_custom_target(get_headers -+ COMMAND ${CMAKE_COMMAND} -E make_directory Headers/gmsh -+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) -+foreach(FILE ${GMSH_API}) -+ add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND} -+ -E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/ -+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -+endforeach() -+if(ENABLE_PRIVATE_API) -+ foreach(FILE ${GMSH_PRIVATE_API}) -+ add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND} -+ -E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/gmsh/ -+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -+ endforeach() -+ if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen -+ add_custom_command(TARGET get_headers POST_BUILD -+ COMMAND ${CMAKE_COMMAND} -E copy_directory contrib/eigen/Eigen -+ ${CMAKE_CURRENT_BINARY_DIR}/Headers/gmsh/Eigen -+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -+ endif() -+endif() -+ -+find_program(MAKEINFO makeinfo) -+if(MAKEINFO) -+ add_custom_command(OUTPUT ${TEX_DIR}/gmsh.info DEPENDS ${TEX_SRC} -+ COMMAND ${MAKEINFO} --split-size 1000000 -+ ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR}) -+ add_custom_target(info DEPENDS ${TEX_DIR}/gmsh.info) -+ add_custom_command(OUTPUT ${TEX_DIR}/gmsh.txt DEPENDS ${TEX_SRC} -+ COMMAND ${MAKEINFO} --plaintext -o gmsh.txt -+ ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR}) -+ add_custom_target(txt DEPENDS ${TEX_DIR}/gmsh.txt) -+ add_custom_command(OUTPUT ${TEX_DIR}/gmsh.html DEPENDS ${TEX_SRC} -+ COMMAND ${MAKEINFO} --html --css-ref=/gmsh.css -+ --no-split --set-customization-variable -+ EXTRA_HEAD='' -+ ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR}) -+ add_custom_target(html DEPENDS ${TEX_DIR}/gmsh.html) -+ install(FILES ${TEX_DIR}/gmsh.html DESTINATION ${GMSH_DOC} OPTIONAL) -+else() -+ add_custom_target(html COMMAND ${CMAKE_COMMAND} -E touch ${TEX_DIR}/gmsh.html) -+endif() -+ -+find_program(TEXI2PDF texi2pdf) -+if(TEXI2PDF) -+ add_custom_command(OUTPUT ${TEX_DIR}/gmsh.pdf DEPENDS ${TEX_SRC} -+ COMMAND ${TEXI2PDF} ARGS gmsh.texi -+ WORKING_DIRECTORY ${TEX_DIR}) -+ add_custom_target(pdf DEPENDS ${TEX_DIR}/gmsh.pdf) -+ install(FILES ${TEX_DIR}/gmsh.pdf DESTINATION ${GMSH_DOC} OPTIONAL) -+endif() -+ -+execute_process(COMMAND ${CMAKE_COMMAND} -E echo -+ "@c This file was generated by cmake: do not edit manually!\n${OPT_TEXI}" -+ OUTPUT_FILE cmake_options.texi) -+ -+if(MAKEINFO AND TEXI2PDF) -+ add_custom_target(doc COMMAND ${CMAKE_COMMAND} -E tar zcf -+ ${CMAKE_CURRENT_BINARY_DIR}/gmsh-${GMSH_VERSION}-doc.tgz -+ CREDITS.txt LICENSE.txt CHANGELOG.txt -+ doc/gmsh.1 doc/texinfo/gmsh.html doc/texinfo/gmsh.info -+ doc/texinfo/gmsh.pdf doc/texinfo/gmsh.txt -+ COMMAND ${CMAKE_COMMAND} -E remove ${TEX_OBJ} -+ DEPENDS ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.txt -+ ${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.pdf -+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -+endif() -+ -+if(MAKEINFO OR TEXI2PDF) -+ add_custom_target(clean_doc COMMAND ${CMAKE_COMMAND} -E remove ${TEX_OBJ}) -+endif() -+ -+if(APPLE AND ENABLE_BUILD_LIB) -+ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_framework.plist F0) -+ string(REPLACE GMSH_VERSION "${GMSH_VERSION}" F1 "${F0}") -+ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Info_framework.plist "${F1}") -+ set(LIBNAME $) -+ add_custom_target(framework DEPENDS lib -+ COMMAND ${CMAKE_COMMAND} -E remove_directory gmsh.framework -+ COMMAND ${CMAKE_COMMAND} -E make_directory gmsh.framework/Headers -+ COMMAND ${CMAKE_COMMAND} -E make_directory gmsh.framework/Resources -+ COMMAND ${CMAKE_COMMAND} -E copy ${LIBNAME} gmsh.framework/gmsh -+ COMMAND ${CMAKE_COMMAND} -E copy Info_framework.plist -+ gmsh.framework/Resources/Info.plist -+ COMMAND ${CMAKE_COMMAND} -E create_symlink . gmsh.framework/Headers/gmsh -+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) -+ foreach(FILE ${GMSH_API}) -+ add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy -+ ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/ -+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -+ endforeach() -+ if(ENABLE_PRIVATE_API) -+ foreach(FILE ${GMSH_PRIVATE_API}) -+ add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy -+ ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/ -+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -+ endforeach() -+ if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen -+ add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -+ -E copy_directory contrib/eigen/Eigen -+ ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/Eigen -+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -+ endif() -+ endif() -+endif() -+ -+set(CPACK_PACKAGE_VENDOR "Christophe Geuzaine and Jean-Francois Remacle") -+set(CPACK_PACKAGE_VERSION_MAJOR ${GMSH_MAJOR_VERSION}) -+set(CPACK_PACKAGE_VERSION_MINOR ${GMSH_MINOR_VERSION}) -+set(CPACK_PACKAGE_VERSION_PATCH ${GMSH_PATCH_VERSION}) -+set(CPACK_PACKAGE_DESCRIPTION_FILE ${WELCOME_FILE}) -+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY -+ "3D finite element mesh generator with built-in CAD engine and post-processor") -+if(GMSH_EXTRA_VERSION MATCHES "-git.*") # so that we'll overwrite the archives -+ set(CPACK_PACKAGE_FILE_NAME gmsh${GMSH_EXTRA_VERSION_ORIG}-git-${GMSH_OS}) -+ set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh${GMSH_EXTRA_VERSION_ORIG}-git-source) -+else() -+ set(CPACK_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-${GMSH_OS}) -+ set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-source) -+endif() -+set(CPACK_PACKAGE_INSTALL_DIRECTORY "gmsh") -+set(CPACK_RESOURCE_FILE_LICENSE ${LICENSE_FILE}) -+set(CPACK_RESOURCE_FILE_README ${WELCOME_FILE}) -+set(CPACK_RESOURCE_FILE_WELCOME ${WELCOME_FILE}) -+set(CPACK_PACKAGE_EXECUTABLE "gmsh") -+if(ENABLE_PACKAGE_STRIP) -+ set(CPACK_STRIP_FILES TRUE) -+else() -+ set(CPACK_STRIP_FILES FALSE) -+endif() -+set(CPACK_SOURCE_GENERATOR TGZ) -+set(CPACK_SOURCE_IGNORE_FILES "${CMAKE_CURRENT_BINARY_DIR}" "/CVS/" "/.svn" "/.git" -+ "~$" "DS_Store$" "GmshConfig.h$" "GmshVersion.h$" "/benchmarks/" "/tmp/" -+ "/bin/" "/lib/" "/nightly/" "GPATH" "GRTAGS" "GSYMS" "GTAGS" "/HTML/" -+ "/contrib/3M/" "/contrib/Parasolid/") -+ -+if(UNIX) -+ # make sure we remove previous installs before doing the next one (on Mac for -+ # example "make package; make package_source" would lead to huge file lists -+ # getting generated due to the 'Applications' symlink in the bundle) -+ set(CPACK_INSTALL_COMMANDS "rm -rf ${CMAKE_CURRENT_BINARY_DIR}/_CPack_Packages") -+endif() -+ -+if(APPLE AND ENABLE_OS_SPECIFIC_INSTALL AND HAVE_FLTK) -+ set(CPACK_GENERATOR Bundle) -+ set(CPACK_BUNDLE_NAME Gmsh) -+ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_app.plist F0) -+ string(REPLACE GMSH_VERSION "${GMSH_VERSION}" F1 "${F0}") -+ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Info.plist "${F1}") -+ set(CPACK_BUNDLE_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist) -+ set(CPACK_BUNDLE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/MacIcons.icns) -+ if(PACKAGER STREQUAL "geuzaine") -+ # automatic codesigning of the .app -+ set(CPACK_BUNDLE_APPLE_CERT_APP "Developer ID Application: Christophe Geuzaine") -+ # enable hardened runtime (necessary for notarization and app store) -+ set(CPACK_BUNDLE_APPLE_CODESIGN_PARAMETER "--deep --force --options runtime") -+ endif() -+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/MacIconsGeo.icns DESTINATION . -+ RENAME GmshGeo.icns) -+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/MacIconsMsh.icns DESTINATION . -+ RENAME GmshMsh.icns) -+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/MacIconsSol.icns DESTINATION . -+ RENAME GmshSol.icns) -+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/MacIconsPos.icns DESTINATION . -+ RENAME GmshPos.icns) -+ set(CPACK_PACKAGE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk/MacIcons.icns) -+elseif(WIN32) -+ set(CPACK_GENERATOR ZIP) -+else() -+ set(CPACK_GENERATOR TGZ) -+endif() -+ -+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/utils/wrappers/gmshpy AND -+ ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON AND HAVE_PYTHON) -+ add_subdirectory(utils/wrappers/gmshpy) -+endif() -+ -+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/utils/wrappers/java AND -+ ENABLE_PRIVATE_API AND ENABLE_WRAP_JAVA) -+ add_subdirectory(utils/wrappers/java) -+endif() -+ -+include(CPack) -+ -+macro(filter_tests IN OUT) -+ unset(${OUT}) -+ foreach(FILE ${IN}) -+ unset(BAD1) -+ unset(BAD2) -+ unset(BAD3) -+ # OpenCASCADE -+ if(NOT HAVE_OCC AND NOT BAD1 AND NOT BAD2 AND NOT BAD3) -+ file(STRINGS ${FILE} BAD1 REGEX "^SetFactory.*OpenCASCADE.*") -+ file(STRINGS ${FILE} BAD2 REGEX ".*occ\\.synchronize.*") -+ file(STRINGS ${FILE} BAD3 REGEX ".*occ::synchronize.*") -+ endif() -+ # Metis -+ if(NOT HAVE_METIS AND NOT BAD1 AND NOT BAD2 AND NOT BAD3) -+ file(STRINGS ${FILE} BAD1 REGEX ".*PartitionMesh.*") -+ file(STRINGS ${FILE} BAD2 REGEX ".*mesh\\.partition.*") -+ file(STRINGS ${FILE} BAD3 REGEX ".*mesh::partition.*") -+ endif() -+ if(BAD1 OR BAD2 OR BAD3) -+ message("Skipping test " ${FILE}) -+ else() -+ list(APPEND ${OUT} ${FILE}) -+ endif() -+ endforeach() -+endmacro() -+ -+if(ENABLE_TESTS AND NOT DISABLE_GMSH_TESTS) -+ # disabling tests is useful when including this CMakeLists in an external project -+ include(CTest) -+ file(GLOB_RECURSE ALLFILES -+ tutorials/*.geo examples/*.geo benchmarks/?d/*.geo benchmarks/extrude/*.geo -+ benchmarks/occ/*.geo) -+ filter_tests("${ALLFILES}" TESTFILES) -+ foreach(TESTFILE ${TESTFILES}) -+ # use relative path for Cygwin/MinGW (the pure win exe built with the MinGW -+ # compilers does not understand a full Cygwin-style path) -+ FILE(RELATIVE_PATH TEST ${CMAKE_CURRENT_BINARY_DIR} ${TESTFILE}) -+ add_test(${TEST} ./gmsh ${TEST} -3 -nopopup -o ./tmp.msh) -+ endforeach() -+ # test c++ api tutorials with dynamic builds -+ if(ENABLE_BUILD_DYNAMIC) -+ file(GLOB_RECURSE ALLFILES tutorials/c++/*.cpp tutorials/c/*.c) -+ filter_tests("${ALLFILES}" TESTFILES) -+ foreach(TESTFILE ${TESTFILES}) -+ get_filename_component(TEST ${TESTFILE} NAME) -+ string(REPLACE "\." "_" TEST ${TEST}) -+ add_executable(${TEST} WIN32 ${TESTFILE}) -+ target_link_libraries(${TEST} shared) -+ if(WIN32 AND NOT MSVC) -+ set(FLAGS "-static") -+ if(HAVE_FLTK) -+ set(FLAGS "${FLAGS} -mwindows") -+ else() -+ set(FLAGS "${FLAGS} -mconsole") -+ endif() -+ set_target_properties(${TEST} PROPERTIES LINK_FLAGS "${FLAGS}") -+ endif() -+ add_test(${TEST} ${TEST} -nopopup) -+ endforeach() -+ endif() -+ # enable this once we have worked out the path issues on the build machines -+ if(0 AND ENABLE_BUILD_DYNAMIC) -+ find_package(PythonInterp) -+ if(PYTHONINTERP_FOUND) -+ file(GLOB_RECURSE ALLFILES tutorials/python/*.py examples/api/*.py) -+ filter_tests("${ALLFILES}" TESTFILES) -+ foreach(TESTFILE ${TESTFILES}) -+ get_filename_component(TEST ${TESTFILE} NAME) -+ string(REPLACE "\." "_" TEST ${TEST}) -+ add_test(NAME ${TEST} COMMAND ${PYTHON_EXECUTABLE} ${TESTFILE} -nopopup) -+ set_property(TEST ${TEST} APPEND PROPERTY ENVIRONMENT -+ "PYTHONPATH=${CMAKE_SOURCE_DIR}/api") -+ set_property(TEST ${TEST} APPEND PROPERTY ENVIRONMENT -+ "LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}") -+ endforeach() -+ endif() -+ endif() -+endif() -+ -+message(STATUS "") -+message(STATUS "Gmsh ${GMSH_VERSION} has been configured for ${GMSH_OS}") -+message(STATUS "") -+message(STATUS " * Build options:" ${GMSH_CONFIG_OPTIONS}) -+message(STATUS " * Build type: " ${CMAKE_BUILD_TYPE}) -+message(STATUS " * C compiler: " ${CMAKE_C_COMPILER}) -+message(STATUS " * C++ compiler: " ${CMAKE_CXX_COMPILER}) -+message(STATUS " * Install prefix: " ${CMAKE_INSTALL_PREFIX}) -+message(STATUS "") -+ -+mark_as_advanced(ANN_INC ANN_LIB CAIRO_LIB CAIRO_INC CGNS_INC GMM_INC -+ GMP_INC GMP_LIB MMG_INC MMG_LIB HDF5_LIB -+ MED_LIB OCC_INC SZ_LIB -+ PETSC_LIBS SLEPC_INC SLEPC_INC2 SLEPC_LIB -+ BISON FLEX MAKEINFO TEXI2PDF FLTK_CONFIG_SCRIPT -+ GMSH_EXTERNAL_INCLUDE_DIRS GMSH_EXTERNAL_LIBRARIES) -diff -rupN --no-dereference gmsh-4.10.0-source/src/common/GmshMessage.cpp gmsh-4.10.0-source-new/src/common/GmshMessage.cpp ---- gmsh-4.10.0-source/src/common/GmshMessage.cpp 2022-04-25 15:27:25.000000000 +0200 -+++ gmsh-4.10.0-source-new/src/common/GmshMessage.cpp 2022-04-26 07:50:49.801008751 +0200 +diff -rupN --no-dereference gmsh-4.10.1-source/src/common/GmshMessage.cpp gmsh-4.10.1-source-new/src/common/GmshMessage.cpp +--- gmsh-4.10.1-source/src/common/GmshMessage.cpp 2022-04-26 17:50:41.000000000 +0200 ++++ gmsh-4.10.1-source-new/src/common/GmshMessage.cpp 2022-05-03 08:34:44.655577156 +0200 @@ -169,14 +169,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; @@ -2253,1696 +42,3 @@ diff -rupN --no-dereference gmsh-4.10.0-source/src/common/GmshMessage.cpp gmsh-4 if(_locale) { // make sure to use the "C" locale; in particular this ensures that we will // use a dot for for the decimal separator when writing ASCII mesh files -diff -rupN --no-dereference gmsh-4.10.0-source/src/common/GmshMessage.cpp.orig gmsh-4.10.0-source-new/src/common/GmshMessage.cpp.orig ---- gmsh-4.10.0-source/src/common/GmshMessage.cpp.orig 1970-01-01 01:00:00.000000000 +0100 -+++ gmsh-4.10.0-source-new/src/common/GmshMessage.cpp.orig 2022-04-25 15:27:25.000000000 +0200 -@@ -0,0 +1,1689 @@ -+// Gmsh - Copyright (C) 1997-2022 C. Geuzaine, J.-F. Remacle -+// -+// See the LICENSE.txt file in the Gmsh root directory for license information. -+// Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. -+ -+#include "GmshConfig.h" -+ -+#if defined(HAVE_MPI) -+#include -+#endif -+ -+#if !defined(WIN32) || defined(__CYGWIN__) -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "GmshMessage.h" -+#include "GmshSocket.h" -+#include "GmshGlobal.h" -+#include "GModel.h" -+#include "Options.h" -+#include "Context.h" -+#include "OpenFile.h" -+#include "StringUtils.h" -+#include "OS.h" -+ -+#if defined(HAVE_ONELAB) -+#include "onelab.h" -+#include "onelabUtils.h" -+#endif -+ -+#include "gmshLocalNetworkClient.h" -+ -+#if defined(HAVE_PETSC) -+#include -+#endif -+ -+#if defined(HAVE_SLEPC) -+#include -+#endif -+ -+#if defined(HAVE_FLTK) -+#include -+#include "FlGui.h" -+#include "extraDialogs.h" -+#endif -+ -+#if defined(_OPENMP) -+#include -+#endif -+ -+int Msg::_commRank = 0; -+int Msg::_commSize = 1; -+int Msg::_verbosity = 5; -+int Msg::_progressMeterStep = 10; -+std::atomic Msg::_progressMeterCurrent(-1); -+int Msg::_progressMeterTotal = 0; -+std::map Msg::_timers; -+bool Msg::_infoCpu = false; -+bool Msg::_infoMem = false; -+double Msg::_startTime = 0.; -+int Msg::_warningCount = 0; -+int Msg::_errorCount = 0; -+int Msg::_atLeastOneErrorInRun = 0; -+std::string Msg::_firstWarning; -+std::string Msg::_firstError; -+std::string Msg::_lastError; -+GmshMessage *Msg::_callback = nullptr; -+std::vector Msg::_commandLineArgs; -+std::string Msg::_launchDate; -+std::map > Msg::_commandLineNumbers; -+std::map Msg::_commandLineStrings; -+GmshClient *Msg::_client = nullptr; -+std::string Msg::_execName; -+#if defined(HAVE_ONELAB) -+onelab::client *Msg::_onelabClient = nullptr; -+onelab::server *onelab::server::_server = nullptr; -+#endif -+std::string Msg::_logFileName; -+FILE *Msg::_logFile = nullptr; -+ -+#if defined(_MSC_VER) && (_MSC_VER >= 1310) //NET 2003 -+#define vsnprintf _vsnprintf -+#else -+#if defined(HAVE_NO_VSNPRINTF) -+static int vsnprintf(char *str, size_t size, const char *fmt, va_list ap) -+{ -+ if (strlen(fmt) > size - 1) { // just copy the format -+ strncpy(str, fmt, size - 1); -+ str[size - 1] = '\0'; -+ return size; -+ } -+ return vsprintf(str, fmt, ap); -+} -+#endif -+#endif -+ -+static void addGmshPathToEnvironmentVar(const std::string &name) -+{ -+ std::string gmshPath = SplitFileName(CTX::instance()->exeFileName)[0]; -+ if(gmshPath.size()){ -+ std::string tmp = GetEnvironmentVar(name); -+ if(tmp.find(gmshPath) != std::string::npos) return; // already there -+ std::string path; -+ if(tmp.empty()) { -+ path = gmshPath; -+ } -+ else { -+#if defined(WIN32) -+ path = tmp + ";" + gmshPath; -+#else -+ path = tmp + ":" + gmshPath; -+#endif -+ } -+ SetEnvironmentVar(name, path); -+ } -+} -+ -+void Msg::Initialize(int argc, char **argv) -+{ -+ _startTime = TimeOfDay(); -+#if defined(HAVE_MPI) -+ int flag; -+ MPI_Initialized(&flag); -+ if(!flag) MPI_Init(&argc, &argv); -+ MPI_Comm_rank(MPI_COMM_WORLD, &_commRank); -+ MPI_Comm_size(MPI_COMM_WORLD, &_commSize); -+ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); -+#endif -+#if defined(HAVE_PETSC) -+ int sargc = 0; -+ char **sargv = new char*[argc + 1]; -+ // prune argv from gmsh-specific options that make PETSc verbose -+ for(int i = 0; i < argc; i++){ -+ std::string val(argv[i]); -+ if(val != "-info" && val != "-help" && val != "-version" && val != "-v") -+ sargv[sargc++] = argv[i]; -+ } -+ sargv[sargc] = nullptr; -+ PetscInitialize(&sargc, &sargv, PETSC_NULL, PETSC_NULL); -+ PetscPopSignalHandler(); -+#if defined(HAVE_SLEPC) -+ SlepcInitialize(&sargc, &sargv, PETSC_NULL, PETSC_NULL); -+#endif -+ delete [] sargv; -+#endif -+ time_t now; -+ time(&now); -+ _launchDate = ctime(&now); -+ _launchDate.resize(_launchDate.size() - 1); -+ -+ bool _env = true, _locale = true; -+ _commandLineArgs.resize(argc); -+ for(int i = 0; i < argc; i++) { -+ _commandLineArgs[i] = argv[i]; -+ if(_commandLineArgs[i] == "-noenv") -+ _env = false; -+ else if(_commandLineArgs[i] == "-nolocale") -+ _locale = false; -+ } -+ -+ CTX::instance()->exeFileName = GetExecutableFileName(); -+ if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) -+ CTX::instance()->exeFileName = _commandLineArgs[0]; -+ -+ if(_env) { -+ // add the directory where the binary is installed to the path where Python -+ // looks for modules, and to the path for executables (this allows us to -+ // find the onelab.py module or subclients automatically) -+ addGmshPathToEnvironmentVar("PYTHONPATH"); -+ addGmshPathToEnvironmentVar("PATH"); -+ } -+ -+ if(_locale) { -+ // make sure to use the "C" locale; in particular this ensures that we will -+ // use a dot for for the decimal separator when writing ASCII mesh files -+ std::setlocale(LC_ALL, "C.UTF-8"); -+ std::setlocale(LC_NUMERIC, "C"); -+ } -+ -+ InitializeOnelab("Gmsh"); -+ -+#if defined(_OPENMP) -+ // this is deprecated -+ //omp_set_nested(true); -+#endif -+} -+ -+void Msg::Finalize() -+{ -+ // close log file -+ if(_logFile){ -+ fclose(_logFile); -+ _logFile = nullptr; -+ } -+ -+#if defined(HAVE_SLEPC) -+ SlepcFinalize(); -+#endif -+#if defined(HAVE_PETSC) -+ // this often crashes when called multiple times -+ //PetscFinalize(); -+#endif -+#if defined(HAVE_MPI) -+ int finalized; // Some PETSc versions call MPI_FINALIZE -+ MPI_Finalized(&finalized); -+ if (!finalized) -+ MPI_Finalize(); -+#endif -+ FinalizeOnelab(); -+} -+ -+int Msg::GetCommRank() -+{ -+ return _commRank; -+} -+ -+int Msg::GetCommSize() -+{ -+ return _commSize; -+} -+ -+void Msg::SetCommRank(int val) -+{ -+ _commRank = val; -+} -+ -+void Msg::SetCommSize(int val) -+{ -+ _commSize = val; -+} -+ -+void Msg::SetCallback(GmshMessage *callback) -+{ -+ _callback = callback; -+} -+ -+GmshMessage *Msg::GetCallback() -+{ -+ return _callback; -+} -+ -+void Msg::SetVerbosity(int val) -+{ -+ _verbosity = val; -+} -+ -+int Msg::GetVerbosity() -+{ -+ return _verbosity; -+} -+ -+void Msg::SetLogFile(const std::string &name) -+{ -+ _logFileName = name; -+ if(_logFile) fclose(_logFile); -+ if(name.size()){ -+ _logFile = Fopen(name.c_str(), "w"); -+ if(!_logFile) -+ Msg::Error("Could not open file '%s'", name.c_str()); -+ } -+ else -+ _logFile = nullptr; -+} -+ -+std::string Msg::GetLaunchDate() -+{ -+ return _launchDate; -+} -+ -+std::vector &Msg::GetCommandLineArgs() -+{ -+ return _commandLineArgs; -+} -+ -+std::string Msg::GetCommandLineFull() -+{ -+ std::string tmp; -+ for(std::size_t i = 0; i < _commandLineArgs.size(); i++){ -+ if(i) tmp += " "; -+ tmp += _commandLineArgs[i]; -+ } -+ return tmp; -+} -+ -+std::map > &Msg::GetCommandLineNumbers() -+{ -+ return _commandLineNumbers; -+} -+ -+std::map &Msg::GetCommandLineStrings() -+{ -+ return _commandLineStrings; -+} -+ -+void Msg::SetProgressMeterStep(int step) -+{ -+ _progressMeterStep = step; -+} -+ -+int Msg::GetProgressMeterStep() -+{ -+ return _progressMeterStep; -+} -+ -+void Msg::StartProgressMeter(int ntotal) -+{ -+ _progressMeterCurrent = 0; -+ _progressMeterTotal = ntotal; -+} -+ -+void Msg::StopProgressMeter() -+{ -+ _progressMeterCurrent = -1; -+ _progressMeterTotal = 0; -+#if defined(HAVE_FLTK) -+ if(FlGui::available()){ -+ FlGui::instance()->setProgress("", 0, 0, 1); -+ FlGui::check(true); -+ } -+#endif -+} -+ -+void Msg::SetInfoCpu(bool val) -+{ -+ _infoCpu = val; -+} -+ -+void Msg::SetInfoMem(bool val) -+{ -+ _infoMem = val; -+} -+ -+double &Msg::Timer(const std::string &str) { return _timers[str]; } -+ -+int Msg::GetWarningCount() -+{ -+ return _warningCount; -+} -+ -+int Msg::GetErrorCount() -+{ -+ return _errorCount; -+} -+ -+std::string Msg::GetFirstWarning() -+{ -+ return _firstWarning; -+} -+ -+std::string Msg::GetFirstError() -+{ -+ return _firstError; -+} -+ -+std::string Msg::GetLastError() -+{ -+ return _lastError; -+} -+ -+void Msg::SetExecutableName(const std::string &name) -+{ -+ _execName.assign(name); -+} -+ -+std::string Msg::GetExecutableName() -+{ -+ return _execName; -+} -+ -+#if defined(HAVE_ONELAB) -+onelab::client *Msg::GetOnelabClient() -+{ -+ return _onelabClient; -+} -+#endif -+ -+void Msg::Exit(int level) -+{ -+ Finalize(); -+#if defined(HAVE_MPI) -+ if(level) MPI_Abort(MPI_COMM_WORLD, level); -+#endif -+ exit(level ? level : _atLeastOneErrorInRun); -+} -+ -+static int streamIsFile(FILE *stream) -+{ -+ // the given stream is definitely not interactive if it is a regular file -+ struct stat stream_stat; -+ if(fstat(fileno(stream), &stream_stat) == 0){ -+ if(stream_stat.st_mode & S_IFREG) return 1; -+ } -+ return 0; -+} -+ -+static int streamIsVT100(FILE *stream) -+{ -+ // on unix directly check if the file descriptor refers to a terminal -+#if !defined(WIN32) || defined(__CYGWIN__) -+ return isatty(fileno(stream)); -+#endif -+ -+ // otherwise try to detect some known cases: -+ -+ // if running inside emacs the terminal is not VT100 -+ const char* emacs = getenv("EMACS"); -+ if(emacs && *emacs == 't') return 0; -+ -+ // list of known terminal names (from cmake) -+ static const char* names[] = -+ {"Eterm", "ansi", "color-xterm", "con132x25", "con132x30", "con132x43", -+ "con132x60", "con80x25", "con80x28", "con80x30", "con80x43", "con80x50", -+ "con80x60", "cons25", "console", "cygwin", "dtterm", "eterm-color", "gnome", -+ "gnome-256color", "konsole", "konsole-256color", "kterm", "linux", "msys", -+ "linux-c", "mach-color", "mlterm", "putty", "rxvt", "rxvt-256color", -+ "rxvt-cygwin", "rxvt-cygwin-native", "rxvt-unicode", "rxvt-unicode-256color", -+ "screen", "screen-256color", "screen-256color-bce", "screen-bce", "screen-w", -+ "screen.linux", "vt100", "xterm", "xterm-16color", "xterm-256color", -+ "xterm-88color", "xterm-color", "xterm-debian", nullptr}; -+ const char** t = nullptr; -+ const char* term = getenv("TERM"); -+ if(term){ -+ for(t = names; *t && strcmp(term, *t) != 0; ++t) {} -+ } -+ if(!(t && *t)) return 0; -+ return 1; -+} -+ -+std::string Msg::PrintResources(bool printDate, bool printWallTime, -+ bool printCpu, bool printMem) -+{ -+ long mem = GetMemoryUsage(); -+ -+ std::string pdate = ""; -+ if(printDate){ -+ time_t now; -+ time(&now); -+ pdate = ctime(&now); -+ pdate.resize(pdate.size() - 1); -+ if(printWallTime || printCpu || (printMem && mem)) -+ pdate += ", "; -+ } -+ -+ std::string pwall = ""; -+ if(printWallTime){ -+ char tmp[128]; -+ sprintf(tmp, "Wall %gs", TimeOfDay() - _startTime); -+ pwall = tmp; -+ if(printCpu || (printMem && mem)) -+ pwall += ", "; -+ } -+ -+ std::string pcpu = ""; -+ if(printCpu){ -+ char tmp[128]; -+ sprintf(tmp, "CPU %gs", Cpu()); -+ pcpu = tmp; -+ if(printMem && mem) -+ pcpu += ", "; -+ } -+ -+ std::string pmem = ""; -+ if(mem && printMem){ -+ char tmp[128]; -+ sprintf(tmp, "Mem %gMb", (double)mem / 1024. / 1024.); -+ pmem = tmp; -+ } -+ -+ std::string str; -+ if(pdate.size() || pwall.size() || pcpu.size() || pmem.size()) -+ str += " (From start: " + pdate + pwall + pcpu + pmem + ")"; -+ return str; -+} -+ -+void Msg::Error(const char *fmt, ...) -+{ -+#pragma omp critical(MsgError) -+ { -+ _errorCount++; -+ _atLeastOneErrorInRun = 1; -+ } -+ char str[5000]; -+ va_list args; -+ va_start(args, fmt); -+ vsnprintf(str, sizeof(str), fmt, args); -+ va_end(args); -+ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; -+ -+#pragma omp critical(MsgError) -+ { -+ if(_firstError.empty()) _firstError = str; -+ _lastError = str; -+ } -+ -+ if(GetVerbosity() >= 1) { -+ if(_logFile) fprintf(_logFile, "Error: %s\n", str); -+ if(_callback) (*_callback)("Error", str); -+ if(_client) _client->Error(str); -+#if defined(HAVE_FLTK) -+ if(FlGui::available()){ -+ std::string tmp = std::string(CTX::instance()->guiColorScheme ? "@B72@." : "@C1@.") -+ + "Error : " + str; -+ FlGui::instance()->addMessage(tmp.c_str()); -+ FlGui::instance()->setLastStatus -+ (CTX::instance()->guiColorScheme ? FL_DARK_RED : FL_RED); -+ FlGui::check(true); -+ } -+#endif -+ if(CTX::instance()->terminal){ -+ const char *c0 = "", *c1 = ""; -+ if(!streamIsFile(stderr) && streamIsVT100(stderr)){ -+ c0 = "\33[1m\33[31m"; c1 = "\33[0m"; // bold red -+ } -+ if(_commSize > 1) -+ fprintf(stderr, "%sError : [rank %3d] %s%s\n", c0, GetCommRank(), str, c1); -+ else -+ fprintf(stderr, "%sError : %s%s\n", c0, str, c1); -+ fflush(stderr); -+ } -+ } -+ -+ if(CTX::instance()->abortOnError == 2) { -+#if defined(HAVE_FLTK) -+ if(FlGui::available()) return; // don't throw if GUI is running -+#endif -+ throw std::runtime_error(_lastError); -+ } -+ else if(CTX::instance()->abortOnError == 3) { -+ throw std::runtime_error(_lastError); -+ } -+ else if(CTX::instance()->abortOnError == 4) { -+ Exit(1); -+ } -+} -+ -+void Msg::Warning(const char *fmt, ...) -+{ -+#pragma omp critical(MsgWarning) -+ { -+ _warningCount++; -+ } -+ -+ if(GetVerbosity() < 2) return; -+ -+ char str[5000]; -+ va_list args; -+ va_start(args, fmt); -+ vsnprintf(str, sizeof(str), fmt, args); -+ va_end(args); -+ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; -+ -+ if(_logFile) fprintf(_logFile, "Warning: %s\n", str); -+ if(_callback) (*_callback)("Warning", str); -+ if(_client) _client->Warning(str); -+ -+#if defined(HAVE_FLTK) -+ if(FlGui::available()){ -+ std::string tmp = std::string(CTX::instance()->guiColorScheme ? "@B152@." : "@C5@.") -+ + "Warning : " + str; -+ FlGui::instance()->addMessage(tmp.c_str()); -+ if(_firstWarning.empty()) _firstWarning = str; -+ FlGui::instance()->setLastStatus(); -+ FlGui::check(true); -+ } -+#endif -+ -+ if(CTX::instance()->terminal){ -+ const char *c0 = "", *c1 = ""; -+ if(!streamIsFile(stderr) && streamIsVT100(stderr)){ -+ c0 = "\33[35m"; c1 = "\33[0m"; // magenta -+ } -+ if(_commSize > 1) -+ fprintf(stderr, "%sWarning : [rank %3d] %s%s\n", c0, GetCommRank(), str, c1); -+ else -+ fprintf(stderr, "%sWarning : %s%s\n", c0, str, c1); -+ fflush(stderr); -+ } -+} -+ -+void Msg::Info(const char *fmt, ...) -+{ -+ if(GetVerbosity() < 4) return; -+ -+ char str[5000]; -+ va_list args; -+ va_start(args, fmt); -+ vsnprintf(str, sizeof(str), fmt, args); -+ va_end(args); -+ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; -+ -+ if(_infoCpu || _infoMem){ -+ std::string res = PrintResources(false, _infoCpu, _infoCpu, _infoMem); -+ strcat(str, res.c_str()); -+ } -+ -+ if(_logFile) fprintf(_logFile, "Info: %s\n", str); -+ if(_callback) (*_callback)("Info", str); -+ if(_client) _client->Info(str); -+ -+#if defined(HAVE_FLTK) -+ if(FlGui::available()){ -+ std::string tmp = std::string("Info : ") + str; -+ FlGui::instance()->addMessage(tmp.c_str()); -+ FlGui::check(true); -+ } -+#endif -+ -+ if(CTX::instance()->terminal){ -+ if(_progressMeterCurrent >= 0 && _progressMeterTotal > 1 && -+ _commSize == 1) { -+ int p = _progressMeterCurrent; -+ fprintf(stdout, "Info : [%3d%%] %s\n", p, str); -+ } -+ else if(_commSize > 1) -+ fprintf(stdout, "Info : [rank %3d] %s\n", GetCommRank(), str); -+ else -+ fprintf(stdout, "Info : %s\n", str); -+ fflush(stdout); -+ } -+} -+ -+void Msg::RequestRender() -+{ -+ if(_callback) (*_callback)("RequestRender", ""); -+} -+ -+void Msg::Direct(const char *fmt, ...) -+{ -+ if(GetVerbosity() < 3) return; -+ -+ char str[5000]; -+ va_list args; -+ va_start(args, fmt); -+ vsnprintf(str, sizeof(str), fmt, args); -+ va_end(args); -+ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; -+ -+ if(_logFile) fprintf(_logFile, "Direct: %s\n", str); -+ if(_callback) (*_callback)("Direct", str); -+ if(_client) _client->Info(str); -+ -+#if defined(HAVE_FLTK) -+ if(FlGui::available()){ -+ std::string tmp = std::string(CTX::instance()->guiColorScheme ? "@B136@." : "@C4@.") -+ + str; -+ FlGui::instance()->addMessage(tmp.c_str()); -+ FlGui::check(true); -+ } -+#endif -+ -+ if(CTX::instance()->terminal){ -+ const char *c0 = "", *c1 = ""; -+ if(!streamIsFile(stdout) && streamIsVT100(stdout)){ -+ c0 = "\33[34m"; c1 = "\33[0m"; // blue -+ } -+ if(_commSize > 1) -+ fprintf(stdout, "%s[rank %3d] %s%s\n", c0, GetCommRank(), str, c1); -+ else -+ fprintf(stdout, "%s%s%s\n", c0, str, c1); -+ fflush(stdout); -+ } -+} -+ -+void Msg::Auto(const char *fmt, ...) -+{ -+ char str[5000]; -+ va_list args; -+ va_start(args, fmt); -+ vsnprintf(str, sizeof(str), fmt, args); -+ va_end(args); -+ if(strstr(str, "Error") || strstr(str, "error") || strstr(str, "ERROR")) -+ Msg::Error("%s", str); -+ else if(strstr(str, "Warning") || strstr(str, "warning") || strstr(str, "WARNING")) -+ Msg::Warning("%s", str); -+ else -+ Msg::Info("%s", str); -+} -+ -+void Msg::StatusBar(bool log, const char *fmt, ...) -+{ -+ if(GetVerbosity() < 4) return; -+ -+ char str[5000]; -+ va_list args; -+ va_start(args, fmt); -+ vsnprintf(str, sizeof(str), fmt, args); -+ va_end(args); -+ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; -+ -+ if(_infoCpu || _infoMem){ -+ std::string res = PrintResources(false, _infoCpu, _infoCpu, _infoMem); -+ strcat(str, res.c_str()); -+ } -+ -+ if(_logFile) fprintf(_logFile, "Info: %s\n", str); -+ if(_callback && log) (*_callback)("Info", str); -+ if(_client && log) _client->Info(str); -+ -+#if defined(HAVE_FLTK) -+ if(FlGui::available()){ -+ if(!log || GetVerbosity() > 4) -+ FlGui::instance()->setStatus(str); -+ if(log){ -+ std::string tmp = std::string("Info : ") + str; -+ FlGui::instance()->addMessage(tmp.c_str()); -+ FlGui::check(true); -+ } -+ } -+#endif -+ -+ if(log && CTX::instance()->terminal){ -+ if(_commSize > 1) -+ fprintf(stdout, "Info : [rank %3d] %s\n", GetCommRank(), str); -+ else -+ fprintf(stdout, "Info : %s\n", str); -+ fflush(stdout); -+ } -+} -+ -+void Msg::StatusGl(const char *fmt, ...) -+{ -+#if defined(HAVE_FLTK) -+ if(GetCommRank()) return; -+ char str[5000]; -+ va_list args; -+ va_start(args, fmt); -+ vsnprintf(str, sizeof(str), fmt, args); -+ va_end(args); -+ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; -+ -+ if(FlGui::available()) -+ FlGui::instance()->setStatus(str, true); -+#endif -+} -+ -+void Msg::SetWindowTitle(const std::string &title) -+{ -+#if defined(HAVE_FLTK) -+ if(FlGui::available()){ -+ FlGui::instance()->setGraphicTitle(title); -+ } -+#endif -+} -+ -+void Msg::Debug(const char *fmt, ...) -+{ -+ if(GetVerbosity() < 99) return; -+ -+ char str[5000]; -+ va_list args; -+ va_start(args, fmt); -+ vsnprintf(str, sizeof(str), fmt, args); -+ va_end(args); -+ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; -+ -+ if(_logFile) fprintf(_logFile, "Debug: %s\n", str); -+ if(_callback) (*_callback)("Debug", str); -+ if(_client) _client->Info(str); -+ -+#if defined(HAVE_FLTK) -+ if(FlGui::available()){ -+ std::string tmp = std::string("Debug : ") + str; -+ FlGui::instance()->addMessage(tmp.c_str()); -+ } -+#endif -+ -+ if(CTX::instance()->terminal){ -+ if(_commSize > 1) -+ fprintf(stdout, "Debug : [rank %3d] %s\n", GetCommRank(), str); -+ else -+ fprintf(stdout, "Debug : %s\n", str); -+ fflush(stdout); -+ } -+} -+ -+void Msg::ProgressMeter(int n, bool log, const char *fmt, ...) -+{ -+ if(GetCommRank() || GetVerbosity() < 4) return; -+ if(_progressMeterStep <= 0 || _progressMeterStep >= 100) return; -+ if(_progressMeterTotal <= 0) return; -+ -+ int N = _progressMeterTotal; -+ double percent = 100. * (double)n / (double)N; -+ -+ if(percent >= _progressMeterCurrent || n > N - 1){ -+ int p = _progressMeterCurrent; -+ while(p < percent) p += _progressMeterStep; -+ if(p >= 100) p = 100; -+ -+ _progressMeterCurrent = p; -+ -+ // TODO With C++11 use std::string (contiguous layout) and avoid all these C -+ // problems -+ // str2 needs to have at least 5018 bytes or buffer overflow will occur -+ char str[5000], str2[5100]; -+ va_list args; -+ va_start(args, fmt); -+ vsnprintf(str, sizeof(str), fmt, args); -+ va_end(args); -+ int l = strlen(str); if(str[l - 1] == '\n') str[l - 1] = '\0'; -+ sprintf(str2, "Info : [%3d%%] %s", p, str); -+ -+ if(_client) _client->Progress(str2); -+ -+#if defined(HAVE_FLTK) -+ if(FlGui::available() && GetVerbosity() > 4){ -+ FlGui::instance()->setProgress(str, (n > N - 1) ? 0 : n, 0, N); -+ FlGui::check(true); -+ } -+#endif -+ if(_logFile) fprintf(_logFile, "Progress: %s\n", str); -+ if(_callback) (*_callback)("Progress", str); -+ if(!streamIsFile(stdout) && log && CTX::instance()->terminal){ -+ fprintf(stdout, "%s \r", -+ (n > N - 1) ? "" : str2); -+ fflush(stdout); -+ } -+ } -+} -+ -+void Msg::PrintTimers() -+{ -+ // do a single stdio call! -+ std::string str; -+ for(auto it = _timers.begin(); -+ it != _timers.end(); it++){ -+ if(it != _timers.begin()) str += ", "; -+ char tmp[256]; -+ sprintf(tmp, "%s = %gs ", it->first.c_str(), it->second); -+ str += std::string(tmp); -+ } -+ if(!str.size()) return; -+ -+ if(CTX::instance()->terminal){ -+ if(_commSize > 1) -+ fprintf(stdout, "Timers : [rank %3d] %s\n", GetCommRank(), str.c_str()); -+ else -+ fprintf(stdout, "Timers : %s\n", str.c_str()); -+ fflush(stdout); -+ } -+} -+ -+void Msg::ResetErrorCounter() -+{ -+ _warningCount = 0; _errorCount = 0; -+ _firstWarning.clear(); _firstError.clear(); _lastError.clear(); -+#if defined(HAVE_FLTK) -+ if(FlGui::available()) FlGui::instance()->setLastStatus(); -+#endif -+} -+ -+void Msg::PrintErrorCounter(const char *title) -+{ -+ if(GetCommRank() || GetVerbosity() < 1) return; -+ if(!GetWarningCount() && !GetErrorCount()) return; -+ -+ std::string prefix = GetErrorCount() ? "Error : " : "Warning : "; -+ std::string help("Check the full log for details"); -+ std::string line(std::max(strlen(title), help.size()), '-'); -+ char warn[128], err[128]; -+ sprintf(warn, "%5d warning%s", GetWarningCount(), GetWarningCount() == 1 ? "" : "s"); -+ sprintf(err, "%5d error%s", GetErrorCount(), GetErrorCount() == 1 ? "" : "s"); -+ -+#if defined(HAVE_FLTK) -+ if(FlGui::available()){ -+ std::string col = GetErrorCount() ? -+ std::string(CTX::instance()->guiColorScheme ? "@B72@." : "@C1@.") : -+ std::string(CTX::instance()->guiColorScheme ? "@B152@." : "@C5@."); -+ FlGui::instance()->addMessage((col + prefix + line).c_str()); -+ FlGui::instance()->addMessage((col + prefix + title).c_str()); -+ FlGui::instance()->addMessage((col + prefix + warn).c_str()); -+ FlGui::instance()->addMessage((col + prefix + err).c_str()); -+ FlGui::instance()->addMessage((col + prefix + help).c_str()); -+ FlGui::instance()->addMessage((col + prefix + line).c_str()); -+ if(GetErrorCount()) fl_beep(); -+ } -+#endif -+ -+ if(CTX::instance()->terminal){ -+ const char *c0 = "", *c1 = ""; -+ if(!streamIsFile(stderr) && streamIsVT100(stderr)){ -+ c0 = GetErrorCount() ? "\33[1m\33[31m" : "\33[35m"; // bold red or magenta -+ c1 = "\33[0m"; -+ } -+ fprintf(stderr, "%s%s\n%s\n%s\n%s\n%s\n%s%s\n", c0, (prefix + line).c_str(), -+ (prefix + title).c_str(), (prefix + warn).c_str(), -+ (prefix + err).c_str(), (prefix + help).c_str(), -+ (prefix + line).c_str(), c1); -+ fflush(stderr); -+ } -+} -+ -+double Msg::GetValue(const char *text, double defaultval) -+{ -+ // if a callback is given let's assume we don't want to be bothered -+ // with interactive stuff -+ if(CTX::instance()->noPopup || _callback) return defaultval; -+ -+#if defined(HAVE_FLTK) -+ if(FlGui::available()){ -+ char defaultstr[256]; -+ sprintf(defaultstr, "%.16g", defaultval); -+ const char *ret = fl_input(text, defaultstr, ""); -+ if(!ret) -+ return defaultval; -+ else -+ return atof(ret); -+ } -+#endif -+ -+ printf("%s (default=%.16g): ", text, defaultval); -+ char str[256]; -+ char *ret = fgets(str, sizeof(str), stdin); -+ if(!ret || !strlen(str) || !strcmp(str, "\n")) -+ return defaultval; -+ else -+ return atof(str); -+} -+ -+std::string Msg::GetString(const char *text, const std::string &defaultval) -+{ -+ // if a callback is given let's assume we don't want to be bothered -+ // with interactive stuff -+ if(CTX::instance()->noPopup || _callback) return defaultval; -+ -+#if defined(HAVE_FLTK) -+ if(FlGui::available()){ -+ const char *ret = fl_input(text, defaultval.c_str(), ""); -+ if(!ret) -+ return defaultval; -+ else -+ return std::string(ret); -+ } -+#endif -+ -+ printf("%s (default=%s): ", text, defaultval.c_str()); -+ char str[256]; -+ char *ret = fgets(str, sizeof(str), stdin); -+ if(!ret || !strlen(str) || !strcmp(str, "\n")) -+ return defaultval; -+ else -+ return std::string(str); -+} -+ -+int Msg::GetAnswer(const char *question, int defaultval, const char *zero, -+ const char *one, const char *two) -+{ -+ // if a callback is given let's assume we don't want to be bothered -+ // with interactive stuff -+ if(CTX::instance()->noPopup || _callback) return defaultval; -+ -+#if defined(HAVE_FLTK) -+ if(FlGui::available()) -+ return fl_choice(question, zero, one, two, ""); -+#endif -+ -+ if(two) -+ printf("%s\n\n0=[%s] 1=[%s] 2=[%s] (default=%d): ", question, -+ zero, one, two, defaultval); -+ else -+ printf("%s\n\n0=[%s] 1=[%s] (default=%d): ", question, -+ zero, one, defaultval); -+ char str[256]; -+ char *ret = fgets(str, sizeof(str), stdin); -+ if(!ret || !strlen(str) || !strcmp(str, "\n")) -+ return defaultval; -+ else -+ return atoi(ret); -+} -+ -+bool Msg::UseOnelab() -+{ -+#if defined(HAVE_ONELAB) -+ return _onelabClient ? true : false; -+#else -+ return false; -+#endif -+} -+ -+void Msg::SetOnelabNumber(const std::string &name, double val, bool visible, -+ bool persistent, bool readOnly, int changedValue) -+{ -+#if defined(HAVE_ONELAB) -+ if(_onelabClient){ -+ // get if first so we can keep its options -+ std::vector numbers; -+ _onelabClient->get(numbers, name); -+ if(numbers.empty()){ -+ numbers.resize(1); -+ numbers[0].setName(name); -+ } -+ numbers[0].setValue(val); -+ if(!visible) numbers[0].setVisible(false); -+ if(persistent) numbers[0].setAttribute("Persistent", "1"); -+ numbers[0].setReadOnly(readOnly); -+ numbers[0].setChangedValue(changedValue); -+ _onelabClient->set(numbers[0]); -+ } -+#endif -+} -+ -+void Msg::SetOnelabNumber(const std::string &name, const std::vector &val, -+ bool visible) -+{ -+#if defined(HAVE_ONELAB) -+ if(_onelabClient){ -+ onelab::number n(name, val); -+ if(!visible) n.setVisible(false); -+ _onelabClient->set(n); -+ } -+#endif -+} -+ -+void Msg::SetOnelabString(const std::string &name, const std::string &val, -+ bool visible, bool persistent, bool readOnly, -+ int changedValue, const std::string &kind) -+{ -+#if defined(HAVE_ONELAB) -+ if(_onelabClient){ -+ // get if first so we can keep its options -+ std::vector strings; -+ _onelabClient->get(strings, name); -+ if(strings.empty()){ -+ strings.resize(1); -+ strings[0].setName(name); -+ } -+ strings[0].setValue(val); -+ if(!visible) strings[0].setVisible(false); -+ if(persistent) strings[0].setAttribute("Persistent", "1"); -+ strings[0].setReadOnly(readOnly); -+ strings[0].setChangedValue(changedValue); -+ if(kind.size()) strings[0].setKind(kind); -+ _onelabClient->set(strings[0]); -+ } -+#endif -+} -+ -+void Msg::AddOnelabStringChoice(const std::string &name, -+ const std::string &kind, -+ const std::string &value, bool updateValue, -+ bool readOnly, bool visible) -+{ -+#if defined(HAVE_ONELAB) -+ if(_onelabClient){ -+ std::vector choices; -+ std::vector ps; -+ _onelabClient->get(ps, name); -+ if(ps.size()){ -+ choices = ps[0].getChoices(); -+ if(std::find(choices.begin(), choices.end(), value) == choices.end()) -+ choices.push_back(value); -+ if(updateValue) -+ ps[0].setValue(value); -+ } -+ else{ -+ ps.resize(1); -+ ps[0].setName(name); -+ ps[0].setKind(kind); -+ ps[0].setValue(value); -+ choices.push_back(value); -+ } -+ ps[0].setChoices(choices); -+ if(readOnly){ -+ ps[0].setReadOnly(true); -+ ps[0].setAttribute("AutoCheck", "0"); -+ } -+ else{ -+ ps[0].setReadOnly(false); -+ ps[0].setAttribute("AutoCheck", "1"); -+ } -+ ps[0].setVisible(visible); -+ _onelabClient->set(ps[0]); -+ } -+#endif -+} -+ -+double Msg::GetOnelabNumber(const std::string &name, double defaultValue, -+ bool errorIfMissing) -+{ -+#if defined(HAVE_ONELAB) -+ if(_onelabClient){ -+ std::vector numbers; -+ _onelabClient->get(numbers, name); -+ if(numbers.empty()){ -+ if(errorIfMissing) -+ Msg::Error("Unknown ONELAB number parameter '%s'", name.c_str()); -+ return defaultValue; -+ } -+ else -+ return numbers[0].getValue(); -+ } -+#endif -+ if(errorIfMissing) -+ Msg::Error("GetNumber requires a ONELAB client"); -+ return defaultValue; -+} -+ -+std::string Msg::GetOnelabString(const std::string &name, -+ const std::string &defaultValue, -+ bool errorIfMissing) -+{ -+#if defined(HAVE_ONELAB) -+ if(_onelabClient){ -+ std::vector strings; -+ _onelabClient->get(strings, name); -+ if(strings.empty()){ -+ if(errorIfMissing) -+ Msg::Error("Unknown ONELAB string parameter '%s'", name.c_str()); -+ return defaultValue; -+ } -+ else -+ return strings[0].getValue(); -+ } -+#endif -+ if(errorIfMissing) -+ Msg::Error("GetString requires a ONELAB client"); -+ return defaultValue; -+} -+ -+#if defined(HAVE_ONELAB) -+class localGmsh : public onelab::localClient { -+public: -+ localGmsh() : onelab::localClient("Gmsh") {} -+ // redefinition of virtual onelab_client::sendMergeFileRequest -+ void sendMergeFileRequest(const std::string &name) -+ { -+ if(name.find(".geo") != std::string::npos){ -+ MergePostProcessingFile(name, CTX::instance()->solver.autoShowViews, -+ CTX::instance()->solver.autoShowLastStep, true); -+ GModel::current()->setFileName(name); -+ } -+ else if((name.find(".opt") != std::string::npos)){ -+ MergeFile(name); -+ } -+ else if((name.find(".macro") != std::string::npos)){ -+ MergeFile(name); -+ } -+ else -+ MergePostProcessingFile(name, CTX::instance()->solver.autoShowViews, -+ CTX::instance()->solver.autoShowLastStep, true); -+ } -+ void sendInfo(const std::string &msg){ Msg::Info("%s", msg.c_str()); } -+ void sendWarning(const std::string &msg){ Msg::Warning("%s", msg.c_str()); } -+ void sendError(const std::string &msg){ Msg::Error("%s", msg.c_str()); } -+}; -+#endif -+ -+void Msg::InitializeOnelab(const std::string &name, const std::string &sockname) -+{ -+#if defined(HAVE_ONELAB) -+ if(_onelabClient) delete _onelabClient; -+ if(sockname.empty()){ -+ _onelabClient = new localGmsh(); -+ if(name != "Gmsh"){ // load db from file: -+ FILE *fp = Fopen(name.c_str(), "rb"); -+ if(fp){ -+ Msg::Info("Reading ONELAB database '%s'", name.c_str()); -+ _onelabClient->fromFile(fp); -+ fclose(fp); -+ } -+ else -+ Error("Error loading onelab database '%s'", name.c_str()); -+ } -+ } -+ else{ -+ onelab::remoteNetworkClient *c = new onelab::remoteNetworkClient(name, sockname); -+ _onelabClient = c; -+ _client = c->getGmshClient(); -+ -+ SetOnelabNumber(name + "/Use command line", 1, false); -+ SetOnelabString(name + "/File extension", ".geo", false); -+ SetOnelabString(name + "/9CheckCommand", "-", false); -+ SetOnelabString(name + "/9ComputeCommand", "-3", false); -+ -+ std::vector ps; -+ _onelabClient->get(ps, name + "/Action"); -+ if(ps.size()){ -+ //removed message, as terminal is set to 1 when we get here -+ //Info("Performing ONELAB '%s'", ps[0].getValue().c_str()); -+ if(ps[0].getValue() == "initialize") Exit(0); -+ } -+ } -+ -+ // default onelab button mode -+ SetOnelabString("ONELAB/Button", "", false, true); -+#endif -+} -+ -+void Msg::FinalizeOnelab() -+{ -+#if defined(HAVE_ONELAB) -+ // kill any running clients -+ for(auto it = onelab::server::instance()->firstClient(); -+ it != onelab::server::instance()->lastClient(); it++){ -+ (*it)->kill(); -+ } -+ // delete local client -+ if(_onelabClient){ -+ delete _onelabClient; -+ _onelabClient = nullptr; -+ _client = nullptr; -+ } -+#endif -+} -+ -+void Msg::SetOnelabAction(const std::string &action) -+{ -+#if defined(HAVE_ONELAB) -+ if(_onelabClient){ -+ onelab::string o(_onelabClient->getName() + "/Action", action); -+ o.setVisible(false); -+ o.setChangedValue(0); -+ _onelabClient->set(o); -+ } -+#endif -+} -+ -+std::string Msg::GetOnelabAction() -+{ -+#if defined(HAVE_ONELAB) -+ if(_onelabClient){ -+ std::vector ps; -+ _onelabClient->get(ps, _onelabClient->getName() + "/Action"); -+ if(ps.size()) return ps[0].getValue(); -+ } -+#endif -+ return ""; -+} -+ -+void Msg::LoadOnelabClient(const std::string &clientName, const std::string &sockName) -+{ -+#if defined(HAVE_ONELAB) -+ onelab::remoteNetworkClient *client = nullptr; -+ client = new onelab::remoteNetworkClient(clientName, sockName); -+ if(client){ -+ std::string action, cmd; -+ std::vector ps; -+ client->get(ps, clientName + "/Action"); -+ if(ps.size() && ps[0].getValue().size()) -+ action.assign(ps[0].getValue()); -+ //cmd.assign(""); -+ if(!action.compare("compute")){ -+ std::vector ps; -+ client->get(ps,clientName+"/FullCmdLine"); -+ if(ps.size() && ps[0].getValue().size()) -+ cmd.assign(ps[0].getValue()); -+ -+ if(cmd.size()){ -+ Msg::Info("Loader calls <%s>", cmd.c_str()); -+ //client->sendInfo(strcat("Loader calls",cmd.c_str())); -+ std::cout << "Loader calls " << cmd << std::endl; -+ SystemCall(cmd.c_str(), true); //true->blocking -+ } -+ else -+ Msg::Info("No full command line found for <%s>", -+ clientName.c_str()); -+ } -+ Msg::Info("Stopping client <%s>", clientName.c_str()); -+ delete client; -+ } -+ exit(1); -+#endif -+} -+ -+GmshClient *Msg::GetGmshClient() -+{ -+ return _client; -+} -+ -+int Msg::GetNumOnelabClients() -+{ -+#if defined(HAVE_ONELAB) -+ return onelab::server::instance()->getNumClients(); -+#endif -+ return 0; -+} -+ -+#if defined(HAVE_ONELAB) -+static void _setStandardOptions(onelab::parameter *p, -+ std::map > &fopt, -+ std::map > &copt) -+{ -+ // strings -+ if(copt.count("Label")) p->setLabel(copt["Label"][0]); -+ if(copt.count("ShortHelp")) // for backward compatibility -+ p->setLabel(copt["ShortHelp"][0]); -+ if(copt.count("Help")) p->setHelp(copt["Help"][0]); -+ if(copt.count("Highlight")) p->setAttribute("Highlight", copt["Highlight"][0]); -+ if(copt.count("Macro")) p->setAttribute("Macro", copt["Macro"][0]); -+ if(copt.count("GmshOption")) p->setAttribute("GmshOption", copt["GmshOption"][0]); -+ if(copt.count("ServerAction")) p->setAttribute("ServerAction", copt["ServerAction"][0]); -+ if(copt.count("Units")) p->setAttribute("Units", copt["Units"][0]); -+ if(copt.count("AutoCheck")) // for backward compatibility -+ p->setAttribute("AutoCheck", copt["AutoCheck"][0]); -+ -+ // numbers -+ if(fopt.count("Visible")) p->setVisible(fopt["Visible"][0] ? true : false); -+ if(fopt.count("ReadOnly")) p->setReadOnly(fopt["ReadOnly"][0] ? true : false); -+ if(fopt.count("NeverChanged")) p->setNeverChanged(fopt["NeverChanged"][0] ? true : false); -+ if(fopt.count("ChangedValue")) p->setChangedValue(fopt["ChangedValue"][0]); -+ if(fopt.count("ReadOnlyRange")) -+ p->setAttribute("ReadOnlyRange", fopt["ReadOnlyRange"][0] ? "1" : "0"); -+ if(fopt.count("AutoCheck")) -+ p->setAttribute("AutoCheck", fopt["AutoCheck"][0] ? "1" : "0"); -+} -+ -+static void _setOtherAttributes(onelab::parameter *p, -+ std::map > &copt) -+{ -+ for(auto it = copt.begin(); it != copt.end(); it++) -+ if(p->getAttribute(it->first).empty() && -+ it->first.compare("Name") && -+ it->first.compare("Label") && -+ it->first.compare("ShortHelp") && -+ it->first.compare("Help") && -+ it->first.compare("Visible") && -+ it->first.compare("ReadOnly") && -+ it->first.compare("NeverChanged") && -+ it->first.compare("ChangedValue")) // Attribute 'it' was not already set -+ p->setAttribute(it->first, it->second[0]); -+} -+ -+static std::string _getParameterName(const std::string &key, -+ std::map > &copt) -+{ -+ std::string name(key); -+ if(copt.count("Path")){ -+ std::string path = copt["Path"][0]; -+ // if path ends with a number, assume it's for ordering purposes -+ if(path.size() && path[path.size() - 1] >= '0' && path[path.size() - 1] <= '9') -+ name = path + name; -+ else if(path.size() && path[path.size() - 1] == '/') -+ name = path + name; -+ else -+ name = path + "/" + name; -+ } -+ return name; -+} -+#endif -+ -+void Msg::ExchangeOnelabParameter(const std::string &key, -+ std::vector &val, -+ std::map > &fopt, -+ std::map > &copt) -+{ -+#if defined(HAVE_ONELAB) -+ if(!_onelabClient) return; -+ -+ std::string name; -+ if(copt.count("Name")) -+ name = copt["Name"][0]; -+ -+ if(name.empty()){ -+ if(copt.size() || fopt.size()) -+ Msg::Error("From now on you need to use the `Name' attribute to create a " -+ "ONELAB parameter: `Name \"%s\"'", -+ _getParameterName(key, copt).c_str()); -+ return; -+ } -+ -+ std::vector ps; -+ _onelabClient->get(ps, name); -+ bool noRange = true, noChoices = true, noLoop = true; -+ bool noGraph = true, noClosed = true; -+ if(ps.size()){ -+ bool useLocalValue = ps[0].getReadOnly(); -+ if(fopt.count("ReadOnly")) useLocalValue = fopt["ReadOnly"][0]; -+ if(useLocalValue) -+ ps[0].setValues(val); -+ else -+ val = ps[0].getValues(); // use value from server -+ // keep track of these attributes, which can be changed server-side (unless -+ // they are not visible or, for the range/choices, when explicitly setting -+ // these attributes as ReadOnly) -+ if(ps[0].getVisible()){ -+ if(!(fopt.count("ReadOnlyRange") && fopt["ReadOnlyRange"][0])){ -+ if(ps[0].getMin() != -onelab::parameter::maxNumber() || -+ ps[0].getMax() != onelab::parameter::maxNumber() || -+ ps[0].getStep() != 0.) noRange = false; -+ if(ps[0].getChoices().size()) noChoices = false; -+ } -+ if(ps[0].getAttribute("Loop").size()) noLoop = false; -+ if(ps[0].getAttribute("Graph").size()) noGraph = false; -+ if(ps[0].getAttribute("Closed").size()) noClosed = false; -+ } -+ } -+ else{ -+ ps.resize(1); -+ ps[0].setName(name); -+ ps[0].setValues(val); -+ } -+ // send updated parameter to server -+ if(noRange && fopt.count("Range") && fopt["Range"].size() == 2){ -+ ps[0].setMin(fopt["Range"][0]); ps[0].setMax(fopt["Range"][1]); -+ } -+ else if(noRange && fopt.count("Min") && fopt.count("Max")){ -+ ps[0].setMin(fopt["Min"][0]); ps[0].setMax(fopt["Max"][0]); -+ } -+ else if(noRange && fopt.count("Min")){ -+ ps[0].setMin(fopt["Min"][0]); ps[0].setMax(onelab::parameter::maxNumber()); -+ } -+ else if(noRange && fopt.count("Max")){ -+ ps[0].setMax(fopt["Max"][0]); ps[0].setMin(-onelab::parameter::maxNumber()); -+ } -+ if(noRange && fopt.count("Step")) ps[0].setStep(fopt["Step"][0]); -+ // if no range/min/max/step info is provided, try to compute a reasonnable -+ // range and step (this makes the gui much nicer to use) -+ if(val.size() && noRange && !fopt.count("Range") && !fopt.count("Step") && -+ !fopt.count("Min") && !fopt.count("Max")){ -+ bool isInteger = (floor(val[0]) == val[0]); -+ double fact = isInteger ? 5. : 20.; -+ if(val[0] > 0){ -+ ps[0].setMin(val[0] / fact); -+ ps[0].setMax(val[0] * fact); -+ ps[0].setStep((ps[0].getMax() - ps[0].getMin()) / 100.); -+ } -+ else if(val[0] < 0){ -+ ps[0].setMin(val[0] * fact); -+ ps[0].setMax(val[0] / fact); -+ ps[0].setStep((ps[0].getMax() - ps[0].getMin()) / 100.); -+ } -+ if(val[0] && isInteger){ -+ ps[0].setMin((int)ps[0].getMin()); -+ ps[0].setMax((int)ps[0].getMax()); -+ ps[0].setStep((int)ps[0].getStep()); -+ } -+ } -+ if(noChoices && fopt.count("Choices")){ -+ ps[0].setChoices(fopt["Choices"]); -+ if(copt.count("Choices")) ps[0].setChoiceLabels(copt["Choices"]); -+ } -+ if(noLoop && copt.count("Loop")) // for backward compatibity -+ ps[0].setAttribute("Loop", copt["Loop"][0]); -+ if(noLoop && fopt.count("Loop")) -+ ps[0].setAttribute("Loop", (fopt["Loop"][0] == 3.) ? "3" : -+ (fopt["Loop"][0] == 2.) ? "2" : -+ (fopt["Loop"][0] == 1.) ? "1" : ""); -+ if(noGraph && copt.count("Graph")) ps[0].setAttribute("Graph", copt["Graph"][0]); -+ if(noClosed && copt.count("Closed")) // for backward compatibility -+ ps[0].setAttribute("Closed", copt["Closed"][0]); -+ if(noClosed && fopt.count("Closed")) -+ ps[0].setAttribute("Closed", fopt["Closed"][0] ? "1" : "0"); -+ if(copt.count("NumberFormat")) -+ ps[0].setAttribute("NumberFormat", copt["NumberFormat"][0]); -+ _setStandardOptions(&ps[0], fopt, copt); -+ _setOtherAttributes(&ps[0], copt); -+ _onelabClient->set(ps[0]); -+#endif -+} -+ -+void Msg::ExchangeOnelabParameter(const std::string &key, -+ std::string &val, -+ std::map > &fopt, -+ std::map > &copt) -+{ -+#if defined(HAVE_ONELAB) -+ if(!_onelabClient) return; -+ -+ std::string name; -+ if(copt.count("Name")) -+ name = copt["Name"][0]; -+ -+ if(name.empty()){ -+ if(copt.size() || fopt.size()) -+ Msg::Error("From now on you need to use the `Name' attribute to create a " -+ "ONELAB parameter: `Name \"%s\"'", -+ _getParameterName(key, copt).c_str()); -+ return; -+ } -+ -+ std::vector ps; -+ _onelabClient->get(ps, name); -+ bool noChoices = true, noClosed = true, noMultipleSelection = true; -+ if(ps.size()){ -+ bool useLocalValue = ps[0].getReadOnly(); -+ if(fopt.count("ReadOnly")) useLocalValue = fopt["ReadOnly"][0]; -+ if(useLocalValue) -+ ps[0].setValue(val); // use local value -+ else -+ val = ps[0].getValue(); // use value from server -+ // keep track of these attributes, which can be changed server-side (unless -+ // they are not visible) -+ if(ps[0].getVisible()){ -+ if(ps[0].getChoices().size()) noChoices = false; -+ if(ps[0].getAttribute("Closed").size()) noClosed = false; -+ if(ps[0].getAttribute("MultipleSelection").size()) noMultipleSelection = false; -+ } -+ } -+ else{ -+ ps.resize(1); -+ ps[0].setName(name); -+ ps[0].setValue(val); -+ } -+ if(copt.count("Kind")) ps[0].setKind(copt["Kind"][0]); -+ if(noChoices && copt.count("Choices")) ps[0].setChoices(copt["Choices"]); -+ if(noClosed && copt.count("Closed")) // for backward compatibility -+ ps[0].setAttribute("Closed", copt["Closed"][0]); -+ if(noClosed && fopt.count("Closed")) -+ ps[0].setAttribute("Closed", fopt["Closed"][0] ? "1" : "0"); -+ if(noMultipleSelection && copt.count("MultipleSelection")) -+ ps[0].setAttribute("MultipleSelection", copt["MultipleSelection"][0]); -+ _setStandardOptions(&ps[0], fopt, copt); -+ _setOtherAttributes(&ps[0], copt); -+ _onelabClient->set(ps[0]); -+#endif -+} -+ -+void Msg::UndefineOnelabParameter(const std::string &name) -+{ -+#if defined(HAVE_ONELAB) -+ if(!_onelabClient) return; -+ _onelabClient->clear(name); -+#endif -+} -+ -+void Msg::ImportPhysicalGroupsInOnelab() -+{ -+#if defined(HAVE_ONELAB) -+ if(_onelabClient){ -+ std::vector oldn; -+ _onelabClient->get(oldn, "Gmsh/Number of physical groups"); -+ int oldsize = 0; -+ if(oldn.size()) oldsize = (int)oldn[0].getValue(); -+ -+ std::map > groups[4]; -+ GModel::current()->getPhysicalGroups(groups); -+ int size = 0; -+ for(int dim = 0; dim <= 3; dim++) -+ size += groups[dim].size(); -+ onelab::number n("Gmsh/Number of physical groups", size); -+ n.setReadOnly(true); -+ n.setChangedValue(1); -+ n.setVisible(false); -+ n.setAttribute("Closed", "1"); -+ _onelabClient->set(n); -+ -+ onelab::number nd("Gmsh/Model dimension", GModel::current()->getDim()); -+ nd.setReadOnly(true); -+ nd.setChangedValue(1); -+ nd.setVisible(false); -+ nd.setAttribute("Closed", "1"); -+ _onelabClient->set(nd); -+ -+ int index = 1; -+ for(int dim = 0; dim <= 3; dim++){ -+ for(auto it = groups[dim].begin(); -+ it != groups[dim].end(); it++){ -+ int num = it->first; -+ std::string name = GModel::current()->getPhysicalName(dim, it->first); -+ char tmp[256]; -+ if(name.empty()){ -+ sprintf(tmp, "Physical %s %d", (dim == 3) ? "Volume" : (dim == 2) ? "Surface" : -+ (dim == 1) ? "Curve" : "Point", num); -+ name = tmp; -+ } -+ sprintf(tmp, "Gmsh/Physical group %d/", index); -+ std::string str = tmp; -+ onelab::number n1(str + "Dimension", dim); -+ n1.setReadOnly(true); -+ n1.setChangedValue(1); -+ n1.setVisible(false); -+ _onelabClient->set(n1); -+ onelab::number n2(str + "Number", num); -+ n2.setReadOnly(true); -+ n2.setChangedValue(1); -+ n2.setVisible(false); -+ _onelabClient->set(n2); -+ onelab::string s(str + "Name", name); -+ s.setReadOnly(true); -+ s.setChangedValue(1); -+ s.setVisible(false); -+ _onelabClient->set(s); -+ index++; -+ } -+ } -+ -+ // remove old ones -+ for(int index = size + 1; index < oldsize + 1; index++){ -+ char tmp[256]; -+ sprintf(tmp, "Gmsh/Physical group %d/Dimension", index); -+ _onelabClient->clear(tmp); -+ sprintf(tmp, "Gmsh/Physical group %d/Number", index); -+ _onelabClient->clear(tmp); -+ sprintf(tmp, "Gmsh/Physical group %d/Name", index); -+ _onelabClient->clear(tmp); -+ } -+ -+#if defined(HAVE_FLTK) -+ if(FlGui::available()){ -+ FlGui::instance()->resetVisibility(); -+ FlGui::instance()->rebuildTree(false); -+ } -+#endif -+ } -+#endif -+} -+ -+void Msg::RunOnelabClient(const std::string &name, const std::string &command) -+{ -+#if defined(HAVE_ONELAB) -+ onelabUtils::runClient(name, command); -+#endif -+} -+ -+void Msg::SetOnelabChanged(int value, const std::string &client) -+{ -+#if defined(HAVE_ONELAB) -+ onelab::server::instance()->setChanged(value, client); -+#endif -+} -+ -+void Msg::Barrier() -+{ -+#if defined(HAVE_MPI) -+ MPI_Barrier(MPI_COMM_WORLD); -+#endif -+} -+ -+#if defined(_OPENMP) -+ -+int Msg::GetNumThreads(){ return omp_get_num_threads(); } -+void Msg::SetNumThreads(int num){ omp_set_num_threads(num); } -+int Msg::GetMaxThreads(){ return omp_get_max_threads(); } -+int Msg::GetThreadNum(){ return omp_get_thread_num(); } -+ -+#else -+ -+int Msg::GetNumThreads(){ return 1; } -+void Msg::SetNumThreads(int num){ } -+int Msg::GetMaxThreads(){ return 1; } -+int Msg::GetThreadNum(){ return 0; } -+ -+#endif -+ -+MsgProgressStatus::MsgProgressStatus(int num) -+ : _totalElementToTreat(num), _currentI(0), _nextIToCheck(0), -+ _initialTime(Cpu()), _lastTime(_initialTime), _lastPercentage(0), -+ _progressMeterStep(Msg::GetProgressMeterStep()) -+{ -+ Msg::SetProgressMeterStep(1); -+ Msg::StartProgressMeter(_totalElementToTreat); -+} -+ -+MsgProgressStatus::~MsgProgressStatus() -+{ -+ Msg::ProgressMeter(_totalElementToTreat, true, "done"); -+ Msg::SetProgressMeterStep(_progressMeterStep); -+ Msg::StopProgressMeter(); -+} -+ -+void MsgProgressStatus::next() -+{ -+ if(Msg::GetCommRank() || Msg::GetNumThreads() > 1) return; -+ -+ ++_currentI; -+ if (_currentI < _nextIToCheck) return; -+ -+ int currentPercentage = _currentI * 100 / _totalElementToTreat; -+ // check every percentage only -+ _nextIToCheck = (currentPercentage + 1) * _totalElementToTreat / 100 + 1; -+ -+ double currentTime = Cpu(); -+ if ((currentPercentage < 5 && currentTime - _lastTime > 15.) || -+ (currentPercentage > _lastPercentage + 4 && currentTime - _lastTime > 10.)) { -+ _lastPercentage = currentPercentage; -+ _lastTime = currentTime; -+ const double remaining = (currentTime - _initialTime) / (_currentI + 1) * -+ (_totalElementToTreat - _currentI - 1); -+ if (remaining < 60*2) -+ Msg::ProgressMeter(_currentI - 1, true, -+ "%d%% (remaining time ~%g seconds)", -+ currentPercentage, remaining); -+ else if (remaining < 60*60*2) -+ Msg::ProgressMeter(_currentI - 1, true, -+ "%d%% (remaining time ~%g minutes)", -+ currentPercentage, remaining / 60); -+ else -+ Msg::ProgressMeter(_currentI - 1, true, -+ "%d%% (remaining time ~%g hours)", -+ currentPercentage, remaining / 3600); -+ } -+} diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index deb4a74..b27f6ba 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt gmsh-4.10.0-source-new/CMakeLists.txt ---- gmsh-4.10.0-source/CMakeLists.txt 2022-04-26 07:50:50.699000208 +0200 -+++ gmsh-4.10.0-source-new/CMakeLists.txt 2022-04-26 07:50:50.916998135 +0200 +diff -rupN --no-dereference gmsh-4.10.1-source/CMakeLists.txt gmsh-4.10.1-source-new/CMakeLists.txt +--- gmsh-4.10.1-source/CMakeLists.txt 2022-05-03 08:34:45.537591628 +0200 ++++ gmsh-4.10.1-source-new/CMakeLists.txt 2022-05-03 08:34:45.754594914 +0200 @@ -1624,6 +1624,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,21 +10,9 @@ diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt gmsh-4.10.0-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.10.0-source/CMakeLists.txt.orig gmsh-4.10.0-source-new/CMakeLists.txt.orig ---- gmsh-4.10.0-source/CMakeLists.txt.orig 2022-04-26 07:50:50.700000198 +0200 -+++ gmsh-4.10.0-source-new/CMakeLists.txt.orig 2022-04-26 07:50:50.496002138 +0200 -@@ -270,7 +270,7 @@ if(ENABLE_RPATH) - # when building, don't use the install RPATH already (but later on when - # installing) - set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) -- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") -+ set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_LIBDIR}") - - # add the automatically determined parts of the RPATH which point to - # directories outside the build tree to the install RPATH -diff -rupN --no-dereference gmsh-4.10.0-source/src/graphics/CMakeLists.txt gmsh-4.10.0-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.10.0-source/src/graphics/CMakeLists.txt 2022-01-11 20:34:47.000000000 +0100 -+++ gmsh-4.10.0-source-new/src/graphics/CMakeLists.txt 2022-04-26 07:50:50.916998135 +0200 +diff -rupN --no-dereference gmsh-4.10.1-source/src/graphics/CMakeLists.txt gmsh-4.10.1-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.10.1-source/src/graphics/CMakeLists.txt 2022-01-11 20:34:47.000000000 +0100 ++++ gmsh-4.10.1-source-new/src/graphics/CMakeLists.txt 2022-05-03 08:34:45.755594930 +0200 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index b893d8c..3d7e475 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.10.0-source-fedora.tar.xz) = de14d664cb4c4bcc9387c3dcda2d87c8e871b128f90457cf1fe498b48c92912404b9d3d3312c445b19df277ccd097d32d0e134731731eb2792bd26de3f75938a +SHA512 (gmsh-4.10.1-source-fedora.tar.xz) = 2a72e539d389c2e72cc804caed267b125818afb1c9a1fb5756d16690fe5bf2fd8a2159a69107e9b4bb483a63da654e3e7e0ac765350c6125cf0a8243cc1ea4f3 From 104e768413ad553ffef3d019be2945eeef28c770 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Mon, 9 May 2022 21:23:21 +0200 Subject: [PATCH 04/56] Fix removing bundled libraries --- gmsh.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gmsh.spec b/gmsh.spec index 3fe801a..6dd5dc4 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -10,7 +10,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.10.1 -Release: 1%{?dist} +Release: 2%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -218,7 +218,7 @@ ls -1 | \ grep -v ^QuadTri$ | \ grep -v ^hxt$ | \ grep -v ^kbipack$ | \ - grep -v ^onelab$ + grep -v ^onelab$ | \ xargs rm -rf ) @@ -389,6 +389,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Mon May 09 2022 Sandro Mani - 4.10.1-2 +- Fix removing bundled libraries + * Tue May 03 2022 Sandro Mani - 4.10.1-1 - Update to 4.10.1 From ec314bc1a8c7bd79f9ee0632feef34a26a3ee0bd Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Fri, 13 May 2022 19:10:35 +0200 Subject: [PATCH 05/56] Update to 4.10.2 --- .gitignore | 1 + gmsh.spec | 7 +++++-- gmsh_build.patch | 6 +++--- gmsh_install.patch | 6 +++--- gmsh_julia.patch | 6 +++--- gmsh_med.patch | 24 ++++++++++++------------ gmsh_python.patch | 12 ++++++------ gmsh_unbundle_gl2ps.patch | 12 ++++++------ sources | 2 +- 9 files changed, 40 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index 51a5269..f0d4430 100644 --- a/.gitignore +++ b/.gitignore @@ -63,3 +63,4 @@ /gmsh-4.9.5-source-fedora.tar.xz /gmsh-4.10.0-source-fedora.tar.xz /gmsh-4.10.1-source-fedora.tar.xz +/gmsh-4.10.2-source-fedora.tar.xz diff --git a/gmsh.spec b/gmsh.spec index 6dd5dc4..6fd0255 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -9,8 +9,8 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.10.1 -Release: 2%{?dist} +Version: 4.10.2 +Release: 1%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -389,6 +389,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Fri May 13 2022 Sandro Mani - 4.10.2-1 +- Update to 4.10.2 + * Mon May 09 2022 Sandro Mani - 4.10.1-2 - Fix removing bundled libraries diff --git a/gmsh_build.patch b/gmsh_build.patch index cd98c6c..3ca19ed 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.1-source/src/fltk/helpWindow.cpp gmsh-4.10.1-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.10.1-source/src/fltk/helpWindow.cpp 2022-05-03 08:34:45.094584919 +0200 -+++ gmsh-4.10.1-source-new/src/fltk/helpWindow.cpp 2022-05-03 08:34:45.541591689 +0200 +diff -rupN --no-dereference gmsh-4.10.2-source/src/fltk/helpWindow.cpp gmsh-4.10.2-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.10.2-source/src/fltk/helpWindow.cpp 2022-05-13 16:28:40.775593356 +0200 ++++ gmsh-4.10.2-source-new/src/fltk/helpWindow.cpp 2022-05-13 16:28:41.287593305 +0200 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index 389e328..7faeb17 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.1-source/CMakeLists.txt gmsh-4.10.1-source-new/CMakeLists.txt ---- gmsh-4.10.1-source/CMakeLists.txt 2022-05-03 08:34:45.323588387 +0200 -+++ gmsh-4.10.1-source-new/CMakeLists.txt 2022-05-03 08:34:45.327588448 +0200 +diff -rupN --no-dereference gmsh-4.10.2-source/CMakeLists.txt gmsh-4.10.2-source-new/CMakeLists.txt +--- gmsh-4.10.2-source/CMakeLists.txt 2022-05-13 16:28:41.031593330 +0200 ++++ gmsh-4.10.2-source-new/CMakeLists.txt 2022-05-13 16:28:41.035593330 +0200 @@ -270,7 +270,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index 2612ee9..fb1a191 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.1-source/CMakeLists.txt gmsh-4.10.1-source-new/CMakeLists.txt ---- gmsh-4.10.1-source/CMakeLists.txt 2022-05-03 08:34:44.874581180 +0200 -+++ gmsh-4.10.1-source-new/CMakeLists.txt 2022-05-03 08:34:45.098584980 +0200 +diff -rupN --no-dereference gmsh-4.10.2-source/CMakeLists.txt gmsh-4.10.2-source-new/CMakeLists.txt +--- gmsh-4.10.2-source/CMakeLists.txt 2022-05-13 16:28:40.510593382 +0200 ++++ gmsh-4.10.2-source-new/CMakeLists.txt 2022-05-13 16:28:40.780593355 +0200 @@ -1898,7 +1898,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) diff --git a/gmsh_med.patch b/gmsh_med.patch index a3cefd5..247c16a 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.1-source/src/common/CommandLine.cpp gmsh-4.10.1-source-new/src/common/CommandLine.cpp ---- gmsh-4.10.1-source/src/common/CommandLine.cpp 2022-04-26 17:50:41.000000000 +0200 -+++ gmsh-4.10.1-source-new/src/common/CommandLine.cpp 2022-05-03 08:34:44.878581254 +0200 +diff -rupN --no-dereference gmsh-4.10.2-source/src/common/CommandLine.cpp gmsh-4.10.2-source-new/src/common/CommandLine.cpp +--- gmsh-4.10.2-source/src/common/CommandLine.cpp 2022-04-26 17:50:41.000000000 +0200 ++++ gmsh-4.10.2-source-new/src/common/CommandLine.cpp 2022-05-13 16:28:40.515593382 +0200 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.10.1-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.10.1-source/src/fltk/helpWindow.cpp gmsh-4.10.1-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.10.1-source/src/fltk/helpWindow.cpp 2022-01-11 20:34:46.000000000 +0100 -+++ gmsh-4.10.1-source-new/src/fltk/helpWindow.cpp 2022-05-03 08:34:44.878581254 +0200 +diff -rupN --no-dereference gmsh-4.10.2-source/src/fltk/helpWindow.cpp gmsh-4.10.2-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.10.2-source/src/fltk/helpWindow.cpp 2022-01-11 20:34:46.000000000 +0100 ++++ gmsh-4.10.2-source-new/src/fltk/helpWindow.cpp 2022-05-13 16:28:40.515593382 +0200 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.10.1-source/src/fltk/helpWindow.cpp gmsh-4.10 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.10.1-source/src/geo/GModelIO_MED.cpp gmsh-4.10.1-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.10.1-source/src/geo/GModelIO_MED.cpp 2022-01-11 20:34:47.000000000 +0100 -+++ gmsh-4.10.1-source-new/src/geo/GModelIO_MED.cpp 2022-05-03 08:34:44.879581272 +0200 +diff -rupN --no-dereference gmsh-4.10.2-source/src/geo/GModelIO_MED.cpp gmsh-4.10.2-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.10.2-source/src/geo/GModelIO_MED.cpp 2022-01-11 20:34:47.000000000 +0100 ++++ gmsh-4.10.2-source-new/src/geo/GModelIO_MED.cpp 2022-05-13 16:28:40.516593382 +0200 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.10.1-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.10.1-source/src/post/PViewDataGModelIO.cpp gmsh-4.10.1-source-new/src/post/PViewDataGModelIO.cpp ---- gmsh-4.10.1-source/src/post/PViewDataGModelIO.cpp 2022-01-11 20:34:48.000000000 +0100 -+++ gmsh-4.10.1-source-new/src/post/PViewDataGModelIO.cpp 2022-05-03 08:34:44.879581272 +0200 +diff -rupN --no-dereference gmsh-4.10.2-source/src/post/PViewDataGModelIO.cpp gmsh-4.10.2-source-new/src/post/PViewDataGModelIO.cpp +--- gmsh-4.10.2-source/src/post/PViewDataGModelIO.cpp 2022-01-11 20:34:48.000000000 +0100 ++++ gmsh-4.10.2-source-new/src/post/PViewDataGModelIO.cpp 2022-05-13 16:28:40.516593382 +0200 @@ -542,7 +542,7 @@ void PViewDataGModel::importLists(int N[ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index 2a6ef04..892e1b3 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.1-source/CMakeLists.txt gmsh-4.10.1-source-new/CMakeLists.txt ---- gmsh-4.10.1-source/CMakeLists.txt 2022-04-27 00:14:45.000000000 +0200 -+++ gmsh-4.10.1-source-new/CMakeLists.txt 2022-05-03 08:34:44.655577156 +0200 +diff -rupN --no-dereference gmsh-4.10.2-source/CMakeLists.txt gmsh-4.10.2-source-new/CMakeLists.txt +--- gmsh-4.10.2-source/CMakeLists.txt 2022-05-12 17:40:34.000000000 +0200 ++++ gmsh-4.10.2-source-new/CMakeLists.txt 2022-05-13 16:28:40.248593408 +0200 @@ -1880,6 +1880,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -24,9 +24,9 @@ diff -rupN --no-dereference gmsh-4.10.1-source/CMakeLists.txt gmsh-4.10.1-source install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB}) if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) -diff -rupN --no-dereference gmsh-4.10.1-source/src/common/GmshMessage.cpp gmsh-4.10.1-source-new/src/common/GmshMessage.cpp ---- gmsh-4.10.1-source/src/common/GmshMessage.cpp 2022-04-26 17:50:41.000000000 +0200 -+++ gmsh-4.10.1-source-new/src/common/GmshMessage.cpp 2022-05-03 08:34:44.655577156 +0200 +diff -rupN --no-dereference gmsh-4.10.2-source/src/common/GmshMessage.cpp gmsh-4.10.2-source-new/src/common/GmshMessage.cpp +--- gmsh-4.10.2-source/src/common/GmshMessage.cpp 2022-04-26 17:50:41.000000000 +0200 ++++ gmsh-4.10.2-source-new/src/common/GmshMessage.cpp 2022-05-13 16:28:40.249593408 +0200 @@ -169,14 +169,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index b27f6ba..265e450 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.1-source/CMakeLists.txt gmsh-4.10.1-source-new/CMakeLists.txt ---- gmsh-4.10.1-source/CMakeLists.txt 2022-05-03 08:34:45.537591628 +0200 -+++ gmsh-4.10.1-source-new/CMakeLists.txt 2022-05-03 08:34:45.754594914 +0200 +diff -rupN --no-dereference gmsh-4.10.2-source/CMakeLists.txt gmsh-4.10.2-source-new/CMakeLists.txt +--- gmsh-4.10.2-source/CMakeLists.txt 2022-05-13 16:28:41.283593306 +0200 ++++ gmsh-4.10.2-source-new/CMakeLists.txt 2022-05-13 16:28:41.541593280 +0200 @@ -1624,6 +1624,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.10.1-source/CMakeLists.txt gmsh-4.10.1-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.10.1-source/src/graphics/CMakeLists.txt gmsh-4.10.1-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.10.1-source/src/graphics/CMakeLists.txt 2022-01-11 20:34:47.000000000 +0100 -+++ gmsh-4.10.1-source-new/src/graphics/CMakeLists.txt 2022-05-03 08:34:45.755594930 +0200 +diff -rupN --no-dereference gmsh-4.10.2-source/src/graphics/CMakeLists.txt gmsh-4.10.2-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.10.2-source/src/graphics/CMakeLists.txt 2022-01-11 20:34:47.000000000 +0100 ++++ gmsh-4.10.2-source-new/src/graphics/CMakeLists.txt 2022-05-13 16:28:41.542593280 +0200 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index 3d7e475..7bb7ad5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.10.1-source-fedora.tar.xz) = 2a72e539d389c2e72cc804caed267b125818afb1c9a1fb5756d16690fe5bf2fd8a2159a69107e9b4bb483a63da654e3e7e0ac765350c6125cf0a8243cc1ea4f3 +SHA512 (gmsh-4.10.2-source-fedora.tar.xz) = 215c9c1faf67f8c0e75b643c979baa176a9d62fd081d00f946c6fc785c1fb55f037967fd68fd1652ab2bef8c5279ddfcf36e17e6d4c3b23f076779e47830b1a3 From a5a67174165bf930daab736db0039ab1d0bb0327 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Mon, 30 May 2022 13:27:07 +0200 Subject: [PATCH 06/56] Update to 4.10.3 --- .gitignore | 1 + gmsh.spec | 5 ++++- gmsh_build.patch | 6 +++--- gmsh_install.patch | 6 +++--- gmsh_julia.patch | 6 +++--- gmsh_med.patch | 24 ++++++++++++------------ gmsh_python.patch | 12 ++++++------ gmsh_unbundle_gl2ps.patch | 12 ++++++------ sources | 2 +- 9 files changed, 39 insertions(+), 35 deletions(-) diff --git a/.gitignore b/.gitignore index f0d4430..03ff316 100644 --- a/.gitignore +++ b/.gitignore @@ -64,3 +64,4 @@ /gmsh-4.10.0-source-fedora.tar.xz /gmsh-4.10.1-source-fedora.tar.xz /gmsh-4.10.2-source-fedora.tar.xz +/gmsh-4.10.3-source-fedora.tar.xz diff --git a/gmsh.spec b/gmsh.spec index 6fd0255..57e983d 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -9,7 +9,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.10.2 +Version: 4.10.3 Release: 1%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt @@ -389,6 +389,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Mon May 30 2022 Sandro Mani - 4.10.3-1 +- Update to 4.10.3 + * Fri May 13 2022 Sandro Mani - 4.10.2-1 - Update to 4.10.2 diff --git a/gmsh_build.patch b/gmsh_build.patch index 3ca19ed..3cf02c3 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.2-source/src/fltk/helpWindow.cpp gmsh-4.10.2-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.10.2-source/src/fltk/helpWindow.cpp 2022-05-13 16:28:40.775593356 +0200 -+++ gmsh-4.10.2-source-new/src/fltk/helpWindow.cpp 2022-05-13 16:28:41.287593305 +0200 +diff -rupN --no-dereference gmsh-4.10.3-source/src/fltk/helpWindow.cpp gmsh-4.10.3-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.10.3-source/src/fltk/helpWindow.cpp 2022-05-30 12:11:32.553162530 +0200 ++++ gmsh-4.10.3-source-new/src/fltk/helpWindow.cpp 2022-05-30 12:11:33.008162541 +0200 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index 7faeb17..66c4bfa 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.2-source/CMakeLists.txt gmsh-4.10.2-source-new/CMakeLists.txt ---- gmsh-4.10.2-source/CMakeLists.txt 2022-05-13 16:28:41.031593330 +0200 -+++ gmsh-4.10.2-source-new/CMakeLists.txt 2022-05-13 16:28:41.035593330 +0200 +diff -rupN --no-dereference gmsh-4.10.3-source/CMakeLists.txt gmsh-4.10.3-source-new/CMakeLists.txt +--- gmsh-4.10.3-source/CMakeLists.txt 2022-05-30 12:11:32.779162535 +0200 ++++ gmsh-4.10.3-source-new/CMakeLists.txt 2022-05-30 12:11:32.783162536 +0200 @@ -270,7 +270,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index fb1a191..c648f0a 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.2-source/CMakeLists.txt gmsh-4.10.2-source-new/CMakeLists.txt ---- gmsh-4.10.2-source/CMakeLists.txt 2022-05-13 16:28:40.510593382 +0200 -+++ gmsh-4.10.2-source-new/CMakeLists.txt 2022-05-13 16:28:40.780593355 +0200 +diff -rupN --no-dereference gmsh-4.10.3-source/CMakeLists.txt gmsh-4.10.3-source-new/CMakeLists.txt +--- gmsh-4.10.3-source/CMakeLists.txt 2022-05-30 12:11:32.324162525 +0200 ++++ gmsh-4.10.3-source-new/CMakeLists.txt 2022-05-30 12:11:32.557162531 +0200 @@ -1898,7 +1898,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) diff --git a/gmsh_med.patch b/gmsh_med.patch index 247c16a..bc9bdc6 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.2-source/src/common/CommandLine.cpp gmsh-4.10.2-source-new/src/common/CommandLine.cpp ---- gmsh-4.10.2-source/src/common/CommandLine.cpp 2022-04-26 17:50:41.000000000 +0200 -+++ gmsh-4.10.2-source-new/src/common/CommandLine.cpp 2022-05-13 16:28:40.515593382 +0200 +diff -rupN --no-dereference gmsh-4.10.3-source/src/common/CommandLine.cpp gmsh-4.10.3-source-new/src/common/CommandLine.cpp +--- gmsh-4.10.3-source/src/common/CommandLine.cpp 2022-04-26 17:50:41.000000000 +0200 ++++ gmsh-4.10.3-source-new/src/common/CommandLine.cpp 2022-05-30 12:11:32.327162525 +0200 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.10.2-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.10.2-source/src/fltk/helpWindow.cpp gmsh-4.10.2-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.10.2-source/src/fltk/helpWindow.cpp 2022-01-11 20:34:46.000000000 +0100 -+++ gmsh-4.10.2-source-new/src/fltk/helpWindow.cpp 2022-05-13 16:28:40.515593382 +0200 +diff -rupN --no-dereference gmsh-4.10.3-source/src/fltk/helpWindow.cpp gmsh-4.10.3-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.10.3-source/src/fltk/helpWindow.cpp 2022-01-11 20:34:46.000000000 +0100 ++++ gmsh-4.10.3-source-new/src/fltk/helpWindow.cpp 2022-05-30 12:11:32.328162525 +0200 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.10.2-source/src/fltk/helpWindow.cpp gmsh-4.10 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.10.2-source/src/geo/GModelIO_MED.cpp gmsh-4.10.2-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.10.2-source/src/geo/GModelIO_MED.cpp 2022-01-11 20:34:47.000000000 +0100 -+++ gmsh-4.10.2-source-new/src/geo/GModelIO_MED.cpp 2022-05-13 16:28:40.516593382 +0200 +diff -rupN --no-dereference gmsh-4.10.3-source/src/geo/GModelIO_MED.cpp gmsh-4.10.3-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.10.3-source/src/geo/GModelIO_MED.cpp 2022-01-11 20:34:47.000000000 +0100 ++++ gmsh-4.10.3-source-new/src/geo/GModelIO_MED.cpp 2022-05-30 12:11:32.328162525 +0200 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.10.2-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.10.2-source/src/post/PViewDataGModelIO.cpp gmsh-4.10.2-source-new/src/post/PViewDataGModelIO.cpp ---- gmsh-4.10.2-source/src/post/PViewDataGModelIO.cpp 2022-01-11 20:34:48.000000000 +0100 -+++ gmsh-4.10.2-source-new/src/post/PViewDataGModelIO.cpp 2022-05-13 16:28:40.516593382 +0200 +diff -rupN --no-dereference gmsh-4.10.3-source/src/post/PViewDataGModelIO.cpp gmsh-4.10.3-source-new/src/post/PViewDataGModelIO.cpp +--- gmsh-4.10.3-source/src/post/PViewDataGModelIO.cpp 2022-01-11 20:34:48.000000000 +0100 ++++ gmsh-4.10.3-source-new/src/post/PViewDataGModelIO.cpp 2022-05-30 12:11:32.328162525 +0200 @@ -542,7 +542,7 @@ void PViewDataGModel::importLists(int N[ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index 892e1b3..5dcb265 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.2-source/CMakeLists.txt gmsh-4.10.2-source-new/CMakeLists.txt ---- gmsh-4.10.2-source/CMakeLists.txt 2022-05-12 17:40:34.000000000 +0200 -+++ gmsh-4.10.2-source-new/CMakeLists.txt 2022-05-13 16:28:40.248593408 +0200 +diff -rupN --no-dereference gmsh-4.10.3-source/CMakeLists.txt gmsh-4.10.3-source-new/CMakeLists.txt +--- gmsh-4.10.3-source/CMakeLists.txt 2022-05-16 22:02:35.000000000 +0200 ++++ gmsh-4.10.3-source-new/CMakeLists.txt 2022-05-30 12:11:32.090162520 +0200 @@ -1880,6 +1880,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -24,9 +24,9 @@ diff -rupN --no-dereference gmsh-4.10.2-source/CMakeLists.txt gmsh-4.10.2-source install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB}) if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) -diff -rupN --no-dereference gmsh-4.10.2-source/src/common/GmshMessage.cpp gmsh-4.10.2-source-new/src/common/GmshMessage.cpp ---- gmsh-4.10.2-source/src/common/GmshMessage.cpp 2022-04-26 17:50:41.000000000 +0200 -+++ gmsh-4.10.2-source-new/src/common/GmshMessage.cpp 2022-05-13 16:28:40.249593408 +0200 +diff -rupN --no-dereference gmsh-4.10.3-source/src/common/GmshMessage.cpp gmsh-4.10.3-source-new/src/common/GmshMessage.cpp +--- gmsh-4.10.3-source/src/common/GmshMessage.cpp 2022-04-26 17:50:41.000000000 +0200 ++++ gmsh-4.10.3-source-new/src/common/GmshMessage.cpp 2022-05-30 12:11:32.090162520 +0200 @@ -169,14 +169,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index 265e450..2a6664d 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.2-source/CMakeLists.txt gmsh-4.10.2-source-new/CMakeLists.txt ---- gmsh-4.10.2-source/CMakeLists.txt 2022-05-13 16:28:41.283593306 +0200 -+++ gmsh-4.10.2-source-new/CMakeLists.txt 2022-05-13 16:28:41.541593280 +0200 +diff -rupN --no-dereference gmsh-4.10.3-source/CMakeLists.txt gmsh-4.10.3-source-new/CMakeLists.txt +--- gmsh-4.10.3-source/CMakeLists.txt 2022-05-30 12:11:33.005162541 +0200 ++++ gmsh-4.10.3-source-new/CMakeLists.txt 2022-05-30 12:11:33.233162546 +0200 @@ -1624,6 +1624,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.10.2-source/CMakeLists.txt gmsh-4.10.2-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.10.2-source/src/graphics/CMakeLists.txt gmsh-4.10.2-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.10.2-source/src/graphics/CMakeLists.txt 2022-01-11 20:34:47.000000000 +0100 -+++ gmsh-4.10.2-source-new/src/graphics/CMakeLists.txt 2022-05-13 16:28:41.542593280 +0200 +diff -rupN --no-dereference gmsh-4.10.3-source/src/graphics/CMakeLists.txt gmsh-4.10.3-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.10.3-source/src/graphics/CMakeLists.txt 2022-01-11 20:34:47.000000000 +0100 ++++ gmsh-4.10.3-source-new/src/graphics/CMakeLists.txt 2022-05-30 12:11:33.233162546 +0200 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index 7bb7ad5..15df5f3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.10.2-source-fedora.tar.xz) = 215c9c1faf67f8c0e75b643c979baa176a9d62fd081d00f946c6fc785c1fb55f037967fd68fd1652ab2bef8c5279ddfcf36e17e6d4c3b23f076779e47830b1a3 +SHA512 (gmsh-4.10.3-source-fedora.tar.xz) = 391c8cf5adbc82b765116dfc5342f61312bdf129731eb1cd78d0fbfba0fe47f124baa9e02e35599f75345c0d82ca67f561e8e6dad71f795be3a9fd018efba569 From 338fc5e01cd1d230077820a86f490ee3b8d04b4a Mon Sep 17 00:00:00 2001 From: Python Maint Date: Mon, 13 Jun 2022 20:58:30 +0200 Subject: [PATCH 07/56] Rebuilt for Python 3.11 --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 57e983d..734bf85 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -10,7 +10,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.10.3 -Release: 1%{?dist} +Release: 2%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -389,6 +389,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Mon Jun 13 2022 Python Maint - 4.10.3-2 +- Rebuilt for Python 3.11 + * Mon May 30 2022 Sandro Mani - 4.10.3-1 - Update to 4.10.3 From 12b97cb0e5c37b568fd6025a2bd524208ebb11af Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Sun, 19 Jun 2022 20:26:40 +0200 Subject: [PATCH 08/56] Update to 4.10.4 --- .gitignore | 1 + gmsh.spec | 7 +++++-- gmsh_build.patch | 6 +++--- gmsh_install.patch | 6 +++--- gmsh_julia.patch | 6 +++--- gmsh_med.patch | 24 ++++++++++++------------ gmsh_python.patch | 12 ++++++------ gmsh_unbundle_gl2ps.patch | 12 ++++++------ sources | 2 +- 9 files changed, 40 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index 03ff316..704be3a 100644 --- a/.gitignore +++ b/.gitignore @@ -65,3 +65,4 @@ /gmsh-4.10.1-source-fedora.tar.xz /gmsh-4.10.2-source-fedora.tar.xz /gmsh-4.10.3-source-fedora.tar.xz +/gmsh-4.10.4-source-fedora.tar.xz diff --git a/gmsh.spec b/gmsh.spec index 734bf85..2c2f2a9 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -9,8 +9,8 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.10.3 -Release: 2%{?dist} +Version: 4.10.4 +Release: 1%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -389,6 +389,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Sun Jun 19 2022 Sandro Mani - 4.10.4-1 +- Update to 4.10.4 + * Mon Jun 13 2022 Python Maint - 4.10.3-2 - Rebuilt for Python 3.11 diff --git a/gmsh_build.patch b/gmsh_build.patch index 3cf02c3..468aab7 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.3-source/src/fltk/helpWindow.cpp gmsh-4.10.3-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.10.3-source/src/fltk/helpWindow.cpp 2022-05-30 12:11:32.553162530 +0200 -+++ gmsh-4.10.3-source-new/src/fltk/helpWindow.cpp 2022-05-30 12:11:33.008162541 +0200 +diff -rupN --no-dereference gmsh-4.10.4-source/src/fltk/helpWindow.cpp gmsh-4.10.4-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.10.4-source/src/fltk/helpWindow.cpp 2022-06-19 20:24:46.457158040 +0200 ++++ gmsh-4.10.4-source-new/src/fltk/helpWindow.cpp 2022-06-19 20:24:46.923164934 +0200 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index 66c4bfa..4fb5061 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.3-source/CMakeLists.txt gmsh-4.10.3-source-new/CMakeLists.txt ---- gmsh-4.10.3-source/CMakeLists.txt 2022-05-30 12:11:32.779162535 +0200 -+++ gmsh-4.10.3-source-new/CMakeLists.txt 2022-05-30 12:11:32.783162536 +0200 +diff -rupN --no-dereference gmsh-4.10.4-source/CMakeLists.txt gmsh-4.10.4-source-new/CMakeLists.txt +--- gmsh-4.10.4-source/CMakeLists.txt 2022-06-19 20:24:46.671161206 +0200 ++++ gmsh-4.10.4-source-new/CMakeLists.txt 2022-06-19 20:24:46.675161265 +0200 @@ -270,7 +270,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index c648f0a..381ecde 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.3-source/CMakeLists.txt gmsh-4.10.3-source-new/CMakeLists.txt ---- gmsh-4.10.3-source/CMakeLists.txt 2022-05-30 12:11:32.324162525 +0200 -+++ gmsh-4.10.3-source-new/CMakeLists.txt 2022-05-30 12:11:32.557162531 +0200 +diff -rupN --no-dereference gmsh-4.10.4-source/CMakeLists.txt gmsh-4.10.4-source-new/CMakeLists.txt +--- gmsh-4.10.4-source/CMakeLists.txt 2022-06-19 20:24:46.221154549 +0200 ++++ gmsh-4.10.4-source-new/CMakeLists.txt 2022-06-19 20:24:46.460158084 +0200 @@ -1898,7 +1898,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) diff --git a/gmsh_med.patch b/gmsh_med.patch index bc9bdc6..0acd305 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.3-source/src/common/CommandLine.cpp gmsh-4.10.3-source-new/src/common/CommandLine.cpp ---- gmsh-4.10.3-source/src/common/CommandLine.cpp 2022-04-26 17:50:41.000000000 +0200 -+++ gmsh-4.10.3-source-new/src/common/CommandLine.cpp 2022-05-30 12:11:32.327162525 +0200 +diff -rupN --no-dereference gmsh-4.10.4-source/src/common/CommandLine.cpp gmsh-4.10.4-source-new/src/common/CommandLine.cpp +--- gmsh-4.10.4-source/src/common/CommandLine.cpp 2022-04-26 17:50:41.000000000 +0200 ++++ gmsh-4.10.4-source-new/src/common/CommandLine.cpp 2022-06-19 20:24:46.225154608 +0200 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.10.3-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.10.3-source/src/fltk/helpWindow.cpp gmsh-4.10.3-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.10.3-source/src/fltk/helpWindow.cpp 2022-01-11 20:34:46.000000000 +0100 -+++ gmsh-4.10.3-source-new/src/fltk/helpWindow.cpp 2022-05-30 12:11:32.328162525 +0200 +diff -rupN --no-dereference gmsh-4.10.4-source/src/fltk/helpWindow.cpp gmsh-4.10.4-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.10.4-source/src/fltk/helpWindow.cpp 2022-01-11 20:34:46.000000000 +0100 ++++ gmsh-4.10.4-source-new/src/fltk/helpWindow.cpp 2022-06-19 20:24:46.226154622 +0200 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.10.3-source/src/fltk/helpWindow.cpp gmsh-4.10 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.10.3-source/src/geo/GModelIO_MED.cpp gmsh-4.10.3-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.10.3-source/src/geo/GModelIO_MED.cpp 2022-01-11 20:34:47.000000000 +0100 -+++ gmsh-4.10.3-source-new/src/geo/GModelIO_MED.cpp 2022-05-30 12:11:32.328162525 +0200 +diff -rupN --no-dereference gmsh-4.10.4-source/src/geo/GModelIO_MED.cpp gmsh-4.10.4-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.10.4-source/src/geo/GModelIO_MED.cpp 2022-01-11 20:34:47.000000000 +0100 ++++ gmsh-4.10.4-source-new/src/geo/GModelIO_MED.cpp 2022-06-19 20:24:46.226154622 +0200 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.10.3-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.10.3-source/src/post/PViewDataGModelIO.cpp gmsh-4.10.3-source-new/src/post/PViewDataGModelIO.cpp ---- gmsh-4.10.3-source/src/post/PViewDataGModelIO.cpp 2022-01-11 20:34:48.000000000 +0100 -+++ gmsh-4.10.3-source-new/src/post/PViewDataGModelIO.cpp 2022-05-30 12:11:32.328162525 +0200 +diff -rupN --no-dereference gmsh-4.10.4-source/src/post/PViewDataGModelIO.cpp gmsh-4.10.4-source-new/src/post/PViewDataGModelIO.cpp +--- gmsh-4.10.4-source/src/post/PViewDataGModelIO.cpp 2022-01-11 20:34:48.000000000 +0100 ++++ gmsh-4.10.4-source-new/src/post/PViewDataGModelIO.cpp 2022-06-19 20:24:46.226154622 +0200 @@ -542,7 +542,7 @@ void PViewDataGModel::importLists(int N[ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index 5dcb265..1b31cd3 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.3-source/CMakeLists.txt gmsh-4.10.3-source-new/CMakeLists.txt ---- gmsh-4.10.3-source/CMakeLists.txt 2022-05-16 22:02:35.000000000 +0200 -+++ gmsh-4.10.3-source-new/CMakeLists.txt 2022-05-30 12:11:32.090162520 +0200 +diff -rupN --no-dereference gmsh-4.10.4-source/CMakeLists.txt gmsh-4.10.4-source-new/CMakeLists.txt +--- gmsh-4.10.4-source/CMakeLists.txt 2022-06-19 09:51:05.000000000 +0200 ++++ gmsh-4.10.4-source-new/CMakeLists.txt 2022-06-19 20:24:45.962150717 +0200 @@ -1880,6 +1880,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -24,9 +24,9 @@ diff -rupN --no-dereference gmsh-4.10.3-source/CMakeLists.txt gmsh-4.10.3-source install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB}) if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) -diff -rupN --no-dereference gmsh-4.10.3-source/src/common/GmshMessage.cpp gmsh-4.10.3-source-new/src/common/GmshMessage.cpp ---- gmsh-4.10.3-source/src/common/GmshMessage.cpp 2022-04-26 17:50:41.000000000 +0200 -+++ gmsh-4.10.3-source-new/src/common/GmshMessage.cpp 2022-05-30 12:11:32.090162520 +0200 +diff -rupN --no-dereference gmsh-4.10.4-source/src/common/GmshMessage.cpp gmsh-4.10.4-source-new/src/common/GmshMessage.cpp +--- gmsh-4.10.4-source/src/common/GmshMessage.cpp 2022-04-26 17:50:41.000000000 +0200 ++++ gmsh-4.10.4-source-new/src/common/GmshMessage.cpp 2022-06-19 20:24:45.962150717 +0200 @@ -169,14 +169,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index 2a6664d..9422dc1 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.3-source/CMakeLists.txt gmsh-4.10.3-source-new/CMakeLists.txt ---- gmsh-4.10.3-source/CMakeLists.txt 2022-05-30 12:11:33.005162541 +0200 -+++ gmsh-4.10.3-source-new/CMakeLists.txt 2022-05-30 12:11:33.233162546 +0200 +diff -rupN --no-dereference gmsh-4.10.4-source/CMakeLists.txt gmsh-4.10.4-source-new/CMakeLists.txt +--- gmsh-4.10.4-source/CMakeLists.txt 2022-06-19 20:24:46.920164890 +0200 ++++ gmsh-4.10.4-source-new/CMakeLists.txt 2022-06-19 20:24:47.135168070 +0200 @@ -1624,6 +1624,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.10.3-source/CMakeLists.txt gmsh-4.10.3-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.10.3-source/src/graphics/CMakeLists.txt gmsh-4.10.3-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.10.3-source/src/graphics/CMakeLists.txt 2022-01-11 20:34:47.000000000 +0100 -+++ gmsh-4.10.3-source-new/src/graphics/CMakeLists.txt 2022-05-30 12:11:33.233162546 +0200 +diff -rupN --no-dereference gmsh-4.10.4-source/src/graphics/CMakeLists.txt gmsh-4.10.4-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.10.4-source/src/graphics/CMakeLists.txt 2022-01-11 20:34:47.000000000 +0100 ++++ gmsh-4.10.4-source-new/src/graphics/CMakeLists.txt 2022-06-19 20:24:47.135168070 +0200 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index 15df5f3..7e35a59 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.10.3-source-fedora.tar.xz) = 391c8cf5adbc82b765116dfc5342f61312bdf129731eb1cd78d0fbfba0fe47f124baa9e02e35599f75345c0d82ca67f561e8e6dad71f795be3a9fd018efba569 +SHA512 (gmsh-4.10.4-source-fedora.tar.xz) = 7f436ebf77929b00abb97ce091d077bf7979fb2cf6e3ef8299a2d5c5119853b846e9571ecf2f4ab2b752acd5acd658591bb5be66a2ee71c31dfeb996d6a1eda5 From 49a32157aa50dc96c5c8113137b3a51783683c85 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Mon, 20 Jun 2022 10:45:38 +0200 Subject: [PATCH 09/56] Rebuilt for Python 3.11 --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 2c2f2a9..c14858b 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -10,7 +10,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.10.4 -Release: 1%{?dist} +Release: 2%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -389,6 +389,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Mon Jun 20 2022 Python Maint - 4.10.4-2 +- Rebuilt for Python 3.11 + * Sun Jun 19 2022 Sandro Mani - 4.10.4-1 - Update to 4.10.4 From e8bb5842f076f0952990eee61c576e706a39f070 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Sun, 3 Jul 2022 22:43:31 +0200 Subject: [PATCH 10/56] Update to 4.10.5 --- .gitignore | 1 + gmsh.spec | 7 +++++-- gmsh_build.patch | 6 +++--- gmsh_install.patch | 6 +++--- gmsh_julia.patch | 6 +++--- gmsh_med.patch | 24 ++++++++++++------------ gmsh_python.patch | 12 ++++++------ gmsh_unbundle_gl2ps.patch | 12 ++++++------ sources | 2 +- 9 files changed, 40 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index 704be3a..d7a8030 100644 --- a/.gitignore +++ b/.gitignore @@ -66,3 +66,4 @@ /gmsh-4.10.2-source-fedora.tar.xz /gmsh-4.10.3-source-fedora.tar.xz /gmsh-4.10.4-source-fedora.tar.xz +/gmsh-4.10.5-source-fedora.tar.xz diff --git a/gmsh.spec b/gmsh.spec index c14858b..ae22406 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -9,8 +9,8 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.10.4 -Release: 2%{?dist} +Version: 4.10.5 +Release: 1%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -389,6 +389,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Sun Jul 03 2022 Sandro Mani - 4.10.5-1 +- Update to 4.10.5 + * Mon Jun 20 2022 Python Maint - 4.10.4-2 - Rebuilt for Python 3.11 diff --git a/gmsh_build.patch b/gmsh_build.patch index 468aab7..83f851f 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.4-source/src/fltk/helpWindow.cpp gmsh-4.10.4-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.10.4-source/src/fltk/helpWindow.cpp 2022-06-19 20:24:46.457158040 +0200 -+++ gmsh-4.10.4-source-new/src/fltk/helpWindow.cpp 2022-06-19 20:24:46.923164934 +0200 +diff -rupN --no-dereference gmsh-4.10.5-source/src/fltk/helpWindow.cpp gmsh-4.10.5-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.10.5-source/src/fltk/helpWindow.cpp 2022-07-03 18:30:12.102025772 +0200 ++++ gmsh-4.10.5-source-new/src/fltk/helpWindow.cpp 2022-07-03 18:30:12.546025782 +0200 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index 4fb5061..8fe3e2c 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.4-source/CMakeLists.txt gmsh-4.10.4-source-new/CMakeLists.txt ---- gmsh-4.10.4-source/CMakeLists.txt 2022-06-19 20:24:46.671161206 +0200 -+++ gmsh-4.10.4-source-new/CMakeLists.txt 2022-06-19 20:24:46.675161265 +0200 +diff -rupN --no-dereference gmsh-4.10.5-source/CMakeLists.txt gmsh-4.10.5-source-new/CMakeLists.txt +--- gmsh-4.10.5-source/CMakeLists.txt 2022-07-03 18:30:12.326025777 +0200 ++++ gmsh-4.10.5-source-new/CMakeLists.txt 2022-07-03 18:30:12.330025777 +0200 @@ -270,7 +270,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index 381ecde..7102232 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.4-source/CMakeLists.txt gmsh-4.10.4-source-new/CMakeLists.txt ---- gmsh-4.10.4-source/CMakeLists.txt 2022-06-19 20:24:46.221154549 +0200 -+++ gmsh-4.10.4-source-new/CMakeLists.txt 2022-06-19 20:24:46.460158084 +0200 +diff -rupN --no-dereference gmsh-4.10.5-source/CMakeLists.txt gmsh-4.10.5-source-new/CMakeLists.txt +--- gmsh-4.10.5-source/CMakeLists.txt 2022-07-03 18:30:11.875025767 +0200 ++++ gmsh-4.10.5-source-new/CMakeLists.txt 2022-07-03 18:30:12.106025772 +0200 @@ -1898,7 +1898,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) diff --git a/gmsh_med.patch b/gmsh_med.patch index 0acd305..b9241c4 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.4-source/src/common/CommandLine.cpp gmsh-4.10.4-source-new/src/common/CommandLine.cpp ---- gmsh-4.10.4-source/src/common/CommandLine.cpp 2022-04-26 17:50:41.000000000 +0200 -+++ gmsh-4.10.4-source-new/src/common/CommandLine.cpp 2022-06-19 20:24:46.225154608 +0200 +diff -rupN --no-dereference gmsh-4.10.5-source/src/common/CommandLine.cpp gmsh-4.10.5-source-new/src/common/CommandLine.cpp +--- gmsh-4.10.5-source/src/common/CommandLine.cpp 2022-04-26 17:50:41.000000000 +0200 ++++ gmsh-4.10.5-source-new/src/common/CommandLine.cpp 2022-07-03 18:30:11.880025767 +0200 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.10.4-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.10.4-source/src/fltk/helpWindow.cpp gmsh-4.10.4-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.10.4-source/src/fltk/helpWindow.cpp 2022-01-11 20:34:46.000000000 +0100 -+++ gmsh-4.10.4-source-new/src/fltk/helpWindow.cpp 2022-06-19 20:24:46.226154622 +0200 +diff -rupN --no-dereference gmsh-4.10.5-source/src/fltk/helpWindow.cpp gmsh-4.10.5-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.10.5-source/src/fltk/helpWindow.cpp 2022-01-11 20:34:46.000000000 +0100 ++++ gmsh-4.10.5-source-new/src/fltk/helpWindow.cpp 2022-07-03 18:30:11.880025767 +0200 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.10.4-source/src/fltk/helpWindow.cpp gmsh-4.10 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.10.4-source/src/geo/GModelIO_MED.cpp gmsh-4.10.4-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.10.4-source/src/geo/GModelIO_MED.cpp 2022-01-11 20:34:47.000000000 +0100 -+++ gmsh-4.10.4-source-new/src/geo/GModelIO_MED.cpp 2022-06-19 20:24:46.226154622 +0200 +diff -rupN --no-dereference gmsh-4.10.5-source/src/geo/GModelIO_MED.cpp gmsh-4.10.5-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.10.5-source/src/geo/GModelIO_MED.cpp 2022-01-11 20:34:47.000000000 +0100 ++++ gmsh-4.10.5-source-new/src/geo/GModelIO_MED.cpp 2022-07-03 18:30:11.881025767 +0200 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.10.4-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.10.4-source/src/post/PViewDataGModelIO.cpp gmsh-4.10.4-source-new/src/post/PViewDataGModelIO.cpp ---- gmsh-4.10.4-source/src/post/PViewDataGModelIO.cpp 2022-01-11 20:34:48.000000000 +0100 -+++ gmsh-4.10.4-source-new/src/post/PViewDataGModelIO.cpp 2022-06-19 20:24:46.226154622 +0200 +diff -rupN --no-dereference gmsh-4.10.5-source/src/post/PViewDataGModelIO.cpp gmsh-4.10.5-source-new/src/post/PViewDataGModelIO.cpp +--- gmsh-4.10.5-source/src/post/PViewDataGModelIO.cpp 2022-01-11 20:34:48.000000000 +0100 ++++ gmsh-4.10.5-source-new/src/post/PViewDataGModelIO.cpp 2022-07-03 18:30:11.881025767 +0200 @@ -542,7 +542,7 @@ void PViewDataGModel::importLists(int N[ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index 1b31cd3..6a14765 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.4-source/CMakeLists.txt gmsh-4.10.4-source-new/CMakeLists.txt ---- gmsh-4.10.4-source/CMakeLists.txt 2022-06-19 09:51:05.000000000 +0200 -+++ gmsh-4.10.4-source-new/CMakeLists.txt 2022-06-19 20:24:45.962150717 +0200 +diff -rupN --no-dereference gmsh-4.10.5-source/CMakeLists.txt gmsh-4.10.5-source-new/CMakeLists.txt +--- gmsh-4.10.5-source/CMakeLists.txt 2022-07-01 09:37:10.000000000 +0200 ++++ gmsh-4.10.5-source-new/CMakeLists.txt 2022-07-03 18:30:11.655025762 +0200 @@ -1880,6 +1880,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -24,9 +24,9 @@ diff -rupN --no-dereference gmsh-4.10.4-source/CMakeLists.txt gmsh-4.10.4-source install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB}) if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) -diff -rupN --no-dereference gmsh-4.10.4-source/src/common/GmshMessage.cpp gmsh-4.10.4-source-new/src/common/GmshMessage.cpp ---- gmsh-4.10.4-source/src/common/GmshMessage.cpp 2022-04-26 17:50:41.000000000 +0200 -+++ gmsh-4.10.4-source-new/src/common/GmshMessage.cpp 2022-06-19 20:24:45.962150717 +0200 +diff -rupN --no-dereference gmsh-4.10.5-source/src/common/GmshMessage.cpp gmsh-4.10.5-source-new/src/common/GmshMessage.cpp +--- gmsh-4.10.5-source/src/common/GmshMessage.cpp 2022-04-26 17:50:41.000000000 +0200 ++++ gmsh-4.10.5-source-new/src/common/GmshMessage.cpp 2022-07-03 18:30:11.655025762 +0200 @@ -169,14 +169,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index 9422dc1..6beb9d1 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.4-source/CMakeLists.txt gmsh-4.10.4-source-new/CMakeLists.txt ---- gmsh-4.10.4-source/CMakeLists.txt 2022-06-19 20:24:46.920164890 +0200 -+++ gmsh-4.10.4-source-new/CMakeLists.txt 2022-06-19 20:24:47.135168070 +0200 +diff -rupN --no-dereference gmsh-4.10.5-source/CMakeLists.txt gmsh-4.10.5-source-new/CMakeLists.txt +--- gmsh-4.10.5-source/CMakeLists.txt 2022-07-03 18:30:12.543025782 +0200 ++++ gmsh-4.10.5-source-new/CMakeLists.txt 2022-07-03 18:30:12.758025787 +0200 @@ -1624,6 +1624,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.10.4-source/CMakeLists.txt gmsh-4.10.4-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.10.4-source/src/graphics/CMakeLists.txt gmsh-4.10.4-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.10.4-source/src/graphics/CMakeLists.txt 2022-01-11 20:34:47.000000000 +0100 -+++ gmsh-4.10.4-source-new/src/graphics/CMakeLists.txt 2022-06-19 20:24:47.135168070 +0200 +diff -rupN --no-dereference gmsh-4.10.5-source/src/graphics/CMakeLists.txt gmsh-4.10.5-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.10.5-source/src/graphics/CMakeLists.txt 2022-01-11 20:34:47.000000000 +0100 ++++ gmsh-4.10.5-source-new/src/graphics/CMakeLists.txt 2022-07-03 18:30:12.758025787 +0200 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index 7e35a59..bbad294 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.10.4-source-fedora.tar.xz) = 7f436ebf77929b00abb97ce091d077bf7979fb2cf6e3ef8299a2d5c5119853b846e9571ecf2f4ab2b752acd5acd658591bb5be66a2ee71c31dfeb996d6a1eda5 +SHA512 (gmsh-4.10.5-source-fedora.tar.xz) = 34ae13ba8f629fd64974f98bf9a28ca3decb48b8035adfd1d3dcf2f22cfc4f11ebdf726f323ce9cccdf587917cd3994f0d02196b50e9c98e2c220d09c7d17d50 From 8d718f4ee491cce014ab0ce361de87446e8e26c8 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 21 Jul 2022 06:41:26 +0000 Subject: [PATCH 11/56] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index ae22406..c10e001 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -10,7 +10,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.10.5 -Release: 1%{?dist} +Release: 2%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -389,6 +389,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Thu Jul 21 2022 Fedora Release Engineering - 4.10.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Sun Jul 03 2022 Sandro Mani - 4.10.5-1 - Update to 4.10.5 From abc989a3a7dc369f431458348d2f46ee0332d458 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Tue, 8 Nov 2022 19:32:59 +0100 Subject: [PATCH 12/56] Update to 4.11.0 --- .gitignore | 1 + fedoratarball.sh | 5 ----- gmsh.spec | 17 +++++++++++------ gmsh_build.patch | 6 +++--- gmsh_install.patch | 8 ++++---- gmsh_julia.patch | 12 ++++++------ gmsh_med.patch | 24 ++++++++++++------------ gmsh_python.patch | 20 ++++++++++++-------- gmsh_unbundle_gl2ps.patch | 14 +++++++------- sources | 2 +- 10 files changed, 57 insertions(+), 52 deletions(-) diff --git a/.gitignore b/.gitignore index d7a8030..e467d98 100644 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,4 @@ /gmsh-4.10.3-source-fedora.tar.xz /gmsh-4.10.4-source-fedora.tar.xz /gmsh-4.10.5-source-fedora.tar.xz +/gmsh-4.11.0-source-fedora.tar.xz diff --git a/fedoratarball.sh b/fedoratarball.sh index d6f9d5a..b42d209 100755 --- a/fedoratarball.sh +++ b/fedoratarball.sh @@ -1,10 +1,5 @@ #!/bin/sh -#if [ $# -lt 1 ]; then -# echo "Usage: $0 upstream_ver" -# exit 1 -#fi - ver=`grep Version: gmsh.spec | awk -F " " '{print $2}'` echo "This will download and rearchive gmsh version $ver" diff --git a/gmsh.spec b/gmsh.spec index c10e001..45faf7a 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -1,7 +1,7 @@ %bcond_without openmpi %bcond_without mpich -%global sover 4.10 +%global sover 4.11 %if 0%{?fedora} >= 33 || 0%{?rhel} >= 9 %bcond_without flexiblas @@ -9,8 +9,8 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.10.5 -Release: 2%{?dist} +Version: 4.11.0 +Release: 1%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -336,6 +336,7 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %doc %{_defaultdocdir}/%{name}/tutorials %doc %{_defaultdocdir}/%{name}/examples %doc %{_defaultdocdir}/%{name}/%{name}.html +%doc %{_defaultdocdir}/%{name}/images/ %files %{_bindir}/%{name} @@ -343,8 +344,8 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %files devel %{_includedir}/gmsh.h %{_includedir}/gmshc.h -%{_includedir}/gmshf.h %{_includedir}/gmsh.h_cwrap +%{_includedir}/gmsh.f90 %{_libdir}/libgmsh.so %files libs @@ -354,6 +355,7 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %files -n python3-%{name} %{python3_sitelib}/gmsh.py %{python3_sitelib}/__pycache__/gmsh.*.pyc +%{python3_sitelib}/gmsh-%{version}*.dist-info/ %if %{with openmpi} %files openmpi @@ -362,8 +364,8 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %files openmpi-devel %{_includedir}/openmpi*/gmsh.h %{_includedir}/openmpi*/gmshc.h -%{_includedir}/openmpi*/gmshf.h %{_includedir}/openmpi*/gmsh.h_cwrap +%{_includedir}/openmpi*/gmsh.f90 %{_libdir}/openmpi/lib/libgmsh.so %files openmpi-libs @@ -378,8 +380,8 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %files mpich-devel %{_includedir}/mpich*/gmsh.h %{_includedir}/mpich*/gmshc.h -%{_includedir}/mpich*/gmshf.h %{_includedir}/mpich*/gmsh.h_cwrap +%{_includedir}/mpich*/gmsh.f90 %{_libdir}/mpich/lib/libgmsh.so %files mpich-libs @@ -389,6 +391,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Tue Nov 08 2022 Sandro Mani - 4.11.0-1 +- Update to 4.11.0 + * Thu Jul 21 2022 Fedora Release Engineering - 4.10.5-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild diff --git a/gmsh_build.patch b/gmsh_build.patch index 83f851f..7435541 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.5-source/src/fltk/helpWindow.cpp gmsh-4.10.5-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.10.5-source/src/fltk/helpWindow.cpp 2022-07-03 18:30:12.102025772 +0200 -+++ gmsh-4.10.5-source-new/src/fltk/helpWindow.cpp 2022-07-03 18:30:12.546025782 +0200 +diff -rupN --no-dereference gmsh-4.11.0-source/src/fltk/helpWindow.cpp gmsh-4.11.0-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.11.0-source/src/fltk/helpWindow.cpp 2022-11-08 18:35:37.046147916 +0100 ++++ gmsh-4.11.0-source-new/src/fltk/helpWindow.cpp 2022-11-08 18:35:37.590147919 +0100 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index 8fe3e2c..6a391b1 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.10.5-source/CMakeLists.txt gmsh-4.10.5-source-new/CMakeLists.txt ---- gmsh-4.10.5-source/CMakeLists.txt 2022-07-03 18:30:12.326025777 +0200 -+++ gmsh-4.10.5-source-new/CMakeLists.txt 2022-07-03 18:30:12.330025777 +0200 -@@ -270,7 +270,7 @@ if(ENABLE_RPATH) +diff -rupN --no-dereference gmsh-4.11.0-source/CMakeLists.txt gmsh-4.11.0-source-new/CMakeLists.txt +--- gmsh-4.11.0-source/CMakeLists.txt 2022-11-08 18:35:37.333147917 +0100 ++++ gmsh-4.11.0-source-new/CMakeLists.txt 2022-11-08 18:35:37.337147918 +0100 +@@ -275,7 +275,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index 7102232..5fdbdd7 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,12 +1,12 @@ -diff -rupN --no-dereference gmsh-4.10.5-source/CMakeLists.txt gmsh-4.10.5-source-new/CMakeLists.txt ---- gmsh-4.10.5-source/CMakeLists.txt 2022-07-03 18:30:11.875025767 +0200 -+++ gmsh-4.10.5-source-new/CMakeLists.txt 2022-07-03 18:30:12.106025772 +0200 -@@ -1898,7 +1898,7 @@ endif() +diff -rupN --no-dereference gmsh-4.11.0-source/CMakeLists.txt gmsh-4.11.0-source-new/CMakeLists.txt +--- gmsh-4.11.0-source/CMakeLists.txt 2022-11-08 18:35:36.767147915 +0100 ++++ gmsh-4.11.0-source-new/CMakeLists.txt 2022-11-08 18:35:37.052147916 +0100 +@@ -1919,7 +1919,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) install(FILES ${GMSH_PY} DESTINATION ${PYTHON3_SITE_PACKAGES}) - install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB}) + install(FILES ${GMSH_JL} DESTINATION share/gmsh) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/METADATA DESTINATION + ${PYTHON3_SITE_PACKAGES}/gmsh-${GMSH_PYTHON_VERSION}.dist-info) if(ENABLE_PRIVATE_API) - install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) - if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen diff --git a/gmsh_med.patch b/gmsh_med.patch index b9241c4..e73b6ee 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.10.5-source/src/common/CommandLine.cpp gmsh-4.10.5-source-new/src/common/CommandLine.cpp ---- gmsh-4.10.5-source/src/common/CommandLine.cpp 2022-04-26 17:50:41.000000000 +0200 -+++ gmsh-4.10.5-source-new/src/common/CommandLine.cpp 2022-07-03 18:30:11.880025767 +0200 +diff -rupN --no-dereference gmsh-4.11.0-source/src/common/CommandLine.cpp gmsh-4.11.0-source-new/src/common/CommandLine.cpp +--- gmsh-4.11.0-source/src/common/CommandLine.cpp 2022-09-28 20:00:58.000000000 +0200 ++++ gmsh-4.11.0-source-new/src/common/CommandLine.cpp 2022-11-08 18:35:36.772147915 +0100 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.10.5-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.10.5-source/src/fltk/helpWindow.cpp gmsh-4.10.5-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.10.5-source/src/fltk/helpWindow.cpp 2022-01-11 20:34:46.000000000 +0100 -+++ gmsh-4.10.5-source-new/src/fltk/helpWindow.cpp 2022-07-03 18:30:11.880025767 +0200 +diff -rupN --no-dereference gmsh-4.11.0-source/src/fltk/helpWindow.cpp gmsh-4.11.0-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.11.0-source/src/fltk/helpWindow.cpp 2022-09-28 20:00:58.000000000 +0200 ++++ gmsh-4.11.0-source-new/src/fltk/helpWindow.cpp 2022-11-08 18:35:36.772147915 +0100 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.10.5-source/src/fltk/helpWindow.cpp gmsh-4.10 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.10.5-source/src/geo/GModelIO_MED.cpp gmsh-4.10.5-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.10.5-source/src/geo/GModelIO_MED.cpp 2022-01-11 20:34:47.000000000 +0100 -+++ gmsh-4.10.5-source-new/src/geo/GModelIO_MED.cpp 2022-07-03 18:30:11.881025767 +0200 +diff -rupN --no-dereference gmsh-4.11.0-source/src/geo/GModelIO_MED.cpp gmsh-4.11.0-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.11.0-source/src/geo/GModelIO_MED.cpp 2022-10-19 11:45:57.000000000 +0200 ++++ gmsh-4.11.0-source-new/src/geo/GModelIO_MED.cpp 2022-11-08 18:35:36.772147915 +0100 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.10.5-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.10.5-source/src/post/PViewDataGModelIO.cpp gmsh-4.10.5-source-new/src/post/PViewDataGModelIO.cpp ---- gmsh-4.10.5-source/src/post/PViewDataGModelIO.cpp 2022-01-11 20:34:48.000000000 +0100 -+++ gmsh-4.10.5-source-new/src/post/PViewDataGModelIO.cpp 2022-07-03 18:30:11.881025767 +0200 +diff -rupN --no-dereference gmsh-4.11.0-source/src/post/PViewDataGModelIO.cpp gmsh-4.11.0-source-new/src/post/PViewDataGModelIO.cpp +--- gmsh-4.11.0-source/src/post/PViewDataGModelIO.cpp 2022-09-28 20:01:01.000000000 +0200 ++++ gmsh-4.11.0-source-new/src/post/PViewDataGModelIO.cpp 2022-11-08 18:35:36.773147915 +0100 @@ -542,7 +542,7 @@ void PViewDataGModel::importLists(int N[ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index 6a14765..f6c8c7c 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.10.5-source/CMakeLists.txt gmsh-4.10.5-source-new/CMakeLists.txt ---- gmsh-4.10.5-source/CMakeLists.txt 2022-07-01 09:37:10.000000000 +0200 -+++ gmsh-4.10.5-source-new/CMakeLists.txt 2022-07-03 18:30:11.655025762 +0200 -@@ -1880,6 +1880,8 @@ else() +diff -rupN --no-dereference gmsh-4.11.0-source/CMakeLists.txt gmsh-4.11.0-source-new/CMakeLists.txt +--- gmsh-4.11.0-source/CMakeLists.txt 2022-10-31 21:39:09.000000000 +0100 ++++ gmsh-4.11.0-source-new/CMakeLists.txt 2022-11-08 18:35:36.490147914 +0100 +@@ -1901,6 +1901,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -10,7 +10,7 @@ diff -rupN --no-dereference gmsh-4.10.5-source/CMakeLists.txt gmsh-4.10.5-source # mark targets as optional so we can install them separately if needed # (e.g. "make lib" or "make shared" followed by "make install/fast") install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL) -@@ -1891,11 +1893,11 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_D +@@ -1912,14 +1914,14 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_D endif() if(ENABLE_ONELAB AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab) @@ -22,11 +22,15 @@ diff -rupN --no-dereference gmsh-4.10.5-source/CMakeLists.txt gmsh-4.10.5-source - install(FILES ${GMSH_PY} DESTINATION ${GMSH_LIB}) + install(FILES ${GMSH_PY} DESTINATION ${PYTHON3_SITE_PACKAGES}) install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB}) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/METADATA DESTINATION +- ${GMSH_LIB}/gmsh-${GMSH_PYTHON_VERSION}.dist-info) ++ ${PYTHON3_SITE_PACKAGES}/gmsh-${GMSH_PYTHON_VERSION}.dist-info) if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) -diff -rupN --no-dereference gmsh-4.10.5-source/src/common/GmshMessage.cpp gmsh-4.10.5-source-new/src/common/GmshMessage.cpp ---- gmsh-4.10.5-source/src/common/GmshMessage.cpp 2022-04-26 17:50:41.000000000 +0200 -+++ gmsh-4.10.5-source-new/src/common/GmshMessage.cpp 2022-07-03 18:30:11.655025762 +0200 + if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen +diff -rupN --no-dereference gmsh-4.11.0-source/src/common/GmshMessage.cpp gmsh-4.11.0-source-new/src/common/GmshMessage.cpp +--- gmsh-4.11.0-source/src/common/GmshMessage.cpp 2022-09-28 20:00:58.000000000 +0200 ++++ gmsh-4.11.0-source-new/src/common/GmshMessage.cpp 2022-11-08 18:35:36.489147913 +0100 @@ -169,14 +169,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index 6beb9d1..bf83599 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.10.5-source/CMakeLists.txt gmsh-4.10.5-source-new/CMakeLists.txt ---- gmsh-4.10.5-source/CMakeLists.txt 2022-07-03 18:30:12.543025782 +0200 -+++ gmsh-4.10.5-source-new/CMakeLists.txt 2022-07-03 18:30:12.758025787 +0200 -@@ -1624,6 +1624,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB +diff -rupN --no-dereference gmsh-4.11.0-source/CMakeLists.txt gmsh-4.11.0-source-new/CMakeLists.txt +--- gmsh-4.11.0-source/CMakeLists.txt 2022-11-08 18:35:37.586147919 +0100 ++++ gmsh-4.11.0-source-new/CMakeLists.txt 2022-11-08 18:35:37.837147920 +0100 +@@ -1643,6 +1643,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.10.5-source/CMakeLists.txt gmsh-4.10.5-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.10.5-source/src/graphics/CMakeLists.txt gmsh-4.10.5-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.10.5-source/src/graphics/CMakeLists.txt 2022-01-11 20:34:47.000000000 +0100 -+++ gmsh-4.10.5-source-new/src/graphics/CMakeLists.txt 2022-07-03 18:30:12.758025787 +0200 +diff -rupN --no-dereference gmsh-4.11.0-source/src/graphics/CMakeLists.txt gmsh-4.11.0-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.11.0-source/src/graphics/CMakeLists.txt 2022-09-28 20:00:59.000000000 +0200 ++++ gmsh-4.11.0-source-new/src/graphics/CMakeLists.txt 2022-11-08 18:35:37.837147920 +0100 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index bbad294..3768bce 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.10.5-source-fedora.tar.xz) = 34ae13ba8f629fd64974f98bf9a28ca3decb48b8035adfd1d3dcf2f22cfc4f11ebdf726f323ce9cccdf587917cd3994f0d02196b50e9c98e2c220d09c7d17d50 +SHA512 (gmsh-4.11.0-source-fedora.tar.xz) = 6039d2710ed27fd82f6e2d94b31db6a01e493bcadca3a1c6309cd82055d04b13331a98efd58990784cef27f866f1b7126db17793bb117c966d38df6e03b7ab21 From a63b3c42deabd83253fd38b68f31513a3aa6bb7e Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Wed, 21 Dec 2022 15:36:19 +0100 Subject: [PATCH 13/56] Update to 4.11.1 --- .gitignore | 1 + gmsh.spec | 5 ++++- gmsh_build.patch | 6 +++--- gmsh_install.patch | 6 +++--- gmsh_julia.patch | 8 ++++---- gmsh_med.patch | 24 ++++++++++++------------ gmsh_python.patch | 18 +++++++++--------- gmsh_unbundle_gl2ps.patch | 14 +++++++------- sources | 2 +- 9 files changed, 44 insertions(+), 40 deletions(-) diff --git a/.gitignore b/.gitignore index e467d98..de04ba7 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,4 @@ /gmsh-4.10.4-source-fedora.tar.xz /gmsh-4.10.5-source-fedora.tar.xz /gmsh-4.11.0-source-fedora.tar.xz +/gmsh-4.11.1-source-fedora.tar.xz diff --git a/gmsh.spec b/gmsh.spec index 45faf7a..52725f9 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -9,7 +9,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.11.0 +Version: 4.11.1 Release: 1%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt @@ -391,6 +391,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Wed Dec 21 2022 Sandro Mani - 4.11.1-1 +- Update to 4.11.1 + * Tue Nov 08 2022 Sandro Mani - 4.11.0-1 - Update to 4.11.0 diff --git a/gmsh_build.patch b/gmsh_build.patch index 7435541..599bcae 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.11.0-source/src/fltk/helpWindow.cpp gmsh-4.11.0-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.11.0-source/src/fltk/helpWindow.cpp 2022-11-08 18:35:37.046147916 +0100 -+++ gmsh-4.11.0-source-new/src/fltk/helpWindow.cpp 2022-11-08 18:35:37.590147919 +0100 +diff -rupN --no-dereference gmsh-4.11.1-source/src/fltk/helpWindow.cpp gmsh-4.11.1-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.11.1-source/src/fltk/helpWindow.cpp 2022-12-21 15:34:04.580442044 +0100 ++++ gmsh-4.11.1-source-new/src/fltk/helpWindow.cpp 2022-12-21 15:34:05.148442057 +0100 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index 6a391b1..d951bfe 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.11.0-source/CMakeLists.txt gmsh-4.11.0-source-new/CMakeLists.txt ---- gmsh-4.11.0-source/CMakeLists.txt 2022-11-08 18:35:37.333147917 +0100 -+++ gmsh-4.11.0-source-new/CMakeLists.txt 2022-11-08 18:35:37.337147918 +0100 +diff -rupN --no-dereference gmsh-4.11.1-source/CMakeLists.txt gmsh-4.11.1-source-new/CMakeLists.txt +--- gmsh-4.11.1-source/CMakeLists.txt 2022-12-21 15:34:04.867442050 +0100 ++++ gmsh-4.11.1-source-new/CMakeLists.txt 2022-12-21 15:34:04.872442050 +0100 @@ -275,7 +275,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index 5fdbdd7..91e6289 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.11.0-source/CMakeLists.txt gmsh-4.11.0-source-new/CMakeLists.txt ---- gmsh-4.11.0-source/CMakeLists.txt 2022-11-08 18:35:36.767147915 +0100 -+++ gmsh-4.11.0-source-new/CMakeLists.txt 2022-11-08 18:35:37.052147916 +0100 -@@ -1919,7 +1919,7 @@ endif() +diff -rupN --no-dereference gmsh-4.11.1-source/CMakeLists.txt gmsh-4.11.1-source-new/CMakeLists.txt +--- gmsh-4.11.1-source/CMakeLists.txt 2022-12-21 15:34:04.301442038 +0100 ++++ gmsh-4.11.1-source-new/CMakeLists.txt 2022-12-21 15:34:04.586442044 +0100 +@@ -1933,7 +1933,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) install(FILES ${GMSH_PY} DESTINATION ${PYTHON3_SITE_PACKAGES}) diff --git a/gmsh_med.patch b/gmsh_med.patch index e73b6ee..bf20da7 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.11.0-source/src/common/CommandLine.cpp gmsh-4.11.0-source-new/src/common/CommandLine.cpp ---- gmsh-4.11.0-source/src/common/CommandLine.cpp 2022-09-28 20:00:58.000000000 +0200 -+++ gmsh-4.11.0-source-new/src/common/CommandLine.cpp 2022-11-08 18:35:36.772147915 +0100 +diff -rupN --no-dereference gmsh-4.11.1-source/src/common/CommandLine.cpp gmsh-4.11.1-source-new/src/common/CommandLine.cpp +--- gmsh-4.11.1-source/src/common/CommandLine.cpp 2022-09-28 20:00:58.000000000 +0200 ++++ gmsh-4.11.1-source-new/src/common/CommandLine.cpp 2022-12-21 15:34:04.306442038 +0100 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.11.0-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.11.0-source/src/fltk/helpWindow.cpp gmsh-4.11.0-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.11.0-source/src/fltk/helpWindow.cpp 2022-09-28 20:00:58.000000000 +0200 -+++ gmsh-4.11.0-source-new/src/fltk/helpWindow.cpp 2022-11-08 18:35:36.772147915 +0100 +diff -rupN --no-dereference gmsh-4.11.1-source/src/fltk/helpWindow.cpp gmsh-4.11.1-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.11.1-source/src/fltk/helpWindow.cpp 2022-09-28 20:00:58.000000000 +0200 ++++ gmsh-4.11.1-source-new/src/fltk/helpWindow.cpp 2022-12-21 15:34:04.306442038 +0100 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.11.0-source/src/fltk/helpWindow.cpp gmsh-4.11 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.11.0-source/src/geo/GModelIO_MED.cpp gmsh-4.11.0-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.11.0-source/src/geo/GModelIO_MED.cpp 2022-10-19 11:45:57.000000000 +0200 -+++ gmsh-4.11.0-source-new/src/geo/GModelIO_MED.cpp 2022-11-08 18:35:36.772147915 +0100 +diff -rupN --no-dereference gmsh-4.11.1-source/src/geo/GModelIO_MED.cpp gmsh-4.11.1-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.11.1-source/src/geo/GModelIO_MED.cpp 2022-10-19 11:45:57.000000000 +0200 ++++ gmsh-4.11.1-source-new/src/geo/GModelIO_MED.cpp 2022-12-21 15:34:04.307442038 +0100 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.11.0-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.11.0-source/src/post/PViewDataGModelIO.cpp gmsh-4.11.0-source-new/src/post/PViewDataGModelIO.cpp ---- gmsh-4.11.0-source/src/post/PViewDataGModelIO.cpp 2022-09-28 20:01:01.000000000 +0200 -+++ gmsh-4.11.0-source-new/src/post/PViewDataGModelIO.cpp 2022-11-08 18:35:36.773147915 +0100 +diff -rupN --no-dereference gmsh-4.11.1-source/src/post/PViewDataGModelIO.cpp gmsh-4.11.1-source-new/src/post/PViewDataGModelIO.cpp +--- gmsh-4.11.1-source/src/post/PViewDataGModelIO.cpp 2022-09-28 20:01:01.000000000 +0200 ++++ gmsh-4.11.1-source-new/src/post/PViewDataGModelIO.cpp 2022-12-21 15:34:04.307442038 +0100 @@ -542,7 +542,7 @@ void PViewDataGModel::importLists(int N[ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index f6c8c7c..d8fb69d 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.11.0-source/CMakeLists.txt gmsh-4.11.0-source-new/CMakeLists.txt ---- gmsh-4.11.0-source/CMakeLists.txt 2022-10-31 21:39:09.000000000 +0100 -+++ gmsh-4.11.0-source-new/CMakeLists.txt 2022-11-08 18:35:36.490147914 +0100 -@@ -1901,6 +1901,8 @@ else() +diff -rupN --no-dereference gmsh-4.11.1-source/CMakeLists.txt gmsh-4.11.1-source-new/CMakeLists.txt +--- gmsh-4.11.1-source/CMakeLists.txt 2022-12-20 16:30:55.000000000 +0100 ++++ gmsh-4.11.1-source-new/CMakeLists.txt 2022-12-21 15:34:04.007442031 +0100 +@@ -1915,6 +1915,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -10,7 +10,7 @@ diff -rupN --no-dereference gmsh-4.11.0-source/CMakeLists.txt gmsh-4.11.0-source # mark targets as optional so we can install them separately if needed # (e.g. "make lib" or "make shared" followed by "make install/fast") install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL) -@@ -1912,14 +1914,14 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_D +@@ -1926,14 +1928,14 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_D endif() if(ENABLE_ONELAB AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab) @@ -28,10 +28,10 @@ diff -rupN --no-dereference gmsh-4.11.0-source/CMakeLists.txt gmsh-4.11.0-source if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen -diff -rupN --no-dereference gmsh-4.11.0-source/src/common/GmshMessage.cpp gmsh-4.11.0-source-new/src/common/GmshMessage.cpp ---- gmsh-4.11.0-source/src/common/GmshMessage.cpp 2022-09-28 20:00:58.000000000 +0200 -+++ gmsh-4.11.0-source-new/src/common/GmshMessage.cpp 2022-11-08 18:35:36.489147913 +0100 -@@ -169,14 +169,6 @@ void Msg::Initialize(int argc, char **ar +diff -rupN --no-dereference gmsh-4.11.1-source/src/common/GmshMessage.cpp gmsh-4.11.1-source-new/src/common/GmshMessage.cpp +--- gmsh-4.11.1-source/src/common/GmshMessage.cpp 2022-11-29 17:08:32.000000000 +0100 ++++ gmsh-4.11.1-source-new/src/common/GmshMessage.cpp 2022-12-21 15:34:04.007442031 +0100 +@@ -173,14 +173,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index bf83599..ea2c41c 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.11.0-source/CMakeLists.txt gmsh-4.11.0-source-new/CMakeLists.txt ---- gmsh-4.11.0-source/CMakeLists.txt 2022-11-08 18:35:37.586147919 +0100 -+++ gmsh-4.11.0-source-new/CMakeLists.txt 2022-11-08 18:35:37.837147920 +0100 -@@ -1643,6 +1643,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB +diff -rupN --no-dereference gmsh-4.11.1-source/CMakeLists.txt gmsh-4.11.1-source-new/CMakeLists.txt +--- gmsh-4.11.1-source/CMakeLists.txt 2022-12-21 15:34:05.142442056 +0100 ++++ gmsh-4.11.1-source-new/CMakeLists.txt 2022-12-21 15:34:05.425442063 +0100 +@@ -1645,6 +1645,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.11.0-source/CMakeLists.txt gmsh-4.11.0-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.11.0-source/src/graphics/CMakeLists.txt gmsh-4.11.0-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.11.0-source/src/graphics/CMakeLists.txt 2022-09-28 20:00:59.000000000 +0200 -+++ gmsh-4.11.0-source-new/src/graphics/CMakeLists.txt 2022-11-08 18:35:37.837147920 +0100 +diff -rupN --no-dereference gmsh-4.11.1-source/src/graphics/CMakeLists.txt gmsh-4.11.1-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.11.1-source/src/graphics/CMakeLists.txt 2022-09-28 20:00:59.000000000 +0200 ++++ gmsh-4.11.1-source-new/src/graphics/CMakeLists.txt 2022-12-21 15:34:05.425442063 +0100 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index 3768bce..8155934 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.11.0-source-fedora.tar.xz) = 6039d2710ed27fd82f6e2d94b31db6a01e493bcadca3a1c6309cd82055d04b13331a98efd58990784cef27f866f1b7126db17793bb117c966d38df6e03b7ab21 +SHA512 (gmsh-4.11.1-source-fedora.tar.xz) = f0f2cdf4352267de2dca47e166531fb591029522270e7b21a23706f595698dbc45046429fc613a84b60e440a0a73520b3c5f2c0c745c175ebc884b7c148039bd From 87defd074fa636ea0ac8de402df47db0617162a6 Mon Sep 17 00:00:00 2001 From: Richard Shaw Date: Fri, 13 Jan 2023 21:14:42 -0600 Subject: [PATCH 14/56] Rebuild for opencascade. --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 52725f9..b28fdc1 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -10,7 +10,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.11.1 -Release: 1%{?dist} +Release: 2%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -391,6 +391,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Sat Jan 14 2023 Richard Shaw - 4.11.1-2 +- Rebuild for opencascade. + * Wed Dec 21 2022 Sandro Mani - 4.11.1-1 - Update to 4.11.1 From 31dc8e099313b8e9acab6ff7106cfdbe0abc672d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 19 Jan 2023 05:19:50 +0000 Subject: [PATCH 15/56] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index b28fdc1..6092529 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -10,7 +10,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.11.1 -Release: 2%{?dist} +Release: 3%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -391,6 +391,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Thu Jan 19 2023 Fedora Release Engineering - 4.11.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Sat Jan 14 2023 Richard Shaw - 4.11.1-2 - Rebuild for opencascade. From ca104a2d3b1b4f226200eb317e88e6ecbfa97b26 Mon Sep 17 00:00:00 2001 From: Richard Shaw Date: Mon, 23 Jan 2023 21:58:36 -0600 Subject: [PATCH 16/56] Add header patch for GCC 13. --- gmsh-cstdint.patch | 12 ++++++++++++ gmsh.spec | 2 ++ 2 files changed, 14 insertions(+) create mode 100644 gmsh-cstdint.patch diff --git a/gmsh-cstdint.patch b/gmsh-cstdint.patch new file mode 100644 index 0000000..8422d30 --- /dev/null +++ b/gmsh-cstdint.patch @@ -0,0 +1,12 @@ +Index: gmsh-4.11.1-source/src/mesh/meshGFacePack.cpp +=================================================================== +--- gmsh-4.11.1-source.orig/src/mesh/meshGFacePack.cpp ++++ gmsh-4.11.1-source/src/mesh/meshGFacePack.cpp +@@ -5,6 +5,7 @@ + + #include + #include ++#include + #include + #include + #include diff --git a/gmsh.spec b/gmsh.spec index 6092529..4c09f21 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -33,6 +33,8 @@ Patch3: gmsh_install.patch Patch4: gmsh_build.patch # Unbundle gl2ps Patch5: gmsh_unbundle_gl2ps.patch +# Header fix for GCC 13 +Patch6: gmsh-cstdint.patch BuildRequires: alglib-devel BuildRequires: ann-devel From 0b64c4100dd64ede611ad4782a044dc26668f8cb Mon Sep 17 00:00:00 2001 From: Python Maint Date: Sat, 17 Jun 2023 11:44:09 +0200 Subject: [PATCH 17/56] Rebuilt for Python 3.12 --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 4c09f21..de356e7 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -10,7 +10,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.11.1 -Release: 3%{?dist} +Release: 4%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -393,6 +393,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Sat Jun 17 2023 Python Maint - 4.11.1-4 +- Rebuilt for Python 3.12 + * Thu Jan 19 2023 Fedora Release Engineering - 4.11.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From a2396aece5f77ea3c05d3fea0a7eaf41b6e549fa Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Thu, 6 Jul 2023 15:43:04 +0200 Subject: [PATCH 18/56] Rebuild (cgnslib) --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index de356e7..22b92be 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -10,7 +10,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.11.1 -Release: 4%{?dist} +Release: 5%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -393,6 +393,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Thu Jul 06 2023 Sandro Mani - 4.11.1-5 +- Rebuild (cgnslib) + * Sat Jun 17 2023 Python Maint - 4.11.1-4 - Rebuilt for Python 3.12 From b6d7ec695a1916240b0297bab293a7558d6aa871 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 19 Jul 2023 23:27:35 +0000 Subject: [PATCH 19/56] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 22b92be..9f5d2da 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -10,7 +10,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.11.1 -Release: 5%{?dist} +Release: 6%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -393,6 +393,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Wed Jul 19 2023 Fedora Release Engineering - 4.11.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Thu Jul 06 2023 Sandro Mani - 4.11.1-5 - Rebuild (cgnslib) From 8c2b851ce96866b5414f766f6b2ee4b80ff4dbdc Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Sun, 29 Oct 2023 14:52:53 -0600 Subject: [PATCH 20/56] Rebuild for openmpi 5.0.0, drops i686 and C++ API --- gmsh.spec | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 9f5d2da..ab75d23 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -1,4 +1,12 @@ +%if 0%{?fedora} >= 40 +%ifarch %{ix86} +%bcond_with openmpi +%else %bcond_without openmpi +%endif +%else +%bcond_without openmpi +%endif %bcond_without mpich %global sover 4.11 @@ -10,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.11.1 -Release: 6%{?dist} +Release: 7%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -393,6 +401,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Sun Oct 29 2023 Orion Poplawski - 4.11.1-7 +- Rebuild for openmpi 5.0.0, drops i686 and C++ API + * Wed Jul 19 2023 Fedora Release Engineering - 4.11.1-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From 7fb308658ede5fb5779fecc326967ba4387a7e04 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Mon, 1 Jan 2024 22:04:21 +0100 Subject: [PATCH 21/56] Update to 4.12.0 --- .gitignore | 1 + gmsh-cstdint.patch | 7 +++---- gmsh.spec | 9 ++++++--- gmsh_build.patch | 6 +++--- gmsh_install.patch | 6 +++--- gmsh_julia.patch | 8 ++++---- gmsh_med.patch | 26 +++++++++++++------------- gmsh_python.patch | 16 ++++++++-------- gmsh_unbundle_gl2ps.patch | 14 +++++++------- sources | 2 +- 10 files changed, 49 insertions(+), 46 deletions(-) diff --git a/.gitignore b/.gitignore index de04ba7..3d2035a 100644 --- a/.gitignore +++ b/.gitignore @@ -69,3 +69,4 @@ /gmsh-4.10.5-source-fedora.tar.xz /gmsh-4.11.0-source-fedora.tar.xz /gmsh-4.11.1-source-fedora.tar.xz +/gmsh-4.12.0-source-fedora.tar.xz diff --git a/gmsh-cstdint.patch b/gmsh-cstdint.patch index 8422d30..fdf5fe5 100644 --- a/gmsh-cstdint.patch +++ b/gmsh-cstdint.patch @@ -1,7 +1,6 @@ -Index: gmsh-4.11.1-source/src/mesh/meshGFacePack.cpp -=================================================================== ---- gmsh-4.11.1-source.orig/src/mesh/meshGFacePack.cpp -+++ gmsh-4.11.1-source/src/mesh/meshGFacePack.cpp +diff -rupN --no-dereference gmsh-4.12.0-source/src/mesh/meshGFacePack.cpp gmsh-4.12.0-source-new/src/mesh/meshGFacePack.cpp +--- gmsh-4.12.0-source/src/mesh/meshGFacePack.cpp 2023-11-27 11:19:10.000000000 +0100 ++++ gmsh-4.12.0-source-new/src/mesh/meshGFacePack.cpp 2024-01-01 18:45:56.780513374 +0100 @@ -5,6 +5,7 @@ #include diff --git a/gmsh.spec b/gmsh.spec index ab75d23..7baf0d9 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -9,7 +9,7 @@ %endif %bcond_without mpich -%global sover 4.11 +%global sover 4.12 %if 0%{?fedora} >= 33 || 0%{?rhel} >= 9 %bcond_without flexiblas @@ -17,8 +17,8 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.11.1 -Release: 7%{?dist} +Version: 4.12.0 +Release: 1%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -401,6 +401,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Mon Jan 01 2024 Sandro Mani - 4.12.0-1 +- Update to 4.12.0 + * Sun Oct 29 2023 Orion Poplawski - 4.11.1-7 - Rebuild for openmpi 5.0.0, drops i686 and C++ API diff --git a/gmsh_build.patch b/gmsh_build.patch index 599bcae..84cbf29 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.11.1-source/src/fltk/helpWindow.cpp gmsh-4.11.1-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.11.1-source/src/fltk/helpWindow.cpp 2022-12-21 15:34:04.580442044 +0100 -+++ gmsh-4.11.1-source-new/src/fltk/helpWindow.cpp 2022-12-21 15:34:05.148442057 +0100 +diff -rupN --no-dereference gmsh-4.12.0-source/src/fltk/helpWindow.cpp gmsh-4.12.0-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.12.0-source/src/fltk/helpWindow.cpp 2024-01-01 18:45:55.706494916 +0100 ++++ gmsh-4.12.0-source-new/src/fltk/helpWindow.cpp 2024-01-01 18:45:56.250504265 +0100 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index d951bfe..03368c2 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.11.1-source/CMakeLists.txt gmsh-4.11.1-source-new/CMakeLists.txt ---- gmsh-4.11.1-source/CMakeLists.txt 2022-12-21 15:34:04.867442050 +0100 -+++ gmsh-4.11.1-source-new/CMakeLists.txt 2022-12-21 15:34:04.872442050 +0100 +diff -rupN --no-dereference gmsh-4.12.0-source/CMakeLists.txt gmsh-4.12.0-source-new/CMakeLists.txt +--- gmsh-4.12.0-source/CMakeLists.txt 2024-01-01 18:45:55.986499728 +0100 ++++ gmsh-4.12.0-source-new/CMakeLists.txt 2024-01-01 18:45:55.990499796 +0100 @@ -275,7 +275,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index 91e6289..d3dacaf 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.11.1-source/CMakeLists.txt gmsh-4.11.1-source-new/CMakeLists.txt ---- gmsh-4.11.1-source/CMakeLists.txt 2022-12-21 15:34:04.301442038 +0100 -+++ gmsh-4.11.1-source-new/CMakeLists.txt 2022-12-21 15:34:04.586442044 +0100 -@@ -1933,7 +1933,7 @@ endif() +diff -rupN --no-dereference gmsh-4.12.0-source/CMakeLists.txt gmsh-4.12.0-source-new/CMakeLists.txt +--- gmsh-4.12.0-source/CMakeLists.txt 2024-01-01 18:45:55.427490121 +0100 ++++ gmsh-4.12.0-source-new/CMakeLists.txt 2024-01-01 18:45:55.721495173 +0100 +@@ -1963,7 +1963,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) install(FILES ${GMSH_PY} DESTINATION ${PYTHON3_SITE_PACKAGES}) diff --git a/gmsh_med.patch b/gmsh_med.patch index bf20da7..703b41d 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.11.1-source/src/common/CommandLine.cpp gmsh-4.11.1-source-new/src/common/CommandLine.cpp ---- gmsh-4.11.1-source/src/common/CommandLine.cpp 2022-09-28 20:00:58.000000000 +0200 -+++ gmsh-4.11.1-source-new/src/common/CommandLine.cpp 2022-12-21 15:34:04.306442038 +0100 +diff -rupN --no-dereference gmsh-4.12.0-source/src/common/CommandLine.cpp gmsh-4.12.0-source-new/src/common/CommandLine.cpp +--- gmsh-4.12.0-source/src/common/CommandLine.cpp 2023-12-21 09:07:37.000000000 +0100 ++++ gmsh-4.12.0-source-new/src/common/CommandLine.cpp 2024-01-01 18:45:55.434490241 +0100 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.11.1-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.11.1-source/src/fltk/helpWindow.cpp gmsh-4.11.1-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.11.1-source/src/fltk/helpWindow.cpp 2022-09-28 20:00:58.000000000 +0200 -+++ gmsh-4.11.1-source-new/src/fltk/helpWindow.cpp 2022-12-21 15:34:04.306442038 +0100 +diff -rupN --no-dereference gmsh-4.12.0-source/src/fltk/helpWindow.cpp gmsh-4.12.0-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.12.0-source/src/fltk/helpWindow.cpp 2023-07-21 20:57:23.000000000 +0200 ++++ gmsh-4.12.0-source-new/src/fltk/helpWindow.cpp 2024-01-01 18:45:55.438490310 +0100 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.11.1-source/src/fltk/helpWindow.cpp gmsh-4.11 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.11.1-source/src/geo/GModelIO_MED.cpp gmsh-4.11.1-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.11.1-source/src/geo/GModelIO_MED.cpp 2022-10-19 11:45:57.000000000 +0200 -+++ gmsh-4.11.1-source-new/src/geo/GModelIO_MED.cpp 2022-12-21 15:34:04.307442038 +0100 +diff -rupN --no-dereference gmsh-4.12.0-source/src/geo/GModelIO_MED.cpp gmsh-4.12.0-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.12.0-source/src/geo/GModelIO_MED.cpp 2023-07-21 20:57:24.000000000 +0200 ++++ gmsh-4.12.0-source-new/src/geo/GModelIO_MED.cpp 2024-01-01 18:45:55.442490378 +0100 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,10 +34,10 @@ diff -rupN --no-dereference gmsh-4.11.1-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.11.1-source/src/post/PViewDataGModelIO.cpp gmsh-4.11.1-source-new/src/post/PViewDataGModelIO.cpp ---- gmsh-4.11.1-source/src/post/PViewDataGModelIO.cpp 2022-09-28 20:01:01.000000000 +0200 -+++ gmsh-4.11.1-source-new/src/post/PViewDataGModelIO.cpp 2022-12-21 15:34:04.307442038 +0100 -@@ -542,7 +542,7 @@ void PViewDataGModel::importLists(int N[ +diff -rupN --no-dereference gmsh-4.12.0-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.12.0-source-new/src/post/PViewDataGModelIO_MED.cpp +--- gmsh-4.12.0-source/src/post/PViewDataGModelIO_MED.cpp 2023-07-21 20:57:25.000000000 +0200 ++++ gmsh-4.12.0-source-new/src/post/PViewDataGModelIO_MED.cpp 2024-01-01 18:45:55.445490430 +0100 +@@ -11,7 +11,7 @@ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index d8fb69d..1ab97c3 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.11.1-source/CMakeLists.txt gmsh-4.11.1-source-new/CMakeLists.txt ---- gmsh-4.11.1-source/CMakeLists.txt 2022-12-20 16:30:55.000000000 +0100 -+++ gmsh-4.11.1-source-new/CMakeLists.txt 2022-12-21 15:34:04.007442031 +0100 -@@ -1915,6 +1915,8 @@ else() +diff -rupN --no-dereference gmsh-4.12.0-source/CMakeLists.txt gmsh-4.12.0-source-new/CMakeLists.txt +--- gmsh-4.12.0-source/CMakeLists.txt 2023-12-21 09:07:36.000000000 +0100 ++++ gmsh-4.12.0-source-new/CMakeLists.txt 2024-01-01 18:45:55.163485584 +0100 +@@ -1945,6 +1945,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -10,7 +10,7 @@ diff -rupN --no-dereference gmsh-4.11.1-source/CMakeLists.txt gmsh-4.11.1-source # mark targets as optional so we can install them separately if needed # (e.g. "make lib" or "make shared" followed by "make install/fast") install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL) -@@ -1926,14 +1928,14 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_D +@@ -1956,14 +1958,14 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_D endif() if(ENABLE_ONELAB AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab) @@ -28,9 +28,9 @@ diff -rupN --no-dereference gmsh-4.11.1-source/CMakeLists.txt gmsh-4.11.1-source if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen -diff -rupN --no-dereference gmsh-4.11.1-source/src/common/GmshMessage.cpp gmsh-4.11.1-source-new/src/common/GmshMessage.cpp ---- gmsh-4.11.1-source/src/common/GmshMessage.cpp 2022-11-29 17:08:32.000000000 +0100 -+++ gmsh-4.11.1-source-new/src/common/GmshMessage.cpp 2022-12-21 15:34:04.007442031 +0100 +diff -rupN --no-dereference gmsh-4.12.0-source/src/common/GmshMessage.cpp gmsh-4.12.0-source-new/src/common/GmshMessage.cpp +--- gmsh-4.12.0-source/src/common/GmshMessage.cpp 2023-12-21 08:34:37.000000000 +0100 ++++ gmsh-4.12.0-source-new/src/common/GmshMessage.cpp 2024-01-01 18:45:55.163485584 +0100 @@ -173,14 +173,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index ea2c41c..748c0d3 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.11.1-source/CMakeLists.txt gmsh-4.11.1-source-new/CMakeLists.txt ---- gmsh-4.11.1-source/CMakeLists.txt 2022-12-21 15:34:05.142442056 +0100 -+++ gmsh-4.11.1-source-new/CMakeLists.txt 2022-12-21 15:34:05.425442063 +0100 -@@ -1645,6 +1645,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB +diff -rupN --no-dereference gmsh-4.12.0-source/CMakeLists.txt gmsh-4.12.0-source-new/CMakeLists.txt +--- gmsh-4.12.0-source/CMakeLists.txt 2024-01-01 18:45:56.246504196 +0100 ++++ gmsh-4.12.0-source-new/CMakeLists.txt 2024-01-01 18:45:56.512508768 +0100 +@@ -1673,6 +1673,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.11.1-source/CMakeLists.txt gmsh-4.11.1-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.11.1-source/src/graphics/CMakeLists.txt gmsh-4.11.1-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.11.1-source/src/graphics/CMakeLists.txt 2022-09-28 20:00:59.000000000 +0200 -+++ gmsh-4.11.1-source-new/src/graphics/CMakeLists.txt 2022-12-21 15:34:05.425442063 +0100 +diff -rupN --no-dereference gmsh-4.12.0-source/src/graphics/CMakeLists.txt gmsh-4.12.0-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.12.0-source/src/graphics/CMakeLists.txt 2023-03-21 09:13:23.000000000 +0100 ++++ gmsh-4.12.0-source-new/src/graphics/CMakeLists.txt 2024-01-01 18:45:56.513508785 +0100 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index 8155934..1a20631 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.11.1-source-fedora.tar.xz) = f0f2cdf4352267de2dca47e166531fb591029522270e7b21a23706f595698dbc45046429fc613a84b60e440a0a73520b3c5f2c0c745c175ebc884b7c148039bd +SHA512 (gmsh-4.12.0-source-fedora.tar.xz) = 23aefc3bac3babab0b6576144079ff5fe7f03eb1622611783da374ffad17664b15ad6a1f17f64c7844fc5a01af7feceeb47b26af063d1da30125c430c293d31c From 124e6660e8f607b804bf72530b99b29bdc0b1903 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Sun, 14 Jan 2024 16:17:55 +0100 Subject: [PATCH 22/56] Update to 4.12.1 --- .gitignore | 1 + gmsh-cstdint.patch | 6 +++--- gmsh.spec | 5 ++++- gmsh_build.patch | 6 +++--- gmsh_install.patch | 6 +++--- gmsh_julia.patch | 6 +++--- gmsh_med.patch | 24 ++++++++++++------------ gmsh_python.patch | 12 ++++++------ gmsh_unbundle_gl2ps.patch | 12 ++++++------ sources | 2 +- 10 files changed, 42 insertions(+), 38 deletions(-) diff --git a/.gitignore b/.gitignore index 3d2035a..250c284 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,4 @@ /gmsh-4.11.0-source-fedora.tar.xz /gmsh-4.11.1-source-fedora.tar.xz /gmsh-4.12.0-source-fedora.tar.xz +/gmsh-4.12.1-source-fedora.tar.xz diff --git a/gmsh-cstdint.patch b/gmsh-cstdint.patch index fdf5fe5..1108461 100644 --- a/gmsh-cstdint.patch +++ b/gmsh-cstdint.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.0-source/src/mesh/meshGFacePack.cpp gmsh-4.12.0-source-new/src/mesh/meshGFacePack.cpp ---- gmsh-4.12.0-source/src/mesh/meshGFacePack.cpp 2023-11-27 11:19:10.000000000 +0100 -+++ gmsh-4.12.0-source-new/src/mesh/meshGFacePack.cpp 2024-01-01 18:45:56.780513374 +0100 +diff -rupN --no-dereference gmsh-4.12.1-source/src/mesh/meshGFacePack.cpp gmsh-4.12.1-source-new/src/mesh/meshGFacePack.cpp +--- gmsh-4.12.1-source/src/mesh/meshGFacePack.cpp 2024-01-11 11:22:47.000000000 +0100 ++++ gmsh-4.12.1-source-new/src/mesh/meshGFacePack.cpp 2024-01-14 16:15:47.414046889 +0100 @@ -5,6 +5,7 @@ #include diff --git a/gmsh.spec b/gmsh.spec index 7baf0d9..9eef98b 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -17,7 +17,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.12.0 +Version: 4.12.1 Release: 1%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt @@ -401,6 +401,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Sun Jan 14 2024 Sandro Mani - 4.12.1-1 +- Update to 4.12.1 + * Mon Jan 01 2024 Sandro Mani - 4.12.0-1 - Update to 4.12.0 diff --git a/gmsh_build.patch b/gmsh_build.patch index 84cbf29..f14cfc2 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.0-source/src/fltk/helpWindow.cpp gmsh-4.12.0-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.12.0-source/src/fltk/helpWindow.cpp 2024-01-01 18:45:55.706494916 +0100 -+++ gmsh-4.12.0-source-new/src/fltk/helpWindow.cpp 2024-01-01 18:45:56.250504265 +0100 +diff -rupN --no-dereference gmsh-4.12.1-source/src/fltk/helpWindow.cpp gmsh-4.12.1-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.12.1-source/src/fltk/helpWindow.cpp 2024-01-14 16:15:46.040009279 +0100 ++++ gmsh-4.12.1-source-new/src/fltk/helpWindow.cpp 2024-01-14 16:15:46.724028002 +0100 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index 03368c2..afea3c0 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.0-source/CMakeLists.txt gmsh-4.12.0-source-new/CMakeLists.txt ---- gmsh-4.12.0-source/CMakeLists.txt 2024-01-01 18:45:55.986499728 +0100 -+++ gmsh-4.12.0-source-new/CMakeLists.txt 2024-01-01 18:45:55.990499796 +0100 +diff -rupN --no-dereference gmsh-4.12.1-source/CMakeLists.txt gmsh-4.12.1-source-new/CMakeLists.txt +--- gmsh-4.12.1-source/CMakeLists.txt 2024-01-14 16:15:46.380018586 +0100 ++++ gmsh-4.12.1-source-new/CMakeLists.txt 2024-01-14 16:15:46.386018750 +0100 @@ -275,7 +275,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index d3dacaf..deea0db 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.0-source/CMakeLists.txt gmsh-4.12.0-source-new/CMakeLists.txt ---- gmsh-4.12.0-source/CMakeLists.txt 2024-01-01 18:45:55.427490121 +0100 -+++ gmsh-4.12.0-source-new/CMakeLists.txt 2024-01-01 18:45:55.721495173 +0100 +diff -rupN --no-dereference gmsh-4.12.1-source/CMakeLists.txt gmsh-4.12.1-source-new/CMakeLists.txt +--- gmsh-4.12.1-source/CMakeLists.txt 2024-01-14 16:15:45.676999343 +0100 ++++ gmsh-4.12.1-source-new/CMakeLists.txt 2024-01-14 16:15:46.057009745 +0100 @@ -1963,7 +1963,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) diff --git a/gmsh_med.patch b/gmsh_med.patch index 703b41d..3fc1138 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.0-source/src/common/CommandLine.cpp gmsh-4.12.0-source-new/src/common/CommandLine.cpp ---- gmsh-4.12.0-source/src/common/CommandLine.cpp 2023-12-21 09:07:37.000000000 +0100 -+++ gmsh-4.12.0-source-new/src/common/CommandLine.cpp 2024-01-01 18:45:55.434490241 +0100 +diff -rupN --no-dereference gmsh-4.12.1-source/src/common/CommandLine.cpp gmsh-4.12.1-source-new/src/common/CommandLine.cpp +--- gmsh-4.12.1-source/src/common/CommandLine.cpp 2024-01-11 11:22:47.000000000 +0100 ++++ gmsh-4.12.1-source-new/src/common/CommandLine.cpp 2024-01-14 16:15:45.686999617 +0100 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.12.0-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.12.0-source/src/fltk/helpWindow.cpp gmsh-4.12.0-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.12.0-source/src/fltk/helpWindow.cpp 2023-07-21 20:57:23.000000000 +0200 -+++ gmsh-4.12.0-source-new/src/fltk/helpWindow.cpp 2024-01-01 18:45:55.438490310 +0100 +diff -rupN --no-dereference gmsh-4.12.1-source/src/fltk/helpWindow.cpp gmsh-4.12.1-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.12.1-source/src/fltk/helpWindow.cpp 2024-01-11 11:22:47.000000000 +0100 ++++ gmsh-4.12.1-source-new/src/fltk/helpWindow.cpp 2024-01-14 16:15:45.690999726 +0100 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.12.0-source/src/fltk/helpWindow.cpp gmsh-4.12 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.12.0-source/src/geo/GModelIO_MED.cpp gmsh-4.12.0-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.12.0-source/src/geo/GModelIO_MED.cpp 2023-07-21 20:57:24.000000000 +0200 -+++ gmsh-4.12.0-source-new/src/geo/GModelIO_MED.cpp 2024-01-01 18:45:55.442490378 +0100 +diff -rupN --no-dereference gmsh-4.12.1-source/src/geo/GModelIO_MED.cpp gmsh-4.12.1-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.12.1-source/src/geo/GModelIO_MED.cpp 2024-01-11 11:22:47.000000000 +0100 ++++ gmsh-4.12.1-source-new/src/geo/GModelIO_MED.cpp 2024-01-14 16:15:45.694999836 +0100 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.12.0-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.12.0-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.12.0-source-new/src/post/PViewDataGModelIO_MED.cpp ---- gmsh-4.12.0-source/src/post/PViewDataGModelIO_MED.cpp 2023-07-21 20:57:25.000000000 +0200 -+++ gmsh-4.12.0-source-new/src/post/PViewDataGModelIO_MED.cpp 2024-01-01 18:45:55.445490430 +0100 +diff -rupN --no-dereference gmsh-4.12.1-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.12.1-source-new/src/post/PViewDataGModelIO_MED.cpp +--- gmsh-4.12.1-source/src/post/PViewDataGModelIO_MED.cpp 2024-01-11 11:22:48.000000000 +0100 ++++ gmsh-4.12.1-source-new/src/post/PViewDataGModelIO_MED.cpp 2024-01-14 16:15:45.699999973 +0100 @@ -11,7 +11,7 @@ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index 1ab97c3..574f97f 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.0-source/CMakeLists.txt gmsh-4.12.0-source-new/CMakeLists.txt ---- gmsh-4.12.0-source/CMakeLists.txt 2023-12-21 09:07:36.000000000 +0100 -+++ gmsh-4.12.0-source-new/CMakeLists.txt 2024-01-01 18:45:55.163485584 +0100 +diff -rupN --no-dereference gmsh-4.12.1-source/CMakeLists.txt gmsh-4.12.1-source-new/CMakeLists.txt +--- gmsh-4.12.1-source/CMakeLists.txt 2024-01-11 11:22:45.000000000 +0100 ++++ gmsh-4.12.1-source-new/CMakeLists.txt 2024-01-14 16:15:45.343990228 +0100 @@ -1945,6 +1945,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -28,9 +28,9 @@ diff -rupN --no-dereference gmsh-4.12.0-source/CMakeLists.txt gmsh-4.12.0-source if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen -diff -rupN --no-dereference gmsh-4.12.0-source/src/common/GmshMessage.cpp gmsh-4.12.0-source-new/src/common/GmshMessage.cpp ---- gmsh-4.12.0-source/src/common/GmshMessage.cpp 2023-12-21 08:34:37.000000000 +0100 -+++ gmsh-4.12.0-source-new/src/common/GmshMessage.cpp 2024-01-01 18:45:55.163485584 +0100 +diff -rupN --no-dereference gmsh-4.12.1-source/src/common/GmshMessage.cpp gmsh-4.12.1-source-new/src/common/GmshMessage.cpp +--- gmsh-4.12.1-source/src/common/GmshMessage.cpp 2024-01-11 11:22:47.000000000 +0100 ++++ gmsh-4.12.1-source-new/src/common/GmshMessage.cpp 2024-01-14 16:15:45.343990228 +0100 @@ -173,14 +173,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index 748c0d3..2cb9e07 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.0-source/CMakeLists.txt gmsh-4.12.0-source-new/CMakeLists.txt ---- gmsh-4.12.0-source/CMakeLists.txt 2024-01-01 18:45:56.246504196 +0100 -+++ gmsh-4.12.0-source-new/CMakeLists.txt 2024-01-01 18:45:56.512508768 +0100 +diff -rupN --no-dereference gmsh-4.12.1-source/CMakeLists.txt gmsh-4.12.1-source-new/CMakeLists.txt +--- gmsh-4.12.1-source/CMakeLists.txt 2024-01-14 16:15:46.719027865 +0100 ++++ gmsh-4.12.1-source-new/CMakeLists.txt 2024-01-14 16:15:47.084037856 +0100 @@ -1673,6 +1673,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.12.0-source/CMakeLists.txt gmsh-4.12.0-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.12.0-source/src/graphics/CMakeLists.txt gmsh-4.12.0-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.12.0-source/src/graphics/CMakeLists.txt 2023-03-21 09:13:23.000000000 +0100 -+++ gmsh-4.12.0-source-new/src/graphics/CMakeLists.txt 2024-01-01 18:45:56.513508785 +0100 +diff -rupN --no-dereference gmsh-4.12.1-source/src/graphics/CMakeLists.txt gmsh-4.12.1-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.12.1-source/src/graphics/CMakeLists.txt 2024-01-11 11:22:47.000000000 +0100 ++++ gmsh-4.12.1-source-new/src/graphics/CMakeLists.txt 2024-01-14 16:15:47.084037856 +0100 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index 1a20631..8425e00 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.12.0-source-fedora.tar.xz) = 23aefc3bac3babab0b6576144079ff5fe7f03eb1622611783da374ffad17664b15ad6a1f17f64c7844fc5a01af7feceeb47b26af063d1da30125c430c293d31c +SHA512 (gmsh-4.12.1-source-fedora.tar.xz) = d9ecc801fdc48631f260d46220c4554207c8cd4ead7587a1906c82e34540e6af8f68d531529f15b33c82c45075b2cf0b3770ef1989d00667e0b7aba8d4cbb8c8 From 86f72a7d6478e55fc36729d0fc1a681d5d0677bf Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jan 2024 22:47:12 +0000 Subject: [PATCH 23/56] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 9eef98b..f6ccfa3 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.12.1 -Release: 1%{?dist} +Release: 2%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -401,6 +401,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Fri Jan 19 2024 Fedora Release Engineering - 4.12.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Sun Jan 14 2024 Sandro Mani - 4.12.1-1 - Update to 4.12.1 From c4619488f25148fd6d5f6d2ec9b58677fd15a5a8 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Tue, 23 Jan 2024 14:43:34 +0100 Subject: [PATCH 24/56] Update to 4.12.2 --- .gitignore | 1 + gmsh-cstdint.patch | 6 +++--- gmsh.spec | 7 +++++-- gmsh_build.patch | 6 +++--- gmsh_install.patch | 6 +++--- gmsh_julia.patch | 6 +++--- gmsh_med.patch | 24 ++++++++++++------------ gmsh_python.patch | 12 ++++++------ gmsh_unbundle_gl2ps.patch | 12 ++++++------ sources | 2 +- 10 files changed, 43 insertions(+), 39 deletions(-) diff --git a/.gitignore b/.gitignore index 250c284..c0ffb2c 100644 --- a/.gitignore +++ b/.gitignore @@ -71,3 +71,4 @@ /gmsh-4.11.1-source-fedora.tar.xz /gmsh-4.12.0-source-fedora.tar.xz /gmsh-4.12.1-source-fedora.tar.xz +/gmsh-4.12.2-source-fedora.tar.xz diff --git a/gmsh-cstdint.patch b/gmsh-cstdint.patch index 1108461..8b7263b 100644 --- a/gmsh-cstdint.patch +++ b/gmsh-cstdint.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.1-source/src/mesh/meshGFacePack.cpp gmsh-4.12.1-source-new/src/mesh/meshGFacePack.cpp ---- gmsh-4.12.1-source/src/mesh/meshGFacePack.cpp 2024-01-11 11:22:47.000000000 +0100 -+++ gmsh-4.12.1-source-new/src/mesh/meshGFacePack.cpp 2024-01-14 16:15:47.414046889 +0100 +diff -rupN --no-dereference gmsh-4.12.2-source/src/mesh/meshGFacePack.cpp gmsh-4.12.2-source-new/src/mesh/meshGFacePack.cpp +--- gmsh-4.12.2-source/src/mesh/meshGFacePack.cpp 2024-01-18 17:52:07.000000000 +0100 ++++ gmsh-4.12.2-source-new/src/mesh/meshGFacePack.cpp 2024-01-23 14:43:09.541297569 +0100 @@ -5,6 +5,7 @@ #include diff --git a/gmsh.spec b/gmsh.spec index f6ccfa3..854f7c6 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -17,8 +17,8 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.12.1 -Release: 2%{?dist} +Version: 4.12.2 +Release: 1%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -401,6 +401,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Tue Jan 23 2024 Sandro Mani - 4.12.2-1 +- Update to 4.12.2 + * Fri Jan 19 2024 Fedora Release Engineering - 4.12.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild diff --git a/gmsh_build.patch b/gmsh_build.patch index f14cfc2..97672e2 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.1-source/src/fltk/helpWindow.cpp gmsh-4.12.1-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.12.1-source/src/fltk/helpWindow.cpp 2024-01-14 16:15:46.040009279 +0100 -+++ gmsh-4.12.1-source-new/src/fltk/helpWindow.cpp 2024-01-14 16:15:46.724028002 +0100 +diff -rupN --no-dereference gmsh-4.12.2-source/src/fltk/helpWindow.cpp gmsh-4.12.2-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.12.2-source/src/fltk/helpWindow.cpp 2024-01-23 14:43:08.538227497 +0100 ++++ gmsh-4.12.2-source-new/src/fltk/helpWindow.cpp 2024-01-23 14:43:09.046262954 +0100 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index afea3c0..f9743df 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.1-source/CMakeLists.txt gmsh-4.12.1-source-new/CMakeLists.txt ---- gmsh-4.12.1-source/CMakeLists.txt 2024-01-14 16:15:46.380018586 +0100 -+++ gmsh-4.12.1-source-new/CMakeLists.txt 2024-01-14 16:15:46.386018750 +0100 +diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source-new/CMakeLists.txt +--- gmsh-4.12.2-source/CMakeLists.txt 2024-01-23 14:43:08.796245501 +0100 ++++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-23 14:43:08.801245850 +0100 @@ -275,7 +275,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index deea0db..8082f59 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.1-source/CMakeLists.txt gmsh-4.12.1-source-new/CMakeLists.txt ---- gmsh-4.12.1-source/CMakeLists.txt 2024-01-14 16:15:45.676999343 +0100 -+++ gmsh-4.12.1-source-new/CMakeLists.txt 2024-01-14 16:15:46.057009745 +0100 +diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source-new/CMakeLists.txt +--- gmsh-4.12.2-source/CMakeLists.txt 2024-01-23 14:43:08.272208935 +0100 ++++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-23 14:43:08.551228404 +0100 @@ -1963,7 +1963,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) diff --git a/gmsh_med.patch b/gmsh_med.patch index 3fc1138..80454de 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.1-source/src/common/CommandLine.cpp gmsh-4.12.1-source-new/src/common/CommandLine.cpp ---- gmsh-4.12.1-source/src/common/CommandLine.cpp 2024-01-11 11:22:47.000000000 +0100 -+++ gmsh-4.12.1-source-new/src/common/CommandLine.cpp 2024-01-14 16:15:45.686999617 +0100 +diff -rupN --no-dereference gmsh-4.12.2-source/src/common/CommandLine.cpp gmsh-4.12.2-source-new/src/common/CommandLine.cpp +--- gmsh-4.12.2-source/src/common/CommandLine.cpp 2024-01-18 17:52:07.000000000 +0100 ++++ gmsh-4.12.2-source-new/src/common/CommandLine.cpp 2024-01-23 14:43:08.279209423 +0100 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.12.1-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.12.1-source/src/fltk/helpWindow.cpp gmsh-4.12.1-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.12.1-source/src/fltk/helpWindow.cpp 2024-01-11 11:22:47.000000000 +0100 -+++ gmsh-4.12.1-source-new/src/fltk/helpWindow.cpp 2024-01-14 16:15:45.690999726 +0100 +diff -rupN --no-dereference gmsh-4.12.2-source/src/fltk/helpWindow.cpp gmsh-4.12.2-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.12.2-source/src/fltk/helpWindow.cpp 2024-01-18 17:52:07.000000000 +0100 ++++ gmsh-4.12.2-source-new/src/fltk/helpWindow.cpp 2024-01-23 14:43:08.283209702 +0100 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.12.1-source/src/fltk/helpWindow.cpp gmsh-4.12 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.12.1-source/src/geo/GModelIO_MED.cpp gmsh-4.12.1-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.12.1-source/src/geo/GModelIO_MED.cpp 2024-01-11 11:22:47.000000000 +0100 -+++ gmsh-4.12.1-source-new/src/geo/GModelIO_MED.cpp 2024-01-14 16:15:45.694999836 +0100 +diff -rupN --no-dereference gmsh-4.12.2-source/src/geo/GModelIO_MED.cpp gmsh-4.12.2-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.12.2-source/src/geo/GModelIO_MED.cpp 2024-01-18 17:52:07.000000000 +0100 ++++ gmsh-4.12.2-source-new/src/geo/GModelIO_MED.cpp 2024-01-23 14:43:08.286209911 +0100 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.12.1-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.12.1-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.12.1-source-new/src/post/PViewDataGModelIO_MED.cpp ---- gmsh-4.12.1-source/src/post/PViewDataGModelIO_MED.cpp 2024-01-11 11:22:48.000000000 +0100 -+++ gmsh-4.12.1-source-new/src/post/PViewDataGModelIO_MED.cpp 2024-01-14 16:15:45.699999973 +0100 +diff -rupN --no-dereference gmsh-4.12.2-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.12.2-source-new/src/post/PViewDataGModelIO_MED.cpp +--- gmsh-4.12.2-source/src/post/PViewDataGModelIO_MED.cpp 2024-01-18 17:52:07.000000000 +0100 ++++ gmsh-4.12.2-source-new/src/post/PViewDataGModelIO_MED.cpp 2024-01-23 14:43:08.289210121 +0100 @@ -11,7 +11,7 @@ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index 574f97f..0b7e5e2 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.1-source/CMakeLists.txt gmsh-4.12.1-source-new/CMakeLists.txt ---- gmsh-4.12.1-source/CMakeLists.txt 2024-01-11 11:22:45.000000000 +0100 -+++ gmsh-4.12.1-source-new/CMakeLists.txt 2024-01-14 16:15:45.343990228 +0100 +diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source-new/CMakeLists.txt +--- gmsh-4.12.2-source/CMakeLists.txt 2024-01-21 20:30:30.000000000 +0100 ++++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-23 14:43:08.024191628 +0100 @@ -1945,6 +1945,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -28,9 +28,9 @@ diff -rupN --no-dereference gmsh-4.12.1-source/CMakeLists.txt gmsh-4.12.1-source if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen -diff -rupN --no-dereference gmsh-4.12.1-source/src/common/GmshMessage.cpp gmsh-4.12.1-source-new/src/common/GmshMessage.cpp ---- gmsh-4.12.1-source/src/common/GmshMessage.cpp 2024-01-11 11:22:47.000000000 +0100 -+++ gmsh-4.12.1-source-new/src/common/GmshMessage.cpp 2024-01-14 16:15:45.343990228 +0100 +diff -rupN --no-dereference gmsh-4.12.2-source/src/common/GmshMessage.cpp gmsh-4.12.2-source-new/src/common/GmshMessage.cpp +--- gmsh-4.12.2-source/src/common/GmshMessage.cpp 2024-01-21 19:20:06.000000000 +0100 ++++ gmsh-4.12.2-source-new/src/common/GmshMessage.cpp 2024-01-23 14:43:08.026191768 +0100 @@ -173,14 +173,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index 2cb9e07..fc0281c 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.1-source/CMakeLists.txt gmsh-4.12.1-source-new/CMakeLists.txt ---- gmsh-4.12.1-source/CMakeLists.txt 2024-01-14 16:15:46.719027865 +0100 -+++ gmsh-4.12.1-source-new/CMakeLists.txt 2024-01-14 16:15:47.084037856 +0100 +diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source-new/CMakeLists.txt +--- gmsh-4.12.2-source/CMakeLists.txt 2024-01-23 14:43:09.042262675 +0100 ++++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-23 14:43:09.294280297 +0100 @@ -1673,6 +1673,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.12.1-source/CMakeLists.txt gmsh-4.12.1-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.12.1-source/src/graphics/CMakeLists.txt gmsh-4.12.1-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.12.1-source/src/graphics/CMakeLists.txt 2024-01-11 11:22:47.000000000 +0100 -+++ gmsh-4.12.1-source-new/src/graphics/CMakeLists.txt 2024-01-14 16:15:47.084037856 +0100 +diff -rupN --no-dereference gmsh-4.12.2-source/src/graphics/CMakeLists.txt gmsh-4.12.2-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.12.2-source/src/graphics/CMakeLists.txt 2024-01-18 17:52:07.000000000 +0100 ++++ gmsh-4.12.2-source-new/src/graphics/CMakeLists.txt 2024-01-23 14:43:09.294280297 +0100 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index 8425e00..79914b5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.12.1-source-fedora.tar.xz) = d9ecc801fdc48631f260d46220c4554207c8cd4ead7587a1906c82e34540e6af8f68d531529f15b33c82c45075b2cf0b3770ef1989d00667e0b7aba8d4cbb8c8 +SHA512 (gmsh-4.12.2-source-fedora.tar.xz) = a4231206c63fdd53fa166620036dd151124fe46f368b5f4009b3937ad762aa4648d0b2358c41a2a686bdaa529caefabd0e6e153bde1c047179f3230342238fe1 From b40eb58ce9992c35dfa41c7c0817053f9b73e250 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Sun, 28 Jan 2024 10:48:30 +0100 Subject: [PATCH 25/56] Add gmsh_uint64.patch --- gmsh-cstdint.patch | 2 +- gmsh.spec | 2 ++ gmsh_build.patch | 4 ++-- gmsh_install.patch | 4 ++-- gmsh_julia.patch | 4 ++-- gmsh_med.patch | 8 +++---- gmsh_python.patch | 4 ++-- gmsh_uint64.patch | 50 +++++++++++++++++++++++++++++++++++++++ gmsh_unbundle_gl2ps.patch | 6 ++--- 9 files changed, 68 insertions(+), 16 deletions(-) create mode 100644 gmsh_uint64.patch diff --git a/gmsh-cstdint.patch b/gmsh-cstdint.patch index 8b7263b..6f8fe6d 100644 --- a/gmsh-cstdint.patch +++ b/gmsh-cstdint.patch @@ -1,6 +1,6 @@ diff -rupN --no-dereference gmsh-4.12.2-source/src/mesh/meshGFacePack.cpp gmsh-4.12.2-source-new/src/mesh/meshGFacePack.cpp --- gmsh-4.12.2-source/src/mesh/meshGFacePack.cpp 2024-01-18 17:52:07.000000000 +0100 -+++ gmsh-4.12.2-source-new/src/mesh/meshGFacePack.cpp 2024-01-23 14:43:09.541297569 +0100 ++++ gmsh-4.12.2-source-new/src/mesh/meshGFacePack.cpp 2024-01-27 23:09:41.658172312 +0100 @@ -5,6 +5,7 @@ #include diff --git a/gmsh.spec b/gmsh.spec index 854f7c6..30712de 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -43,6 +43,8 @@ Patch4: gmsh_build.patch Patch5: gmsh_unbundle_gl2ps.patch # Header fix for GCC 13 Patch6: gmsh-cstdint.patch +# Fix incompatible size_t* -> uint64_t* conversions +Patch7: gmsh_uint64.patch BuildRequires: alglib-devel BuildRequires: ann-devel diff --git a/gmsh_build.patch b/gmsh_build.patch index 97672e2..548e45f 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ diff -rupN --no-dereference gmsh-4.12.2-source/src/fltk/helpWindow.cpp gmsh-4.12.2-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.12.2-source/src/fltk/helpWindow.cpp 2024-01-23 14:43:08.538227497 +0100 -+++ gmsh-4.12.2-source-new/src/fltk/helpWindow.cpp 2024-01-23 14:43:09.046262954 +0100 +--- gmsh-4.12.2-source/src/fltk/helpWindow.cpp 2024-01-27 23:09:40.529174116 +0100 ++++ gmsh-4.12.2-source-new/src/fltk/helpWindow.cpp 2024-01-27 23:09:41.096173209 +0100 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index f9743df..28428b7 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,6 +1,6 @@ diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source-new/CMakeLists.txt ---- gmsh-4.12.2-source/CMakeLists.txt 2024-01-23 14:43:08.796245501 +0100 -+++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-23 14:43:08.801245850 +0100 +--- gmsh-4.12.2-source/CMakeLists.txt 2024-01-27 23:09:40.815173658 +0100 ++++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-27 23:09:40.819173652 +0100 @@ -275,7 +275,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index 8082f59..5573ed9 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,6 +1,6 @@ diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source-new/CMakeLists.txt ---- gmsh-4.12.2-source/CMakeLists.txt 2024-01-23 14:43:08.272208935 +0100 -+++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-23 14:43:08.551228404 +0100 +--- gmsh-4.12.2-source/CMakeLists.txt 2024-01-27 23:09:40.232174592 +0100 ++++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-27 23:09:40.544174092 +0100 @@ -1963,7 +1963,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) diff --git a/gmsh_med.patch b/gmsh_med.patch index 80454de..09909e4 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ diff -rupN --no-dereference gmsh-4.12.2-source/src/common/CommandLine.cpp gmsh-4.12.2-source-new/src/common/CommandLine.cpp --- gmsh-4.12.2-source/src/common/CommandLine.cpp 2024-01-18 17:52:07.000000000 +0100 -+++ gmsh-4.12.2-source-new/src/common/CommandLine.cpp 2024-01-23 14:43:08.279209423 +0100 ++++ gmsh-4.12.2-source-new/src/common/CommandLine.cpp 2024-01-27 23:09:40.239174580 +0100 @@ -42,7 +42,7 @@ #endif @@ -12,7 +12,7 @@ diff -rupN --no-dereference gmsh-4.12.2-source/src/common/CommandLine.cpp gmsh-4 #if defined(HAVE_POST) diff -rupN --no-dereference gmsh-4.12.2-source/src/fltk/helpWindow.cpp gmsh-4.12.2-source-new/src/fltk/helpWindow.cpp --- gmsh-4.12.2-source/src/fltk/helpWindow.cpp 2024-01-18 17:52:07.000000000 +0100 -+++ gmsh-4.12.2-source-new/src/fltk/helpWindow.cpp 2024-01-23 14:43:08.283209702 +0100 ++++ gmsh-4.12.2-source-new/src/fltk/helpWindow.cpp 2024-01-27 23:09:40.243174574 +0100 @@ -36,7 +36,7 @@ #endif @@ -24,7 +24,7 @@ diff -rupN --no-dereference gmsh-4.12.2-source/src/fltk/helpWindow.cpp gmsh-4.12 static const char *help_link(Fl_Widget *w, const char *uri) diff -rupN --no-dereference gmsh-4.12.2-source/src/geo/GModelIO_MED.cpp gmsh-4.12.2-source-new/src/geo/GModelIO_MED.cpp --- gmsh-4.12.2-source/src/geo/GModelIO_MED.cpp 2024-01-18 17:52:07.000000000 +0100 -+++ gmsh-4.12.2-source-new/src/geo/GModelIO_MED.cpp 2024-01-23 14:43:08.286209911 +0100 ++++ gmsh-4.12.2-source-new/src/geo/GModelIO_MED.cpp 2024-01-27 23:09:40.246174569 +0100 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -36,7 +36,7 @@ diff -rupN --no-dereference gmsh-4.12.2-source/src/geo/GModelIO_MED.cpp gmsh-4.1 // To avoid too many ifdefs below we use defines for the bits of the diff -rupN --no-dereference gmsh-4.12.2-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.12.2-source-new/src/post/PViewDataGModelIO_MED.cpp --- gmsh-4.12.2-source/src/post/PViewDataGModelIO_MED.cpp 2024-01-18 17:52:07.000000000 +0100 -+++ gmsh-4.12.2-source-new/src/post/PViewDataGModelIO_MED.cpp 2024-01-23 14:43:08.289210121 +0100 ++++ gmsh-4.12.2-source-new/src/post/PViewDataGModelIO_MED.cpp 2024-01-27 23:09:40.250174563 +0100 @@ -11,7 +11,7 @@ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index 0b7e5e2..c3954d0 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,6 +1,6 @@ diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source-new/CMakeLists.txt --- gmsh-4.12.2-source/CMakeLists.txt 2024-01-21 20:30:30.000000000 +0100 -+++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-23 14:43:08.024191628 +0100 ++++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-27 23:09:39.952175040 +0100 @@ -1945,6 +1945,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -30,7 +30,7 @@ diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen diff -rupN --no-dereference gmsh-4.12.2-source/src/common/GmshMessage.cpp gmsh-4.12.2-source-new/src/common/GmshMessage.cpp --- gmsh-4.12.2-source/src/common/GmshMessage.cpp 2024-01-21 19:20:06.000000000 +0100 -+++ gmsh-4.12.2-source-new/src/common/GmshMessage.cpp 2024-01-23 14:43:08.026191768 +0100 ++++ gmsh-4.12.2-source-new/src/common/GmshMessage.cpp 2024-01-27 23:09:39.953175038 +0100 @@ -173,14 +173,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_uint64.patch b/gmsh_uint64.patch new file mode 100644 index 0000000..008b7de --- /dev/null +++ b/gmsh_uint64.patch @@ -0,0 +1,50 @@ +diff -rupN --no-dereference gmsh-4.12.2-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c gmsh-4.12.2-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c +--- gmsh-4.12.2-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-01-11 11:22:46.000000000 +0100 ++++ gmsh-4.12.2-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-01-27 23:09:41.938171865 +0100 +@@ -297,11 +297,11 @@ static uint64_t* scanbsearch(uint64_t* a + * - startTet[maxThreads] = mesh->tetrahedra.num + * - `startPt[t+1] - startPt[t]` gives how many point will be created by thread t + */ +-static HXTStatus balanceRefineWork(HXTMesh* mesh, uint32_t* startPt, size_t* startTet, int maxThreads) ++static HXTStatus balanceRefineWork(HXTMesh* mesh, uint32_t* startPt, uint64_t* startTet, int maxThreads) + { +- size_t* scan; ++ uint64_t* scan; + uint32_t ptPerThreadGoal; +- HXT_CHECK( hxtAlignedMalloc(&scan, sizeof(size_t) * mesh->tetrahedra.num) ); ++ HXT_CHECK( hxtAlignedMalloc(&scan, sizeof(uint64_t) * mesh->tetrahedra.num) ); + + #pragma omp parallel num_threads(maxThreads) + { +@@ -318,9 +318,9 @@ static HXTStatus balanceRefineWork(HXTMe + #pragma omp single + { + // we do a simple prefix sum +- size_t sum = 0; ++ uint32_t sum = 0; + for(int t=0; ttetrahedra.num; i++) { +- size_t inc = scan[i]; ++ uint64_t inc = scan[i]; + scan[i] = s; + s += inc; + } + +- size_t scanToFind = threadID * ptPerThreadGoal; ++ uint64_t scanToFind = threadID * ptPerThreadGoal; + + // we want to find i such that scan[i] = scanToFind. + // we do a simple binary search in the prefix scan array to find `i` +- size_t* pfnd = scanbsearch(scan, scanToFind, mesh->tetrahedra.num); ++ uint64_t* pfnd = scanbsearch(scan, scanToFind, mesh->tetrahedra.num); + startTet[threadID] = pfnd - scan; + if(startTet[threadID] < mesh->tetrahedra.num) + startPt[threadID] = *pfnd; diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index fc0281c..4220fe6 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,6 +1,6 @@ diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source-new/CMakeLists.txt ---- gmsh-4.12.2-source/CMakeLists.txt 2024-01-23 14:43:09.042262675 +0100 -+++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-23 14:43:09.294280297 +0100 +--- gmsh-4.12.2-source/CMakeLists.txt 2024-01-27 23:09:41.091173217 +0100 ++++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-27 23:09:41.375172763 +0100 @@ -1673,6 +1673,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -12,7 +12,7 @@ diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source if(HAVE_OCC) diff -rupN --no-dereference gmsh-4.12.2-source/src/graphics/CMakeLists.txt gmsh-4.12.2-source-new/src/graphics/CMakeLists.txt --- gmsh-4.12.2-source/src/graphics/CMakeLists.txt 2024-01-18 17:52:07.000000000 +0100 -+++ gmsh-4.12.2-source-new/src/graphics/CMakeLists.txt 2024-01-23 14:43:09.294280297 +0100 ++++ gmsh-4.12.2-source-new/src/graphics/CMakeLists.txt 2024-01-27 23:09:41.375172763 +0100 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp From a0e6eb3423283cb461389bdfc4abda5f059e92aa Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Wed, 7 Feb 2024 09:12:48 +0100 Subject: [PATCH 26/56] Convert to SPDX license --- gmsh.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 30712de..1fcfca7 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -22,7 +22,7 @@ Release: 1%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt -License: GPLv2+ with exceptions and MIT +License: GPL-2.0-with-Gmsh-exception AND MIT URL: http://geuz.org/gmsh/ # Download source from http://geuz.org/gmsh/src/%%{name}-%%{version}-source.tgz # Delete contrib/blossom and contrib/mpeg_encode from source archive From b3ca0c362e83a0a5072346cff910b599e0c707fc Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Tue, 27 Feb 2024 10:56:30 +0100 Subject: [PATCH 27/56] Update to 4.13.0 --- .gitignore | 1 + gmsh-cstdint.patch | 6 +++--- gmsh.spec | 7 +++++-- gmsh_build.patch | 6 +++--- gmsh_install.patch | 8 ++++---- gmsh_julia.patch | 8 ++++---- gmsh_med.patch | 24 ++++++++++++------------ gmsh_python.patch | 16 ++++++++-------- gmsh_uint64.patch | 6 +++--- gmsh_unbundle_gl2ps.patch | 14 +++++++------- sources | 2 +- 11 files changed, 51 insertions(+), 47 deletions(-) diff --git a/.gitignore b/.gitignore index c0ffb2c..6188bc3 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,4 @@ /gmsh-4.12.0-source-fedora.tar.xz /gmsh-4.12.1-source-fedora.tar.xz /gmsh-4.12.2-source-fedora.tar.xz +/gmsh-4.13.0-source-fedora.tar.xz diff --git a/gmsh-cstdint.patch b/gmsh-cstdint.patch index 6f8fe6d..f526c83 100644 --- a/gmsh-cstdint.patch +++ b/gmsh-cstdint.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.2-source/src/mesh/meshGFacePack.cpp gmsh-4.12.2-source-new/src/mesh/meshGFacePack.cpp ---- gmsh-4.12.2-source/src/mesh/meshGFacePack.cpp 2024-01-18 17:52:07.000000000 +0100 -+++ gmsh-4.12.2-source-new/src/mesh/meshGFacePack.cpp 2024-01-27 23:09:41.658172312 +0100 +diff -rupN --no-dereference gmsh-4.13.0-source/src/mesh/meshGFacePack.cpp gmsh-4.13.0-source-new/src/mesh/meshGFacePack.cpp +--- gmsh-4.13.0-source/src/mesh/meshGFacePack.cpp 2024-02-23 20:59:01.000000000 +0100 ++++ gmsh-4.13.0-source-new/src/mesh/meshGFacePack.cpp 2024-02-27 08:32:04.394029102 +0100 @@ -5,6 +5,7 @@ #include diff --git a/gmsh.spec b/gmsh.spec index 1fcfca7..5ee3762 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -9,7 +9,7 @@ %endif %bcond_without mpich -%global sover 4.12 +%global sover 4.13 %if 0%{?fedora} >= 33 || 0%{?rhel} >= 9 %bcond_without flexiblas @@ -17,7 +17,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.12.2 +Version: 4.13.0 Release: 1%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt @@ -403,6 +403,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Tue Feb 27 2024 Sandro Mani - 4.13.0-1 +- Update to 4.13.0 + * Tue Jan 23 2024 Sandro Mani - 4.12.2-1 - Update to 4.12.2 diff --git a/gmsh_build.patch b/gmsh_build.patch index 548e45f..66da5df 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.2-source/src/fltk/helpWindow.cpp gmsh-4.12.2-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.12.2-source/src/fltk/helpWindow.cpp 2024-01-27 23:09:40.529174116 +0100 -+++ gmsh-4.12.2-source-new/src/fltk/helpWindow.cpp 2024-01-27 23:09:41.096173209 +0100 +diff -rupN --no-dereference gmsh-4.13.0-source/src/fltk/helpWindow.cpp gmsh-4.13.0-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.13.0-source/src/fltk/helpWindow.cpp 2024-02-27 08:32:03.259072080 +0100 ++++ gmsh-4.13.0-source-new/src/fltk/helpWindow.cpp 2024-02-27 08:32:03.825050653 +0100 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index 28428b7..c8fff0a 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source-new/CMakeLists.txt ---- gmsh-4.12.2-source/CMakeLists.txt 2024-01-27 23:09:40.815173658 +0100 -+++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-27 23:09:40.819173652 +0100 -@@ -275,7 +275,7 @@ if(ENABLE_RPATH) +diff -rupN --no-dereference gmsh-4.13.0-source/CMakeLists.txt gmsh-4.13.0-source-new/CMakeLists.txt +--- gmsh-4.13.0-source/CMakeLists.txt 2024-02-27 08:32:03.547061177 +0100 ++++ gmsh-4.13.0-source-new/CMakeLists.txt 2024-02-27 08:32:03.553060950 +0100 +@@ -279,7 +279,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index 5573ed9..06b4ba9 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source-new/CMakeLists.txt ---- gmsh-4.12.2-source/CMakeLists.txt 2024-01-27 23:09:40.232174592 +0100 -+++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-27 23:09:40.544174092 +0100 -@@ -1963,7 +1963,7 @@ endif() +diff -rupN --no-dereference gmsh-4.13.0-source/CMakeLists.txt gmsh-4.13.0-source-new/CMakeLists.txt +--- gmsh-4.13.0-source/CMakeLists.txt 2024-02-27 08:32:02.960083398 +0100 ++++ gmsh-4.13.0-source-new/CMakeLists.txt 2024-02-27 08:32:03.274071512 +0100 +@@ -2004,7 +2004,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) install(FILES ${GMSH_PY} DESTINATION ${PYTHON3_SITE_PACKAGES}) diff --git a/gmsh_med.patch b/gmsh_med.patch index 09909e4..511dc8b 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.2-source/src/common/CommandLine.cpp gmsh-4.12.2-source-new/src/common/CommandLine.cpp ---- gmsh-4.12.2-source/src/common/CommandLine.cpp 2024-01-18 17:52:07.000000000 +0100 -+++ gmsh-4.12.2-source-new/src/common/CommandLine.cpp 2024-01-27 23:09:40.239174580 +0100 +diff -rupN --no-dereference gmsh-4.13.0-source/src/common/CommandLine.cpp gmsh-4.13.0-source-new/src/common/CommandLine.cpp +--- gmsh-4.13.0-source/src/common/CommandLine.cpp 2024-02-23 20:59:00.000000000 +0100 ++++ gmsh-4.13.0-source-new/src/common/CommandLine.cpp 2024-02-27 08:32:02.968083095 +0100 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.12.2-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.12.2-source/src/fltk/helpWindow.cpp gmsh-4.12.2-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.12.2-source/src/fltk/helpWindow.cpp 2024-01-18 17:52:07.000000000 +0100 -+++ gmsh-4.12.2-source-new/src/fltk/helpWindow.cpp 2024-01-27 23:09:40.243174574 +0100 +diff -rupN --no-dereference gmsh-4.13.0-source/src/fltk/helpWindow.cpp gmsh-4.13.0-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.13.0-source/src/fltk/helpWindow.cpp 2024-02-23 20:59:00.000000000 +0100 ++++ gmsh-4.13.0-source-new/src/fltk/helpWindow.cpp 2024-02-27 08:32:02.971082982 +0100 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.12.2-source/src/fltk/helpWindow.cpp gmsh-4.12 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.12.2-source/src/geo/GModelIO_MED.cpp gmsh-4.12.2-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.12.2-source/src/geo/GModelIO_MED.cpp 2024-01-18 17:52:07.000000000 +0100 -+++ gmsh-4.12.2-source-new/src/geo/GModelIO_MED.cpp 2024-01-27 23:09:40.246174569 +0100 +diff -rupN --no-dereference gmsh-4.13.0-source/src/geo/GModelIO_MED.cpp gmsh-4.13.0-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.13.0-source/src/geo/GModelIO_MED.cpp 2024-02-23 20:59:00.000000000 +0100 ++++ gmsh-4.13.0-source-new/src/geo/GModelIO_MED.cpp 2024-02-27 08:32:02.975082831 +0100 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.12.2-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.12.2-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.12.2-source-new/src/post/PViewDataGModelIO_MED.cpp ---- gmsh-4.12.2-source/src/post/PViewDataGModelIO_MED.cpp 2024-01-18 17:52:07.000000000 +0100 -+++ gmsh-4.12.2-source-new/src/post/PViewDataGModelIO_MED.cpp 2024-01-27 23:09:40.250174563 +0100 +diff -rupN --no-dereference gmsh-4.13.0-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.13.0-source-new/src/post/PViewDataGModelIO_MED.cpp +--- gmsh-4.13.0-source/src/post/PViewDataGModelIO_MED.cpp 2024-02-23 20:59:01.000000000 +0100 ++++ gmsh-4.13.0-source-new/src/post/PViewDataGModelIO_MED.cpp 2024-02-27 08:32:02.978082717 +0100 @@ -11,7 +11,7 @@ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index c3954d0..2639864 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source-new/CMakeLists.txt ---- gmsh-4.12.2-source/CMakeLists.txt 2024-01-21 20:30:30.000000000 +0100 -+++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-27 23:09:39.952175040 +0100 -@@ -1945,6 +1945,8 @@ else() +diff -rupN --no-dereference gmsh-4.13.0-source/CMakeLists.txt gmsh-4.13.0-source-new/CMakeLists.txt +--- gmsh-4.13.0-source/CMakeLists.txt 2024-02-23 20:58:58.000000000 +0100 ++++ gmsh-4.13.0-source-new/CMakeLists.txt 2024-02-27 08:32:02.681093953 +0100 +@@ -1986,6 +1986,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -10,7 +10,7 @@ diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source # mark targets as optional so we can install them separately if needed # (e.g. "make lib" or "make shared" followed by "make install/fast") install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL) -@@ -1956,14 +1958,14 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_D +@@ -1997,14 +1999,14 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_D endif() if(ENABLE_ONELAB AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab) @@ -28,9 +28,9 @@ diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen -diff -rupN --no-dereference gmsh-4.12.2-source/src/common/GmshMessage.cpp gmsh-4.12.2-source-new/src/common/GmshMessage.cpp ---- gmsh-4.12.2-source/src/common/GmshMessage.cpp 2024-01-21 19:20:06.000000000 +0100 -+++ gmsh-4.12.2-source-new/src/common/GmshMessage.cpp 2024-01-27 23:09:39.953175038 +0100 +diff -rupN --no-dereference gmsh-4.13.0-source/src/common/GmshMessage.cpp gmsh-4.13.0-source-new/src/common/GmshMessage.cpp +--- gmsh-4.13.0-source/src/common/GmshMessage.cpp 2024-02-23 20:59:00.000000000 +0100 ++++ gmsh-4.13.0-source-new/src/common/GmshMessage.cpp 2024-02-27 08:32:02.682093915 +0100 @@ -173,14 +173,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_uint64.patch b/gmsh_uint64.patch index 008b7de..56971f7 100644 --- a/gmsh_uint64.patch +++ b/gmsh_uint64.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.12.2-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c gmsh-4.12.2-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c ---- gmsh-4.12.2-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-01-11 11:22:46.000000000 +0100 -+++ gmsh-4.12.2-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-01-27 23:09:41.938171865 +0100 +diff -rupN --no-dereference gmsh-4.13.0-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c gmsh-4.13.0-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c +--- gmsh-4.13.0-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-02-23 20:58:59.000000000 +0100 ++++ gmsh-4.13.0-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-02-27 08:32:04.683018154 +0100 @@ -297,11 +297,11 @@ static uint64_t* scanbsearch(uint64_t* a * - startTet[maxThreads] = mesh->tetrahedra.num * - `startPt[t+1] - startPt[t]` gives how many point will be created by thread t diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index 4220fe6..7946be6 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source-new/CMakeLists.txt ---- gmsh-4.12.2-source/CMakeLists.txt 2024-01-27 23:09:41.091173217 +0100 -+++ gmsh-4.12.2-source-new/CMakeLists.txt 2024-01-27 23:09:41.375172763 +0100 -@@ -1673,6 +1673,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB +diff -rupN --no-dereference gmsh-4.13.0-source/CMakeLists.txt gmsh-4.13.0-source-new/CMakeLists.txt +--- gmsh-4.13.0-source/CMakeLists.txt 2024-02-27 08:32:03.820050842 +0100 ++++ gmsh-4.13.0-source-new/CMakeLists.txt 2024-02-27 08:32:04.112039785 +0100 +@@ -1714,6 +1714,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.12.2-source/CMakeLists.txt gmsh-4.12.2-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.12.2-source/src/graphics/CMakeLists.txt gmsh-4.12.2-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.12.2-source/src/graphics/CMakeLists.txt 2024-01-18 17:52:07.000000000 +0100 -+++ gmsh-4.12.2-source-new/src/graphics/CMakeLists.txt 2024-01-27 23:09:41.375172763 +0100 +diff -rupN --no-dereference gmsh-4.13.0-source/src/graphics/CMakeLists.txt gmsh-4.13.0-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.13.0-source/src/graphics/CMakeLists.txt 2024-02-23 20:59:01.000000000 +0100 ++++ gmsh-4.13.0-source-new/src/graphics/CMakeLists.txt 2024-02-27 08:32:04.112039785 +0100 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index 79914b5..b6f4f20 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.12.2-source-fedora.tar.xz) = a4231206c63fdd53fa166620036dd151124fe46f368b5f4009b3937ad762aa4648d0b2358c41a2a686bdaa529caefabd0e6e153bde1c047179f3230342238fe1 +SHA512 (gmsh-4.13.0-source-fedora.tar.xz) = dc89b3be0d028032a8a6fb7719ce7b8e684538f7a37fde7a760f5e41c2e385b94e5eebe4de3bed401b707b6d9ef6ad9a03a0c9330627582084afc14f1c4f521f From 67b28c99b31ce693eecdb8a7477759b675d4a0d6 Mon Sep 17 00:00:00 2001 From: Richard Shaw Date: Fri, 29 Mar 2024 18:42:27 -0500 Subject: [PATCH 28/56] Rebuild for OpenCascade 7.8.0. --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 5ee3762..c56c411 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.13.0 -Release: 1%{?dist} +Release: 2%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -403,6 +403,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Fri Mar 29 2024 Richard Shaw - 4.13.0-2 +- Rebuild for OpenCascade 7.8.0. + * Tue Feb 27 2024 Sandro Mani - 4.13.0-1 - Update to 4.13.0 From a6a3e85f3d79179f6b2307bddef045f3922120d5 Mon Sep 17 00:00:00 2001 From: "Benjamin A. Beasley" Date: Tue, 9 Apr 2024 17:04:25 -0400 Subject: [PATCH 29/56] Ensure python3-gmsh depends on gmsh-libs --- gmsh.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index c56c411..432b263 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.13.0 -Release: 2%{?dist} +Release: 3%{?dist} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -119,6 +119,8 @@ Summary: Python3 API for %{name} %{?python_provide:%python_provide python3-%{name}} Obsoletes: python3-%{name}-private +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + %description -n python3-%{name} Python3 API for %{name}. @@ -403,6 +405,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Tue Apr 09 2024 Benjamin A. Beasley - 4.13.0-3 +- Ensure python3-gmsh depends on gmsh-libs + * Fri Mar 29 2024 Richard Shaw - 4.13.0-2 - Rebuild for OpenCascade 7.8.0. From f9c59e95f82a370fa33fbc4eda49412fe878eeca Mon Sep 17 00:00:00 2001 From: "Benjamin A. Beasley" Date: Tue, 9 Apr 2024 17:15:22 -0400 Subject: [PATCH 30/56] Make the python3-gmsh subpackage noarch, since the bindings are pure Python --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 432b263..93b78ed 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -119,7 +119,9 @@ Summary: Python3 API for %{name} %{?python_provide:%python_provide python3-%{name}} Obsoletes: python3-%{name}-private -Requires: %{name}-libs%{?_isa} = %{version}-%{release} +BuildArch: noarch + +Requires: %{name}-libs = %{version}-%{release} %description -n python3-%{name} Python3 API for %{name}. @@ -407,6 +409,7 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog * Tue Apr 09 2024 Benjamin A. Beasley - 4.13.0-3 - Ensure python3-gmsh depends on gmsh-libs +- Make the python3-gmsh subpackage noarch, since the bindings are pure Python * Fri Mar 29 2024 Richard Shaw - 4.13.0-2 - Rebuild for OpenCascade 7.8.0. From 41bc6039e5c9dfd76b7acfd40d86bdf0ec44c4c7 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Wed, 8 May 2024 11:43:24 +0200 Subject: [PATCH 31/56] Update to 4.13.1 --- .gitignore | 1 + gmsh-cstdint.patch | 6 +++--- gmsh.spec | 9 +++++++-- gmsh_build.patch | 6 +++--- gmsh_install.patch | 6 +++--- gmsh_julia.patch | 6 +++--- gmsh_med.patch | 24 ++++++++++++------------ gmsh_python.patch | 12 ++++++------ gmsh_uint64.patch | 6 +++--- gmsh_unbundle_gl2ps.patch | 12 ++++++------ sources | 2 +- 11 files changed, 48 insertions(+), 42 deletions(-) diff --git a/.gitignore b/.gitignore index 6188bc3..5a0ceaa 100644 --- a/.gitignore +++ b/.gitignore @@ -73,3 +73,4 @@ /gmsh-4.12.1-source-fedora.tar.xz /gmsh-4.12.2-source-fedora.tar.xz /gmsh-4.13.0-source-fedora.tar.xz +/gmsh-4.13.1-source-fedora.tar.xz diff --git a/gmsh-cstdint.patch b/gmsh-cstdint.patch index f526c83..a2d446d 100644 --- a/gmsh-cstdint.patch +++ b/gmsh-cstdint.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.0-source/src/mesh/meshGFacePack.cpp gmsh-4.13.0-source-new/src/mesh/meshGFacePack.cpp ---- gmsh-4.13.0-source/src/mesh/meshGFacePack.cpp 2024-02-23 20:59:01.000000000 +0100 -+++ gmsh-4.13.0-source-new/src/mesh/meshGFacePack.cpp 2024-02-27 08:32:04.394029102 +0100 +diff -rupN --no-dereference gmsh-4.13.1-source/src/mesh/meshGFacePack.cpp gmsh-4.13.1-source-new/src/mesh/meshGFacePack.cpp +--- gmsh-4.13.1-source/src/mesh/meshGFacePack.cpp 2024-03-29 23:07:01.000000000 +0100 ++++ gmsh-4.13.1-source-new/src/mesh/meshGFacePack.cpp 2024-05-08 09:40:57.743517633 +0200 @@ -5,6 +5,7 @@ #include diff --git a/gmsh.spec b/gmsh.spec index 93b78ed..d592101 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -17,8 +17,10 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.13.0 -Release: 3%{?dist} +Version: 4.13.1 +Release: 1%{?dist} +# MPI not available on i686 +ExcludeArch: %{ix86} # gmsh is GPLv2+ with exceptions, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt @@ -407,6 +409,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Wed May 08 2024 Sandro Mani - 4.13.1-1 +- Update to 4.13.1 + * Tue Apr 09 2024 Benjamin A. Beasley - 4.13.0-3 - Ensure python3-gmsh depends on gmsh-libs - Make the python3-gmsh subpackage noarch, since the bindings are pure Python diff --git a/gmsh_build.patch b/gmsh_build.patch index 66da5df..b909104 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.0-source/src/fltk/helpWindow.cpp gmsh-4.13.0-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.13.0-source/src/fltk/helpWindow.cpp 2024-02-27 08:32:03.259072080 +0100 -+++ gmsh-4.13.0-source-new/src/fltk/helpWindow.cpp 2024-02-27 08:32:03.825050653 +0100 +diff -rupN --no-dereference gmsh-4.13.1-source/src/fltk/helpWindow.cpp gmsh-4.13.1-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.13.1-source/src/fltk/helpWindow.cpp 2024-05-08 09:40:56.610523715 +0200 ++++ gmsh-4.13.1-source-new/src/fltk/helpWindow.cpp 2024-05-08 09:40:57.186520623 +0200 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index c8fff0a..01b707c 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.0-source/CMakeLists.txt gmsh-4.13.0-source-new/CMakeLists.txt ---- gmsh-4.13.0-source/CMakeLists.txt 2024-02-27 08:32:03.547061177 +0100 -+++ gmsh-4.13.0-source-new/CMakeLists.txt 2024-02-27 08:32:03.553060950 +0100 +diff -rupN --no-dereference gmsh-4.13.1-source/CMakeLists.txt gmsh-4.13.1-source-new/CMakeLists.txt +--- gmsh-4.13.1-source/CMakeLists.txt 2024-05-08 09:40:56.889522217 +0200 ++++ gmsh-4.13.1-source-new/CMakeLists.txt 2024-05-08 09:40:56.896522180 +0200 @@ -279,7 +279,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index 06b4ba9..4a2c250 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.0-source/CMakeLists.txt gmsh-4.13.0-source-new/CMakeLists.txt ---- gmsh-4.13.0-source/CMakeLists.txt 2024-02-27 08:32:02.960083398 +0100 -+++ gmsh-4.13.0-source-new/CMakeLists.txt 2024-02-27 08:32:03.274071512 +0100 +diff -rupN --no-dereference gmsh-4.13.1-source/CMakeLists.txt gmsh-4.13.1-source-new/CMakeLists.txt +--- gmsh-4.13.1-source/CMakeLists.txt 2024-05-08 09:40:56.255525620 +0200 ++++ gmsh-4.13.1-source-new/CMakeLists.txt 2024-05-08 09:40:56.615523688 +0200 @@ -2004,7 +2004,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) diff --git a/gmsh_med.patch b/gmsh_med.patch index 511dc8b..609984c 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.0-source/src/common/CommandLine.cpp gmsh-4.13.0-source-new/src/common/CommandLine.cpp ---- gmsh-4.13.0-source/src/common/CommandLine.cpp 2024-02-23 20:59:00.000000000 +0100 -+++ gmsh-4.13.0-source-new/src/common/CommandLine.cpp 2024-02-27 08:32:02.968083095 +0100 +diff -rupN --no-dereference gmsh-4.13.1-source/src/common/CommandLine.cpp gmsh-4.13.1-source-new/src/common/CommandLine.cpp +--- gmsh-4.13.1-source/src/common/CommandLine.cpp 2024-04-18 16:52:42.000000000 +0200 ++++ gmsh-4.13.1-source-new/src/common/CommandLine.cpp 2024-05-08 09:40:56.260525593 +0200 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.13.0-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.13.0-source/src/fltk/helpWindow.cpp gmsh-4.13.0-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.13.0-source/src/fltk/helpWindow.cpp 2024-02-23 20:59:00.000000000 +0100 -+++ gmsh-4.13.0-source-new/src/fltk/helpWindow.cpp 2024-02-27 08:32:02.971082982 +0100 +diff -rupN --no-dereference gmsh-4.13.1-source/src/fltk/helpWindow.cpp gmsh-4.13.1-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.13.1-source/src/fltk/helpWindow.cpp 2024-03-29 23:07:00.000000000 +0100 ++++ gmsh-4.13.1-source-new/src/fltk/helpWindow.cpp 2024-05-08 09:40:56.260525593 +0200 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.13.0-source/src/fltk/helpWindow.cpp gmsh-4.13 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.13.0-source/src/geo/GModelIO_MED.cpp gmsh-4.13.0-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.13.0-source/src/geo/GModelIO_MED.cpp 2024-02-23 20:59:00.000000000 +0100 -+++ gmsh-4.13.0-source-new/src/geo/GModelIO_MED.cpp 2024-02-27 08:32:02.975082831 +0100 +diff -rupN --no-dereference gmsh-4.13.1-source/src/geo/GModelIO_MED.cpp gmsh-4.13.1-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.13.1-source/src/geo/GModelIO_MED.cpp 2024-03-29 23:07:00.000000000 +0100 ++++ gmsh-4.13.1-source-new/src/geo/GModelIO_MED.cpp 2024-05-08 09:40:56.260525593 +0200 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.13.0-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.13.0-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.13.0-source-new/src/post/PViewDataGModelIO_MED.cpp ---- gmsh-4.13.0-source/src/post/PViewDataGModelIO_MED.cpp 2024-02-23 20:59:01.000000000 +0100 -+++ gmsh-4.13.0-source-new/src/post/PViewDataGModelIO_MED.cpp 2024-02-27 08:32:02.978082717 +0100 +diff -rupN --no-dereference gmsh-4.13.1-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.13.1-source-new/src/post/PViewDataGModelIO_MED.cpp +--- gmsh-4.13.1-source/src/post/PViewDataGModelIO_MED.cpp 2024-03-29 23:07:01.000000000 +0100 ++++ gmsh-4.13.1-source-new/src/post/PViewDataGModelIO_MED.cpp 2024-05-08 09:40:56.261525588 +0200 @@ -11,7 +11,7 @@ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index 2639864..72c67b9 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.0-source/CMakeLists.txt gmsh-4.13.0-source-new/CMakeLists.txt ---- gmsh-4.13.0-source/CMakeLists.txt 2024-02-23 20:58:58.000000000 +0100 -+++ gmsh-4.13.0-source-new/CMakeLists.txt 2024-02-27 08:32:02.681093953 +0100 +diff -rupN --no-dereference gmsh-4.13.1-source/CMakeLists.txt gmsh-4.13.1-source-new/CMakeLists.txt +--- gmsh-4.13.1-source/CMakeLists.txt 2024-05-07 17:55:05.000000000 +0200 ++++ gmsh-4.13.1-source-new/CMakeLists.txt 2024-05-08 09:40:55.962527192 +0200 @@ -1986,6 +1986,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -28,9 +28,9 @@ diff -rupN --no-dereference gmsh-4.13.0-source/CMakeLists.txt gmsh-4.13.0-source if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen -diff -rupN --no-dereference gmsh-4.13.0-source/src/common/GmshMessage.cpp gmsh-4.13.0-source-new/src/common/GmshMessage.cpp ---- gmsh-4.13.0-source/src/common/GmshMessage.cpp 2024-02-23 20:59:00.000000000 +0100 -+++ gmsh-4.13.0-source-new/src/common/GmshMessage.cpp 2024-02-27 08:32:02.682093915 +0100 +diff -rupN --no-dereference gmsh-4.13.1-source/src/common/GmshMessage.cpp gmsh-4.13.1-source-new/src/common/GmshMessage.cpp +--- gmsh-4.13.1-source/src/common/GmshMessage.cpp 2024-05-05 09:36:23.000000000 +0200 ++++ gmsh-4.13.1-source-new/src/common/GmshMessage.cpp 2024-05-08 09:40:55.963527187 +0200 @@ -173,14 +173,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_uint64.patch b/gmsh_uint64.patch index 56971f7..d9214c5 100644 --- a/gmsh_uint64.patch +++ b/gmsh_uint64.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.0-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c gmsh-4.13.0-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c ---- gmsh-4.13.0-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-02-23 20:58:59.000000000 +0100 -+++ gmsh-4.13.0-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-02-27 08:32:04.683018154 +0100 +diff -rupN --no-dereference gmsh-4.13.1-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c gmsh-4.13.1-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c +--- gmsh-4.13.1-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-03-29 23:06:57.000000000 +0100 ++++ gmsh-4.13.1-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-05-08 09:40:58.017516162 +0200 @@ -297,11 +297,11 @@ static uint64_t* scanbsearch(uint64_t* a * - startTet[maxThreads] = mesh->tetrahedra.num * - `startPt[t+1] - startPt[t]` gives how many point will be created by thread t diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index 7946be6..c0b9ff0 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.0-source/CMakeLists.txt gmsh-4.13.0-source-new/CMakeLists.txt ---- gmsh-4.13.0-source/CMakeLists.txt 2024-02-27 08:32:03.820050842 +0100 -+++ gmsh-4.13.0-source-new/CMakeLists.txt 2024-02-27 08:32:04.112039785 +0100 +diff -rupN --no-dereference gmsh-4.13.1-source/CMakeLists.txt gmsh-4.13.1-source-new/CMakeLists.txt +--- gmsh-4.13.1-source/CMakeLists.txt 2024-05-08 09:40:57.182520645 +0200 ++++ gmsh-4.13.1-source-new/CMakeLists.txt 2024-05-08 09:40:57.462519142 +0200 @@ -1714,6 +1714,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.13.0-source/CMakeLists.txt gmsh-4.13.0-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.13.0-source/src/graphics/CMakeLists.txt gmsh-4.13.0-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.13.0-source/src/graphics/CMakeLists.txt 2024-02-23 20:59:01.000000000 +0100 -+++ gmsh-4.13.0-source-new/src/graphics/CMakeLists.txt 2024-02-27 08:32:04.112039785 +0100 +diff -rupN --no-dereference gmsh-4.13.1-source/src/graphics/CMakeLists.txt gmsh-4.13.1-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.13.1-source/src/graphics/CMakeLists.txt 2024-03-29 23:07:01.000000000 +0100 ++++ gmsh-4.13.1-source-new/src/graphics/CMakeLists.txt 2024-05-08 09:40:57.463519136 +0200 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index b6f4f20..43bfc13 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.13.0-source-fedora.tar.xz) = dc89b3be0d028032a8a6fb7719ce7b8e684538f7a37fde7a760f5e41c2e385b94e5eebe4de3bed401b707b6d9ef6ad9a03a0c9330627582084afc14f1c4f521f +SHA512 (gmsh-4.13.1-source-fedora.tar.xz) = 95ebfc4649d1ca865bfad7d55b585fb0b2d18421b376bf3b42fd692f1789ae3c6d3006e62384dca7c95e73926c9624f75147aeece1719e53137af33f2e27b7ee From 47ae6f39cf098dadd74b2e64f9ea2be412acbbd7 Mon Sep 17 00:00:00 2001 From: Richard Shaw Date: Sat, 1 Jun 2024 19:17:16 -0500 Subject: [PATCH 32/56] Rebuild for opencascade 7.8.1. --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index d592101..c85e4a9 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.13.1 -Release: 1%{?dist} +Release: 2%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -409,6 +409,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Sun Jun 02 2024 Richard Shaw - 4.13.1-2 +- Rebuild for opencascade 7.8.1. + * Wed May 08 2024 Sandro Mani - 4.13.1-1 - Update to 4.13.1 From 910b41b9945570285aed3f5f445eca5b7aa9510c Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Tue, 4 Jun 2024 13:43:21 +0200 Subject: [PATCH 33/56] Update to 4.13.2 --- .gitignore | 1 + gmsh-cstdint.patch | 6 +++--- gmsh.spec | 7 +++++-- gmsh_build.patch | 6 +++--- gmsh_install.patch | 6 +++--- gmsh_julia.patch | 6 +++--- gmsh_med.patch | 24 ++++++++++++------------ gmsh_python.patch | 12 ++++++------ gmsh_uint64.patch | 6 +++--- gmsh_unbundle_gl2ps.patch | 12 ++++++------ sources | 2 +- 11 files changed, 46 insertions(+), 42 deletions(-) diff --git a/.gitignore b/.gitignore index 5a0ceaa..79b05cc 100644 --- a/.gitignore +++ b/.gitignore @@ -74,3 +74,4 @@ /gmsh-4.12.2-source-fedora.tar.xz /gmsh-4.13.0-source-fedora.tar.xz /gmsh-4.13.1-source-fedora.tar.xz +/gmsh-4.13.2-source-fedora.tar.xz diff --git a/gmsh-cstdint.patch b/gmsh-cstdint.patch index a2d446d..e13d68c 100644 --- a/gmsh-cstdint.patch +++ b/gmsh-cstdint.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.1-source/src/mesh/meshGFacePack.cpp gmsh-4.13.1-source-new/src/mesh/meshGFacePack.cpp ---- gmsh-4.13.1-source/src/mesh/meshGFacePack.cpp 2024-03-29 23:07:01.000000000 +0100 -+++ gmsh-4.13.1-source-new/src/mesh/meshGFacePack.cpp 2024-05-08 09:40:57.743517633 +0200 +diff -rupN --no-dereference gmsh-4.13.2-source/src/mesh/meshGFacePack.cpp gmsh-4.13.2-source-new/src/mesh/meshGFacePack.cpp +--- gmsh-4.13.2-source/src/mesh/meshGFacePack.cpp 2024-06-04 06:53:31.000000000 +0200 ++++ gmsh-4.13.2-source-new/src/mesh/meshGFacePack.cpp 2024-06-04 13:43:09.693028118 +0200 @@ -5,6 +5,7 @@ #include diff --git a/gmsh.spec b/gmsh.spec index c85e4a9..b13d5ee 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -17,8 +17,8 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.13.1 -Release: 2%{?dist} +Version: 4.13.2 +Release: 1%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -409,6 +409,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Tue Jun 04 2024 Sandro Mani - 4.13.2-1 +- Update to 4.13.2 + * Sun Jun 02 2024 Richard Shaw - 4.13.1-2 - Rebuild for opencascade 7.8.1. diff --git a/gmsh_build.patch b/gmsh_build.patch index b909104..d80193b 100644 --- a/gmsh_build.patch +++ b/gmsh_build.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.1-source/src/fltk/helpWindow.cpp gmsh-4.13.1-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.13.1-source/src/fltk/helpWindow.cpp 2024-05-08 09:40:56.610523715 +0200 -+++ gmsh-4.13.1-source-new/src/fltk/helpWindow.cpp 2024-05-08 09:40:57.186520623 +0200 +diff -rupN --no-dereference gmsh-4.13.2-source/src/fltk/helpWindow.cpp gmsh-4.13.2-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.13.2-source/src/fltk/helpWindow.cpp 2024-06-04 13:43:08.587008087 +0200 ++++ gmsh-4.13.2-source-new/src/fltk/helpWindow.cpp 2024-06-04 13:43:09.135018012 +0200 @@ -3,6 +3,12 @@ // See the LICENSE.txt file in the Gmsh root directory for license information. // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. diff --git a/gmsh_install.patch b/gmsh_install.patch index 01b707c..4703c11 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.1-source/CMakeLists.txt gmsh-4.13.1-source-new/CMakeLists.txt ---- gmsh-4.13.1-source/CMakeLists.txt 2024-05-08 09:40:56.889522217 +0200 -+++ gmsh-4.13.1-source-new/CMakeLists.txt 2024-05-08 09:40:56.896522180 +0200 +diff -rupN --no-dereference gmsh-4.13.2-source/CMakeLists.txt gmsh-4.13.2-source-new/CMakeLists.txt +--- gmsh-4.13.2-source/CMakeLists.txt 2024-06-04 13:43:08.858012995 +0200 ++++ gmsh-4.13.2-source-new/CMakeLists.txt 2024-06-04 13:43:08.863013086 +0200 @@ -279,7 +279,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index 4a2c250..6d1f5d3 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.1-source/CMakeLists.txt gmsh-4.13.1-source-new/CMakeLists.txt ---- gmsh-4.13.1-source/CMakeLists.txt 2024-05-08 09:40:56.255525620 +0200 -+++ gmsh-4.13.1-source-new/CMakeLists.txt 2024-05-08 09:40:56.615523688 +0200 +diff -rupN --no-dereference gmsh-4.13.2-source/CMakeLists.txt gmsh-4.13.2-source-new/CMakeLists.txt +--- gmsh-4.13.2-source/CMakeLists.txt 2024-06-04 13:43:08.318003215 +0200 ++++ gmsh-4.13.2-source-new/CMakeLists.txt 2024-06-04 13:43:08.592008178 +0200 @@ -2004,7 +2004,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) diff --git a/gmsh_med.patch b/gmsh_med.patch index 609984c..a9975b7 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.1-source/src/common/CommandLine.cpp gmsh-4.13.1-source-new/src/common/CommandLine.cpp ---- gmsh-4.13.1-source/src/common/CommandLine.cpp 2024-04-18 16:52:42.000000000 +0200 -+++ gmsh-4.13.1-source-new/src/common/CommandLine.cpp 2024-05-08 09:40:56.260525593 +0200 +diff -rupN --no-dereference gmsh-4.13.2-source/src/common/CommandLine.cpp gmsh-4.13.2-source-new/src/common/CommandLine.cpp +--- gmsh-4.13.2-source/src/common/CommandLine.cpp 2024-06-04 06:53:29.000000000 +0200 ++++ gmsh-4.13.2-source-new/src/common/CommandLine.cpp 2024-06-04 13:43:08.323003306 +0200 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.13.1-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.13.1-source/src/fltk/helpWindow.cpp gmsh-4.13.1-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.13.1-source/src/fltk/helpWindow.cpp 2024-03-29 23:07:00.000000000 +0100 -+++ gmsh-4.13.1-source-new/src/fltk/helpWindow.cpp 2024-05-08 09:40:56.260525593 +0200 +diff -rupN --no-dereference gmsh-4.13.2-source/src/fltk/helpWindow.cpp gmsh-4.13.2-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.13.2-source/src/fltk/helpWindow.cpp 2024-06-04 06:53:29.000000000 +0200 ++++ gmsh-4.13.2-source-new/src/fltk/helpWindow.cpp 2024-06-04 13:43:08.323003306 +0200 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.13.1-source/src/fltk/helpWindow.cpp gmsh-4.13 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.13.1-source/src/geo/GModelIO_MED.cpp gmsh-4.13.1-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.13.1-source/src/geo/GModelIO_MED.cpp 2024-03-29 23:07:00.000000000 +0100 -+++ gmsh-4.13.1-source-new/src/geo/GModelIO_MED.cpp 2024-05-08 09:40:56.260525593 +0200 +diff -rupN --no-dereference gmsh-4.13.2-source/src/geo/GModelIO_MED.cpp gmsh-4.13.2-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.13.2-source/src/geo/GModelIO_MED.cpp 2024-06-04 06:53:30.000000000 +0200 ++++ gmsh-4.13.2-source-new/src/geo/GModelIO_MED.cpp 2024-06-04 13:43:08.323003306 +0200 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.13.1-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.13.1-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.13.1-source-new/src/post/PViewDataGModelIO_MED.cpp ---- gmsh-4.13.1-source/src/post/PViewDataGModelIO_MED.cpp 2024-03-29 23:07:01.000000000 +0100 -+++ gmsh-4.13.1-source-new/src/post/PViewDataGModelIO_MED.cpp 2024-05-08 09:40:56.261525588 +0200 +diff -rupN --no-dereference gmsh-4.13.2-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.13.2-source-new/src/post/PViewDataGModelIO_MED.cpp +--- gmsh-4.13.2-source/src/post/PViewDataGModelIO_MED.cpp 2024-06-04 06:53:31.000000000 +0200 ++++ gmsh-4.13.2-source-new/src/post/PViewDataGModelIO_MED.cpp 2024-06-04 13:43:08.324003324 +0200 @@ -11,7 +11,7 @@ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index 72c67b9..72beafd 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.1-source/CMakeLists.txt gmsh-4.13.1-source-new/CMakeLists.txt ---- gmsh-4.13.1-source/CMakeLists.txt 2024-05-07 17:55:05.000000000 +0200 -+++ gmsh-4.13.1-source-new/CMakeLists.txt 2024-05-08 09:40:55.962527192 +0200 +diff -rupN --no-dereference gmsh-4.13.2-source/CMakeLists.txt gmsh-4.13.2-source-new/CMakeLists.txt +--- gmsh-4.13.2-source/CMakeLists.txt 2024-06-04 06:53:22.000000000 +0200 ++++ gmsh-4.13.2-source-new/CMakeLists.txt 2024-06-04 13:43:08.039998180 +0200 @@ -1986,6 +1986,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -28,9 +28,9 @@ diff -rupN --no-dereference gmsh-4.13.1-source/CMakeLists.txt gmsh-4.13.1-source if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen -diff -rupN --no-dereference gmsh-4.13.1-source/src/common/GmshMessage.cpp gmsh-4.13.1-source-new/src/common/GmshMessage.cpp ---- gmsh-4.13.1-source/src/common/GmshMessage.cpp 2024-05-05 09:36:23.000000000 +0200 -+++ gmsh-4.13.1-source-new/src/common/GmshMessage.cpp 2024-05-08 09:40:55.963527187 +0200 +diff -rupN --no-dereference gmsh-4.13.2-source/src/common/GmshMessage.cpp gmsh-4.13.2-source-new/src/common/GmshMessage.cpp +--- gmsh-4.13.2-source/src/common/GmshMessage.cpp 2024-06-04 07:36:27.000000000 +0200 ++++ gmsh-4.13.2-source-new/src/common/GmshMessage.cpp 2024-06-04 13:43:08.040998199 +0200 @@ -173,14 +173,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_uint64.patch b/gmsh_uint64.patch index d9214c5..286e013 100644 --- a/gmsh_uint64.patch +++ b/gmsh_uint64.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.1-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c gmsh-4.13.1-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c ---- gmsh-4.13.1-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-03-29 23:06:57.000000000 +0100 -+++ gmsh-4.13.1-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-05-08 09:40:58.017516162 +0200 +diff -rupN --no-dereference gmsh-4.13.2-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c gmsh-4.13.2-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c +--- gmsh-4.13.2-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-06-04 06:53:26.000000000 +0200 ++++ gmsh-4.13.2-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-06-04 13:43:09.971033153 +0200 @@ -297,11 +297,11 @@ static uint64_t* scanbsearch(uint64_t* a * - startTet[maxThreads] = mesh->tetrahedra.num * - `startPt[t+1] - startPt[t]` gives how many point will be created by thread t diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index c0b9ff0..ff8401c 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.1-source/CMakeLists.txt gmsh-4.13.1-source-new/CMakeLists.txt ---- gmsh-4.13.1-source/CMakeLists.txt 2024-05-08 09:40:57.182520645 +0200 -+++ gmsh-4.13.1-source-new/CMakeLists.txt 2024-05-08 09:40:57.462519142 +0200 +diff -rupN --no-dereference gmsh-4.13.2-source/CMakeLists.txt gmsh-4.13.2-source-new/CMakeLists.txt +--- gmsh-4.13.2-source/CMakeLists.txt 2024-06-04 13:43:09.131017940 +0200 ++++ gmsh-4.13.2-source-new/CMakeLists.txt 2024-06-04 13:43:09.417023120 +0200 @@ -1714,6 +1714,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.13.1-source/CMakeLists.txt gmsh-4.13.1-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.13.1-source/src/graphics/CMakeLists.txt gmsh-4.13.1-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.13.1-source/src/graphics/CMakeLists.txt 2024-03-29 23:07:01.000000000 +0100 -+++ gmsh-4.13.1-source-new/src/graphics/CMakeLists.txt 2024-05-08 09:40:57.463519136 +0200 +diff -rupN --no-dereference gmsh-4.13.2-source/src/graphics/CMakeLists.txt gmsh-4.13.2-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.13.2-source/src/graphics/CMakeLists.txt 2024-06-04 06:53:30.000000000 +0200 ++++ gmsh-4.13.2-source-new/src/graphics/CMakeLists.txt 2024-06-04 13:43:09.417023120 +0200 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index 43bfc13..81140eb 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.13.1-source-fedora.tar.xz) = 95ebfc4649d1ca865bfad7d55b585fb0b2d18421b376bf3b42fd692f1789ae3c6d3006e62384dca7c95e73926c9624f75147aeece1719e53137af33f2e27b7ee +SHA512 (gmsh-4.13.2-source-fedora.tar.xz) = 16a4c60d0a509c9b5a3b329abd8dbb28d5494b100f5aaaa76e624f50a3c81116d51f7aed205a178b68cf4ebda632fa0b94a38ccf3afc7221599695fa74bfded9 From 27b529371b20030bba21e3a8bc5ddb237481cc08 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Sun, 9 Jun 2024 14:03:20 +0200 Subject: [PATCH 34/56] Rebuilt for Python 3.13 --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index b13d5ee..12b837a 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.13.2 -Release: 1%{?dist} +Release: 2%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -409,6 +409,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Sun Jun 09 2024 Python Maint - 4.13.2-2 +- Rebuilt for Python 3.13 + * Tue Jun 04 2024 Sandro Mani - 4.13.2-1 - Update to 4.13.2 From 164fe029d0736db30d166dd6a4f9e8fca312b0dd Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 18 Jul 2024 02:50:54 +0000 Subject: [PATCH 35/56] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 12b837a..61a5743 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.13.2 -Release: 2%{?dist} +Release: 3%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -409,6 +409,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Thu Jul 18 2024 Fedora Release Engineering - 4.13.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Sun Jun 09 2024 Python Maint - 4.13.2-2 - Rebuilt for Python 3.13 From a0652c93e2cde0a2b77fe5917b7b68bc4a2452c1 Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Fri, 25 Oct 2024 17:25:04 -0600 Subject: [PATCH 36/56] Rebuild for hdf5 1.14.5 --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 61a5743..280bfdd 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.13.2 -Release: 3%{?dist} +Release: 4%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -409,6 +409,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Fri Oct 25 2024 Orion Poplawski - 4.13.2-4 +- Rebuild for hdf5 1.14.5 + * Thu Jul 18 2024 Fedora Release Engineering - 4.13.2-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From bcef76041a72caa198382f797a02f13b5e04c3d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Such=C3=BD?= Date: Wed, 30 Oct 2024 19:52:45 +0000 Subject: [PATCH 37/56] Migrate to SPDX license This is part of https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_4 --- gmsh.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gmsh.spec b/gmsh.spec index 280bfdd..c0996f5 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -22,9 +22,9 @@ Release: 4%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} -# gmsh is GPLv2+ with exceptions, see LICENSE.txt +# gmsh is GPL-2.0-or-later WITH Gmsh-exception, see LICENSE.txt # contrib/{DiscreteIntegration, HighOrderMeshOptimizer, MeshOptimizer, onelab} are MIT, see respective README.txt -License: GPL-2.0-with-Gmsh-exception AND MIT +License: GPL-2.0-or-later WITH Gmsh-exception AND MIT URL: http://geuz.org/gmsh/ # Download source from http://geuz.org/gmsh/src/%%{name}-%%{version}-source.tgz # Delete contrib/blossom and contrib/mpeg_encode from source archive From c837ea7557ba8d15bdc13251e4a4551b04b1d7aa Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jan 2025 22:32:01 +0000 Subject: [PATCH 38/56] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index c0996f5..ebe3c9f 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.13.2 -Release: 4%{?dist} +Release: 5%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -409,6 +409,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Thu Jan 16 2025 Fedora Release Engineering - 4.13.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Fri Oct 25 2024 Orion Poplawski - 4.13.2-4 - Rebuild for hdf5 1.14.5 From aaaca2c0b199f70ac007b85a26213c751efc5dad Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Fri, 24 Jan 2025 11:04:14 +0100 Subject: [PATCH 39/56] Rebuild (cgnslib) --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index ebe3c9f..6bd45fb 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.13.2 -Release: 5%{?dist} +Release: 6%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -409,6 +409,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Fri Jan 24 2025 Sandro Mani - 4.13.2-6 +- Rebuild (cgnslib) + * Thu Jan 16 2025 Fedora Release Engineering - 4.13.2-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From f5aa030befe7e236746d5b113a889cadb19f29a7 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Tue, 28 Jan 2025 18:07:50 +0100 Subject: [PATCH 40/56] Rebuild (cgnslib) --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 6bd45fb..0e67fe2 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.13.2 -Release: 6%{?dist} +Release: 7%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -409,6 +409,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Tue Jan 28 2025 Sandro Mani - 4.13.2-7 +- Rebuild (cgnslib) + * Fri Jan 24 2025 Sandro Mani - 4.13.2-6 - Rebuild (cgnslib) From c97049148ef20c09faaf8c651c31f1be187a5c57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= Date: Mon, 3 Feb 2025 17:31:55 +0100 Subject: [PATCH 41/56] Rebuild for tcl/tk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jaroslav Škarvada --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 0e67fe2..a5b9379 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.13.2 -Release: 7%{?dist} +Release: 8%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -409,6 +409,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Mon Feb 3 2025 Jaroslav Škarvada - 4.13.2-8 +- Rebuild for tcl/tk + * Tue Jan 28 2025 Sandro Mani - 4.13.2-7 - Rebuild (cgnslib) From 6ce2ee12ad0d14ff7ddfd7c7204625482a9a75f0 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Sun, 25 May 2025 00:48:55 +0200 Subject: [PATCH 42/56] Add gmsh-gcc15.patch --- gmsh-gcc15.patch | 25 +++++++++++++++++++++++++ gmsh.spec | 8 +++++++- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 gmsh-gcc15.patch diff --git a/gmsh-gcc15.patch b/gmsh-gcc15.patch new file mode 100644 index 0000000..9851aed --- /dev/null +++ b/gmsh-gcc15.patch @@ -0,0 +1,25 @@ +diff -rupN --no-dereference gmsh-4.13.2-source/contrib/hxt/tetBR/src/hxt_boundary_recovery.cxx gmsh-4.13.2-source-new/contrib/hxt/tetBR/src/hxt_boundary_recovery.cxx +--- gmsh-4.13.2-source/contrib/hxt/tetBR/src/hxt_boundary_recovery.cxx 2023-07-21 20:57:22.000000000 +0200 ++++ gmsh-4.13.2-source-new/contrib/hxt/tetBR/src/hxt_boundary_recovery.cxx 2025-05-25 00:31:04.555354732 +0200 +@@ -1,7 +1,7 @@ ++#include "hxt_omp.h" + extern "C" { + #include "hxt_mesh.h" + #include "hxt_tools.h" +-#include "hxt_omp.h" + #include "predicates.h" + } + +diff -rupN --no-dereference gmsh-4.13.2-source/src/mesh/meshGRegionHxt.cpp gmsh-4.13.2-source-new/src/mesh/meshGRegionHxt.cpp +--- gmsh-4.13.2-source/src/mesh/meshGRegionHxt.cpp 2024-06-04 06:53:31.000000000 +0200 ++++ gmsh-4.13.2-source-new/src/mesh/meshGRegionHxt.cpp 2025-05-25 00:31:04.555654116 +0200 +@@ -24,8 +24,8 @@ + + #if defined(HAVE_HXT) + +-extern "C" { + #include "hxt_omp.h" ++extern "C" { + #include "hxt_tetMesh.h" + #include "hxt_tetDelaunay.h" + } diff --git a/gmsh.spec b/gmsh.spec index a5b9379..bda0356 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.13.2 -Release: 8%{?dist} +Release: 9%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -47,6 +47,9 @@ Patch5: gmsh_unbundle_gl2ps.patch Patch6: gmsh-cstdint.patch # Fix incompatible size_t* -> uint64_t* conversions Patch7: gmsh_uint64.patch +# Fix build failure with GCC15 +# https://gitlab.onelab.info/gmsh/gmsh/-/issues?show=eyJpaWQiOiIzMjc2IiwiZnVsbF9wYXRoIjoiZ21zaC9nbXNoIiwiaWQiOjQ0MTB9 +Patch8: gmsh-gcc15.patch BuildRequires: alglib-devel BuildRequires: ann-devel @@ -409,6 +412,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Sat May 24 2025 Sandro Mani - 4.13.2-9 +- Add fix for GCC15 build failure + * Mon Feb 3 2025 Jaroslav Škarvada - 4.13.2-8 - Rebuild for tcl/tk From 513886e30f84167f7c16797ff9a0afa80fede9e3 Mon Sep 17 00:00:00 2001 From: Richard Shaw Date: Tue, 27 May 2025 19:11:47 -0500 Subject: [PATCH 43/56] Rebuild for opencascade 7.9.1. --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index bda0356..9e361f6 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.13.2 -Release: 9%{?dist} +Release: 10%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -412,6 +412,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Wed May 28 2025 Richard Shaw - 4.13.2-10 +- Rebuild for opencascade 7.9.1. + * Sat May 24 2025 Sandro Mani - 4.13.2-9 - Add fix for GCC15 build failure From 977b97afd725063a10b90cfb84a91dc65339a1a6 Mon Sep 17 00:00:00 2001 From: Richard Shaw Date: Wed, 28 May 2025 19:01:35 -0500 Subject: [PATCH 44/56] Rebuild for opencascade 7.9.1. --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 9e361f6..e9b25dd 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.13.2 -Release: 10%{?dist} +Release: 11%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -412,6 +412,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Thu May 29 2025 Richard Shaw - 4.13.2-11 +- Rebuild for opencascade 7.9.1. + * Wed May 28 2025 Richard Shaw - 4.13.2-10 - Rebuild for opencascade 7.9.1. From d03d5b627a451bd59e82162b69d4ed438b3a10d9 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Wed, 4 Jun 2025 09:44:25 +0200 Subject: [PATCH 45/56] Rebuilt for Python 3.14 --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index e9b25dd..3c55452 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.13.2 -Release: 11%{?dist} +Release: 12%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -412,6 +412,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Wed Jun 04 2025 Python Maint - 4.13.2-12 +- Rebuilt for Python 3.14 + * Thu May 29 2025 Richard Shaw - 4.13.2-11 - Rebuild for opencascade 7.9.1. From 712c6a119fc162868a593a0ef6c51f1a02c60806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Wed, 4 Jun 2025 10:03:56 +0200 Subject: [PATCH 46/56] removed alglib from BuildRequires Seems alglib is not used any more by gmsh, so remove it from BuildRequires. --- gmsh.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 3c55452..492e343 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -51,7 +51,6 @@ Patch7: gmsh_uint64.patch # https://gitlab.onelab.info/gmsh/gmsh/-/issues?show=eyJpaWQiOiIzMjc2IiwiZnVsbF9wYXRoIjoiZ21zaC9nbXNoIiwiaWQiOjQ0MTB9 Patch8: gmsh-gcc15.patch -BuildRequires: alglib-devel BuildRequires: ann-devel %if %{with flexiblas} BuildRequires: flexiblas-devel From 0a83798dcd8009217e1447e7b6b7e20895d7cb07 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Sat, 5 Jul 2025 13:58:37 +0200 Subject: [PATCH 47/56] Update to 4.14.0 --- .gitignore | 1 + gmsh-cstdint.patch | 11 --------- gmsh-gcc15.patch | 25 -------------------- gmsh.spec | 21 +++++++--------- gmsh_build.patch | 24 ------------------- gmsh_install.patch | 8 +++---- gmsh_julia.patch | 8 +++---- gmsh_med.patch | 24 +++++++++---------- gmsh_python.patch | 20 ++++++++-------- gmsh_uint64.patch | 50 --------------------------------------- gmsh_unbundle_gl2ps.patch | 14 +++++------ sources | 2 +- 12 files changed, 47 insertions(+), 161 deletions(-) delete mode 100644 gmsh-cstdint.patch delete mode 100644 gmsh-gcc15.patch delete mode 100644 gmsh_build.patch delete mode 100644 gmsh_uint64.patch diff --git a/.gitignore b/.gitignore index 79b05cc..5b3f9ed 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,4 @@ /gmsh-4.13.0-source-fedora.tar.xz /gmsh-4.13.1-source-fedora.tar.xz /gmsh-4.13.2-source-fedora.tar.xz +/gmsh-4.14.0-source-fedora.tar.xz diff --git a/gmsh-cstdint.patch b/gmsh-cstdint.patch deleted file mode 100644 index e13d68c..0000000 --- a/gmsh-cstdint.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -rupN --no-dereference gmsh-4.13.2-source/src/mesh/meshGFacePack.cpp gmsh-4.13.2-source-new/src/mesh/meshGFacePack.cpp ---- gmsh-4.13.2-source/src/mesh/meshGFacePack.cpp 2024-06-04 06:53:31.000000000 +0200 -+++ gmsh-4.13.2-source-new/src/mesh/meshGFacePack.cpp 2024-06-04 13:43:09.693028118 +0200 -@@ -5,6 +5,7 @@ - - #include - #include -+#include - #include - #include - #include diff --git a/gmsh-gcc15.patch b/gmsh-gcc15.patch deleted file mode 100644 index 9851aed..0000000 --- a/gmsh-gcc15.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff -rupN --no-dereference gmsh-4.13.2-source/contrib/hxt/tetBR/src/hxt_boundary_recovery.cxx gmsh-4.13.2-source-new/contrib/hxt/tetBR/src/hxt_boundary_recovery.cxx ---- gmsh-4.13.2-source/contrib/hxt/tetBR/src/hxt_boundary_recovery.cxx 2023-07-21 20:57:22.000000000 +0200 -+++ gmsh-4.13.2-source-new/contrib/hxt/tetBR/src/hxt_boundary_recovery.cxx 2025-05-25 00:31:04.555354732 +0200 -@@ -1,7 +1,7 @@ -+#include "hxt_omp.h" - extern "C" { - #include "hxt_mesh.h" - #include "hxt_tools.h" --#include "hxt_omp.h" - #include "predicates.h" - } - -diff -rupN --no-dereference gmsh-4.13.2-source/src/mesh/meshGRegionHxt.cpp gmsh-4.13.2-source-new/src/mesh/meshGRegionHxt.cpp ---- gmsh-4.13.2-source/src/mesh/meshGRegionHxt.cpp 2024-06-04 06:53:31.000000000 +0200 -+++ gmsh-4.13.2-source-new/src/mesh/meshGRegionHxt.cpp 2025-05-25 00:31:04.555654116 +0200 -@@ -24,8 +24,8 @@ - - #if defined(HAVE_HXT) - --extern "C" { - #include "hxt_omp.h" -+extern "C" { - #include "hxt_tetMesh.h" - #include "hxt_tetDelaunay.h" - } diff --git a/gmsh.spec b/gmsh.spec index 492e343..84eec45 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -9,7 +9,7 @@ %endif %bcond_without mpich -%global sover 4.13 +%global sover 4.14 %if 0%{?fedora} >= 33 || 0%{?rhel} >= 9 %bcond_without flexiblas @@ -17,8 +17,8 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.13.2 -Release: 12%{?dist} +Version: 4.14.0 +Release: 1%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -39,17 +39,8 @@ Patch1: gmsh_med.patch Patch2: gmsh_julia.patch # Remove odd install of gmsh shared library Patch3: gmsh_install.patch -# Fix build error caused by include ordering -Patch4: gmsh_build.patch # Unbundle gl2ps -Patch5: gmsh_unbundle_gl2ps.patch -# Header fix for GCC 13 -Patch6: gmsh-cstdint.patch -# Fix incompatible size_t* -> uint64_t* conversions -Patch7: gmsh_uint64.patch -# Fix build failure with GCC15 -# https://gitlab.onelab.info/gmsh/gmsh/-/issues?show=eyJpaWQiOiIzMjc2IiwiZnVsbF9wYXRoIjoiZ21zaC9nbXNoIiwiaWQiOjQ0MTB9 -Patch8: gmsh-gcc15.patch +Patch4: gmsh_unbundle_gl2ps.patch BuildRequires: ann-devel %if %{with flexiblas} @@ -239,6 +230,7 @@ ls -1 | \ grep -v ^hxt$ | \ grep -v ^kbipack$ | \ grep -v ^onelab$ | \ + grep -v ^tinyobjloader$ | \ xargs rm -rf ) @@ -411,6 +403,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Fri Jul 04 2025 Sandro Mani - 4.14.0-1 +- Update to 4.14.0 + * Wed Jun 04 2025 Python Maint - 4.13.2-12 - Rebuilt for Python 3.14 diff --git a/gmsh_build.patch b/gmsh_build.patch deleted file mode 100644 index d80193b..0000000 --- a/gmsh_build.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -rupN --no-dereference gmsh-4.13.2-source/src/fltk/helpWindow.cpp gmsh-4.13.2-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.13.2-source/src/fltk/helpWindow.cpp 2024-06-04 13:43:08.587008087 +0200 -+++ gmsh-4.13.2-source-new/src/fltk/helpWindow.cpp 2024-06-04 13:43:09.135018012 +0200 -@@ -3,6 +3,12 @@ - // See the LICENSE.txt file in the Gmsh root directory for license information. - // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues. - -+#include "GmshConfig.h" -+ -+#if defined(HAVE_MED) -+#include -+#endif -+ - #include - #include - #include -@@ -11,7 +17,6 @@ - #include - #include - #include --#include "GmshConfig.h" - #include "FlGui.h" - #include "inputValue.h" - #include "helpWindow.h" diff --git a/gmsh_install.patch b/gmsh_install.patch index 4703c11..be3d88d 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.13.2-source/CMakeLists.txt gmsh-4.13.2-source-new/CMakeLists.txt ---- gmsh-4.13.2-source/CMakeLists.txt 2024-06-04 13:43:08.858012995 +0200 -+++ gmsh-4.13.2-source-new/CMakeLists.txt 2024-06-04 13:43:08.863013086 +0200 -@@ -279,7 +279,7 @@ if(ENABLE_RPATH) +diff -rupN --no-dereference gmsh-4.14.0-source/CMakeLists.txt gmsh-4.14.0-source-new/CMakeLists.txt +--- gmsh-4.14.0-source/CMakeLists.txt 2025-07-04 17:01:28.933074150 +0200 ++++ gmsh-4.14.0-source-new/CMakeLists.txt 2025-07-04 17:01:28.936958657 +0200 +@@ -278,7 +278,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index 6d1f5d3..1137a39 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.13.2-source/CMakeLists.txt gmsh-4.13.2-source-new/CMakeLists.txt ---- gmsh-4.13.2-source/CMakeLists.txt 2024-06-04 13:43:08.318003215 +0200 -+++ gmsh-4.13.2-source-new/CMakeLists.txt 2024-06-04 13:43:08.592008178 +0200 -@@ -2004,7 +2004,7 @@ endif() +diff -rupN --no-dereference gmsh-4.14.0-source/CMakeLists.txt gmsh-4.14.0-source-new/CMakeLists.txt +--- gmsh-4.14.0-source/CMakeLists.txt 2025-07-04 17:01:28.474781143 +0200 ++++ gmsh-4.14.0-source-new/CMakeLists.txt 2025-07-04 17:01:28.708198878 +0200 +@@ -2041,7 +2041,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) install(FILES ${GMSH_PY} DESTINATION ${PYTHON3_SITE_PACKAGES}) diff --git a/gmsh_med.patch b/gmsh_med.patch index a9975b7..ebd578c 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.13.2-source/src/common/CommandLine.cpp gmsh-4.13.2-source-new/src/common/CommandLine.cpp ---- gmsh-4.13.2-source/src/common/CommandLine.cpp 2024-06-04 06:53:29.000000000 +0200 -+++ gmsh-4.13.2-source-new/src/common/CommandLine.cpp 2024-06-04 13:43:08.323003306 +0200 +diff -rupN --no-dereference gmsh-4.14.0-source/src/common/CommandLine.cpp gmsh-4.14.0-source-new/src/common/CommandLine.cpp +--- gmsh-4.14.0-source/src/common/CommandLine.cpp 2025-07-02 17:39:10.000000000 +0200 ++++ gmsh-4.14.0-source-new/src/common/CommandLine.cpp 2025-07-04 17:01:28.479037007 +0200 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.13.2-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.13.2-source/src/fltk/helpWindow.cpp gmsh-4.13.2-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.13.2-source/src/fltk/helpWindow.cpp 2024-06-04 06:53:29.000000000 +0200 -+++ gmsh-4.13.2-source-new/src/fltk/helpWindow.cpp 2024-06-04 13:43:08.323003306 +0200 +diff -rupN --no-dereference gmsh-4.14.0-source/src/fltk/helpWindow.cpp gmsh-4.14.0-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.14.0-source/src/fltk/helpWindow.cpp 2025-07-02 17:39:10.000000000 +0200 ++++ gmsh-4.14.0-source-new/src/fltk/helpWindow.cpp 2025-07-04 17:01:28.479393759 +0200 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.13.2-source/src/fltk/helpWindow.cpp gmsh-4.13 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.13.2-source/src/geo/GModelIO_MED.cpp gmsh-4.13.2-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.13.2-source/src/geo/GModelIO_MED.cpp 2024-06-04 06:53:30.000000000 +0200 -+++ gmsh-4.13.2-source-new/src/geo/GModelIO_MED.cpp 2024-06-04 13:43:08.323003306 +0200 +diff -rupN --no-dereference gmsh-4.14.0-source/src/geo/GModelIO_MED.cpp gmsh-4.14.0-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.14.0-source/src/geo/GModelIO_MED.cpp 2025-07-02 17:39:10.000000000 +0200 ++++ gmsh-4.14.0-source-new/src/geo/GModelIO_MED.cpp 2025-07-04 17:01:28.479616410 +0200 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.13.2-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.13.2-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.13.2-source-new/src/post/PViewDataGModelIO_MED.cpp ---- gmsh-4.13.2-source/src/post/PViewDataGModelIO_MED.cpp 2024-06-04 06:53:31.000000000 +0200 -+++ gmsh-4.13.2-source-new/src/post/PViewDataGModelIO_MED.cpp 2024-06-04 13:43:08.324003324 +0200 +diff -rupN --no-dereference gmsh-4.14.0-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.14.0-source-new/src/post/PViewDataGModelIO_MED.cpp +--- gmsh-4.14.0-source/src/post/PViewDataGModelIO_MED.cpp 2025-07-02 17:39:10.000000000 +0200 ++++ gmsh-4.14.0-source-new/src/post/PViewDataGModelIO_MED.cpp 2025-07-04 17:01:28.479871407 +0200 @@ -11,7 +11,7 @@ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index 72beafd..f38464c 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.13.2-source/CMakeLists.txt gmsh-4.13.2-source-new/CMakeLists.txt ---- gmsh-4.13.2-source/CMakeLists.txt 2024-06-04 06:53:22.000000000 +0200 -+++ gmsh-4.13.2-source-new/CMakeLists.txt 2024-06-04 13:43:08.039998180 +0200 -@@ -1986,6 +1986,8 @@ else() +diff -rupN --no-dereference gmsh-4.14.0-source/CMakeLists.txt gmsh-4.14.0-source-new/CMakeLists.txt +--- gmsh-4.14.0-source/CMakeLists.txt 2025-07-02 17:39:09.000000000 +0200 ++++ gmsh-4.14.0-source-new/CMakeLists.txt 2025-07-04 17:01:28.234836912 +0200 +@@ -2001,6 +2001,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -9,8 +9,8 @@ diff -rupN --no-dereference gmsh-4.13.2-source/CMakeLists.txt gmsh-4.13.2-source + # mark targets as optional so we can install them separately if needed # (e.g. "make lib" or "make shared" followed by "make install/fast") - install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL) -@@ -1997,14 +1999,14 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_D + install(TARGETS gmsh +@@ -2034,14 +2036,14 @@ if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHAR endif() if(ENABLE_ONELAB AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab) @@ -28,10 +28,10 @@ diff -rupN --no-dereference gmsh-4.13.2-source/CMakeLists.txt gmsh-4.13.2-source if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen -diff -rupN --no-dereference gmsh-4.13.2-source/src/common/GmshMessage.cpp gmsh-4.13.2-source-new/src/common/GmshMessage.cpp ---- gmsh-4.13.2-source/src/common/GmshMessage.cpp 2024-06-04 07:36:27.000000000 +0200 -+++ gmsh-4.13.2-source-new/src/common/GmshMessage.cpp 2024-06-04 13:43:08.040998199 +0200 -@@ -173,14 +173,6 @@ void Msg::Initialize(int argc, char **ar +diff -rupN --no-dereference gmsh-4.14.0-source/src/common/GmshMessage.cpp gmsh-4.14.0-source-new/src/common/GmshMessage.cpp +--- gmsh-4.14.0-source/src/common/GmshMessage.cpp 2025-07-02 17:39:10.000000000 +0200 ++++ gmsh-4.14.0-source-new/src/common/GmshMessage.cpp 2025-07-04 17:01:28.235335380 +0200 +@@ -177,14 +177,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_uint64.patch b/gmsh_uint64.patch deleted file mode 100644 index 286e013..0000000 --- a/gmsh_uint64.patch +++ /dev/null @@ -1,50 +0,0 @@ -diff -rupN --no-dereference gmsh-4.13.2-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c gmsh-4.13.2-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c ---- gmsh-4.13.2-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-06-04 06:53:26.000000000 +0200 -+++ gmsh-4.13.2-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c 2024-06-04 13:43:09.971033153 +0200 -@@ -297,11 +297,11 @@ static uint64_t* scanbsearch(uint64_t* a - * - startTet[maxThreads] = mesh->tetrahedra.num - * - `startPt[t+1] - startPt[t]` gives how many point will be created by thread t - */ --static HXTStatus balanceRefineWork(HXTMesh* mesh, uint32_t* startPt, size_t* startTet, int maxThreads) -+static HXTStatus balanceRefineWork(HXTMesh* mesh, uint32_t* startPt, uint64_t* startTet, int maxThreads) - { -- size_t* scan; -+ uint64_t* scan; - uint32_t ptPerThreadGoal; -- HXT_CHECK( hxtAlignedMalloc(&scan, sizeof(size_t) * mesh->tetrahedra.num) ); -+ HXT_CHECK( hxtAlignedMalloc(&scan, sizeof(uint64_t) * mesh->tetrahedra.num) ); - - #pragma omp parallel num_threads(maxThreads) - { -@@ -318,9 +318,9 @@ static HXTStatus balanceRefineWork(HXTMe - #pragma omp single - { - // we do a simple prefix sum -- size_t sum = 0; -+ uint32_t sum = 0; - for(int t=0; ttetrahedra.num; i++) { -- size_t inc = scan[i]; -+ uint64_t inc = scan[i]; - scan[i] = s; - s += inc; - } - -- size_t scanToFind = threadID * ptPerThreadGoal; -+ uint64_t scanToFind = threadID * ptPerThreadGoal; - - // we want to find i such that scan[i] = scanToFind. - // we do a simple binary search in the prefix scan array to find `i` -- size_t* pfnd = scanbsearch(scan, scanToFind, mesh->tetrahedra.num); -+ uint64_t* pfnd = scanbsearch(scan, scanToFind, mesh->tetrahedra.num); - startTet[threadID] = pfnd - scan; - if(startTet[threadID] < mesh->tetrahedra.num) - startPt[threadID] = *pfnd; diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index ff8401c..f438c25 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,7 +1,7 @@ -diff -rupN --no-dereference gmsh-4.13.2-source/CMakeLists.txt gmsh-4.13.2-source-new/CMakeLists.txt ---- gmsh-4.13.2-source/CMakeLists.txt 2024-06-04 13:43:09.131017940 +0200 -+++ gmsh-4.13.2-source-new/CMakeLists.txt 2024-06-04 13:43:09.417023120 +0200 -@@ -1714,6 +1714,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB +diff -rupN --no-dereference gmsh-4.14.0-source/CMakeLists.txt gmsh-4.14.0-source-new/CMakeLists.txt +--- gmsh-4.14.0-source/CMakeLists.txt 2025-07-04 17:01:29.161252918 +0200 ++++ gmsh-4.14.0-source-new/CMakeLists.txt 2025-07-04 17:01:29.394753418 +0200 +@@ -1728,6 +1728,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.13.2-source/CMakeLists.txt gmsh-4.13.2-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.13.2-source/src/graphics/CMakeLists.txt gmsh-4.13.2-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.13.2-source/src/graphics/CMakeLists.txt 2024-06-04 06:53:30.000000000 +0200 -+++ gmsh-4.13.2-source-new/src/graphics/CMakeLists.txt 2024-06-04 13:43:09.417023120 +0200 +diff -rupN --no-dereference gmsh-4.14.0-source/src/graphics/CMakeLists.txt gmsh-4.14.0-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.14.0-source/src/graphics/CMakeLists.txt 2025-07-02 17:39:10.000000000 +0200 ++++ gmsh-4.14.0-source-new/src/graphics/CMakeLists.txt 2025-07-04 17:01:29.395212058 +0200 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index 81140eb..effd372 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.13.2-source-fedora.tar.xz) = 16a4c60d0a509c9b5a3b329abd8dbb28d5494b100f5aaaa76e624f50a3c81116d51f7aed205a178b68cf4ebda632fa0b94a38ccf3afc7221599695fa74bfded9 +SHA512 (gmsh-4.14.0-source-fedora.tar.xz) = 4c3a3e473b9b344fbe549a722899948b132f48073d1cf9d764e06f98f42ee8ccc855ace289d2baf5b17d77f6face22c62f68a6bcc9c7f6edf2b0a50b48d79240 From 1bad20daa241c3dd2280108b5e050f260adc61ab Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Thu, 17 Jul 2025 19:33:28 +0200 Subject: [PATCH 48/56] Use %cmake_build instead of make --- gmsh.spec | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gmsh.spec b/gmsh.spec index 84eec45..acedf73 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.14.0 -Release: 1%{?dist} +Release: 2%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -61,7 +61,6 @@ BuildRequires: hdf5-devel BuildRequires: libjpeg-turbo-devel BuildRequires: liblbfgs-devel BuildRequires: libpng-devel -BuildRequires: make BuildRequires: mathex-devel BuildRequires: med-devel BuildRequires: mesa-libGLU-devel @@ -295,7 +294,7 @@ export CXX=mpicxx %endif # Built html documentation -make -C %{_target_platform} html +%cmake_build --target html # Fix to create correct debuginfo cp -a src/parser/Gmsh.* %{_target_platform} @@ -403,6 +402,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Thu Jul 17 2025 Sandro Mani - 4.14.0-2 +- Use %%cmake_build instead of make + * Fri Jul 04 2025 Sandro Mani - 4.14.0-1 - Update to 4.14.0 From b549eab6cad7247d679087c3a549d814f950a46b Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 23 Jul 2025 22:37:17 +0000 Subject: [PATCH 49/56] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index acedf73..a5796b2 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.14.0 -Release: 2%{?dist} +Release: 3%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -402,6 +402,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 4.14.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Thu Jul 17 2025 Sandro Mani - 4.14.0-2 - Use %%cmake_build instead of make From 06975b68744dd56732004146267ac21c75cb9c23 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Fri, 15 Aug 2025 12:49:26 +0200 Subject: [PATCH 50/56] Rebuilt for Python 3.14.0rc2 bytecode --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index a5796b2..10a2458 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.14.0 -Release: 3%{?dist} +Release: 4%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -402,6 +402,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Fri Aug 15 2025 Python Maint - 4.14.0-4 +- Rebuilt for Python 3.14.0rc2 bytecode + * Wed Jul 23 2025 Fedora Release Engineering - 4.14.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild From 10609fd0b4270a2c6ac98ab73a4301af7c07dd30 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Tue, 2 Sep 2025 14:34:06 +0200 Subject: [PATCH 51/56] Update to 4.14.1 --- .gitignore | 1 + gmsh.spec | 7 +++++-- gmsh_install.patch | 6 +++--- gmsh_julia.patch | 6 +++--- gmsh_med.patch | 24 ++++++++++++------------ gmsh_python.patch | 12 ++++++------ gmsh_unbundle_gl2ps.patch | 12 ++++++------ sources | 2 +- 8 files changed, 37 insertions(+), 33 deletions(-) diff --git a/.gitignore b/.gitignore index 5b3f9ed..a7761a7 100644 --- a/.gitignore +++ b/.gitignore @@ -76,3 +76,4 @@ /gmsh-4.13.1-source-fedora.tar.xz /gmsh-4.13.2-source-fedora.tar.xz /gmsh-4.14.0-source-fedora.tar.xz +/gmsh-4.14.1-source-fedora.tar.xz diff --git a/gmsh.spec b/gmsh.spec index 10a2458..0e6afd2 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -17,8 +17,8 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.14.0 -Release: 4%{?dist} +Version: 4.14.1 +Release: 1%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -402,6 +402,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Tue Sep 02 2025 Sandro Mani - 4.14.1-1 +- Update to 4.14.1 + * Fri Aug 15 2025 Python Maint - 4.14.0-4 - Rebuilt for Python 3.14.0rc2 bytecode diff --git a/gmsh_install.patch b/gmsh_install.patch index be3d88d..cd3370c 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.14.0-source/CMakeLists.txt gmsh-4.14.0-source-new/CMakeLists.txt ---- gmsh-4.14.0-source/CMakeLists.txt 2025-07-04 17:01:28.933074150 +0200 -+++ gmsh-4.14.0-source-new/CMakeLists.txt 2025-07-04 17:01:28.936958657 +0200 +diff -rupN --no-dereference gmsh-4.14.1-source/CMakeLists.txt gmsh-4.14.1-source-new/CMakeLists.txt +--- gmsh-4.14.1-source/CMakeLists.txt 2025-09-02 14:32:42.435707935 +0200 ++++ gmsh-4.14.1-source-new/CMakeLists.txt 2025-09-02 14:32:42.439022497 +0200 @@ -278,7 +278,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index 1137a39..2b936f7 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.14.0-source/CMakeLists.txt gmsh-4.14.0-source-new/CMakeLists.txt ---- gmsh-4.14.0-source/CMakeLists.txt 2025-07-04 17:01:28.474781143 +0200 -+++ gmsh-4.14.0-source-new/CMakeLists.txt 2025-07-04 17:01:28.708198878 +0200 +diff -rupN --no-dereference gmsh-4.14.1-source/CMakeLists.txt gmsh-4.14.1-source-new/CMakeLists.txt +--- gmsh-4.14.1-source/CMakeLists.txt 2025-09-02 14:32:41.955321611 +0200 ++++ gmsh-4.14.1-source-new/CMakeLists.txt 2025-09-02 14:32:42.213216407 +0200 @@ -2041,7 +2041,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) diff --git a/gmsh_med.patch b/gmsh_med.patch index ebd578c..9390b3a 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.14.0-source/src/common/CommandLine.cpp gmsh-4.14.0-source-new/src/common/CommandLine.cpp ---- gmsh-4.14.0-source/src/common/CommandLine.cpp 2025-07-02 17:39:10.000000000 +0200 -+++ gmsh-4.14.0-source-new/src/common/CommandLine.cpp 2025-07-04 17:01:28.479037007 +0200 +diff -rupN --no-dereference gmsh-4.14.1-source/src/common/CommandLine.cpp gmsh-4.14.1-source-new/src/common/CommandLine.cpp +--- gmsh-4.14.1-source/src/common/CommandLine.cpp 2025-07-24 12:35:20.000000000 +0200 ++++ gmsh-4.14.1-source-new/src/common/CommandLine.cpp 2025-09-02 14:32:41.960203688 +0200 @@ -42,7 +42,7 @@ #endif @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.14.0-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.14.0-source/src/fltk/helpWindow.cpp gmsh-4.14.0-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.14.0-source/src/fltk/helpWindow.cpp 2025-07-02 17:39:10.000000000 +0200 -+++ gmsh-4.14.0-source-new/src/fltk/helpWindow.cpp 2025-07-04 17:01:28.479393759 +0200 +diff -rupN --no-dereference gmsh-4.14.1-source/src/fltk/helpWindow.cpp gmsh-4.14.1-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.14.1-source/src/fltk/helpWindow.cpp 2025-09-02 11:38:17.000000000 +0200 ++++ gmsh-4.14.1-source-new/src/fltk/helpWindow.cpp 2025-09-02 14:32:41.960660399 +0200 @@ -36,7 +36,7 @@ #endif @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.14.0-source/src/fltk/helpWindow.cpp gmsh-4.14 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.14.0-source/src/geo/GModelIO_MED.cpp gmsh-4.14.0-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.14.0-source/src/geo/GModelIO_MED.cpp 2025-07-02 17:39:10.000000000 +0200 -+++ gmsh-4.14.0-source-new/src/geo/GModelIO_MED.cpp 2025-07-04 17:01:28.479616410 +0200 +diff -rupN --no-dereference gmsh-4.14.1-source/src/geo/GModelIO_MED.cpp gmsh-4.14.1-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.14.1-source/src/geo/GModelIO_MED.cpp 2025-07-24 12:35:20.000000000 +0200 ++++ gmsh-4.14.1-source-new/src/geo/GModelIO_MED.cpp 2025-09-02 14:32:41.960938701 +0200 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.14.0-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.14.0-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.14.0-source-new/src/post/PViewDataGModelIO_MED.cpp ---- gmsh-4.14.0-source/src/post/PViewDataGModelIO_MED.cpp 2025-07-02 17:39:10.000000000 +0200 -+++ gmsh-4.14.0-source-new/src/post/PViewDataGModelIO_MED.cpp 2025-07-04 17:01:28.479871407 +0200 +diff -rupN --no-dereference gmsh-4.14.1-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.14.1-source-new/src/post/PViewDataGModelIO_MED.cpp +--- gmsh-4.14.1-source/src/post/PViewDataGModelIO_MED.cpp 2025-07-24 12:35:21.000000000 +0200 ++++ gmsh-4.14.1-source-new/src/post/PViewDataGModelIO_MED.cpp 2025-09-02 14:32:41.961256864 +0200 @@ -11,7 +11,7 @@ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index f38464c..06dcb3a 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.14.0-source/CMakeLists.txt gmsh-4.14.0-source-new/CMakeLists.txt ---- gmsh-4.14.0-source/CMakeLists.txt 2025-07-02 17:39:09.000000000 +0200 -+++ gmsh-4.14.0-source-new/CMakeLists.txt 2025-07-04 17:01:28.234836912 +0200 +diff -rupN --no-dereference gmsh-4.14.1-source/CMakeLists.txt gmsh-4.14.1-source-new/CMakeLists.txt +--- gmsh-4.14.1-source/CMakeLists.txt 2025-08-30 13:14:13.000000000 +0200 ++++ gmsh-4.14.1-source-new/CMakeLists.txt 2025-09-02 14:32:41.711919812 +0200 @@ -2001,6 +2001,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -28,9 +28,9 @@ diff -rupN --no-dereference gmsh-4.14.0-source/CMakeLists.txt gmsh-4.14.0-source if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen -diff -rupN --no-dereference gmsh-4.14.0-source/src/common/GmshMessage.cpp gmsh-4.14.0-source-new/src/common/GmshMessage.cpp ---- gmsh-4.14.0-source/src/common/GmshMessage.cpp 2025-07-02 17:39:10.000000000 +0200 -+++ gmsh-4.14.0-source-new/src/common/GmshMessage.cpp 2025-07-04 17:01:28.235335380 +0200 +diff -rupN --no-dereference gmsh-4.14.1-source/src/common/GmshMessage.cpp gmsh-4.14.1-source-new/src/common/GmshMessage.cpp +--- gmsh-4.14.1-source/src/common/GmshMessage.cpp 2025-08-19 12:22:31.000000000 +0200 ++++ gmsh-4.14.1-source-new/src/common/GmshMessage.cpp 2025-09-02 14:32:41.712447178 +0200 @@ -177,14 +177,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index f438c25..1c7a5c1 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.14.0-source/CMakeLists.txt gmsh-4.14.0-source-new/CMakeLists.txt ---- gmsh-4.14.0-source/CMakeLists.txt 2025-07-04 17:01:29.161252918 +0200 -+++ gmsh-4.14.0-source-new/CMakeLists.txt 2025-07-04 17:01:29.394753418 +0200 +diff -rupN --no-dereference gmsh-4.14.1-source/CMakeLists.txt gmsh-4.14.1-source-new/CMakeLists.txt +--- gmsh-4.14.1-source/CMakeLists.txt 2025-09-02 14:32:42.662049508 +0200 ++++ gmsh-4.14.1-source-new/CMakeLists.txt 2025-09-02 14:32:42.665923375 +0200 @@ -1728,6 +1728,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.14.0-source/CMakeLists.txt gmsh-4.14.0-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.14.0-source/src/graphics/CMakeLists.txt gmsh-4.14.0-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.14.0-source/src/graphics/CMakeLists.txt 2025-07-02 17:39:10.000000000 +0200 -+++ gmsh-4.14.0-source-new/src/graphics/CMakeLists.txt 2025-07-04 17:01:29.395212058 +0200 +diff -rupN --no-dereference gmsh-4.14.1-source/src/graphics/CMakeLists.txt gmsh-4.14.1-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.14.1-source/src/graphics/CMakeLists.txt 2025-07-24 12:35:21.000000000 +0200 ++++ gmsh-4.14.1-source-new/src/graphics/CMakeLists.txt 2025-09-02 14:32:42.666317929 +0200 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index effd372..b2ba876 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.14.0-source-fedora.tar.xz) = 4c3a3e473b9b344fbe549a722899948b132f48073d1cf9d764e06f98f42ee8ccc855ace289d2baf5b17d77f6face22c62f68a6bcc9c7f6edf2b0a50b48d79240 +SHA512 (gmsh-4.14.1-source-fedora.tar.xz) = a7f8697af921f8739aa69158581c064c7209daf58c2a48f30950b449edc3cf7c4453a665ab698f10c57211c2baec96544dbc56aee4ac62b8dde1629297b65ce6 From 33029bd74aeb1b1a31b9c4a412b2644c0a6cc11e Mon Sep 17 00:00:00 2001 From: Python Maint Date: Fri, 19 Sep 2025 12:19:16 +0200 Subject: [PATCH 52/56] Rebuilt for Python 3.14.0rc3 bytecode --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 0e6afd2..664da70 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -18,7 +18,7 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator Version: 4.14.1 -Release: 1%{?dist} +Release: 2%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -402,6 +402,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Fri Sep 19 2025 Python Maint - 4.14.1-2 +- Rebuilt for Python 3.14.0rc3 bytecode + * Tue Sep 02 2025 Sandro Mani - 4.14.1-1 - Update to 4.14.1 From 9abc50053e73dd2b27d997ca332a2e551c42753c Mon Sep 17 00:00:00 2001 From: Richard Shaw Date: Sun, 2 Nov 2025 07:27:34 -0600 Subject: [PATCH 53/56] Add conditional for optional dependency gmm which is retired. Update command for icon conversion. --- gmsh.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 664da70..adee027 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -55,7 +55,10 @@ BuildRequires: desktop-file-utils BuildRequires: fltk-devel BuildRequires: gcc-c++ BuildRequires: gcc-gfortran +# gmm is retired in Fedora +%if 0%{?fedora} < 44 BuildRequires: gmm-devel +%endif BuildRequires: gmp-devel BuildRequires: hdf5-devel BuildRequires: libjpeg-turbo-devel @@ -322,7 +325,7 @@ cp -a src/parser/Gmsh.* %{_target_platform}-mpich find %{buildroot} -type f -name libgmsh.a -exec rm -f {} \; # Install icon and .desktop file -convert -scale 128 utils/icons/gmsh.png icon_128x128.png +magick -scale 128 utils/icons/gmsh.png icon_128x128.png install -Dpm 0644 icon_128x128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/%{name}.png desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} From 138bd36c801923e90983642cecb3006c039e5522 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Sun, 16 Nov 2025 14:01:30 +0100 Subject: [PATCH 54/56] Update to 4.15.0 --- .gitignore | 1 + gmsh.spec | 31 ++++++++++++++++--------------- gmsh_gmm.patch | 22 ++++++++++++++++++++++ gmsh_install.patch | 6 +++--- gmsh_julia.patch | 6 +++--- gmsh_med.patch | 26 +++++++++++++------------- gmsh_python.patch | 12 ++++++------ gmsh_unbundle_gl2ps.patch | 12 ++++++------ sources | 2 +- 9 files changed, 71 insertions(+), 47 deletions(-) create mode 100644 gmsh_gmm.patch diff --git a/.gitignore b/.gitignore index a7761a7..2d41628 100644 --- a/.gitignore +++ b/.gitignore @@ -77,3 +77,4 @@ /gmsh-4.13.2-source-fedora.tar.xz /gmsh-4.14.0-source-fedora.tar.xz /gmsh-4.14.1-source-fedora.tar.xz +/gmsh-4.15.0-source-fedora.tar.xz diff --git a/gmsh.spec b/gmsh.spec index adee027..1e95216 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -9,7 +9,7 @@ %endif %bcond_without mpich -%global sover 4.14 +%global sover 4.15 %if 0%{?fedora} >= 33 || 0%{?rhel} >= 9 %bcond_without flexiblas @@ -17,8 +17,8 @@ Name: gmsh Summary: A three-dimensional finite element mesh generator -Version: 4.14.1 -Release: 2%{?dist} +Version: 4.15.0 +Release: 1%{?dist} # MPI not available on i686 ExcludeArch: %{ix86} @@ -41,6 +41,8 @@ Patch2: gmsh_julia.patch Patch3: gmsh_install.patch # Unbundle gl2ps Patch4: gmsh_unbundle_gl2ps.patch +# Make gmm use superlu +Patch5: gmsh_gmm.patch BuildRequires: ann-devel %if %{with flexiblas} @@ -48,7 +50,6 @@ BuildRequires: flexiblas-devel %else BuildRequires: blas-devel, lapack-devel %endif -BuildRequires: eigen3-devel BuildRequires: cgnslib-devel BuildRequires: cmake BuildRequires: desktop-file-utils @@ -72,6 +73,7 @@ BuildRequires: netgen-mesher-devel-private BuildRequires: opencascade-devel BuildRequires: python3-devel BuildRequires: python3-setuptools +BuildRequires: SuperLU-devel BuildRequires: voro++-devel BuildRequires: zlib-devel BuildRequires: texinfo @@ -221,10 +223,12 @@ cp contrib/Netgen/nglib_gmsh.h contrib/Netgen/nglib_gmsh.cpp src/mesh # hxt: see contrib/hxt/CREDITS.txt # kbipack: Source not available on the net anymore # onelab: gmsh internal module +# WinslowUntangler: gmsh internal module (?) ( cd contrib; ls -1 | \ grep -v ^bamg$ | \ + grep -v ^blossom$ | \ grep -v ^DiscreteIntegration$ | \ grep -v ^MeshOptimizer$ | \ grep -v ^HighOrderMeshOptimizer$ | \ @@ -233,6 +237,7 @@ ls -1 | \ grep -v ^kbipack$ | \ grep -v ^onelab$ | \ grep -v ^tinyobjloader$ | \ + grep -v ^WinslowUntangler$ | \ xargs rm -rf ) @@ -247,18 +252,11 @@ gmsh_cmake_args="\ -DENABLE_BUILD_LIB=YES \ -DENABLE_BUILD_SHARED=YES \ -DENABLE_BUILD_DYNAMIC=YES \ - -DENABLE_MPEG_ENCODE=NO \ - -DENABLE_METIS=YES \ - -DENABLE_BLOSSOM=NO \ - -DENABLE_CGNS=YES \ - -DENABLE_MED=YES \ - -DENABLE_EIGEN=YES \ - -DEIGEN_INC=%{_includedir}/eigen3 \ - -DENABLE_OCC=YES" + -DENABLE_MPEG_ENCODE=NO" ### serial version ### %define _vpath_builddir %{_target_platform} -%cmake .. \ +%cmake \ -DENABLE_OPENMP=ON \ $gmsh_cmake_args @@ -269,7 +267,7 @@ gmsh_cmake_args="\ %{_openmpi_load} export CXX=mpicxx %define _vpath_builddir %{_target_platform}-openmpi -%cmake .. \ +%cmake \ -DENABLE_MPI=YES \ -DCMAKE_INSTALL_BINDIR=$MPI_BIN \ -DCMAKE_INSTALL_LIBDIR=$MPI_LIB \ @@ -285,7 +283,7 @@ export CXX=mpicxx %{_mpich_load} export CXX=mpicxx %define _vpath_builddir %{_target_platform}-mpich -%cmake .. \ +%cmake \ -DENABLE_MPI=YES \ -DCMAKE_INSTALL_BINDIR=$MPI_BIN \ -DCMAKE_INSTALL_LIBDIR=$MPI_LIB \ @@ -405,6 +403,9 @@ rm -f %{buildroot}%{_defaultdocdir}/%{name}/LICENSE.txt %changelog +* Sun Oct 26 2025 Sandro Mani - 4.15.0-1 +- Update to 4.15.0 + * Fri Sep 19 2025 Python Maint - 4.14.1-2 - Rebuilt for Python 3.14.0rc3 bytecode diff --git a/gmsh_gmm.patch b/gmsh_gmm.patch new file mode 100644 index 0000000..271327e --- /dev/null +++ b/gmsh_gmm.patch @@ -0,0 +1,22 @@ +diff -rupN gmsh-4.15.0-source/CMakeLists.txt gmsh-4.15.0-source-new/CMakeLists.txt +--- gmsh-4.15.0-source/CMakeLists.txt 2025-11-16 12:12:00.997452631 +0100 ++++ gmsh-4.15.0-source-new/CMakeLists.txt 2025-11-16 13:18:32.590269286 +0100 +@@ -1271,6 +1271,18 @@ if(HAVE_SOLVER) + if(ENABLE_GMM) # use GMM/MUMPS interface + add_definitions(-DGMM_USES_MUMPS) + endif() ++ else() ++ if(ENABLE_GMM) # use GMM/MUMPS interface ++ add_definitions(-DGMM_USES_SUPERLU -DGMM_NO_SUPERLU_INCLUDE_SUBDIR) ++ find_path(SUPERLU_INC "slu_util.h" PATH_SUFFIXES SuperLU) ++ include_directories(${SUPERLU_INC}) ++ endif() ++ endif() ++ else() ++ if(ENABLE_GMM) # use GMM/MUMPS interface ++ add_definitions(-DGMM_USES_SUPERLU -DGMM_NO_SUPERLU_INCLUDE_SUBDIR) ++ find_path(SUPERLU_INC "slu_util.h" PATH_SUFFIXES SuperLU) ++ include_directories(${SUPERLU_INC}) + endif() + endif() + diff --git a/gmsh_install.patch b/gmsh_install.patch index cd3370c..5e02993 100644 --- a/gmsh_install.patch +++ b/gmsh_install.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.14.1-source/CMakeLists.txt gmsh-4.14.1-source-new/CMakeLists.txt ---- gmsh-4.14.1-source/CMakeLists.txt 2025-09-02 14:32:42.435707935 +0200 -+++ gmsh-4.14.1-source-new/CMakeLists.txt 2025-09-02 14:32:42.439022497 +0200 +diff -rupN --no-dereference gmsh-4.15.0-source/CMakeLists.txt gmsh-4.15.0-source-new/CMakeLists.txt +--- gmsh-4.15.0-source/CMakeLists.txt 2025-11-16 12:11:30.706154249 +0100 ++++ gmsh-4.15.0-source-new/CMakeLists.txt 2025-11-16 12:11:30.710717577 +0100 @@ -278,7 +278,7 @@ if(ENABLE_RPATH) # when building, don't use the install RPATH already (but later on when # installing) diff --git a/gmsh_julia.patch b/gmsh_julia.patch index 2b936f7..90c37cf 100644 --- a/gmsh_julia.patch +++ b/gmsh_julia.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.14.1-source/CMakeLists.txt gmsh-4.14.1-source-new/CMakeLists.txt ---- gmsh-4.14.1-source/CMakeLists.txt 2025-09-02 14:32:41.955321611 +0200 -+++ gmsh-4.14.1-source-new/CMakeLists.txt 2025-09-02 14:32:42.213216407 +0200 +diff -rupN --no-dereference gmsh-4.15.0-source/CMakeLists.txt gmsh-4.15.0-source-new/CMakeLists.txt +--- gmsh-4.15.0-source/CMakeLists.txt 2025-11-16 12:11:30.209672907 +0100 ++++ gmsh-4.15.0-source-new/CMakeLists.txt 2025-11-16 12:11:30.455854462 +0100 @@ -2041,7 +2041,7 @@ endif() if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) install(FILES ${GMSH_API} DESTINATION ${GMSH_INC}) diff --git a/gmsh_med.patch b/gmsh_med.patch index 9390b3a..696ca1b 100644 --- a/gmsh_med.patch +++ b/gmsh_med.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.14.1-source/src/common/CommandLine.cpp gmsh-4.14.1-source-new/src/common/CommandLine.cpp ---- gmsh-4.14.1-source/src/common/CommandLine.cpp 2025-07-24 12:35:20.000000000 +0200 -+++ gmsh-4.14.1-source-new/src/common/CommandLine.cpp 2025-09-02 14:32:41.960203688 +0200 +diff -rupN --no-dereference gmsh-4.15.0-source/src/common/CommandLine.cpp gmsh-4.15.0-source-new/src/common/CommandLine.cpp +--- gmsh-4.15.0-source/src/common/CommandLine.cpp 2025-10-01 16:39:02.000000000 +0200 ++++ gmsh-4.15.0-source-new/src/common/CommandLine.cpp 2025-11-16 12:11:30.214030834 +0100 @@ -42,7 +42,7 @@ #endif @@ -10,10 +10,10 @@ diff -rupN --no-dereference gmsh-4.14.1-source/src/common/CommandLine.cpp gmsh-4 #endif #if defined(HAVE_POST) -diff -rupN --no-dereference gmsh-4.14.1-source/src/fltk/helpWindow.cpp gmsh-4.14.1-source-new/src/fltk/helpWindow.cpp ---- gmsh-4.14.1-source/src/fltk/helpWindow.cpp 2025-09-02 11:38:17.000000000 +0200 -+++ gmsh-4.14.1-source-new/src/fltk/helpWindow.cpp 2025-09-02 14:32:41.960660399 +0200 -@@ -36,7 +36,7 @@ +diff -rupN --no-dereference gmsh-4.15.0-source/src/fltk/helpWindow.cpp gmsh-4.15.0-source-new/src/fltk/helpWindow.cpp +--- gmsh-4.15.0-source/src/fltk/helpWindow.cpp 2025-10-01 16:39:02.000000000 +0200 ++++ gmsh-4.15.0-source-new/src/fltk/helpWindow.cpp 2025-11-16 12:11:30.214367145 +0100 +@@ -37,7 +37,7 @@ #endif #if defined(HAVE_MED) @@ -22,9 +22,9 @@ diff -rupN --no-dereference gmsh-4.14.1-source/src/fltk/helpWindow.cpp gmsh-4.14 #endif static const char *help_link(Fl_Widget *w, const char *uri) -diff -rupN --no-dereference gmsh-4.14.1-source/src/geo/GModelIO_MED.cpp gmsh-4.14.1-source-new/src/geo/GModelIO_MED.cpp ---- gmsh-4.14.1-source/src/geo/GModelIO_MED.cpp 2025-07-24 12:35:20.000000000 +0200 -+++ gmsh-4.14.1-source-new/src/geo/GModelIO_MED.cpp 2025-09-02 14:32:41.960938701 +0200 +diff -rupN --no-dereference gmsh-4.15.0-source/src/geo/GModelIO_MED.cpp gmsh-4.15.0-source-new/src/geo/GModelIO_MED.cpp +--- gmsh-4.15.0-source/src/geo/GModelIO_MED.cpp 2025-10-01 16:39:02.000000000 +0200 ++++ gmsh-4.15.0-source-new/src/geo/GModelIO_MED.cpp 2025-11-16 12:11:30.214658519 +0100 @@ -26,7 +26,7 @@ #include "discreteVertex.h" #include "Context.h" @@ -34,9 +34,9 @@ diff -rupN --no-dereference gmsh-4.14.1-source/src/geo/GModelIO_MED.cpp gmsh-4.1 #if(MED_MAJOR_NUM >= 3) // To avoid too many ifdefs below we use defines for the bits of the -diff -rupN --no-dereference gmsh-4.14.1-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.14.1-source-new/src/post/PViewDataGModelIO_MED.cpp ---- gmsh-4.14.1-source/src/post/PViewDataGModelIO_MED.cpp 2025-07-24 12:35:21.000000000 +0200 -+++ gmsh-4.14.1-source-new/src/post/PViewDataGModelIO_MED.cpp 2025-09-02 14:32:41.961256864 +0200 +diff -rupN --no-dereference gmsh-4.15.0-source/src/post/PViewDataGModelIO_MED.cpp gmsh-4.15.0-source-new/src/post/PViewDataGModelIO_MED.cpp +--- gmsh-4.15.0-source/src/post/PViewDataGModelIO_MED.cpp 2025-10-01 16:39:03.000000000 +0200 ++++ gmsh-4.15.0-source-new/src/post/PViewDataGModelIO_MED.cpp 2025-11-16 12:11:30.214886156 +0100 @@ -11,7 +11,7 @@ #if defined(HAVE_MED) diff --git a/gmsh_python.patch b/gmsh_python.patch index 06dcb3a..75cfbb1 100644 --- a/gmsh_python.patch +++ b/gmsh_python.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.14.1-source/CMakeLists.txt gmsh-4.14.1-source-new/CMakeLists.txt ---- gmsh-4.14.1-source/CMakeLists.txt 2025-08-30 13:14:13.000000000 +0200 -+++ gmsh-4.14.1-source-new/CMakeLists.txt 2025-09-02 14:32:41.711919812 +0200 +diff -rupN --no-dereference gmsh-4.15.0-source/CMakeLists.txt gmsh-4.15.0-source-new/CMakeLists.txt +--- gmsh-4.15.0-source/CMakeLists.txt 2025-10-25 17:09:26.000000000 +0200 ++++ gmsh-4.15.0-source-new/CMakeLists.txt 2025-11-16 12:11:29.982761471 +0100 @@ -2001,6 +2001,8 @@ else() set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR}) endif() @@ -28,9 +28,9 @@ diff -rupN --no-dereference gmsh-4.14.1-source/CMakeLists.txt gmsh-4.14.1-source if(ENABLE_PRIVATE_API) install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh) if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen -diff -rupN --no-dereference gmsh-4.14.1-source/src/common/GmshMessage.cpp gmsh-4.14.1-source-new/src/common/GmshMessage.cpp ---- gmsh-4.14.1-source/src/common/GmshMessage.cpp 2025-08-19 12:22:31.000000000 +0200 -+++ gmsh-4.14.1-source-new/src/common/GmshMessage.cpp 2025-09-02 14:32:41.712447178 +0200 +diff -rupN --no-dereference gmsh-4.15.0-source/src/common/GmshMessage.cpp gmsh-4.15.0-source-new/src/common/GmshMessage.cpp +--- gmsh-4.15.0-source/src/common/GmshMessage.cpp 2025-10-01 16:39:02.000000000 +0200 ++++ gmsh-4.15.0-source-new/src/common/GmshMessage.cpp 2025-11-16 12:11:29.983375719 +0100 @@ -177,14 +177,6 @@ void Msg::Initialize(int argc, char **ar if(CTX::instance()->exeFileName.empty() && _commandLineArgs.size()) CTX::instance()->exeFileName = _commandLineArgs[0]; diff --git a/gmsh_unbundle_gl2ps.patch b/gmsh_unbundle_gl2ps.patch index 1c7a5c1..0c0047d 100644 --- a/gmsh_unbundle_gl2ps.patch +++ b/gmsh_unbundle_gl2ps.patch @@ -1,6 +1,6 @@ -diff -rupN --no-dereference gmsh-4.14.1-source/CMakeLists.txt gmsh-4.14.1-source-new/CMakeLists.txt ---- gmsh-4.14.1-source/CMakeLists.txt 2025-09-02 14:32:42.662049508 +0200 -+++ gmsh-4.14.1-source-new/CMakeLists.txt 2025-09-02 14:32:42.665923375 +0200 +diff -rupN --no-dereference gmsh-4.15.0-source/CMakeLists.txt gmsh-4.15.0-source-new/CMakeLists.txt +--- gmsh-4.15.0-source/CMakeLists.txt 2025-11-16 12:11:30.943987998 +0100 ++++ gmsh-4.15.0-source-new/CMakeLists.txt 2025-11-16 12:11:30.948218140 +0100 @@ -1728,6 +1728,8 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENAB endif() endif() @@ -10,9 +10,9 @@ diff -rupN --no-dereference gmsh-4.14.1-source/CMakeLists.txt gmsh-4.14.1-source # Linux-specific linker options if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(HAVE_OCC) -diff -rupN --no-dereference gmsh-4.14.1-source/src/graphics/CMakeLists.txt gmsh-4.14.1-source-new/src/graphics/CMakeLists.txt ---- gmsh-4.14.1-source/src/graphics/CMakeLists.txt 2025-07-24 12:35:21.000000000 +0200 -+++ gmsh-4.14.1-source-new/src/graphics/CMakeLists.txt 2025-09-02 14:32:42.666317929 +0200 +diff -rupN --no-dereference gmsh-4.15.0-source/src/graphics/CMakeLists.txt gmsh-4.15.0-source-new/src/graphics/CMakeLists.txt +--- gmsh-4.15.0-source/src/graphics/CMakeLists.txt 2025-10-01 16:39:02.000000000 +0200 ++++ gmsh-4.15.0-source-new/src/graphics/CMakeLists.txt 2025-11-16 12:11:30.948782419 +0100 @@ -15,7 +15,6 @@ set(SRC drawScales.cpp drawGraph2d.cpp diff --git a/sources b/sources index b2ba876..753782a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gmsh-4.14.1-source-fedora.tar.xz) = a7f8697af921f8739aa69158581c064c7209daf58c2a48f30950b449edc3cf7c4453a665ab698f10c57211c2baec96544dbc56aee4ac62b8dde1629297b65ce6 +SHA512 (gmsh-4.15.0-source-fedora.tar.xz) = eac4f6e8cd342ec07e1a83cae966d81716e1d158398ed930c82322b61785f8ab38c84ec07efc91f7be523d872e3331e1a64ce81b20a8c899a82107fab9834add From bbe788dd6089ad7a3a39f2f6126bf5b60cf9eba5 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Sun, 16 Nov 2025 14:02:28 +0100 Subject: [PATCH 55/56] Drop gmm conditional, gmm has been unretired --- gmsh.spec | 3 --- 1 file changed, 3 deletions(-) diff --git a/gmsh.spec b/gmsh.spec index 1e95216..9ea3f57 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -56,10 +56,7 @@ BuildRequires: desktop-file-utils BuildRequires: fltk-devel BuildRequires: gcc-c++ BuildRequires: gcc-gfortran -# gmm is retired in Fedora -%if 0%{?fedora} < 44 BuildRequires: gmm-devel -%endif BuildRequires: gmp-devel BuildRequires: hdf5-devel BuildRequires: libjpeg-turbo-devel From 8c7372ea35a3f6fb0c09727272cff9fec8642f8d Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Sun, 16 Nov 2025 14:39:50 +0100 Subject: [PATCH 56/56] Fix magick args to generate icon_128x128.png --- gmsh.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gmsh.spec b/gmsh.spec index 9ea3f57..f1597f5 100644 --- a/gmsh.spec +++ b/gmsh.spec @@ -320,7 +320,7 @@ cp -a src/parser/Gmsh.* %{_target_platform}-mpich find %{buildroot} -type f -name libgmsh.a -exec rm -f {} \; # Install icon and .desktop file -magick -scale 128 utils/icons/gmsh.png icon_128x128.png +magick utils/icons/gmsh.png -scale 128 icon_128x128.png install -Dpm 0644 icon_128x128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/%{name}.png desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1}