Skip to content
Snippets Groups Projects
Commit b7612d15 authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

- set ENABLE_INTERNAL_DEVELOPER_API to OFF by default

- generate list of headers for GMSH_INTERNAL_DEVELOPER_API automatically
- warn Gmsh packagers not to redistribute the internal API
parent fdf52ab1
No related branches found
No related tags found
No related merge requests found
...@@ -53,7 +53,7 @@ opt(GETDP "Enable GetDP solver (as a directly linked library)" ${DEFAULT}) ...@@ -53,7 +53,7 @@ opt(GETDP "Enable GetDP solver (as a directly linked library)" ${DEFAULT})
opt(GMM "Enable GMM linear solvers (simple alternative to PETSc)" ${DEFAULT}) opt(GMM "Enable GMM linear solvers (simple alternative to PETSc)" ${DEFAULT})
opt(GMP "Enable GMP for Kbipack (advanced)" ON) opt(GMP "Enable GMP for Kbipack (advanced)" ON)
opt(GRAPHICS "Enable building graphics lib even without GUI (advanced)" OFF) opt(GRAPHICS "Enable building graphics lib even without GUI (advanced)" OFF)
opt(INTERNAL_DEVELOPER_API "Enable internal developer API (will be off by default)" ON) opt(INTERNAL_DEVELOPER_API "Enable internal developer API" OFF)
opt(KBIPACK "Enable Kbipack (neeeded by homology solver)" ${DEFAULT}) opt(KBIPACK "Enable Kbipack (neeeded by homology solver)" ${DEFAULT})
opt(MATHEX "Enable math expression parser (used by plugins and options)" ${DEFAULT}) opt(MATHEX "Enable math expression parser (used by plugins and options)" ${DEFAULT})
opt(MED "Enable MED mesh and post file formats" ${DEFAULT}) opt(MED "Enable MED mesh and post file formats" ${DEFAULT})
...@@ -105,75 +105,22 @@ set(GMSH_SHORT_LICENSE "GNU General Public License") ...@@ -105,75 +105,22 @@ set(GMSH_SHORT_LICENSE "GNU General Public License")
set(GMSH_API Common/gmsh.h) set(GMSH_API Common/gmsh.h)
set(GMSH_INTERNAL_DEVELOPER_API if(ENABLE_INTERNAL_DEVELOPER_API)
${CMAKE_CURRENT_BINARY_DIR}/Common/GmshConfig.h message(WARNING "The internal developer API is unsupported and undocumented. "
${CMAKE_CURRENT_BINARY_DIR}/Common/GmshVersion.h "It is meant for Gmsh (and related projects) developers, not for wide "
Common/GmshGlobal.h Common/Context.h Common/GmshDefines.h Common/GmshMessage.h "distribution. If you are packaging Gmsh for redistribution, please "
Common/VertexArray.h Common/Octree.h Common/OctreeInternals.h Common/OS.h "DO NOT enable this and just ship the stable API (${GMSH_API}) instead.")
Common/StringUtils.h Common/OpenFile.h Common/Hash.h Common/onelab.h file(GLOB_RECURSE HEADERS Common/*.h Numeric/*.h Geo/*.h Mesh/*.h Solver/*.h
Common/GmshSocket.h Common/onelabUtils.h Common/Options.h Common/picojson.h Post/*.h Graphics/*.h contrib/kbipack/*.h contrib/DiscreteIntegration/*.h
Numeric/Numeric.h Numeric/GaussIntegration.h Numeric/polynomialBasis.h contrib/HighOrderMeshOptimizer/*.h contrib/MeshOptimizer/*.h
Numeric/JacobianBasis.h Numeric/bezierBasis.h Numeric/fullMatrix.h contrib/MeshQualityOptimizer/*.h contrib/MathEx/*.h)
Numeric/FuncSpaceData.h Numeric/pointsGenerators.h Numeric/simpleFunction.h set(GMSH_INTERNAL_DEVELOPER_API ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshConfig.h
Numeric/cartesian.h Numeric/ElementType.h Numeric/BasisFactory.h ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshVersion.h ${HEADERS})
Numeric/CondNumBasis.h Numeric/mathEvaluator.h Numeric/nodalBasis.h get_property(IAMCHILD DIRECTORY PROPERTY PARENT_DIRECTORY)
Geo/GModel.h Geo/GEntity.h Geo/GPoint.h Geo/GVertex.h Geo/GEdge.h Geo/GFace.h if(IAMCHILD)
Geo/GRegion.h Geo/GEdgeLoop.h Geo/MVertex.h Geo/MVertexBoundaryLayerData.h set(GMSH_INTERNAL_DEVELOPER_API ${GMSH_API} PARENT_SCOPE)
Geo/MEdge.h Geo/MFace.h Geo/MEdgeHash.h Geo/MFaceHash.h Geo/MElement.h endif(IAMCHILD)
Geo/MElementOctree.h Geo/MPoint.h Geo/MLine.h Geo/MTriangle.h endif(ENABLE_INTERNAL_DEVELOPER_API)
Geo/MQuadrangle.h Geo/MTetrahedron.h Geo/MHexahedron.h Geo/MPrism.h
Geo/MPyramid.h Geo/MTrihedron.h Geo/MElementCut.h Geo/discreteVertex.h
Geo/discreteEdge.h Geo/discreteFace.h Geo/discreteRegion.h Geo/SPoint2.h
Geo/SPoint3.h Geo/SVector3.h Geo/STensor3.h Geo/SBoundingBox3d.h Geo/Pair.h
Geo/Range.h Geo/SOrientedBoundingBox.h Geo/CellComplex.h Geo/ChainComplex.h
Geo/Cell.h Geo/Homology.h Geo/Chain.h Geo/GenericVertex.h Geo/GenericEdge.h
Geo/GenericFace.h Geo/GenericRegion.h Geo/partitionVertex.h
Geo/partitionEdge.h Geo/partitionFace.h Geo/CGNSOptions.h Geo/gmshLevelset.h
Geo/boundaryLayersData.h
Mesh/meshGEdge.h Mesh/meshGFace.h Mesh/meshGFaceOptimize.h
Mesh/meshPartition.h Mesh/meshGFaceDelaunayInsertion.h Mesh/simple3D.h
Mesh/meshPartitionOptions.h Mesh/directions3D.h Mesh/yamakawa.h
Mesh/Voronoi3D.h Mesh/Levy3D.h Mesh/meshMetric.h Mesh/ThinLayer.h
Solver/dofManager.h Solver/femTerm.h Solver/laplaceTerm.h
Solver/elasticityTerm.h Solver/crossConfTerm.h Solver/orthogonalTerm.h
Solver/linearSystem.h Solver/linearSystemGMM.h Solver/linearSystemCSR.h
Solver/linearSystemFull.h Solver/elasticitySolver.h Solver/sparsityPattern.h
Solver/groupOfElements.h Solver/linearSystemPETSc.h
Solver/linearSystemMUMPS.h Solver/thermicSolver.h
Post/PView.h Post/PViewData.h Plugin/PluginManager.h Post/OctreePost.h
Post/PViewDataList.h Post/PViewDataGModel.h Post/PViewOptions.h
Post/ColorTable.h Post/adaptiveData.h
Graphics/drawContext.h
contrib/kbipack/gmp_normal_form.h contrib/kbipack/gmp_matrix.h
contrib/kbipack/gmp_blas.h contrib/kbipack/mpz.h
contrib/DiscreteIntegration/Integration3D.h
contrib/HighOrderMeshOptimizer/OptHOM.h
contrib/HighOrderMeshOptimizer/OptHomMesh.h
contrib/HighOrderMeshOptimizer/OptHomRun.h
contrib/HighOrderMeshOptimizer/ParamCoord.h
contrib/HighOrderMeshOptimizer/OptHomFastCurving.h
contrib/HighOrderMeshOptimizer/BoundaryLayerCurver.h
contrib/HighOrderMeshOptimizer/OptHomIntegralBoundaryDist.h
contrib/HighOrderMeshOptimizer/CADDistances.h
contrib/HighOrderMeshOptimizer/OptHomObjContribScaledJac.h
contrib/HighOrderMeshOptimizer/OptHomObjContribMetricMin.h
contrib/HighOrderMeshOptimizer/OptHomObjContribCADDist.h
contrib/MeshOptimizer/MeshOptPatch.h contrib/MeshOptimizer/MeshOpt.h
contrib/MeshOptimizer/MeshOptCommon.h contrib/MeshOptimizer/MeshOptimizer.h
contrib/MeshOptimizer/MeshOptObjContribFunc.h
contrib/MeshOptimizer/MeshOptObjContrib.h
contrib/MeshOptimizer/MeshOptObjContribScaledNodeDispSq.h
contrib/MeshOptimizer/MeshOptObjectiveFunction.h
contrib/MeshOptimizer/MeshOptVertexCoord.h
contrib/MeshQualityOptimizer/MeshQualityObjContribIdealJac.h
contrib/MeshQualityOptimizer/MeshQualityObjContribInvCond.h
contrib/MeshQualityOptimizer/MeshQualityOptimizer.h
contrib/MathEx/mathex.h)
get_property(IAMCHILD DIRECTORY PROPERTY PARENT_DIRECTORY)
if(IAMCHILD)
set(GMSH_INTERNAL_DEVELOPER_API ${GMSH_API} PARENT_SCOPE)
endif(IAMCHILD)
if(${CMAKE_MAJOR_VERSION} GREATER 2) if(${CMAKE_MAJOR_VERSION} GREATER 2)
string(TIMESTAMP DATE "%Y%m%d") string(TIMESTAMP DATE "%Y%m%d")
...@@ -446,7 +393,7 @@ if(ENABLE_BLAS_LAPACK) ...@@ -446,7 +393,7 @@ if(ENABLE_BLAS_LAPACK)
endif(NOT HAVE_BLAS OR NOT HAVE_LAPACK) endif(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
if(NOT HAVE_BLAS OR NOT HAVE_LAPACK) if(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
message(STATUS "Warning: Could not find Blas or Lapack: most meshing algorithms " message(WARNING "Could not find Blas or Lapack: most meshing algorithms "
"will not be functional") "will not be functional")
endif(NOT HAVE_BLAS OR NOT HAVE_LAPACK) endif(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
...@@ -1074,7 +1021,7 @@ if(HAVE_SOLVER) ...@@ -1074,7 +1021,7 @@ if(HAVE_SOLVER)
set_source_files_properties(${TAUCS_G} PROPERTIES COMPILE_FLAGS -DTAUCS_CORE_GENERAL) set_source_files_properties(${TAUCS_G} PROPERTIES COMPILE_FLAGS -DTAUCS_CORE_GENERAL)
set_config_option(HAVE_TAUCS "Taucs") set_config_option(HAVE_TAUCS "Taucs")
else(HAVE_METIS) else(HAVE_METIS)
message(STATUS "Warning: Disabling Taucs (requires METIS)") message(WARNING "Disabling Taucs (requires METIS)")
endif(HAVE_METIS) endif(HAVE_METIS)
endif(ENABLE_TAUCS AND HAVE_BLAS AND HAVE_LAPACK) endif(ENABLE_TAUCS AND HAVE_BLAS AND HAVE_LAPACK)
...@@ -1145,9 +1092,9 @@ if(ENABLE_OCC) ...@@ -1145,9 +1092,9 @@ if(ENABLE_OCC)
endif(OCC_MAJOR AND OCC_MINOR AND OCC_MAINT) endif(OCC_MAJOR AND OCC_MINOR AND OCC_MAINT)
endif(OCC_INC) endif(OCC_INC)
if(OCC_VERSION AND OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION}) if(OCC_VERSION AND OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION})
message(WARNING "Gmsh requires OpenCASCADE >= ${OCC_MINIMAL_VERSION}") message(WARNING "Gmsh requires OpenCASCADE >= ${OCC_MINIMAL_VERSION}. "
message(WARNING "Use CMAKE_PREFIX_PATH or the CASROOT environment variable " "Use CMAKE_PREFIX_PATH or the CASROOT environment variable "
"to explicitely specify the installation path of OpenCASCADE") "to explicitely specify the installation path of OpenCASCADE")
else(OCC_VERSION AND OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION}) else(OCC_VERSION AND OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION})
set(OCC_LIBS_REQUIRED set(OCC_LIBS_REQUIRED
# subset of DataExchange # subset of DataExchange
...@@ -1267,7 +1214,11 @@ if(ENABLE_WRAP_PYTHON) ...@@ -1267,7 +1214,11 @@ if(ENABLE_WRAP_PYTHON)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_SWIG_FLAGS "") set(CMAKE_SWIG_FLAGS "")
set_source_files_properties(Common/gmsh.i PROPERTIES CPLUSPLUS ON) set_source_files_properties(Common/gmsh.i PROPERTIES CPLUSPLUS ON)
swig_add_module(gmsh python Common/gmsh.i) if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.8)
swig_add_library(gmsh LANGUAGE python SOURCES Common/gmsh.i)
else(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.8)
swig_add_module(gmsh python Common/gmsh.i)
endif(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.8)
swig_link_libraries(gmsh ${PYTHON_LIBRARIES} shared) swig_link_libraries(gmsh ${PYTHON_LIBRARIES} shared)
if(APPLE) if(APPLE)
set_target_properties("_gmsh" PROPERTIES LINK_FLAGS set_target_properties("_gmsh" PROPERTIES LINK_FLAGS
......
...@@ -54,9 +54,9 @@ getdp_framework="$frameworks_dir/getdp.framework" ...@@ -54,9 +54,9 @@ getdp_framework="$frameworks_dir/getdp.framework"
occt_framework="$frameworks_dir/occt.framework" occt_framework="$frameworks_dir/occt.framework"
if [ $enable_simulator != 0 ]; then if [ $enable_simulator != 0 ]; then
cmake_default="-DDEFAULT=0 -DCMAKE_TOOLCHAIN_FILE=$gmsh_git/contrib/mobile/utils/iOS.cmake -DIOS_PLATFORM=SIMULATOR -DENABLE_BUILD_IOS=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=x86_64 -GXcode" cmake_default="-DDEFAULT=0 -DENABLE_INTERNAL_DEVELOPER_API=1 -DCMAKE_TOOLCHAIN_FILE=$gmsh_git/contrib/mobile/utils/iOS.cmake -DIOS_PLATFORM=SIMULATOR -DENABLE_BUILD_IOS=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=x86_64 -GXcode"
else else
cmake_default="-DDEFAULT=0 -DCMAKE_TOOLCHAIN_FILE=$gmsh_git/contrib/mobile/utils/iOS.cmake -DIOS_PLATFORM=OS -DENABLE_BUILD_IOS=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=armv7;armv7s;arm64 -GXcode" cmake_default="-DDEFAULT=0 -DENABLE_INTERNAL_DEVELOPER_API=1 -DCMAKE_TOOLCHAIN_FILE=$gmsh_git/contrib/mobile/utils/iOS.cmake -DIOS_PLATFORM=OS -DENABLE_BUILD_IOS=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=armv7;armv7s;arm64 -GXcode"
fi fi
build_cmd="xcodebuild -target lib -configuration Release" build_cmd="xcodebuild -target lib -configuration Release"
......
This directory contains examples on how to use the Gmsh API in C++ and in Python. This directory contains examples on how to use the Gmsh API in C++ and in
Python. The full API is available in Common/gmsh.h.
The files t1.{cpp,py}, t2.{cpp,py}, ... are reimplementations in C++ and Python
of the corresponding tutorials in gmsh/tutorials.
1) Build and install Gmsh, the dynamic Gmsh library and the Python wrappers:
cd gmsh
mkdir build
cd build
cmake -DENABLE_WRAP_PYTHON=1 ..
make
make install
cd ..
2a) To build the C++ examples:
cd demos/api
mkdir build
cd build
cmake ..
make
./t1
2b) To run the Python examples:
export PYTHON_PATH=/path/to/gmsh/build
python demos/api/t1.py
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment