Skip to content
Commits on Source (20)
......@@ -2,9 +2,401 @@
## On master branch (not released yet - Kernel modules are in **bold**)
## On master branch (not released yet)
[Full log](https://github.com/sofa-framework/sofa/compare/v18.06...HEAD)
[Full log](https://github.com/sofa-framework/sofa/compare/v19.06...HEAD)
### Deprecated
### Breaking
### Improvements
### Bug Fixes
____________________________________________________________
## [v19.06](https://github.com/sofa-framework/sofa/tree/v19.06)
[Full log](https://github.com/sofa-framework/sofa/compare/v18.12...v19.06)
### Breaking
**Modules**
- [All] Run clang-tidy and update license headers [#899](https://github.com/sofa-framework/sofa/pull/899)
- [All] Refactor the loading of Xsp files. [#918](https://github.com/sofa-framework/sofa/pull/918)
- **[SofaBaseTopology]** Change triangles orientation in tetrahedron [#878](https://github.com/sofa-framework/sofa/pull/878)
- **[SofaBaseTopology]** Major Change in Topology Containers [#967](https://github.com/sofa-framework/sofa/pull/967)
- **[SofaKernel]** Refactor the MutationListener [#917](https://github.com/sofa-framework/sofa/pull/917)
- **[SofaKernel]** Some Topology cleaning... [#866](https://github.com/sofa-framework/sofa/pull/866)
- [SofaOpenglVisual] Fix ogl perf problem [#1069](https://github.com/sofa-framework/sofa/pull/1069)
### Modularizations
- [SofaExporter] Modularize (+minor dependency cleaning) [#915](https://github.com/sofa-framework/sofa/pull/915)
- [SofaHaptics] Modularize sofa haptics [#945](https://github.com/sofa-framework/sofa/pull/945)
- [SofaOpenglVisual] Pluginize. [#1080](https://github.com/sofa-framework/sofa/pull/1080)
### Improvements
**Architecture**
- [CMake] Rework sofa_generate_package [#951](https://github.com/sofa-framework/sofa/pull/951)
- [CMake] SofaMacros.cmake: deprecating sofa_create_package [#909](https://github.com/sofa-framework/sofa/pull/909)
**Modules**
- [All] Improve install and packaging [#1018](https://github.com/sofa-framework/sofa/pull/1018)
- [All] Plugins finding and loading [#913](https://github.com/sofa-framework/sofa/pull/913)
- [All] Replace deprecated c++ standard binder component [#908](https://github.com/sofa-framework/sofa/pull/908)
- **[SofaBaseMechanics]** BarycentricMapping: spatial hashing, handle limit cases [#896](https://github.com/sofa-framework/sofa/pull/896)
- **[SofaBaseTopology]** Clean Topology logs and add AdvanceTimer logs [#874](https://github.com/sofa-framework/sofa/pull/874)
- **[SofaBaseVisual]** Add default texcoord in VisualModel [#933](https://github.com/sofa-framework/sofa/pull/933)
- [SofaConstraint] ADD control on constraint force in UniformConstraint [#1027](https://github.com/sofa-framework/sofa/pull/1027)
- **[SofaCore]** Add possibilities to draw lines on surfaces in DrawTool [#937](https://github.com/sofa-framework/sofa/pull/937)
- **[SofaCore]** Collision visitor primitive tests count [#930](https://github.com/sofa-framework/sofa/pull/930)
- **[SofaCore]** ADD Datacallback and datalink [#911](https://github.com/sofa-framework/sofa/pull/911)
- [SofaEngine] Avoid Crash in BoxROI when rest_position is not yet defined [#1031](https://github.com/sofa-framework/sofa/pull/1031)
- [SofaExporter] Add option for Regression_test to check first and last iteration [#1061](https://github.com/sofa-framework/sofa/pull/1061)
- [SofaGeneralAnimationLoop] Improve MechanicalMatrixMapper [#882](https://github.com/sofa-framework/sofa/pull/882)
- [SofaGraphComponent] Run SceneChecker at each load [#938](https://github.com/sofa-framework/sofa/pull/938)
- [SofaGuiQt] Change the keyboard shortcut associated to camera mode [#997](https://github.com/sofa-framework/sofa/pull/997)
- [SofaGuiQt] Add a profiling window based on AdvanceTimer records [#1028](https://github.com/sofa-framework/sofa/pull/1028)
- **[SofaKernel]** Some small changes in debug topology drawing [#952](https://github.com/sofa-framework/sofa/pull/952)
- **[SofaKernel]** Update Static Solver [#950](https://github.com/sofa-framework/sofa/pull/950)
- **[SofaKernel]** Rename TModels into CollisionModels and update all scenes [#1034](https://github.com/sofa-framework/sofa/pull/1034)
- **[SofaKernel]** Add a new video recorder class VideoRecorderFFMPEG [#883](https://github.com/sofa-framework/sofa/pull/883)
- **[SofaSimulationCore]** Cpu task and scheduled thread support [#970](https://github.com/sofa-framework/sofa/pull/970)
- **[SofaSimulationCore]** call BaseObject::draw() during the Transparent pass [#929](https://github.com/sofa-framework/sofa/pull/929)
- [SofaTopologyMapping] Clean, fix, upgrade Tetra2TriangleTopologicalMapping [#876](https://github.com/sofa-framework/sofa/pull/876)
**Plugins / Projects**
- [Geomagic] Add some better check at init and method to free driver [#925](https://github.com/sofa-framework/sofa/pull/925)
- [Icons] EDIT Sofa icons [#881](https://github.com/sofa-framework/sofa/pull/881)
- [MultiThreading] TaskAllocator Interface [#906](https://github.com/sofa-framework/sofa/pull/906)
- [PluginExample] Update example + add comments [#1053](https://github.com/sofa-framework/sofa/pull/1053)
- [Regression] ADD Regression as external project [#1052](https://github.com/sofa-framework/sofa/pull/1052)
- [runSofa] ADD possibility to jump to source/instanciation of selected component [#1013](https://github.com/sofa-framework/sofa/pull/1013)
- [SofaCUDA] Fix cuda with latest API [#912](https://github.com/sofa-framework/sofa/pull/912)
- [SofaPython] Add Sofa.hasViewer function [#964](https://github.com/sofa-framework/sofa/pull/964)
- [SofaPython] Change Base.addNewData [#1004](https://github.com/sofa-framework/sofa/pull/1004)
**Scenes / Examples**
- [examples] Rename TModels into CollisionModels and update all scenes [#1034](https://github.com/sofa-framework/sofa/pull/1034)
### Bug Fixes
**Architecture**
- [CMake] Add check to prevent the inclusion of non-existant file in cmake 3.13 [#897](https://github.com/sofa-framework/sofa/pull/897)
- [CMake] Fix relocatable plugins [#1059](https://github.com/sofa-framework/sofa/pull/1059)
- [CMake] FIX: exporting options in SofaFrameworkConfig.cmake [#927](https://github.com/sofa-framework/sofa/pull/927)
- [CMake] FIX: wrong paths of installed headers in SofaBaseMechanics [#887](https://github.com/sofa-framework/sofa/pull/887)
- [CMake] FIX build/install plugins directory [#959](https://github.com/sofa-framework/sofa/pull/959)
**Modules**
- [All] Three small fixes in SofaBaseLinearSolver, SofaBoundaryCondition, runSofa [#931](https://github.com/sofa-framework/sofa/pull/931)
- [All] FIXES made for RoboSoft2019 [#1003](https://github.com/sofa-framework/sofa/pull/1003)
- [All] Fix some warnings [#873](https://github.com/sofa-framework/sofa/pull/873)
- [All] Several bug fixes [#985](https://github.com/sofa-framework/sofa/pull/985)
- [All] Some fixes to have a ... green dashboard! [#982](https://github.com/sofa-framework/sofa/pull/982)
- [All] Fix compilation with SOFA_NO_OPENGL flag [#1032](https://github.com/sofa-framework/sofa/pull/1032)
- [SofaConstraint] Convert static sized arrays to dynamic ones in GenericConstraintSolver [#920](https://github.com/sofa-framework/sofa/pull/920)
- **[SofaBaseMechanics]** Fix barycentric mapping again [#924](https://github.com/sofa-framework/sofa/pull/924)
- **[SofaBaseTopology]** Fix Crash when loading a vtk file generated by Gmsh using TetrahedronSetTopologyContainer as container [#1008](https://github.com/sofa-framework/sofa/pull/1008)
- **[SofaBaseTopology]** Fix right setDirty/clean topologyData [#889](https://github.com/sofa-framework/sofa/pull/889)
- **[SofaBaseTopology]**[DrawTools] Some fix/update in topology internal draw methods. [#877](https://github.com/sofa-framework/sofa/pull/877)
- **[SofaBaseTopology]** Yet another fix in Tetra2triangleTopologicalMapping [#998](https://github.com/sofa-framework/sofa/pull/998)
- **[SofaBaseTopology]** Clean, fix, upgrade Triangle2EdgeTopologicalMapping [#875](https://github.com/sofa-framework/sofa/pull/875)
- **[SofaBaseTopology]** Fix crashes in Tetra2TriangleTopologicalMapping [#960](https://github.com/sofa-framework/sofa/pull/960)
- [SofaBoundaryCondition] Fix draw function in ConstantForcefield [#1017](https://github.com/sofa-framework/sofa/pull/1017)
- **[SofaDeformable]** FIX issue 928 [#942](https://github.com/sofa-framework/sofa/pull/942)
- **[SofaDeformable]** Merge 2 ctor in SpringForceField [#948](https://github.com/sofa-framework/sofa/pull/948)
- [SofaExporter] FIX: out-of-tree include of SofaExporter header files [#975](https://github.com/sofa-framework/sofa/pull/975)
- [SofaGeneralLoader] Compute subElement by default for Gmsh format [#986](https://github.com/sofa-framework/sofa/pull/986)
- [SofaGeneralObjectInteraction] Fix AttachConstraint in case of FreeMotion (LM solving) [#949](https://github.com/sofa-framework/sofa/pull/949)
- [SofaGeneralObjectInteraction] Fix attach constraint radius [#650](https://github.com/sofa-framework/sofa/pull/650)
- [SofaGui] Fix missing profiling timers for BatchGUI and HeadlessRecorder [#890](https://github.com/sofa-framework/sofa/pull/890)
- [SofaGuiGlut] Fix compilation [#1044](https://github.com/sofa-framework/sofa/pull/1044)
- [SofaGuiQt] FIX: component/nodes ordering in runSofa scene graph [#1001](https://github.com/sofa-framework/sofa/pull/1001)
- [SofaGuiQt] REMOVE: public export of target SofaExporter [#963](https://github.com/sofa-framework/sofa/pull/963)
- [SofaGuiQt] Fix: several QWidget do not have a parent [#1030](https://github.com/sofa-framework/sofa/pull/1030)
- **[SofaHelper]** FIX compilation on Visual Studio 2015 with QWT plugin [#935](https://github.com/sofa-framework/sofa/pull/935)
- **[SofaHelper]** FIX WinDepPack INSTALL_INTERFACE [#1042](https://github.com/sofa-framework/sofa/pull/1042)
- **[SofaHelper]** REMOVE PluginManager::m_searchPaths [#947](https://github.com/sofa-framework/sofa/pull/947)
- **[SofaKernel]** Clean & Fix TopologyChangeVisitor and StateChangeVisitor behavior [#880](https://github.com/sofa-framework/sofa/pull/880)
- **[SofaKernel]** Clean output data when doUpdate in BoxROI [#1056](https://github.com/sofa-framework/sofa/pull/1056)
- **[SofaKernel]** FIX deprecation message related to template types. [#939](https://github.com/sofa-framework/sofa/pull/939)
- **[SofaKernel]** FIX in TetrahedronFEMForceField & TetrahedronSetTopologyAlgorithm [#973](https://github.com/sofa-framework/sofa/pull/973)
- **[SofaKernel]** FIX operator>> in Mat.h and add corresponding test. [#993](https://github.com/sofa-framework/sofa/pull/993)
- **[SofaKernel]** FIX: A few fix to compile on Mac OSX Xcode 9 and Linux gcc 7.3.0 [#969](https://github.com/sofa-framework/sofa/pull/969)
- **[SofaKernel]** FIX: force name data to contain something [#1009](https://github.com/sofa-framework/sofa/pull/1009)
- **[SofaKernel]** Fix error in MapperHexahedron and MapperQuad barycentric coef computation [#1057](https://github.com/sofa-framework/sofa/pull/1057)
- **[SofaKernel]** Fix: remove unwanted AdvanceTimer::begin command [#1029](https://github.com/sofa-framework/sofa/pull/1029)
- **[SofaKernel]** Remove warnings [#968](https://github.com/sofa-framework/sofa/pull/968)
- **[SofaKernel]** several small fix [#953](https://github.com/sofa-framework/sofa/pull/953)
- [SofaLoader] Fix positions when handleSeams is activated in MeshObjLoader [#923](https://github.com/sofa-framework/sofa/pull/923)
- [SofaMeshCollision] Fix TriangleModel to handle topology changes [#903](https://github.com/sofa-framework/sofa/pull/903)
- **[SofaSimulationCore]** Remove unjustified Assert in getSimulation() [#1082](https://github.com/sofa-framework/sofa/pull/1082)
- **[SofaSimulationCore]** FIX CollisionVisitor::processCollisionPipeline [#962](https://github.com/sofa-framework/sofa/pull/962)
- [SofaTests] Fix small bugs in the Multi2Mapping_test [#1078](https://github.com/sofa-framework/sofa/pull/1078)
**Plugins / Projects**
- [CImgPlugin] FIX: messed up package prefix in CImg [#921](https://github.com/sofa-framework/sofa/pull/921)
- [Geomagic] FIX compilation error in Geomagic plugin with removal of SOFA_FLOAT/DOUBLE [#898](https://github.com/sofa-framework/sofa/pull/898)
- [image] Fix image_gui plugin loading [#1015](https://github.com/sofa-framework/sofa/pull/1015)
- [image] Message API is needed even if no python [#1068](https://github.com/sofa-framework/sofa/pull/1068)
- [runSofa] FIX the opening of ModifyObject view. [#1010](https://github.com/sofa-framework/sofa/pull/1010)
- [runSofa] Fix runSofa -a option with a gui. [#1058](https://github.com/sofa-framework/sofa/pull/1058)
- [runSofa] User experience fixes in the ModifyData view. [#1011](https://github.com/sofa-framework/sofa/pull/1011)
- [Sensable] Fix the compilation of the Sensable plugin [#1019](https://github.com/sofa-framework/sofa/pull/1019)
- [SofaCUDA] Compilation error fix (CudaStandardTetrahedralFEMForceField.cu) [#991](https://github.com/sofa-framework/sofa/pull/991)
- [SofaCUDA] Fix several Cuda example scenes [#1000](https://github.com/sofa-framework/sofa/pull/1000)
- [SofaCUDA] Fix windows compilation. [#966](https://github.com/sofa-framework/sofa/pull/966)
- [SofaPython] FIX allow the derivTypeFromParentValue to work with node. [#984](https://github.com/sofa-framework/sofa/pull/984)
- [SofaPython] FIX example broken by PR#459 [#1020](https://github.com/sofa-framework/sofa/pull/1020)
- [SofaPython] FIX the broken Binding_Data::setValue() [#1006](https://github.com/sofa-framework/sofa/pull/1006)
- [SofaPython] Fix duplicate symbol [#1036](https://github.com/sofa-framework/sofa/pull/1036)
- [SofaPython] FIX: removing PythonLibs target from SofaPython [#891](https://github.com/sofa-framework/sofa/pull/891)
- [SofaPython] REMOVE: public export of target SofaExporter [#963](https://github.com/sofa-framework/sofa/pull/963)
**Scenes / Examples**
- [examples] Remove warnings in Demos/ scenes [#1021](https://github.com/sofa-framework/sofa/pull/1021)
- [scenes] Fix chainAll demo scenario [#987](https://github.com/sofa-framework/sofa/pull/987)
### Cleanings
**Modules**
- [All] For each data field's with a "filename" alias flip it with the data's name. [#1024](https://github.com/sofa-framework/sofa/pull/1024)
- [All] Quick changes diffusion and mass [#983](https://github.com/sofa-framework/sofa/pull/983)
- [All] Remove duplicate ctor + prettify some code [#1054](https://github.com/sofa-framework/sofa/pull/1054)
- [All] Replace serr with the new msg_error() API. [#916](https://github.com/sofa-framework/sofa/pull/916)
- [All] Several STC fixes [#1048](https://github.com/sofa-framework/sofa/pull/1048)
- [All] Sofa defrost sprint week2 [#884](https://github.com/sofa-framework/sofa/pull/884)
- [All] minor cleaning of warnings and bugfix [#886](https://github.com/sofa-framework/sofa/pull/886)
- [All] Remove bunch of warnings (again) [#1065](https://github.com/sofa-framework/sofa/pull/1065)
- [All] remove #ifdef SOFA_HAVE_GLEW [#1077](https://github.com/sofa-framework/sofa/pull/1077)
- **[SofaLoader]** Change error into warning in MeshVTKLoader [#1037](https://github.com/sofa-framework/sofa/pull/1037)
- [SofaConstraint] Replaced sout calls by msg_info() in LCPConstraintSolver [#981](https://github.com/sofa-framework/sofa/pull/981)
- [SofaGeneralLinearSolver] Clean BTDLinearSolver [#907](https://github.com/sofa-framework/sofa/pull/907)
- [SofaHaptics] Replace deprecated INCLUDE_ROOT_DIR in CMakeLists.txt [#1023](https://github.com/sofa-framework/sofa/pull/1023)
- **[SofaKernel]** Brainless Warnings cleaning [#971](https://github.com/sofa-framework/sofa/pull/971)
- **[SofaKernel]** Minor code refactor in BaseData & new StringUtils functions. [#860](https://github.com/sofa-framework/sofa/pull/860)
- **[SofaKernel]** Refactor DataTrackerEngine so it match the DataCallback [#1073](https://github.com/sofa-framework/sofa/pull/1073)
- **[SofaKernel]** Remove annoying warning [#1062](https://github.com/sofa-framework/sofa/pull/1062)
- **[SofaKernel]** Remove boost::locale dependency [#1033](https://github.com/sofa-framework/sofa/pull/1033)
- **[SofaKernel]** Remove usage of helper::system::atomic<int> (replaced by STL's) [#1035](https://github.com/sofa-framework/sofa/pull/1035)
- **[SofaKernel]** Several changes in Topology components [#999](https://github.com/sofa-framework/sofa/pull/999)
- **[SofaKernel]** minor cleaning in mesh loader [#1025](https://github.com/sofa-framework/sofa/pull/1025)
- **[SofaKernel]** Remove multigroup option in MatrixLinearSolver [#901](https://github.com/sofa-framework/sofa/pull/901)
- [SofaRigid] Clean JointSpringFF [#850](https://github.com/sofa-framework/sofa/pull/850)
- [SofaRigid] Cosmetic clean in RigidRigidMapping & msg_* update. [#1005](https://github.com/sofa-framework/sofa/pull/1005)
- [SofaSimpleFem] Use msg and size_t in TetraDiff [#1016](https://github.com/sofa-framework/sofa/pull/1016)
**Plugins / Projects**
- [image] Add warning guiding users regarding pluginization of DiffusionSolver [#1067](https://github.com/sofa-framework/sofa/pull/1067)
- [Modeler] Deactivate Modeler by default, since it is deprecated [#972](https://github.com/sofa-framework/sofa/pull/972)
**Scenes / Examples**
- [Scenes] Apply script on all scenes using VisualModel/OglModel [#1081](https://github.com/sofa-framework/sofa/pull/1081)
____________________________________________________________
## [v18.12](https://github.com/sofa-framework/sofa/tree/v18.12)
[Full log](https://github.com/sofa-framework/sofa/compare/v18.06...v18.12)
### Deprecated
**Removed in v18.12**
- [SofaBoundaryCondition] BuoyantForceField [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaBoundaryCondition] VaccumSphereForceField [#457](https://github.com/sofa-framework/sofa/pull/457)
- **[SofaHelper]** Utils::getPluginDirectory() [#518](https://github.com/sofa-framework/sofa/pull/518) - Use PluginRepository.getFirstPath() instead
- [SofaMisc] ParallelCGLinearSolver [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaMiscForceField] ForceMaskOff [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaMiscForceField] LineBendingSprings [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaMiscForceField] WashingMachineForceField [#457](https://github.com/sofa-framework/sofa/pull/457)
- ~~[SofaMiscForceField] LennardJonesForceField [#457](https://github.com/sofa-framework/sofa/pull/457)~~
- [SofaMiscMapping] CatmullRomSplineMapping [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaMiscMapping] CenterPointMechanicalMapping [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaMiscMapping] CurveMapping [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaMiscMapping] ExternalInterpolationMapping [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaMiscMapping] ProjectionToLineMapping [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaMiscMapping] ProjectionToPlaneMapping
- ~~[SofaOpenglVisual] OglCylinderModel [#457](https://github.com/sofa-framework/sofa/pull/457)~~
- ~~[SofaOpenglVisual] OglGrid [#457](https://github.com/sofa-framework/sofa/pull/457)~~
- ~~[SofaOpenglVisual] OglRenderingSRGB [#457](https://github.com/sofa-framework/sofa/pull/457)~~
- ~~[SofaOpenglVisual] OglLineAxis [#457](https://github.com/sofa-framework/sofa/pull/457)~~
- ~~[SofaOpenglVisual] OglSceneFrame [#457](https://github.com/sofa-framework/sofa/pull/457)~~
- [SofaUserInteraction] ArticulatedHierarchyBVHController [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaUserInteraction] ArticulatedHierarchyController [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaUserInteraction] DisabledContact [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaUserInteraction] EdgeSetController [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaUserInteraction] GraspingManager [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaUserInteraction] InterpolationController [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaUserInteraction] MechanicalStateControllerOmni [#457](https://github.com/sofa-framework/sofa/pull/457)
- [SofaUserInteraction] NodeToggleController [#457](https://github.com/sofa-framework/sofa/pull/457)
### Breaking
**Modules**
- **[SofaBaseMechanics]**[SofaMiscForceField] Homogeneization of mass components in SOFA [#637](https://github.com/sofa-framework/sofa/pull/637)
- **[SofaBaseMechanics]** Clean barycentric mapping [#797](https://github.com/sofa-framework/sofa/pull/797)
- [SofaBoundaryCondition] Refactor FixedPlaneConstraint (breaking) [#803](https://github.com/sofa-framework/sofa/pull/803)
- **[SofaFramework]** [BREAKING] Replacing DataEngine with SimpleDataEngine [#814](https://github.com/sofa-framework/sofa/pull/814)
- **[SofaFramework]** [BREAKING] Rename: data tracker has changed [#822](https://github.com/sofa-framework/sofa/pull/822)
- [SofaPreconditioner] modularization [#668](https://github.com/sofa-framework/sofa/pull/668)
- [SofaSparseSolver] modularization [#668](https://github.com/sofa-framework/sofa/pull/668)
### Improvements
**Architecture**
- [CMake] use ccache if available [#692](https://github.com/sofa-framework/sofa/pull/692)
- [Cmake] Add a findCython.cmake [#734](https://github.com/sofa-framework/sofa/pull/734)
- [CMake] ADD QtIFW generator + improvements [#796](https://github.com/sofa-framework/sofa/pull/796)
- [SofaMacros] ADD CMake macro to create pybind11 & cython targets and modules #859(https://github.com/sofa-framework/sofa/pull/859)
**Modules**
- [All] Use drawtool everywhere [#704](https://github.com/sofa-framework/sofa/pull/704)
- [All] Sofa add mechanical matrix mapper [#721](https://github.com/sofa-framework/sofa/pull/721)
- **[SofaBaseTopology]** Add battery of tests on topology containers [#708](https://github.com/sofa-framework/sofa/pull/708)
- **[SofaBaseTopology]** Topology change propagation to Mechanical State [#838](https://github.com/sofa-framework/sofa/pull/838)
- **[SofaBaseMechanics]** Optimize barycentric mapping initialization [#798](https://github.com/sofa-framework/sofa/pull/798)
- [SofaBoundaryCondition] Factorize partial fixedconstraint [#718](https://github.com/sofa-framework/sofa/pull/718)
- [SofaConstraint] add a force data field in SlidingConstraint [#780](https://github.com/sofa-framework/sofa/pull/780)
- [SofaConstraint] ADD Data to show constraint forces [#840](https://github.com/sofa-framework/sofa/pull/840)
- [SofaConstraint] allow call of constraints' storeLambda() [#854](https://github.com/sofa-framework/sofa/pull/854)
- **[SofaCore]** Add new (simpler) DataEngine implementation [#760](https://github.com/sofa-framework/sofa/pull/760)
- [SofaExporter] ADD in WriteState all required tests on data and clean export with msg API [#714](https://github.com/sofa-framework/sofa/pull/714)
- **[SofaFramework]** Improve external dirs fetching in SofaMacros [#759](https://github.com/sofa-framework/sofa/pull/759)
- [SofaGeneralAnimationLoop] Improvement on MMMapper [#772](https://github.com/sofa-framework/sofa/pull/772)
- **[SofaHelper]** EDIT FileSystem and FileRepository for regression tests [#830](https://github.com/sofa-framework/sofa/pull/830)
- **[SofaKernel]** Improve Displayflags [#671](https://github.com/sofa-framework/sofa/pull/671)
- **[SofaKernel]** Add a "sofa_add_module" in SofaMacro.cmake [#732](https://github.com/sofa-framework/sofa/pull/732)
- **[SofaKernel]** use string in base object description [#862](https://github.com/sofa-framework/sofa/pull/862)
- [SofaMeshCollision] TriangleModel optimization when topology changes occur [#839](https://github.com/sofa-framework/sofa/pull/839)
- [SofaSparseSolver] ADD saveMatrixToFile to SparseLDLSolver [#845](https://github.com/sofa-framework/sofa/pull/845)
- [SofaTest] ADD a PrintTo method so test failure shows human readable informations. [#730](https://github.com/sofa-framework/sofa/pull/730)
- [VisualModel] Improve the messages when loading mesh inside VisualModel [#778](https://github.com/sofa-framework/sofa/pull/778)
- [WriteState] minor fix with the time attribute, default values [#776](https://github.com/sofa-framework/sofa/pull/776)
**Plugins / Projects**
- [Geomagic] ADD an inputForceFeedback data in Geomagic [#648](https://github.com/sofa-framework/sofa/pull/648)
- [Geomagic] Fix dll export and some enhancements [#786](https://github.com/sofa-framework/sofa/pull/786)
- [MultiThreading] removed the boost thread dependency [#701](https://github.com/sofa-framework/sofa/pull/701)
- [MultiThreading] New components and Task scheduler classes refactoring [#745](https://github.com/sofa-framework/sofa/pull/745)
- [MultiThreading] Add Image plugin Data types in DataExchange component [#770](https://github.com/sofa-framework/sofa/pull/770)
- [MultiThreading] TaskScheduler Interface [#775](https://github.com/sofa-framework/sofa/pull/775)
- [runSofa] Add data field value change on mouse move [#750](https://github.com/sofa-framework/sofa/pull/750)
- [SofaCarving] Refresh and enhancement [#712](https://github.com/sofa-framework/sofa/pull/712)
- [SofaCarving] plugin enhancement [#787](https://github.com/sofa-framework/sofa/pull/787)
- [SofaPython] ADD forwarding of onMouseMove event into the script controller [#731](https://github.com/sofa-framework/sofa/pull/731)
- [SofaPython] ADD: Bindings for BoundingBox [#736](https://github.com/sofa-framework/sofa/pull/736)
- [SofaPython][PSDE] Psde derive io [#742](https://github.com/sofa-framework/sofa/pull/742)
- [SofaPython][PSDE] Update on demand as designed initially [#751](https://github.com/sofa-framework/sofa/pull/751)
- [SofaPython] ADD a custom __dir__ method in Binding_Base. [#762](https://github.com/sofa-framework/sofa/pull/762)
- [SofaPython] add getLinkedBase to the binding of a link. [#843](https://github.com/sofa-framework/sofa/pull/843)
- [SofaPython] ADD binding python to getCategories [#868](https://github.com/sofa-framework/sofa/pull/868)
### Bug Fixes
**Architecture**
- [CMake] FIX: cyclic recursion [#766](https://github.com/sofa-framework/sofa/pull/766)
- [CMake] Backport fixes [#791](https://github.com/sofa-framework/sofa/pull/791)
- [CMake] Fix compilation issues due to CPackNSIS [#867](https://github.com/sofa-framework/sofa/pull/867)
- [CMake] Add check to prevent the inclusion of non-existant file in cmake 3.13 [#897](https://github.com/sofa-framework/sofa/pull/897)
**Modules**
- [All] ISSofa bugfix, lot of fixes [#756](https://github.com/sofa-framework/sofa/pull/756)
- [All] FIX Windows linkage [#910](https://github.com/sofa-framework/sofa/pull/910)
- [SofaGuiQt] Change method to allow antialiased screenshots in QtViewer [#728](https://github.com/sofa-framework/sofa/pull/728)
- **[SofaBaseMechanics]** Fix warning scene mass [#779](https://github.com/sofa-framework/sofa/pull/779)
- **[SofaBaseMechanics]** FIX DiagonalMass_test [#832](https://github.com/sofa-framework/sofa/pull/832)
- **[SofaBaseTopology]** Fix SparseGridTopology initialization with an input mesh [#670](https://github.com/sofa-framework/sofa/pull/670)
- [SofaBoundaryCondition] FIX AffineMovementConstraint orientation issue [#824](https://github.com/sofa-framework/sofa/pull/824)
- [SofaCarving] Modify the CMake config file to allow other plugins link to Sofa Carving [#781](https://github.com/sofa-framework/sofa/pull/781)
- **[SofaCore]** FIX: enable ExtVecXf mappings with double floating type [#827](https://github.com/sofa-framework/sofa/pull/827)
- [SofaDeformable] Fix MeshSpring ForceField and Loader [#815](https://github.com/sofa-framework/sofa/pull/815)
- **[SofaFramework]** Keep SOFA_EXTERN_TEMPLATE macro definition [#870](https://github.com/sofa-framework/sofa/pull/870)
- [SofaGui] ADD option to enable VSync (default: OFF) [#722](https://github.com/sofa-framework/sofa/pull/722)
- [SofaOpenglVisual] Rollback removal of Ogl components [#905](https://github.com/sofa-framework/sofa/pull/905)
- **[SofaKernel]** FIX bug in toEulerVector [#399](https://github.com/sofa-framework/sofa/pull/399)
- **[SofaKernel]** FIX segfault created by static initialisers on OSX/clang compiler [#642](https://github.com/sofa-framework/sofa/pull/642)
- **[SofaKernel]** Fix: correct path writing in sofa_set_python_directory macro [#763](https://github.com/sofa-framework/sofa/pull/763)
- **[SofaKernel]** Check if Quaternion has norm 1 [#790](https://github.com/sofa-framework/sofa/pull/790)
- [SofaPreconditioner] FIX ShewchukPCGLinearSolver [#737](https://github.com/sofa-framework/sofa/pull/737)
**Plugins / Projects**
- [CGALPlugin] fix compilation [#783](https://github.com/sofa-framework/sofa/pull/783)
- [CGALPlugin] Fix compilation for cgal 4.12+ (cgal::polyhedron_3 is now forward declared) [#812](https://github.com/sofa-framework/sofa/pull/812)
- [CImgPlugin] CMake/Mac: lower priority for XCode's libpng [#720](https://github.com/sofa-framework/sofa/pull/720)
- [Geomagic] Fix broken behavior [#761](https://github.com/sofa-framework/sofa/pull/761)
- [Geomagic] Fix scenes [#858](https://github.com/sofa-framework/sofa/pull/858)
- [Multithreading] FIX compiling error on Mac [#727](https://github.com/sofa-framework/sofa/pull/727)
- [MultiThreading] Fix Livers scenes crash [#792](https://github.com/sofa-framework/sofa/pull/792)
- [runSofa] ADD Modules to plugin_list.conf.default [#753](https://github.com/sofa-framework/sofa/pull/753)
- [SofaPython][examples] FIX: Fixing the scene... and the typo in the name [#765](https://github.com/sofa-framework/sofa/pull/765)
- [Tutorials] FIX oneTetrahedron and chainHybrid [#773](https://github.com/sofa-framework/sofa/pull/773)
**Scenes / Examples**
- [examples] Fix TopologySurfaceDifferentMesh.scn [#716](https://github.com/sofa-framework/sofa/pull/716)
- [examples] Fix the examples missing a <RequiredPlugin name="SofaSparseSolver"/> [#748](https://github.com/sofa-framework/sofa/pull/748)
- [examples] Fix scenes having issue with CollisionGroup [#821](https://github.com/sofa-framework/sofa/pull/821)
### Cleanings
**Modules**
- [All] Fix some recent compilation warnings [#726](https://github.com/sofa-framework/sofa/pull/726)
- [All] Replace some int/unit by size_t [#729](https://github.com/sofa-framework/sofa/pull/729)
- [All] Fix some C4661 warnings [#738](https://github.com/sofa-framework/sofa/pull/738)
- [All] FIX warnings [#739](https://github.com/sofa-framework/sofa/pull/739)
- [All] Fix some compilation warnings [#755](https://github.com/sofa-framework/sofa/pull/755)
- [All] FIX a bunch of static-analysis errors (cppcheck) [#782](https://github.com/sofa-framework/sofa/pull/782)
- [All] Remove SOFA_DECL_CLASS and SOFA_LINK_CLASS [#837](https://github.com/sofa-framework/sofa/pull/837)
- [All] Remove SOFA_SUPPORT_MOVING_FRAMES and SOFA_SUPPORT_MULTIRESOLUTION [#849](https://github.com/sofa-framework/sofa/pull/849)
- **[SofaBaseCollision]** CLEAN CylinderModel [#847](https://github.com/sofa-framework/sofa/pull/847)
- **[SofaBaseLinearSolver]** CLEAN GraphScatteredTypes [#844](https://github.com/sofa-framework/sofa/pull/844)
- **[SofaFramework]** Various cleaning (non-breaking) [#841](https://github.com/sofa-framework/sofa/pull/841)
- **[SofaFramework]** CLEAN: removing unused PS3 files [#851](https://github.com/sofa-framework/sofa/pull/851)
- [SofaGeneralSimpleFEM] Clean BeamFemForceField [#846](https://github.com/sofa-framework/sofa/pull/846)
- **[SofaHelper]** Change drawTriangle and drawQuad with internal functions [#813](https://github.com/sofa-framework/sofa/pull/813)
- **[SofaHelper]** Update ComponentChange with removed Components [#905](https://github.com/sofa-framework/sofa/pull/905)
- **[SofaKernel]** Remove commented code since years in SofaBaseMechanics [#733](https://github.com/sofa-framework/sofa/pull/733)
- **[SofaKernel]** Move ScriptEvent class from SofaPython to core/objectModel [#764](https://github.com/sofa-framework/sofa/pull/764)
- [SofaMiscFem] Clean BaseMaterial::handleTopologyChange [#817](https://github.com/sofa-framework/sofa/pull/817)
- [SofaMiscMapping] Clean DeformableOnRigidFrameMapping [#848](https://github.com/sofa-framework/sofa/pull/848)
- [SofaSimpleFem] Stc clean simplefem [#826](https://github.com/sofa-framework/sofa/pull/826)
**Plugins / Projects**
- [Multithreading] Move TaskScheduler files from MultiThreading plugin to SofaKernel [#805](https://github.com/sofa-framework/sofa/pull/805)
**Scenes / Examples**
- [examples] Remove scenes about deprecated components [#922](https://github.com/sofa-framework/sofa/pull/922)
____________________________________________________________
......@@ -64,6 +456,7 @@ ____________________________________________________________
- [CMake] ADD external projects handling [#649](https://github.com/sofa-framework/sofa/pull/649)
- [CMake] ADD the CMAKE_WARN_DEPRECATED option in SOFA [#662](https://github.com/sofa-framework/sofa/pull/662)
- [CMake] Improve SOFA installation and packaging [#635](https://github.com/sofa-framework/sofa/pull/635)
- [CMake] Cleans for packaging [#789](https://github.com/sofa-framework/sofa/pull/789)
**Modules**
- [All] Refactoring in Camera, BackgroundSetting and Light [#676](https://github.com/sofa-framework/sofa/pull/676)
......@@ -75,8 +468,9 @@ ____________________________________________________________
- [SofaMiscMapping] Fix rigid barycentric mapping [#710](https://github.com/sofa-framework/sofa/pull/710)
- **[SofaHelper]** PluginManager now checks for file existence instead of library extension match. [#621](https://github.com/sofa-framework/sofa/pull/621)
**Applications**
**Plugins / Projects**
- [HeadlessRecorder] ADD frameskip option to headless recorder [#615](https://github.com/sofa-framework/sofa/pull/615)
- [HeadlessRecorder] Remove avcodec dependency in HeadlessRecorder.h [#752](https://github.com/sofa-framework/sofa/pull/752)
- [runSofa] Save&restore the scenegraph state when live-code & add info panel [#657](https://github.com/sofa-framework/sofa/pull/657)
- [SofaPython] PythonScriptDataEngine (PSDE) [#583](https://github.com/sofa-framework/sofa/pull/583)
- [SofaPython] Small fix & new features. [#656](https://github.com/sofa-framework/sofa/pull/656)
......@@ -95,15 +489,18 @@ ____________________________________________________________
- [SofaConstraint] FIX: Moving semicolon under preprocessor define [#680](https://github.com/sofa-framework/sofa/pull/680)
- **[SofaEngine]** FIX Bug in BoxROI that is not properly initialized [#627](https://github.com/sofa-framework/sofa/pull/627)
- **[SofaFramework]** Fix plugin list configuration [#645](https://github.com/sofa-framework/sofa/pull/645)
- **[SofaKernel]** FIX macro issue resulted from the #include cleaning. [#672](https://github.com/sofa-framework/sofa/pull/672)
- [SofaGraphComponent] FIX SceneChecker_test + ADD alias test [#711](https://github.com/sofa-framework/sofa/pull/711)
- [SofaGraphComponent] FIX SceneCheck build on MacOS [#719](https://github.com/sofa-framework/sofa/pull/719)
- [SofaGuiQt] FIX missing resources [#758](https://github.com/sofa-framework/sofa/pull/758)
- [SofaGeneralEngine] FIX disabled tests [#675](https://github.com/sofa-framework/sofa/pull/675)
- **[SofaHelper]** More robust method to test end of string [#617](https://github.com/sofa-framework/sofa/pull/617)
- **[SofaKernel]** FIX macro issue resulted from the #include cleaning. [#672](https://github.com/sofa-framework/sofa/pull/672)
- [SofaMiscFem] FIX dependencies [#588](https://github.com/sofa-framework/sofa/pull/588)
- [SofaOpenglVisual] FIX MacOS crash in batch mode [#646](https://github.com/sofa-framework/sofa/pull/646)
- **[SofaSimulationGraph]** FIX dependencies [#588](https://github.com/sofa-framework/sofa/pull/588)
- [SofaSparseSolver] FIX SparseLDL crash and add proper SOFA_FLOAT/DOUBLE mangement [#655](https://github.com/sofa-framework/sofa/pull/655)
**Applications**
**Plugins / Projects**
- [CGALPlugin] FIX compilation issue with recent version of CGAL (4.11) & Ubunu 18.04 LTS [#664](https://github.com/sofa-framework/sofa/pull/664)
- [CImgPlugin] Export CImg_CFLAGS [#595](https://github.com/sofa-framework/sofa/pull/595)
- [CImgPlugin] FIX CMakeLists install fail since pluginization [#609](https://github.com/sofa-framework/sofa/pull/609)
......@@ -112,6 +509,7 @@ ____________________________________________________________
- [MultiThreading] FIX: add createSubelements param in MeshGmshLoader [#626](https://github.com/sofa-framework/sofa/pull/626)
- [runSofa] Fix compilation when SofaGuiQt is not activated [#599](https://github.com/sofa-framework/sofa/pull/599)
- [runSofa] ADD infinite iterations option to batch gui [#613](https://github.com/sofa-framework/sofa/pull/613)
- [runSofa] FIX missing resources [#758](https://github.com/sofa-framework/sofa/pull/758)
- [SofaDistanceGrid] ADD .scene-tests to ignore scene [#594](https://github.com/sofa-framework/sofa/pull/594)
- [SofaPython] FIX build for MacOS >10.13.0 [#614](https://github.com/sofa-framework/sofa/pull/614)
......@@ -124,11 +522,10 @@ ____________________________________________________________
- [extlibs/gtest] Update gtest & clean the CMakeLists.txt [#604](https://github.com/sofa-framework/sofa/pull/604)
### Cleaning
### Cleanings
**Architecture**
- [CMake] Remove the option SOFA_GUI_INTERACTION and its associated codes/macro [#643](https://github.com/sofa-framework/sofa/pull/643)
- [NG] MOVE SofaComponent* to packages [#620](https://github.com/sofa-framework/sofa/pull/620)
**Modules**
- [All] CMake: Remove COMPONENTSET, keep DEPRECATED [#586](https://github.com/sofa-framework/sofa/pull/586)
......@@ -137,7 +534,7 @@ ____________________________________________________________
- **[SofaKernel]** Header include cleanup [#638](https://github.com/sofa-framework/sofa/pull/638)
- **[SofaKernel]** Remove unused function "renumberConstraintId" [#691](https://github.com/sofa-framework/sofa/pull/691)
**Applications**
**Plugins / Projects**
- [CImgPlugin] Less scary config warnings [#607](https://github.com/sofa-framework/sofa/pull/607)
- [HeadlessRecorder] Handle errors in target config [#608](https://github.com/sofa-framework/sofa/pull/608)
- [SofaGUI] Move GlutGUI to projects and remove all glut references in SofaFramework [#598](https://github.com/sofa-framework/sofa/pull/598)
......@@ -158,8 +555,8 @@ ____________________________________________________________
**Kernel modules**
- Will be removed in v17.12
- [all]
- SMP support [#457](https://github.com/sofa-framework/sofa/pull/457) - no more maintained
- [All]
- SMP support [#457](https://github.com/sofa-framework/sofa/pull/457 - no more maintained)
- [SofaDefaultType]
- LaparoscopicRigidType [#457](https://github.com/sofa-framework/sofa/pull/457) - not used/dont compiled for a really long time
......@@ -212,7 +609,7 @@ ____________________________________________________________
### Breaking
**Kernel modules**
- [all]
- [All]
- issofa_visitors: Changing the way projective constraints are propagated in visitors [#216](https://github.com/sofa-framework/sofa/pull/216)
- [SofaDeformable]
- Change how rest shape is given in RestShapeSpringsForceField [#315](https://github.com/sofa-framework/sofa/pull/315)
......@@ -227,7 +624,7 @@ ____________________________________________________________
### Improvements
**Kernel modules**
- [all]
- [All]
- issofa_topology: Improvement, BugFix and Cleaning on Topology [#243](https://github.com/sofa-framework/sofa/pull/243)
- issofa_constraintsolving: improve constraints [#484](https://github.com/sofa-framework/sofa/pull/484)
- Improve File:line info in error message (for python and xml error reporting) [#314](https://github.com/sofa-framework/sofa/pull/314)
......@@ -244,7 +641,7 @@ ____________________________________________________________
- Add check of vector size in TetrahedronFEMForceField [#341](https://github.com/sofa-framework/sofa/pull/341)
**Other modules**
- [all]
- [All]
- Fix default value rayleigh params [#350](https://github.com/sofa-framework/sofa/pull/350)
- PSL branch prerequisites [#410](https://github.com/sofa-framework/sofa/pull/410)
- template alias sptr for downsizing the include graph [#436](https://github.com/sofa-framework/sofa/pull/436)
......@@ -287,7 +684,7 @@ ____________________________________________________________
- [SofaVolumetricData]
- Split the module in two plugins [#389](https://github.com/sofa-framework/sofa/pull/389)
**Applications**
**Plugins / Projects**
- [CGALPlugin]
- Add new functionality for mesh generation from image: definition of features [#294](https://github.com/sofa-framework/sofa/pull/294)
- [meshconv]
......@@ -327,7 +724,7 @@ ____________________________________________________________
### Bug Fixes
**Kernel modules**
- [all]
- [All]
- CMake: Fix and clean boost, when using Sofa as an external lib [#421](https://github.com/sofa-framework/sofa/pull/421)
- Fix computeBBox functions [#527](https://github.com/sofa-framework/sofa/pull/527)
- CMake: FIX Boost::program_options finding in install [#618](https://github.com/sofa-framework/sofa/pull/618)
......@@ -363,7 +760,7 @@ ____________________________________________________________
- Add stop in add_mbktomatrixVisitor [#439](https://github.com/sofa-framework/sofa/pull/439)
**Other modules**
- [all]
- [All]
- Fix warnings and strange double incrementation on iterator [#364](https://github.com/sofa-framework/sofa/pull/364)
- installing gtest headers for separate plugin builds [#395](https://github.com/sofa-framework/sofa/pull/395)
- Fix override warnings [#423](https://github.com/sofa-framework/sofa/pull/423)
......@@ -403,7 +800,7 @@ ____________________________________________________________
- FIX missing headers [#461](https://github.com/sofa-framework/sofa/pull/461)
- Update libQGLViewer to 2.7.1 [#545](https://github.com/sofa-framework/sofa/pull/545)
**Applications**
**Plugins / Projects**
- [CGALPlugin]
- Fix build problem [#351](https://github.com/sofa-framework/sofa/pull/351)
- FIX build error with CGAL > 4.9.1 [#515](https://github.com/sofa-framework/sofa/pull/515)
......@@ -463,10 +860,10 @@ ____________________________________________________________
- FIX all scenes failures 17.12 [#565](https://github.com/sofa-framework/sofa/pull/565)
### Cleaning
### Cleanings
**Kernel modules**
- [all]
- [All]
- replace a bunch of std::cerr, std::cout, prinf to use msg_* instead [#339](https://github.com/sofa-framework/sofa/pull/339)
- More std::cout to msg_* cleaning [#370](https://github.com/sofa-framework/sofa/pull/370)
- FIX removed compilation warnings [#386](https://github.com/sofa-framework/sofa/pull/386)
......@@ -495,8 +892,8 @@ ____________________________________________________________
- [SofaValidation]
- move code to set default folder for monitor to init function [#500](https://github.com/sofa-framework/sofa/pull/500)
**Applications**
- [all]
**Plugins / Projects**
- [All]
- FIX: compilation warnings [#361](https://github.com/sofa-framework/sofa/pull/361)
- [CGALPlugin]
- Fix warnings [#361](https://github.com/sofa-framework/sofa/pull/361)
......@@ -547,7 +944,7 @@ ____________________________________________________________
### Improvements
**Modules**
- [all]
- [All]
- update containers to support c++x11 features [#113](https://github.com/sofa-framework/sofa/pull/113)
- speed up spheres rendering + code cleaning [#170](https://github.com/sofa-framework/sofa/pull/170)
- updates externs/gtest to a fresh checkout [#213](https://github.com/sofa-framework/sofa/pull/213)
......@@ -591,7 +988,7 @@ ____________________________________________________________
- [CI]
- improvement of all test scripts
**Applications**
**Plugins / Projects**
- [GUI]
- mouse events are now transmitted to the scene with QtGLViewer [#132](https://github.com/sofa-framework/sofa/pull/132)
- [SceneCreator]
......@@ -616,7 +1013,7 @@ ____________________________________________________________
**Modules**
- Warnings have been fixed [#229](https://github.com/sofa-framework/sofa/pull/229)
- [all]
- [All]
- check that SofaPython is found before lauching the cmake sofa_set_python_directory command [#137](https://github.com/sofa-framework/sofa/pull/137)
- use the cmake install DIRECTORY instead of FILES to preserve the files hierarchy when installing [#138](https://github.com/sofa-framework/sofa/pull/138)
- fixing issue related to parsing attributes with atof/atoi [#161](https://github.com/sofa-framework/sofa/pull/161)
......@@ -647,7 +1044,7 @@ ____________________________________________________________
- [SofaUserInteraction]
- MouseInteractor: FIX the mouse picking on Mechanical Object [#282](https://github.com/sofa-framework/sofa/pull/282)
**Applications**
**Plugins / Projects**
- [image]
- Fixes #135 : Check that SofaPython is found before including python directory [#137](https://github.com/sofa-framework/sofa/pull/137)
- Fixes #136 : Use the cmake install DIRECTORY instead of FILES [#138](https://github.com/sofa-framework/sofa/pull/138)
......@@ -662,10 +1059,10 @@ ____________________________________________________________
- Components/engine/GenerateGrid.scn was fixed [#303](https://github.com/sofa-framework/sofa/pull/303)
### Cleaning
### Cleanings
**Modules**
- [all]
- [All]
- clean the consistency issues related to the readOnly flag [#115](https://github.com/sofa-framework/sofa/pull/115)
- Clean licenses [#139](https://github.com/sofa-framework/sofa/pull/139)
- [SofaKernel]
......@@ -683,7 +1080,7 @@ ____________________________________________________________
- ConstantForceField: clean to follow sofa guideline & fix the "visible dependencies" [#258](https://github.com/sofa-framework/sofa/pull/258)
- ConstantForceField: replace the "points" attribute by "indices" with backward compatibility & deprecation message [#258](https://github.com/sofa-framework/sofa/pull/258)
**Applications**
**Plugins / Projects**
- [SceneCreator]
- clean with cosmetic changes and removed un-needed includes
- [SofaPython]
......@@ -776,7 +1173,7 @@ ____________________________________________________________
- clean python
### Cleaning
### Cleanings
- clean the compilation when SOFA_NO_OPENGL flag is activated
- clean the config.h (SOFAGUI_HAVE_QWT)
......@@ -1146,7 +1543,7 @@ ____________________________________________________________
- fix bug in mhd file loader
- fix rasterization when using vertex colors
### Cleaning
### Cleanings
- warnings were removed
- dead branches were removed
......
cmake_minimum_required(VERSION 3.1)
project(Sofa)
project(Sofa) # Cannot use VERSION with patch like "00"
# Manually define VERSION
set(Sofa_VERSION_MAJOR 19)
set(Sofa_VERSION_MINOR 06)
set(Sofa_VERSION_PATCH 01)
set(Sofa_VERSION ${Sofa_VERSION_MAJOR}.${Sofa_VERSION_MINOR}.${Sofa_VERSION_PATCH})
set(SOFA_KERNEL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/SofaKernel" CACHE STRING "Path to SofaKernel")
......@@ -20,12 +26,29 @@ endif()
# it. (E.g. some versions of Visual Studio have 'solution folders')
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# Option for packaging
option(SOFA_BUILD_RELEASE_PACKAGE "Run package specific configure" OFF)
## Change default install prefix
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "Install path prefix, prepended onto install directories." FORCE)
endif()
if(APPLE AND SOFA_BUILD_APP_BUNDLE)
set(SOFA_BUILD_RELEASE_PACKAGE ON)
set(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/runSofa.app/Contents/MacOS)
message("SOFA_BUILD_APP_BUNDLE = ${SOFA_BUILD_APP_BUNDLE}\n"
" Forcing SOFA_BUILD_RELEASE_PACKAGE = ${SOFA_BUILD_RELEASE_PACKAGE}\n"
" Forcing CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}"
)
endif()
message(STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}")
# Use packaging.cmake configuration (used for Continuous Delivery)
if(SOFA_BUILD_RELEASE_PACKAGE)
message("Using package.cmake")
include("package.cmake")
endif()
# Remove generated CMake files, this prevents CMake from finding packages that
# were disabled (like, unchecked in cmake-gui) after being built once.
file(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/cmake)
......@@ -48,22 +71,13 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${RUNTIME_OUTPUT_DIRECTOR
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${LIBRARY_OUTPUT_DIRECTORY})
## Environment
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules")
list(APPEND CMAKE_MODULE_PATH "${SOFA_KERNEL_SOURCE_DIR}/cmake")
list(APPEND CMAKE_MODULE_PATH "${SOFA_KERNEL_SOURCE_DIR}/cmake/Modules")
list(APPEND CMAKE_MODULE_PATH "${SOFA_KERNEL_SOURCE_DIR}/SofaFramework")
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR})
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/extlibs)
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/applications/plugins)
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/applications/packages)
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/applications/projects)
# Create etc/sofa.ini: it contains the paths to share/ and examples/. In the
# build directory, it points to the source tree,
set(SHARE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/share")
set(EXAMPLES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/examples")
configure_file(${SOFA_KERNEL_SOURCE_DIR}/etc/sofa.ini.in "${CMAKE_BINARY_DIR}/etc/sofa.ini")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules")
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_BINARY_DIR}/cmake")
list(APPEND CMAKE_IGNORE_PATH "${CMAKE_INSTALL_PREFIX}") # ignore install directory for findXXX commands
## RPATH
if(UNIX)
......@@ -76,46 +90,58 @@ if(UNIX)
# the need to play with LD_LIBRARY_PATH to get applications to run.
# see https://cmake.org/Wiki/CMake_RPATH_handling for $ORIGIN doc
set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib:$$ORIGIN/../lib")
set(CMAKE_INSTALL_RPATH
"../lib"
"$ORIGIN/../lib"
"$$ORIGIN/../lib"
)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(APPLE)
set(CMAKE_MACOSX_RPATH ON)
list(APPEND CMAKE_INSTALL_RPATH
"@loader_path/../lib"
"@executable_path/../lib"
)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
endif()
endif(UNIX)
include(CompilerOptions)
## Boost (1.54.0 or higher) is now mandatory.
set(BOOST_MIN_VERSION "1.54.0")
find_package(Boost ${BOOST_MIN_VERSION} QUIET)
if(NOT Boost_FOUND)
if(WIN32)
message("Boost autodetection on Windows was removed.\n"
message(FATAL_ERROR "Boost (${BOOST_MIN_VERSION} or higher) is mandatory.\n"
"Note that Boost autodetection on Windows was removed.\n"
"Please follow CMake documentation to find Boost on your system.\n"
"Hint: set BOOST_ROOT to your Boost location.")
"Hint: set BOOST_ROOT to your Boost location."
)
else()
message(FATAL_ERROR "Boost (${BOOST_MIN_VERSION} or higher) is mandatory.")
endif()
endif()
set(BOOST_MIN_VERSION "1.54.0")
find_package(Boost ${BOOST_MIN_VERSION} REQUIRED)
### Dependency pack for Windows
### Windows config
if(MSVC)
#define BOOST_ALL_DYN_LINK needed for dynamic linking with boost libraries
add_definitions(-DBOOST_ALL_DYN_LINK)
set(SOFA_DEPENDENCY_PACK_DIR "" CACHE PATH "sofa windows dependency pack path")
if(SOFA_DEPENDENCY_PACK_DIR)
set(DEPENDENCY_PACK_DIR "${SOFA_DEPENDENCY_PACK_DIR}")
else()
# Default
set(DEPENDENCY_PACK_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
# WinDepPack
set(SOFA_DEPENDENCY_PACK_DIR "${CMAKE_SOURCE_DIR}" CACHE PATH "Directory containing Windows Dependency Pack")
if(NOT EXISTS ${SOFA_DEPENDENCY_PACK_DIR})
# force back to default value
set(SOFA_DEPENDENCY_PACK_DIR "${CMAKE_SOURCE_DIR}" CACHE PATH "Directory containing Windows Dependency Pack" FORCE)
endif()
list(APPEND CMAKE_INCLUDE_PATH ${DEPENDENCY_PACK_DIR}/include)
list(APPEND CMAKE_INCLUDE_PATH ${SOFA_DEPENDENCY_PACK_DIR}/include)
if(CMAKE_CL_64)
list(APPEND CMAKE_LIBRARY_PATH ${DEPENDENCY_PACK_DIR}/lib/win64)
list(APPEND CMAKE_LIBRARY_PATH ${SOFA_DEPENDENCY_PACK_DIR}/lib/win64)
else()
list(APPEND CMAKE_LIBRARY_PATH ${DEPENDENCY_PACK_DIR}/lib/win32)
list(APPEND CMAKE_LIBRARY_PATH ${SOFA_DEPENDENCY_PACK_DIR}/lib/win32)
endif()
install(DIRECTORY ${DEPENDENCY_PACK_DIR}/include/ DESTINATION include COMPONENT headers)
install(DIRECTORY ${DEPENDENCY_PACK_DIR}/licenses/ DESTINATION licenses COMPONENT applications)
install(DIRECTORY ${SOFA_DEPENDENCY_PACK_DIR}/include/ DESTINATION include/extlibs/WinDepPack COMPONENT headers)
install(DIRECTORY ${SOFA_DEPENDENCY_PACK_DIR}/licenses/ DESTINATION licenses COMPONENT applications)
endif()
### Mask
......@@ -127,9 +153,6 @@ option(SOFA_WITH_DEVTOOLS "Compile with developement extra features." ON)
### Threading
option(SOFA_WITH_THREADING "Compile sofa with thread-safetiness support (PARTIAL/EXPERIMENTAL)" ON)
### Experimental
option(SOFA_WITH_EXPERIMENTAL_FEATURES "Compile sofa with exprimental features regarding sparse matrices treatments under mappings" OFF)
### Testing
option(SOFA_BUILD_TESTS "Compile the automatic tests for Sofa, along with the gtest library." ON)
if(SOFA_BUILD_TESTS)
......@@ -138,6 +161,21 @@ if(SOFA_BUILD_TESTS)
add_subdirectory(extlibs/gtest)
endif()
## Active or not the use of ccache
option(SOFA_USE_CCACHE "Compile using ccache optimization" OFF)
if(SOFA_USE_CCACHE)
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
# Support Unix Makefiles and Ninja
#TODO replace by <LANG>_COMPILER_LAUNCHER when min cmake version > 3.4
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCACHE_PROGRAM}")
else()
message(WARNING "ccache not found, disabling option")
set(SOFA_USE_CCACHE OFF CACHE bool "Compile using ccache optimization" FORCE)
endif()
endif()
### Ninja build pools
option(SOFA_NINJA_BUILD_POOLS "Activate the Ninja build pools feature, to limit the cores used by specific targets" OFF)
......@@ -188,6 +226,14 @@ add_subdirectory(${SOFA_KERNEL_SOURCE_DIR}/SofaCommon)
add_subdirectory(SofaGeneral)
add_subdirectory(SofaAdvanced)
add_subdirectory(SofaMisc)
## Modules
## in the consortium convention a module is a similar to a plugin the difference is that
## a module is hosted and managed by the consortium while plugins are hosted and managed by third parties.
add_subdirectory(modules)
# This is all the applications GUI stuff. As there is a dependency to this one
# In scene creator and SofaPython...it is located here.
add_subdirectory(SofaGui)
# SofaTest depends on SofaPython, so we add SofaPython before SofaTest.
......@@ -204,6 +250,7 @@ if(SOFA_BUILD_TESTS OR SOFA_BUILD_TUTORIALS)
set(SOFA_BUILD_SCENECREATOR ON CACHE BOOL "" FORCE)
endif()
# Library used by SOFA_BUILD_TESTS and SOFA_BUILD_TUTORIALS
if(SOFA_BUILD_SCENECREATOR)
add_subdirectory(applications/plugins/SceneCreator SceneCreator)
......@@ -222,7 +269,7 @@ if(SOFA_BUILD_TESTS)
endif()
# Not sure what is it
add_subdirectory(applications/plugins/SofaTest/SofaTest_test SofaTest/SofaTest_test)
add_subdirectory(applications/plugins/SofaTest/SofaTest_test)
endif()
## Plugins
......@@ -234,6 +281,7 @@ add_subdirectory(applications/packages)
## Applications
add_subdirectory(applications/projects)
# Tutorial add subdirectory
if(SOFA_BUILD_TUTORIALS)
add_subdirectory(applications/tutorials)
......@@ -269,11 +317,15 @@ install(FILES "${CMAKE_SOURCE_DIR}/CHANGELOG.md" DESTINATION . COMPONENT applica
install(FILES "${CMAKE_SOURCE_DIR}/LICENSE.LGPL.txt" DESTINATION . COMPONENT applications)
install(FILES "${CMAKE_SOURCE_DIR}/Authors.txt" DESTINATION . COMPONENT applications)
## Create etc/installedSofa.ini: it contains the paths to share/ and examples/. Compare to the Sofa.ini in the
## build directory, this one contains relative paths to the installed resource directory.
# Create build and install versions of etc/sofa.ini:
# - In build dir, sofa.ini contains absolute paths to distant (in source) share/ and examples/ dirs
# - In install dir, sofa.ini (generated later via installedSofa.ini) contains relative paths to local share/ and examples/ dirs
set(SHARE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/share")
set(EXAMPLES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/examples")
configure_file("${SOFA_KERNEL_SOURCE_DIR}/etc/sofa.ini.in" "${CMAKE_BINARY_DIR}/etc/sofa.ini")
set(SHARE_DIR "../share/sofa")
set(EXAMPLES_DIR "../share/sofa/examples")
configure_file(${SOFA_KERNEL_SOURCE_DIR}/etc/sofa.ini.in "${CMAKE_BINARY_DIR}/etc/installedSofa.ini")
configure_file("${SOFA_KERNEL_SOURCE_DIR}/etc/sofa.ini.in" "${CMAKE_BINARY_DIR}/etc/installedSofa.ini")
install(FILES "${CMAKE_BINARY_DIR}/etc/installedSofa.ini" DESTINATION etc RENAME sofa.ini COMPONENT applications)
option(SOFA_INSTALL_RESOURCES_FILES "Copy resources files (etc/, share/, examples/) when installing" ON)
......@@ -283,18 +335,86 @@ if(SOFA_INSTALL_RESOURCES_FILES)
install(DIRECTORY examples/ DESTINATION share/sofa/examples COMPONENT resources)
endif()
#CPack install
SET(CPACK_PACKAGE_VERSION_MAJOR "18")
SET(CPACK_PACKAGE_VERSION_MINOR "06")
SET(CPACK_PACKAGE_VERSION_PATCH "00")
SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
file(WRITE "${CMAKE_BINARY_DIR}/plugins/README.txt" "This folder will be automatically scanned by the Plugin Manager.")
install(DIRECTORY ${CMAKE_BINARY_DIR}/plugins/ DESTINATION plugins COMPONENT resources)
#######################
# CPack configuration #
#######################
################
# Package config
include(CPackComponent)
if(WIN32 AND ${CMAKE_VERSION} VERSION_LESS "3.13.0")
include(CPackNSIS)
endif()
include(CPackIFW)
set(CPACK_PACKAGE_VERSION "${Sofa_VERSION}")
set(CPACK_PACKAGE_NAME "SOFA v${CPACK_PACKAGE_VERSION}")
set(CPACK_PACKAGE_FILE_NAME "SOFA_v${CPACK_PACKAGE_VERSION}")
set(CPACK_PACKAGE_VENDOR "The SOFA Team")
#set(CPACK_PACKAGE_CONTACT "contact@sofa-framework.org")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md")
set(CPACK_PACKAGE_CONTACT "contact@sofa-framework.org")
set(CPACK_PACKAGE_DESCRIPTION "Real-time multi-physics simulation with an emphasis on medical simulation.")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Real-time multi-physics simulation with an emphasis on medical simulation.")
set(CPACK_PACKAGE_EXECUTABLES "runSofa" "runSofa")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md")
set(CPACK_PACKAGE_HOMEPAGE_URL "https://www.sofa-framework.org")
set(CPACK_PACKAGE_FILE_NAME "SOFA_v${CPACK_PACKAGE_VERSION}")
if(WIN32)
set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/share/icons\\\\SOFA.png")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "SOFA\\\\v${CPACK_PACKAGE_VERSION}")
if(CMAKE_EXE_LINKER_FLAGS MATCHES ".*machine:x64")
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}_Win64")
else() # x86
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}_Win32")
endif()
elseif(UNIX)
set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/share/icons/SOFA.png")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "SOFA/v${CPACK_PACKAGE_VERSION}")
if(APPLE)
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}_MacOS")
else()
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}_Linux")
endif()
endif()
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.LGPL.txt")
set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md")
set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_SOURCE_DIR}/README.md")
################
##################
# CPack components
cpack_add_component_group(runtime
DISPLAY_NAME "Runtime"
DESCRIPTION "Components needed to run a simulation with ${CPACK_PACKAGE_NAME}"
EXPANDED
)
cpack_add_component_group(development
DISPLAY_NAME "Development"
DESCRIPTION "Components needed to write code based on ${CPACK_PACKAGE_NAME}"
EXPANDED
)
cpack_add_component(applications
DISPLAY_NAME "runSofa Application"
GROUP runtime
)
cpack_add_component(headers
DISPLAY_NAME "C++ Headers"
GROUP development
)
cpack_add_component(GTest_headers
DISPLAY_NAME "GTest Headers"
GROUP development
)
cpack_add_component(libraries
DISPLAY_NAME "Libraries"
GROUP development
)
cpack_add_component(resources
DISPLAY_NAME "Resources"
GROUP runtime
)
set(CPACK_COMPONENTS_ALL applications headers Eigen_headers GTest_headers libraries resources)
......@@ -311,47 +431,96 @@ set(CPACK_COMPONENT_EIGEN_HEADERS_GROUP "Development")
set(CPACK_COMPONENT_GTEST_HEADERS_GROUP "Development")
set(CPACK_COMPONENT_LIBRARIES_GROUP "Development")
set(CPACK_COMPONENT_RESOURCES_GROUP "Runtime")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.LGPL.txt")
set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md")
set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_SOURCE_DIR}/README.md")
##################
######################
# IFW Generator config
if(CPACK_BINARY_IFW)
set(CPACK_IFW_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")
set(CPACK_IFW_PACKAGE_TITLE "${CPACK_PACKAGE_NAME}")
set(CPACK_IFW_PRODUCT_URL "${CPACK_PACKAGE_HOMEPAGE_URL}")
set(CPACK_IFW_PACKAGE_LOGO "${CPACK_PACKAGE_ICON}")
set(CPACK_IFW_TARGET_DIRECTORY "@HomeDir@/${CPACK_PACKAGE_INSTALL_DIRECTORY}")
if(WIN32)
# There is a bug in NSI that does not handle full unix paths properly. Make
# sure there is at least one set of four (4) backlasshes.
set(CPACK_PACKAGE_INSTALL_DIRECTORY "SOFA_v${CPACK_PACKAGE_VERSION}")
set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/share/icons\\\\SOFA.png")
set(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\runSofa.exe")
set(CPACK_NSIS_DISPLAY_NAME "SOFA v${CPACK_PACKAGE_VERSION}")
set(CPACK_NSIS_HELP_LINK "https:\\\\\\\\www.sofa-framework.org")
set(CPACK_NSIS_URL_INFO_ABOUT "https:\\\\\\\\www.sofa-framework.org")
set(CPACK_NSIS_CONTACT "contact@sofa-framework.org")
set(CPACK_NSIS_INSTALL_ROOT "$PROFILE")
set(CPACK_IFW_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/applications/projects/runSofa/runSofa.ico")
elseif(APPLE)
#set(CPACK_PACKAGE_INSTALL_DIRECTORY "SOFA/v${CPACK_PACKAGE_VERSION}")
#set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_SOURCE_DIR}/back.png")
else()
set(CPACK_PACKAGE_INSTALL_DIRECTORY "SOFA/v${CPACK_PACKAGE_VERSION}")
set(CPACK_IFW_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/applications/projects/runSofa/runSofa.icns")
endif()
find_package(ICU COMPONENTS data i18n uc)
if(ICU_FOUND)
sofa_install_libraries(${ICU_LIBRARIES})
cpack_ifw_configure_component_group(runtime
SORTING_PRIORITY 50
DEFAULT TRUE
EXPANDED
SCRIPT "${CMAKE_SOURCE_DIR}/scripts/qtifw/install.qs"
)
cpack_ifw_configure_component_group(development
SORTING_PRIORITY 10
DEFAULT TRUE
EXPANDED
)
cpack_ifw_configure_component(applications
DISPLAY_NAME "runSofa Application"
DEPENDS runtime
)
cpack_ifw_configure_component(headers
DISPLAY_NAME "C++ Headers"
DEPENDS development
)
cpack_ifw_configure_component(Eigen_headers
DISPLAY_NAME "Eigen Headers"
DEPENDS development
)
cpack_ifw_configure_component(GTest_headers
DISPLAY_NAME "GTest Headers"
DEPENDS development
)
cpack_ifw_configure_component(libraries
DISPLAY_NAME "Libraries"
DEPENDS development
)
cpack_ifw_configure_component(resources
DISPLAY_NAME "Resources"
DEPENDS runtime
)
endif()
######################
#######################
# NSIS Generator config
if(CPACK_BINARY_NSIS)
# There is a bug in NSIS that does not handle full unix paths properly. Make
# sure there is at least one set of four (4) backslashes.
set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/applications/projects/runSofa/runSofa.ico")
set(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\runSofa.exe")
set(CPACK_NSIS_DISPLAY_NAME ${CPACK_PACKAGE_NAME})
set(CPACK_NSIS_PACKAGE_NAME ${CPACK_PACKAGE_NAME})
set(CPACK_NSIS_HELP_LINK ${CPACK_PACKAGE_HOMEPAGE_URL})
set(CPACK_NSIS_URL_INFO_ABOUT ${CPACK_PACKAGE_HOMEPAGE_URL})
set(CPACK_NSIS_MODIFY_PATH ON)
set(CPACK_NSIS_CONTACT "contact@sofa-framework.org")
set(CPACK_NSIS_INSTALL_ROOT "$PROFILE")
string(CONCAT EXTRA_INSTALL_COMMAND "ExecShell \\\"open\\\" \\\"https://www.sofa-framework.org/thank-you?sofa=" ${CPACK_PACKAGE_VERSION} "&os=windows\\\"")
set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${EXTRA_INSTALL_COMMAND}")
set(CPACK_NSIS_MENU_LINKS
"https://www.sofa-framework.org/documentation/" "SOFA User Documentation"
"https://www.sofa-framework.org/api/" "SOFA Developper API"
"https://www.sofa-framework.org/community/forum/" "SOFA Forum")
endif()
#######################
#dirty hack to pack component we want (named BundlePack from runSofa for example, and that will install .app + share)
#if not set, it will install everything as usual
#TODO: Redesign of a better architecture about bundling (runSofa ? libraries ? modeler ? other application ?)
get_property(TEMP_CPACK_COMPONENTS_ALL GLOBAL PROPERTY RUNSOFA_CPACK_COMPONENTS_ALL )
if(TEMP_CPACK_COMPONENTS_ALL)
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
set(CPACK_COMPONENTS_ALL ${TEMP_CPACK_COMPONENTS_ALL})
endif()
if(APPLE AND SOFA_BUILD_APP_BUNDLE)
set(CPACK_BINARY_DRAGNDROP ON)
set(CPACK_GENERATOR DragNDrop)
if(NOT ${CPACK_PACKAGE_VERSION_PATCH} STREQUAL "dev" AND EXISTS "${CMAKE_CURRENT_LIST_DIR}/package.cmake")
message("Using package.cmake")
include( "package.cmake" )
# Monolithic install containing everything
unset(CPACK_COMPONENTS_ALL)
set(CPACK_MONOLITHIC_INSTALL ON)
# Force CPack install dir to $ENV{DESTDIR}/runSofa.app/Contents/MacOS
# CPack always adds "$ENV{DESTDIR}" before CPACK_INSTALL_PREFIX
set(CPACK_SET_DESTDIR TRUE)
set(CPACK_INSTALL_PREFIX "/runSofa.app/Contents/MacOS")
endif()
INCLUDE(CPack)
include(CPack)
[![SOFA, Simulation Open-Framework Architecture](https://www.sofa-framework.org/wp-content/uploads/2013/01/SOFA_LOGO_ORANGE_2-normal.png)](https://www.sofa-framework.org/)
<br/>
[![Documentation](https://img.shields.io/badge/doc-on_website-green.svg)](https://www.sofa-framework.org/community/doc/)
[![Forum](https://img.shields.io/badge/support-on_forum-blue.svg)](https://www.sofa-framework.org/community/forum/)
[![Gitter](https://badges.gitter.im/sofa-framework/sofa.svg)](https://gitter.im/sofa-framework/sofa)
[![Contact](https://img.shields.io/badge/contact-on_website-orange.svg)](https://www.sofa-framework.org/consortium/contact/)
## Introduction
SOFA is an open source framework primarily targeted at real-time simulation,
......
......@@ -11,8 +11,8 @@ set(SOFA_HAVE_FLOWVR ${MiniFlowVR_FOUND}) # cmakedefine
set(SOFAADVANCED_VERSION ${SofaFramework_VERSION})
## SofaAdvanced/config.h
configure_file(config.h.in "${CMAKE_BINARY_DIR}/include/SofaAdvanced/config.h")
install(FILES "${CMAKE_BINARY_DIR}/include/SofaAdvanced/config.h" DESTINATION "include/SofaAdvanced" COMPONENT headers)
configure_file(config.h.in "${CMAKE_BINARY_DIR}/include/${PROJECT_NAME}/config.h")
install(FILES "${CMAKE_BINARY_DIR}/include/${PROJECT_NAME}/config.h" DESTINATION "include/${PROJECT_NAME}/${PROJECT_NAME}" COMPONENT headers)
### Subdirectories
......@@ -26,6 +26,7 @@ foreach(TARGET ${SOFAADVANCED_TARGETS})
add_subdirectory(../modules/${TARGET} ${CMAKE_CURRENT_BINARY_DIR}/${TARGET})
target_include_directories(${TARGET} PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../modules>")
target_include_directories(${TARGET} PUBLIC "$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>")
target_include_directories(${TARGET} PUBLIC "$<INSTALL_INTERFACE:include/${PROJECT_NAME}>")
set_target_properties(${TARGET} PROPERTIES DEBUG_POSTFIX _d)
set_target_properties(${TARGET} PROPERTIES FOLDER SofaAdvanced) # IDE folder
set_target_properties(${TARGET} PROPERTIES VERSION ${SOFAADVANCED_VERSION})
......
......@@ -8,17 +8,13 @@ option(CMAKE_WARN_DEPRECATED "Send warning when deprecated projects are found" O
find_package(SofaCommon REQUIRED)
find_package(Newmat)
set(SOFA_HAVE_NEWMAT ${Newmat_FOUND})
find_package(CSparse)
set(SOFA_HAVE_CSPARSE ${CSparse_FOUND})
find_package(Metis QUIET)
set(SOFA_HAVE_METIS ${Metis_FOUND})
## Version
set(SOFAGENERAL_VERSION ${SofaFramework_VERSION})
## SofaGeneral/config.h
configure_file(config.h.in "${CMAKE_BINARY_DIR}/include/SofaGeneral/config.h")
install(FILES "${CMAKE_BINARY_DIR}/include/SofaGeneral/config.h" DESTINATION "include/SofaGeneral" COMPONENT headers)
configure_file(config.h.in "${CMAKE_BINARY_DIR}/include/${PROJECT_NAME}/config.h")
install(FILES "${CMAKE_BINARY_DIR}/include/${PROJECT_NAME}/config.h" DESTINATION "include/${PROJECT_NAME}/${PROJECT_NAME}" COMPONENT headers)
### Subdirectories
......@@ -39,11 +35,7 @@ set(SOFAGENERAL_TARGETS
SofaComponentGeneral
SofaConstraint
SofaGeneralEngine
SofaExporter
SofaGraphComponent
SofaHaptics
SofaPreconditioner
SofaSparseSolver
SofaTopologyMapping
SofaUserInteraction
SofaValidation
......@@ -53,14 +45,11 @@ if(SOFA_HAVE_NEWMAT)
list(APPEND SOFAGENERAL_TARGETS SofaDenseSolver)
endif()
if(NOT SOFA_NO_OPENGL)
list(APPEND SOFAGENERAL_TARGETS SofaOpenglVisual)
endif()
foreach(TARGET ${SOFAGENERAL_TARGETS})
add_subdirectory(../modules/${TARGET} ${CMAKE_CURRENT_BINARY_DIR}/${TARGET})
target_include_directories(${TARGET} PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../modules>")
target_include_directories(${TARGET} PUBLIC "$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>")
target_include_directories(${TARGET} PUBLIC "$<INSTALL_INTERFACE:include/${PROJECT_NAME}>")
set_target_properties(${TARGET} PROPERTIES DEBUG_POSTFIX _d)
set_target_properties(${TARGET} PROPERTIES FOLDER SofaGeneral) # IDE folder
set_target_properties(${TARGET} PROPERTIES VERSION ${SOFAGENERAL_VERSION})
......
......@@ -5,22 +5,12 @@
find_package(SofaCommon REQUIRED)
set(SOFA_HAVE_NEWMAT @SOFA_HAVE_NEWMAT@)
set(SOFA_HAVE_CSPARSE @SOFA_HAVE_CSPARSE@)
set(SOFA_HAVE_PARDISO @SOFA_HAVE_PARDISO@)
set(SOFA_HAVE_METIS @SOFA_HAVE_METIS@)
if(SOFA_HAVE_NEWMAT)
find_package(Newmat REQUIRED)
endif()
if(SOFA_HAVE_CSPARSE)
find_package(CSparse REQUIRED)
endif()
if(SOFA_HAVE_METIS)
find_package(Metis REQUIRED)
endif()
if(NOT TARGET SofaComponentGeneral)
include("${CMAKE_CURRENT_LIST_DIR}/SofaGeneralTargets.cmake")
endif()
......
......@@ -25,9 +25,7 @@
#include <SofaCommon/config.h>
#cmakedefine SOFA_HAVE_NEWMAT
#cmakedefine SOFA_HAVE_CSPARSE
#cmakedefine SOFA_HAVE_PARDISO
#cmakedefine SOFA_HAVE_METIS
#ifdef SOFA_BUILD_GENERAL_DEFORMABLE
# define SOFA_TARGET SofaGeneralDeformable
......@@ -94,9 +92,9 @@
#ifdef SOFA_BUILD_EXPORTER
# define SOFA_TARGET SofaExporter
# define SOFA_EXPORTER_API SOFA_EXPORT_DYNAMIC_LIBRARY
# define SOFA_SOFAEXPORTER_API SOFA_EXPORT_DYNAMIC_LIBRARY
#else
# define SOFA_EXPORTER_API SOFA_IMPORT_DYNAMIC_LIBRARY
# define SOFA_SOFAEXPORTER_API SOFA_IMPORT_DYNAMIC_LIBRARY
#endif
#ifdef SOFA_BUILD_GRAPH_COMPONENT
......@@ -176,20 +174,6 @@
# define SOFA_CONSTRAINT_API SOFA_IMPORT_DYNAMIC_LIBRARY
#endif
#ifdef SOFA_BUILD_HAPTICS
# define SOFA_TARGET SofaHaptics
# define SOFA_HAPTICS_API SOFA_EXPORT_DYNAMIC_LIBRARY
#else
# define SOFA_HAPTICS_API SOFA_IMPORT_DYNAMIC_LIBRARY
#endif
#ifdef SOFA_BUILD_PRECONDITIONER
# define SOFA_TARGET SofaPreconditioner
# define SOFA_PRECONDITIONER_API SOFA_EXPORT_DYNAMIC_LIBRARY
#else
# define SOFA_PRECONDITIONER_API SOFA_IMPORT_DYNAMIC_LIBRARY
#endif
#ifdef SOFA_HAVE_NEWMAT
# ifdef SOFA_BUILD_DENSE_SOLVER
# define SOFA_TARGET SofaDenseSolver
......@@ -199,22 +183,6 @@
# endif
#endif
//#ifndef SOFA-MISC_NO_OPENGL
# ifdef SOFA_BUILD_OPENGL_VISUAL
# define SOFA_TARGET SofaOpenglVisual
# define SOFA_OPENGL_VISUAL_API SOFA_EXPORT_DYNAMIC_LIBRARY
# else
# define SOFA_OPENGL_VISUAL_API SOFA_IMPORT_DYNAMIC_LIBRARY
# endif
//#endif
#ifdef SOFA_BUILD_SPARSE_SOLVER
# define SOFA_TARGET SofaSparseSolver
# define SOFA_SPARSE_SOLVER_API SOFA_EXPORT_DYNAMIC_LIBRARY
#else
# define SOFA_SPARSE_SOLVER_API SOFA_IMPORT_DYNAMIC_LIBRARY
#endif
#ifdef SOFA_HAVE_PARDISO
#ifdef SOFA_BUILD_PARDISO_SOLVER
# define SOFA_PARDISO_SOLVER_API SOFA_EXPORT_DYNAMIC_LIBRARY
......
......@@ -77,8 +77,19 @@ if(NOT SOFA_NO_OPENGL)
option(SOFAGUI_QGLVIEWER "Compile the QGLViewer for the Qt GUI" ON)
if(SOFAGUI_QGLVIEWER)
set(SOFA_GUI_QGLVIEWER 1) # cmakedefine
find_package(QGLViewer QUIET)
if(NOT QGLViewer_FOUND)
add_subdirectory(${CMAKE_SOURCE_DIR}/extlibs/libQGLViewer-2.7.1/QGLViewer ${CMAKE_BINARY_DIR}/extlibs/QGLViewer)
endif()
endif()
## VSync
option(SOFAGUI_ENABLE_VSYNC "Enable vertical refresh sync" OFF)
if(SOFAGUI_ENABLE_VSYNC)
set(SOFA_GUI_VSYNC_ 1) # config.h.in
else()
set(SOFA_GUI_VSYNC_ 0) # config.h.in
endif()
## QWT
option(SOFAGUI_ENABLE_QWT "Enable QWT for Qt GUIs")
......@@ -115,14 +126,15 @@ foreach(TARGET ${SOFAGUI_TARGETS})
set_target_properties(${TARGET} PROPERTIES FOLDER "SofaGui")
target_include_directories(${TARGET} PUBLIC "$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>")
target_include_directories(${TARGET} PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../applications>")
target_include_directories(${TARGET} PUBLIC "$<INSTALL_INTERFACE:include/${PROJECT_NAME}>")
# target_include_directories(${TARGET} PUBLIC "$<BUILD_INTERFACE:${QT_INCLUDES}>")
set_target_properties(${TARGET} PROPERTIES DEBUG_POSTFIX "_d")
set_target_properties(${TARGET} PROPERTIES VERSION ${SOFAGUI_VERSION})
endforeach()
## SofaGuiConfig/config.h
configure_file(config.h.in "${CMAKE_BINARY_DIR}/include/SofaGui/config.h")
install(FILES "${CMAKE_BINARY_DIR}/include/SofaGui/config.h" DESTINATION "include/SofaGui" COMPONENT headers)
## SofaGui/config.h
configure_file(config.h.in "${CMAKE_BINARY_DIR}/include/${PROJECT_NAME}/config.h")
install(FILES "${CMAKE_BINARY_DIR}/include/${PROJECT_NAME}/config.h" DESTINATION "include/${PROJECT_NAME}/${PROJECT_NAME}" COMPONENT headers)
## CMake package configurations files
sofa_write_package_config_files(SofaGui ${SOFAGUI_VERSION})
......@@ -32,4 +32,6 @@
#cmakedefine SOFA_GUI_NATIVE_MENU
#cmakedefine SOFA_HAVE_QWT
#define SOFA_GUI_VSYNC ${SOFA_GUI_VSYNC_}
#endif
......@@ -103,47 +103,6 @@ endif(NOT WIN32)
set(BOOST_MIN_VERSION "1.54.0")
find_package(Boost ${BOOST_MIN_VERSION} REQUIRED)
### Dependency pack for Windows
if(MSVC)
#define BOOST_ALL_DYN_LINK needed for dynamic linking with boost libraries
add_definitions(-DBOOST_ALL_DYN_LINK)
if(SOFA_DEPENDENCY_PACK_DIR)
set(DEPENDENCY_PACK_DIR "${SOFA_DEPENDENCY_PACK_DIR}")
else()
# Default
set(DEPENDENCY_PACK_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
endif()
list(APPEND CMAKE_INCLUDE_PATH ${DEPENDENCY_PACK_DIR}/include)
if(CMAKE_CL_64)
list(APPEND CMAKE_LIBRARY_PATH ${DEPENDENCY_PACK_DIR}/lib/win64)
else()
list(APPEND CMAKE_LIBRARY_PATH ${DEPENDENCY_PACK_DIR}/lib/win32)
endif()
if(CMAKE_CL_64)
file(GLOB DLLS "${DEPENDENCY_PACK_DIR}/lib/win64/*.dll")
file(GLOB LIBS "${DEPENDENCY_PACK_DIR}/lib/win64/*.lib")
else()
file(GLOB DLLS "${DEPENDENCY_PACK_DIR}/lib/win32/*.dll")
file(GLOB LIBS "${DEPENDENCY_PACK_DIR}/lib/win32/*.lib")
endif()
## Copy DLLs to the build tree
if(CMAKE_CONFIGURATION_TYPES) # Multi-config generator (MSVC)
foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES})
file(COPY ${DLLS} DESTINATION "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CONFIG}")
endforeach()
else() # Single-config generator (nmake)
file(COPY ${DLLS} DESTINATION "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
endif()
## Install DLLs
install(FILES ${DLLS} DESTINATION bin)
install(FILES ${LIBS} DESTINATION lib)
install(DIRECTORY ${DEPENDENCY_PACK_DIR}/include/ DESTINATION include)
endif()
# Create etc/sofa.ini: it contains the paths to share/ and examples/. In the
# build directory, it points to the source tree, whereas in the install
......
......@@ -8,8 +8,8 @@ find_package(SofaSimulation REQUIRED)
set(SOFABASE_VERSION ${SofaFramework_VERSION})
## SofaBase/config.h
configure_file(config.h.in "${CMAKE_BINARY_DIR}/include/SofaBase/config.h")
install(FILES "${CMAKE_BINARY_DIR}/include/SofaBase/config.h" DESTINATION "include/SofaBase" COMPONENT headers)
configure_file(config.h.in "${CMAKE_BINARY_DIR}/include/${PROJECT_NAME}/config.h")
install(FILES "${CMAKE_BINARY_DIR}/include/${PROJECT_NAME}/config.h" DESTINATION "include/${PROJECT_NAME}/${PROJECT_NAME}" COMPONENT headers)
### Subdirectories
......@@ -26,6 +26,7 @@ foreach(TARGET ${SOFABASE_TARGETS})
add_subdirectory(../modules/${TARGET} ${CMAKE_CURRENT_BINARY_DIR}/${TARGET})
target_include_directories(${TARGET} PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../modules>")
target_include_directories(${TARGET} PUBLIC "$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>")
target_include_directories(${TARGET} PUBLIC "$<INSTALL_INTERFACE:include/${PROJECT_NAME}>")
set_target_properties(${TARGET} PROPERTIES DEBUG_POSTFIX _d)
set_target_properties(${TARGET} PROPERTIES FOLDER SofaBase) # IDE folder
set_target_properties(${TARGET} PROPERTIES VERSION ${SOFABASE_VERSION})
......
/******************************************************************************
* SOFA, Simulation Open-Framework Architecture, development version *
* (c) 2006-2018 INRIA, USTL, UJF, CNRS, MGH *
* (c) 2006-2019 INRIA, USTL, UJF, CNRS, MGH *
* *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as published by *
......
......@@ -8,8 +8,8 @@ find_package(SofaBase REQUIRED)
set(SOFACOMMON_VERSION ${SofaFramework_VERSION})
## SofaCommon/config.h
configure_file(config.h.in "${CMAKE_BINARY_DIR}/include/SofaCommon/config.h")
install(FILES "${CMAKE_BINARY_DIR}/include/SofaCommon/config.h" DESTINATION "include/SofaCommon" COMPONENT headers)
configure_file(config.h.in "${CMAKE_BINARY_DIR}/include/${PROJECT_NAME}/config.h")
install(FILES "${CMAKE_BINARY_DIR}/include/${PROJECT_NAME}/config.h" DESTINATION "include/${PROJECT_NAME}/${PROJECT_NAME}" COMPONENT headers)
### Subdirectories
......@@ -32,6 +32,7 @@ foreach(TARGET ${SOFACOMMON_TARGETS})
add_subdirectory(../modules/${TARGET} ${CMAKE_CURRENT_BINARY_DIR}/${TARGET})
target_include_directories(${TARGET} PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../modules>")
target_include_directories(${TARGET} PUBLIC "$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>")
target_include_directories(${TARGET} PUBLIC "$<INSTALL_INTERFACE:include/${PROJECT_NAME}>")
set_target_properties(${TARGET} PROPERTIES DEBUG_POSTFIX _d)
set_target_properties(${TARGET} PROPERTIES FOLDER SofaCommon) # IDE folder
set_target_properties(${TARGET} PROPERTIES VERSION ${SOFACOMMON_VERSION})
......
/******************************************************************************
* SOFA, Simulation Open-Framework Architecture, development version *
* (c) 2006-2018 INRIA, USTL, UJF, CNRS, MGH *
* (c) 2006-2019 INRIA, USTL, UJF, CNRS, MGH *
* *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as published by *
......
......@@ -14,18 +14,10 @@ option(SOFA_DETECTIONOUTPUT_FREEMOTION
"Compile Sofa with the DETECTIONOUTPUT_FREEMOTION macro defined." OFF)
set(DETECTIONOUTPUT_FREEMOTION ${SOFA_DETECTIONOUTPUT_FREEMOTION}) # Used in sofa/config.h.in
option(SOFA_DETECTIONOUTPUT_BARYCENTRICINFO
"Compile Sofa with the DETECTIONOUTPUT_BARYCENTRICINFO macro defined." OFF)
set(DETECTIONOUTPUT_BARYCENTRICINFO ${SOFA_DETECTIONOUTPUT_BARYCENTRICINFO}) # Used in sofa/config.h.in
option(SOFA_NO_OPENGL
"Compile Sofa with no OpenGL support. (This will define the SOFA_NO_OPENGL
macro.)" OFF)
option(SOFA_NO_EXTERN_TEMPLATE
"Compile Sofa without using the extern templates mechanism. (This will prevent
the SOFA_EXTERN_TEMPLATE macro from being defined.)" OFF)
option(SOFA_NO_UPDATE_BBOX
"Compile Sofa with the SOFA_NO_UPDATE_BBOX macro defined." OFF)
......@@ -42,29 +34,27 @@ else()
set(SOFA_WITH_THREADING_ "0")
endif()
if(SOFA_WITH_EXPERIMENTAL_FEATURES)
set(SOFA_WITH_EXPERIMENTAL_FEATURES_ "1")
else()
set(SOFA_WITH_EXPERIMENTAL_FEATURES_ "0")
endif()
if(SOFA_WITH_DEPRECATED_COMPONENTS)
set(SOFA_WITH_DEPRECATED_COMPONENTS_ "1")
else()
set(SOFA_WITH_DEPRECATED_COMPONENTS_ "0")
endif()
### Dependencies
if(SOFA_NO_UPDATE_BBOX)
set(SOFA_NO_UPDATE_BBOX_ "1")
else()
set(SOFA_NO_UPDATE_BBOX_ "0")
endif()
set(SOFAFRAMEWORK_DEPENDENCY_LINK)
set(SOFAFRAMEWORK_DEPENDENCY_INCLUDE_DIRECTORIES)
### Dependencies
set(SOFAFRAMEWORK_DEPENDENCY_LINK) # will be added to SofaHelper link libraries
set(SOFAFRAMEWORK_DEPENDENCY_INCLUDE_DIRECTORIES) # will be added to SofaHelper include dirs
find_package(GTest CONFIG QUIET)
set(SOFA_HAVE_GTEST ${GTest_FOUND})
if(NOT SOFA_NO_OPENGL)
# OpenGL (glu)
find_package(OpenGL REQUIRED)
# no target support for OpenGL on windows yet see
......@@ -74,100 +64,93 @@ if(NOT SOFA_NO_OPENGL)
list(APPEND SOFAFRAMEWORK_DEPENDENCY_LINK ${OPENGL_LIBRARIES})
list(APPEND SOFAFRAMEWORK_DEPENDENCY_INCLUDE_DIRECTORIES ${OPENGL_INCLUDE_DIR})
if(SOFA_BUILD_RELEASE_PACKAGE AND OPENGL_GLU_FOUND AND UNIX AND NOT APPLE)
# Add GLU to Linux binaries
if(TARGET OpenGL::GLU)
sofa_install_libraries(TARGETS OpenGL::GLU)
else()
sofa_install_libraries(LIBRARIES ${OPENGL_glu_LIBRARY})
endif()
endif()
## GLEW
find_package(GLEW)
if(GLEW_FOUND)
sofa_create_target(GLEW SofaFramework "${GLEW_LIBRARIES}" "${GLEW_INCLUDE_DIRS}")
list(APPEND SOFAFRAMEWORK_DEPENDENCY_LINK ${GLEW_Target})
list(APPEND SOFAFRAMEWORK_DEPENDENCY_LINK GLEW::GLEW)
list(APPEND SOFAFRAMEWORK_DEPENDENCY_INCLUDE_DIRECTORIES ${GLEW_INCLUDE_DIRS})
if(WIN32)
sofa_copy_libraries_from_targets(GLEW::GLEW) # Windows dependency pack
endif()
sofa_install_libraries_from_targets(GLEW::GLEW)
sofa_install_libraries(TARGETS GLEW::GLEW)
else()
message("OpenGL advanced functions (e.g shaders, FBO) are disabled.")
endif()
set(SOFA_HAVE_GLEW ${GLEW_FOUND})
endif()
## tinyxml
find_package(TinyXML REQUIRED)
sofa_create_target(TinyXML SofaFramework "${TinyXML_LIBRARIES}" "${TinyXML_INCLUDE_DIRS}")
list(APPEND SOFAFRAMEWORK_DEPENDENCY_LINK ${TinyXML_Target})
list(APPEND SOFAFRAMEWORK_DEPENDENCY_LINK tinyxml)
set(SOFA_HAVE_TINYXML 1)
## zlib
find_package(ZLIB)
if(ZLIB_FOUND)
sofa_create_target(ZLIB SofaFramework "${ZLIB_LIBRARIES}" "${ZLIB_INCLUDE_DIRS}")
list(APPEND SOFAFRAMEWORK_DEPENDENCY_LINK ${ZLIB_Target})
list(APPEND SOFAFRAMEWORK_DEPENDENCY_LINK ZLIB::ZLIB)
if(WIN32)
sofa_copy_libraries_from_targets(ZLIB::ZLIB) # Windows dependency pack
sofa_install_libraries(TARGETS ZLIB::ZLIB)
endif()
sofa_install_libraries_from_targets(ZLIB::ZLIB)
endif()
set(SOFA_HAVE_ZLIB ${ZLIB_FOUND})
## Boost
# required boost libraries
find_package(Boost
REQUIRED system filesystem locale program_options
REQUIRED system filesystem program_options chrono atomic
OPTIONAL_COMPONENTS thread date_time
)
set(SOFA_HAVE_BOOST 1)
set(SOFA_HAVE_BOOST_SYSTEM ${Boost_SYSTEM_FOUND})
set(SOFA_HAVE_BOOST_FILESYSTEM ${Boost_FILESYSTEM_FOUND})
set(SOFA_HAVE_BOOST_LOCALE ${Boost_LOCALE_FOUND})
set(SOFA_HAVE_BOOST_PROGRAM_OPTIONS ${Boost_PROGRAM_OPTIONS})
set(SOFA_HAVE_BOOST_PROGRAM_OPTIONS ${Boost_PROGRAM_OPTIONS_FOUND})
set(SOFA_HAVE_BOOST_THREAD ${Boost_THREAD_FOUND})
set(SOFA_HAVE_BOOST_DATE_TIME ${Boost_DATE_TIME_FOUND})
list(APPEND Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIR})
list(APPEND SOFAFRAMEWORK_DEPENDENCY_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIRS})
if(SOFA_HAVE_BOOST_SYSTEM
AND SOFA_HAVE_BOOST_FILESYSTEM
AND SOFA_HAVE_BOOST_LOCALE)
set(SOFA_HAVE_BOOST 1)
sofa_create_target(BoostSystem SofaFramework "${Boost_SYSTEM_LIBRARY}" "${Boost_INCLUDE_DIRS}")
sofa_create_target(BoostFileSystem SofaFramework "${Boost_FILESYSTEM_LIBRARY}" "${Boost_INCLUDE_DIRS}")
sofa_create_target(BoostLocale SofaFramework "${Boost_LOCALE_LIBRARY}" "${Boost_INCLUDE_DIRS}")
sofa_create_target(BoostProgramOptions SofaFramework "${Boost_PROGRAM_OPTIONS_LIBRARY}" "${Boost_INCLUDE_DIRS}")
set(BOOST_TARGETS
${BoostSystem_Target}
${BoostFileSystem_Target}
${BoostLocale_Target}
${BoostProgramOptions_Target})
Boost::system
Boost::filesystem
Boost::program_options
)
if(SOFA_HAVE_BOOST_DATE_TIME)
sofa_create_target(BoostDateTime SofaFramework "${Boost_DATE_TIME_LIBRARY}" "${Boost_INCLUDE_DIRS}")
list(APPEND BOOST_TARGETS ${BoostDateTime_Target})
list(APPEND BOOST_TARGETS Boost::date_time)
endif()
if(SOFA_HAVE_BOOST_THREAD)
sofa_create_target(BoostThread SofaFramework "${Boost_THREAD_LIBRARY}" "${Boost_INCLUDE_DIRS}")
list(APPEND BOOST_TARGETS ${BoostThread_Target})
list(APPEND BOOST_TARGETS Boost::thread)
endif()
list(APPEND Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIR})
list(APPEND SOFAFRAMEWORK_DEPENDENCY_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIRS})
list(APPEND SOFAFRAMEWORK_DEPENDENCY_LINK ${BOOST_TARGETS})
sofa_install_libraries_from_targets(${BOOST_TARGETS})
if(WIN32)
sofa_copy_libraries_from_targets(${BOOST_TARGETS})
endif()
endif()
sofa_install_libraries(
TARGETS ${BOOST_TARGETS}
LIBRARIES ${Boost_CHRONO_LIBRARY} ${Boost_ATOMIC_LIBRARY}
)
## Eigen
find_package(Eigen3 REQUIRED)
list(APPEND SOFAFRAMEWORK_DEPENDENCY_INCLUDE_DIRECTORIES ${EIGEN3_INCLUDE_DIR})
## JSON
list(APPEND SOFAFRAMEWORK_DEPENDENCY_INCLUDE_DIRECTORIES ${JSON_INCLUDE_DIR})
install(DIRECTORY ${EIGEN3_INCLUDE_DIR}/Eigen
COMPONENT headers
DESTINATION "include/extlibs/Eigen"
PATTERN "*.in" EXCLUDE
PATTERN "*.txt" EXCLUDE
PATTERN "*.cpp" EXCLUDE)
install(DIRECTORY ${EIGEN3_INCLUDE_DIR}/unsupported/Eigen
COMPONENT headers
DESTINATION "include/extlibs/Eigen"
PATTERN "*.in" EXCLUDE
PATTERN "*.txt" EXCLUDE
PATTERN "*.cpp" EXCLUDE)
## Generate & install the different files that contains the defines associated with
## the state of the build option.
......@@ -175,30 +158,24 @@ set(SOFA_BUILD_OPTIONS_SRC
sharedlibrary_defines.h
build_option_deprecated_components.h
build_option_dump_visitor.h
build_option_experimental_features.h
build_option_opengl.h
build_option_threading.h
build_option_bbox.h
)
foreach(NAME ${SOFA_BUILD_OPTIONS_SRC})
configure_file("${NAME}.in" "${CMAKE_BINARY_DIR}/include/sofa/config/${NAME}")
install(FILES "${CMAKE_BINARY_DIR}/include/sofa/config/${NAME}" DESTINATION "include/sofa/config" COMPONENT headers)
install(FILES "${CMAKE_BINARY_DIR}/include/sofa/config/${NAME}" DESTINATION "include/${PROJECT_NAME}/sofa/config" COMPONENT headers)
endforeach()
configure_file("config.h.in" "${CMAKE_BINARY_DIR}/include/sofa/config.h")
install(FILES "${CMAKE_BINARY_DIR}/include/sofa/config.h" DESTINATION "include/sofa" COMPONENT headers)
# make sure everyone in the build tree can see <sofa/config.h>
#list(APPEND SOFAFRAMEWORK_DEPENDENCY_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR})
list(REMOVE_DUPLICATES SOFAFRAMEWORK_DEPENDENCY_INCLUDE_DIRECTORIES)
install(FILES "${CMAKE_BINARY_DIR}/include/sofa/config.h" DESTINATION "include/${PROJECT_NAME}/sofa" COMPONENT headers)
## Version
set(SOFAFRAMEWORK_VERSION "18.06.00")
## sofa/version.h
set(SOFA_VERSION "180600")
set(SOFA_VERSION_STR "\"18.06.00\"")
set(SOFAFRAMEWORK_VERSION "${Sofa_VERSION}")
set(SOFA_VERSION_STR "\"${Sofa_VERSION}\"")
set(SOFA_VERSION "${Sofa_VERSION_MAJOR}${Sofa_VERSION_MINOR}${Sofa_VERSION_PATCH}")
configure_file(../framework/sofa/version.h.in "${CMAKE_BINARY_DIR}/include/sofa/version.h")
install(FILES "${CMAKE_BINARY_DIR}/include/sofa/version.h" DESTINATION include/sofa COMPONENT headers)
install(FILES "${CMAKE_BINARY_DIR}/include/sofa/version.h" DESTINATION include/${PROJECT_NAME}/sofa COMPONENT headers)
## Subdirectories
......@@ -223,7 +200,7 @@ elseif(NOT CMAKE_BUILD_TYPE MATCHES "Debug")
target_compile_definitions(SofaHelper PUBLIC "NDEBUG")
endif()
if(WIN32 OR XBOX)
if(WIN32)
# Increase Number of Sections in .Obj file
target_compile_options(SofaHelper PUBLIC "/bigobj")
endif()
......@@ -236,6 +213,9 @@ if(MSVC)
endif()
set(SOFAFRAMEWORK_TARGETS SofaCore SofaDefaultType SofaHelper)
foreach(TARGET ${SOFAFRAMEWORK_TARGETS})
target_include_directories(${TARGET} PUBLIC "$<INSTALL_INTERFACE:include/${PROJECT_NAME}>")
endforeach()
## CMake package configurations files
sofa_write_package_config_files(SofaFramework ${SOFAFRAMEWORK_VERSION})
......
......@@ -7,48 +7,44 @@ if(HAS_SOFAFRAMEWORK_CMAKE_MODULE_PATH EQUAL -1)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
endif()
list(FIND CMAKE_PREFIX_PATH "${CMAKE_CURRENT_LIST_DIR}/../../../plugins" HAS_PLUGINS_CMAKE_PREFIX_PATH)
if(HAS_PLUGINS_CMAKE_PREFIX_PATH EQUAL -1)
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_CURRENT_LIST_DIR}/../../../plugins")
endif()
include(SofaMacros)
find_package(TinyXML REQUIRED)
sofa_create_target(TinyXML SofaFramework "${TinyXML_LIBRARIES}" "${TinyXML_INCLUDE_DIRS}")
set(SOFA_HAVE_ZLIB "@SOFA_HAVE_ZLIB@")
set(SOFA_HAVE_GLEW "@SOFA_HAVE_GLEW@")
set(SOFA_HAVE_BOOST "@SOFA_HAVE_BOOST@")
set(SOFA_NO_OPENGL "@SOFA_NO_OPENGL@")
set(SOFA_HAVE_GTEST "@SOFA_HAVE_GTEST@")
set(SOFA_BUILD_METIS "@SOFA_BUILD_METIS@")
set(SOFA_NO_OPENGL "@SOFA_NO_OPENGL@")
set(SOFA_USE_MASK "@SOFA_USE_MASK@")
set(SOFA_WITH_DEVTOOLS "@SOFA_WITH_DEVTOOLS@")
set(SOFA_WITH_THREADING "@SOFA_WITH_THREADING@")
set(SOFA_WITH_DEPRECATED_COMPONENTS "@SOFA_WITH_DEPRECATED_COMPONENTS@")
if(SOFA_HAVE_GTEST)
find_package(GTest CONFIG REQUIRED)
endif()
if(SOFA_HAVE_ZLIB)
find_package(ZLIB REQUIRED)
sofa_create_target(ZLIB SofaFramework "${ZLIB_LIBRARIES}" "${ZLIB_INCLUDE_DIRS}")
endif()
if(SOFA_HAVE_GLEW)
find_package(GLEW REQUIRED)
sofa_create_target(GLEW SofaFramework "${GLEW_LIBRARIES}" "${GLEW_INCLUDE_DIRS}")
endif()
if(SOFA_HAVE_BOOST)
find_package(Boost QUIET REQUIRED COMPONENTS system filesystem locale program_options OPTIONAL_COMPONENTS date_time thread)
if(Boost_SYSTEM_FOUND AND Boost_FILESYSTEM_FOUND AND Boost_LOCALE_FOUND AND Boost_PROGRAM_OPTIONS_FOUND)
sofa_create_target(BoostSystem SofaFramework "${Boost_SYSTEM_LIBRARY}" "${Boost_INCLUDE_DIRS}")
sofa_create_target(BoostFileSystem SofaFramework "${Boost_FILESYSTEM_LIBRARY}" "${Boost_INCLUDE_DIRS}")
sofa_create_target(BoostLocale SofaFramework "${Boost_LOCALE_LIBRARY}" "${Boost_INCLUDE_DIRS}")
sofa_create_target(BoostProgramOptions SofaFramework "${Boost_PROGRAM_OPTIONS_LIBRARY}" "${Boost_INCLUDE_DIRS}")
endif()
if(Boost_DATE_TIME_FOUND)
sofa_create_target(BoostDateTime SofaFramework "${Boost_DATE_TIME_LIBRARY}" "${Boost_INCLUDE_DIRS}")
endif()
if(Boost_THREAD_FOUND)
sofa_create_target(BoostThread SofaFramework "${Boost_THREAD_LIBRARY}" "${Boost_INCLUDE_DIRS}")
endif()
find_package(Boost QUIET REQUIRED system filesystem program_options OPTIONAL_COMPONENTS date_time thread)
endif()
if(NOT TARGET SofaCore)
......
#ifndef BUILD_OPTION_BBOX_H
#define BUILD_OPTION_BBOX_H
#define SOFA_NO_UPDATE_BBOX ${SOFA_NO_UPDATE_BBOX_}
#endif // BUILD_OPTION_BBOX_H
/******************************************************************************
* SOFA, Simulation Open-Framework Architecture, development version *
* (c) 2006-2018 INRIA, USTL, UJF, CNRS, MGH *
* (c) 2006-2019 INRIA, USTL, UJF, CNRS, MGH *
* *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as published by *
......
/******************************************************************************
* SOFA, Simulation Open-Framework Architecture, development version *
* (c) 2006-2018 INRIA, USTL, UJF, CNRS, MGH *
* (c) 2006-2019 INRIA, USTL, UJF, CNRS, MGH *
* *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as published by *
......