Cleanup/MSVC: Enable C++ conformance mode on compiler versions that support it.
[blender.git] / extern / mantaflow / CMakeLists.txt
1 # ***** BEGIN GPL LICENSE BLOCK *****
2 #
3 # This program is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License
5 # as published by the Free Software Foundation; either version 2
6 # of the License, or (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software Foundation,
15 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 #
17 # The Original Code is Copyright (C) 2016, Blender Foundation
18 # All rights reserved.
19 #
20 # The Original Code is: all of this file.
21 #
22 # Contributor(s): Sebastian Barschkis (sebbas)
23 #
24 # ***** END GPL LICENSE BLOCK *****
25
26 # Mantaflow triggers a clang-cl compiler error with versions before 9.0.1
27 # Since mantaflow does not appear to be using OpenMP at this point in time,
28 # disable the flag for now. See https://bugs.llvm.org/show_bug.cgi?id=43175 for details.
29
30 if(MSVC_CLANG AND WITH_OPENMP AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0.1")
31   remove_cc_flag("-fopenmp")
32 endif()
33
34 set(MANTAVERSION "0.12")
35
36 add_definitions(-DWITH_FLUID=1)
37
38 set(MANTA_DEP
39   dependencies
40 )
41 set(MANTA_HLP
42   helper
43 )
44 set(MANTA_PP
45   preprocessed
46 )
47
48 if(WITH_TBB)
49   add_definitions(-DTBB=1)
50 endif()
51
52 if(WITH_OPENVDB)
53   add_definitions(-DOPENVDB=1)
54   add_definitions(-DOPENVDB_STATICLIB)
55 endif()
56
57 if(WIN32)
58   add_definitions(-D_USE_MATH_DEFINES)
59 endif()
60
61 set(INC
62   ${MANTA_PP}
63   ${MANTA_PP}/fileio
64   ${MANTA_PP}/python
65   ${MANTA_PP}/plugin
66   ${MANTA_HLP}/pwrapper
67   ${MANTA_HLP}/util
68   ${MANTA_DEP}/cnpy
69 )
70
71 set(INC_SYS
72   ${PYTHON_INCLUDE_DIRS}
73   ${ZLIB_INCLUDE_DIRS}
74 )
75
76 if(WITH_TBB)
77   list(APPEND INC_SYS
78     ${TBB_INCLUDE_DIRS}
79   )
80   list(APPEND LIB
81     ${TBB_LIBRARIES}
82   )
83 endif()
84
85 if(WITH_OPENVDB)
86   list(APPEND INC_SYS
87     ${BOOST_INCLUDE_DIR}
88     ${OPENEXR_INCLUDE_DIRS}
89     ${OPENVDB_INCLUDE_DIRS}
90   )
91   list(APPEND LIB
92     ${OPENVDB_LIBRARIES}
93     ${OPENEXR_LIBRARIES}
94     ${ZLIB_LIBRARIES}
95     ${BOOST_LIBRARIES}
96   )
97   if(WITH_OPENVDB_BLOSC)
98     list(APPEND LIB
99       ${BLOSC_LIBRARIES}
100       ${ZLIB_LIBRARIES}
101     )
102   endif()
103 endif()
104
105 set(SRC
106   ${MANTA_DEP}/cnpy/cnpy.cpp
107   ${MANTA_DEP}/cnpy/cnpy.h
108
109   ${MANTA_PP}/commonkernels.h
110   ${MANTA_PP}/commonkernels.h.reg.cpp
111   ${MANTA_PP}/conjugategrad.cpp
112   ${MANTA_PP}/conjugategrad.h
113   ${MANTA_PP}/conjugategrad.h.reg.cpp
114   ${MANTA_PP}/edgecollapse.cpp
115   ${MANTA_PP}/edgecollapse.h
116   ${MANTA_PP}/edgecollapse.h.reg.cpp
117   ${MANTA_PP}/fastmarch.cpp
118   ${MANTA_PP}/fastmarch.h
119   ${MANTA_PP}/fastmarch.h.reg.cpp
120   ${MANTA_PP}/fileio/iogrids.cpp
121   ${MANTA_PP}/fileio/iomeshes.cpp
122   ${MANTA_PP}/fileio/ioparticles.cpp
123   ${MANTA_PP}/fileio/mantaio.h
124   ${MANTA_PP}/fileio/mantaio.h.reg.cpp
125   ${MANTA_PP}/fluidsolver.cpp
126   ${MANTA_PP}/fluidsolver.h
127   ${MANTA_PP}/fluidsolver.h.reg.cpp
128   ${MANTA_PP}/general.cpp
129   ${MANTA_PP}/general.h
130   ${MANTA_PP}/general.h.reg.cpp
131   ${MANTA_PP}/gitinfo.h
132   ${MANTA_PP}/grid.cpp
133   ${MANTA_PP}/grid.h
134   ${MANTA_PP}/grid.h.reg.cpp
135   ${MANTA_PP}/grid4d.cpp
136   ${MANTA_PP}/grid4d.h
137   ${MANTA_PP}/grid4d.h.reg.cpp
138   ${MANTA_PP}/kernel.cpp
139   ${MANTA_PP}/kernel.h
140   ${MANTA_PP}/kernel.h.reg.cpp
141   ${MANTA_PP}/levelset.cpp
142   ${MANTA_PP}/levelset.h
143   ${MANTA_PP}/levelset.h.reg.cpp
144   ${MANTA_PP}/mesh.cpp
145   ${MANTA_PP}/mesh.h
146   ${MANTA_PP}/mesh.h.reg.cpp
147   ${MANTA_PP}/movingobs.cpp
148   ${MANTA_PP}/movingobs.h
149   ${MANTA_PP}/movingobs.h.reg.cpp
150   ${MANTA_PP}/multigrid.cpp
151   ${MANTA_PP}/multigrid.h
152   ${MANTA_PP}/multigrid.h.reg.cpp
153   ${MANTA_PP}/noisefield.cpp
154   ${MANTA_PP}/noisefield.h
155   ${MANTA_PP}/noisefield.h.reg.cpp
156   ${MANTA_PP}/particle.cpp
157   ${MANTA_PP}/particle.h
158   ${MANTA_PP}/particle.h.reg.cpp
159   ${MANTA_PP}/plugin/advection.cpp
160   ${MANTA_PP}/plugin/apic.cpp
161   ${MANTA_PP}/plugin/extforces.cpp
162   ${MANTA_PP}/plugin/fire.cpp
163   ${MANTA_PP}/plugin/flip.cpp
164   ${MANTA_PP}/plugin/fluidguiding.cpp
165   ${MANTA_PP}/plugin/initplugins.cpp
166   ${MANTA_PP}/plugin/kepsilon.cpp
167   ${MANTA_PP}/plugin/meshplugins.cpp
168 # TODO (sebbas): add numpy to libraries
169 #   ${MANTA_PP}/plugin/numpyconvert.cpp
170   ${MANTA_PP}/plugin/pressure.cpp
171   ${MANTA_PP}/plugin/ptsplugins.cpp
172   ${MANTA_PP}/plugin/secondaryparticles.cpp
173   ${MANTA_PP}/plugin/surfaceturbulence.cpp
174 # TODO (sebbas): add numpy to libraries
175 #   ${MANTA_PP}/plugin/tfplugins.cpp
176   ${MANTA_PP}/plugin/vortexplugins.cpp
177   ${MANTA_PP}/plugin/waveletturbulence.cpp
178   ${MANTA_PP}/plugin/waves.cpp
179   ${MANTA_PP}/python/defines.py
180   ${MANTA_PP}/python/defines.py.reg.cpp
181   ${MANTA_PP}/registration.cpp
182   ${MANTA_PP}/shapes.cpp
183   ${MANTA_PP}/shapes.h
184   ${MANTA_PP}/shapes.h.reg.cpp
185   ${MANTA_PP}/test.cpp
186   ${MANTA_PP}/timing.cpp
187   ${MANTA_PP}/timing.h
188   ${MANTA_PP}/timing.h.reg.cpp
189   ${MANTA_PP}/turbulencepart.cpp
190   ${MANTA_PP}/turbulencepart.h
191   ${MANTA_PP}/turbulencepart.h.reg.cpp
192   ${MANTA_PP}/vortexpart.cpp
193   ${MANTA_PP}/vortexpart.h
194   ${MANTA_PP}/vortexpart.h.reg.cpp
195   ${MANTA_PP}/vortexsheet.cpp
196   ${MANTA_PP}/vortexsheet.h
197   ${MANTA_PP}/vortexsheet.h.reg.cpp
198
199   ${MANTA_HLP}/pwrapper/manta.h
200 # TODO (sebbas): add numpy to libraries
201 #  ${MANTA_HLP}/pwrapper/numpyWrap.cpp
202 #  ${MANTA_HLP}/pwrapper/numpyWrap.h
203   ${MANTA_HLP}/pwrapper/pclass.cpp
204   ${MANTA_HLP}/pwrapper/pclass.h
205   ${MANTA_HLP}/pwrapper/pconvert.cpp
206   ${MANTA_HLP}/pwrapper/pconvert.h
207   ${MANTA_HLP}/pwrapper/pvec3.cpp
208   ${MANTA_HLP}/pwrapper/pythonInclude.h
209   ${MANTA_HLP}/pwrapper/registry.cpp
210   ${MANTA_HLP}/pwrapper/registry.h
211   ${MANTA_HLP}/util/integrator.h
212   ${MANTA_HLP}/util/interpol.h
213   ${MANTA_HLP}/util/interpolHigh.h
214   ${MANTA_HLP}/util/matrixbase.h
215   ${MANTA_HLP}/util/mcubes.h
216   ${MANTA_HLP}/util/quaternion.h
217   ${MANTA_HLP}/util/randomstream.h
218   ${MANTA_HLP}/util/rcmatrix.h
219   ${MANTA_HLP}/util/simpleimage.cpp
220   ${MANTA_HLP}/util/simpleimage.h
221   ${MANTA_HLP}/util/solvana.h
222   ${MANTA_HLP}/util/vector4d.cpp
223   ${MANTA_HLP}/util/vector4d.h
224   ${MANTA_HLP}/util/vectorbase.cpp
225   ${MANTA_HLP}/util/vectorbase.h
226 )
227
228 set(LIB
229   ${PYTHON_LINKFLAGS}
230   ${PYTHON_LIBRARIES}
231 )
232
233 blender_add_lib(extern_mantaflow "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")