7486f123666129239e6acaafa714e5c015cdd1ab
[blender-staging.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/ioutil.cpp
121   ${MANTA_PP}/fileio/iogrids.cpp
122   ${MANTA_PP}/fileio/iomeshes.cpp
123   ${MANTA_PP}/fileio/ioparticles.cpp
124   ${MANTA_PP}/fileio/mantaio.h
125   ${MANTA_PP}/fileio/mantaio.h.reg.cpp
126   ${MANTA_PP}/fluidsolver.cpp
127   ${MANTA_PP}/fluidsolver.h
128   ${MANTA_PP}/fluidsolver.h.reg.cpp
129   ${MANTA_PP}/general.cpp
130   ${MANTA_PP}/general.h
131   ${MANTA_PP}/general.h.reg.cpp
132   ${MANTA_PP}/gitinfo.h
133   ${MANTA_PP}/grid.cpp
134   ${MANTA_PP}/grid.h
135   ${MANTA_PP}/grid.h.reg.cpp
136   ${MANTA_PP}/grid4d.cpp
137   ${MANTA_PP}/grid4d.h
138   ${MANTA_PP}/grid4d.h.reg.cpp
139   ${MANTA_PP}/kernel.cpp
140   ${MANTA_PP}/kernel.h
141   ${MANTA_PP}/kernel.h.reg.cpp
142   ${MANTA_PP}/levelset.cpp
143   ${MANTA_PP}/levelset.h
144   ${MANTA_PP}/levelset.h.reg.cpp
145   ${MANTA_PP}/mesh.cpp
146   ${MANTA_PP}/mesh.h
147   ${MANTA_PP}/mesh.h.reg.cpp
148   ${MANTA_PP}/movingobs.cpp
149   ${MANTA_PP}/movingobs.h
150   ${MANTA_PP}/movingobs.h.reg.cpp
151   ${MANTA_PP}/multigrid.cpp
152   ${MANTA_PP}/multigrid.h
153   ${MANTA_PP}/multigrid.h.reg.cpp
154   ${MANTA_PP}/noisefield.cpp
155   ${MANTA_PP}/noisefield.h
156   ${MANTA_PP}/noisefield.h.reg.cpp
157   ${MANTA_PP}/particle.cpp
158   ${MANTA_PP}/particle.h
159   ${MANTA_PP}/particle.h.reg.cpp
160   ${MANTA_PP}/plugin/advection.cpp
161   ${MANTA_PP}/plugin/apic.cpp
162   ${MANTA_PP}/plugin/extforces.cpp
163   ${MANTA_PP}/plugin/fire.cpp
164   ${MANTA_PP}/plugin/flip.cpp
165   ${MANTA_PP}/plugin/fluidguiding.cpp
166   ${MANTA_PP}/plugin/initplugins.cpp
167   ${MANTA_PP}/plugin/kepsilon.cpp
168   ${MANTA_PP}/plugin/meshplugins.cpp
169 # TODO (sebbas): add numpy to libraries
170 #   ${MANTA_PP}/plugin/numpyconvert.cpp
171   ${MANTA_PP}/plugin/pressure.cpp
172   ${MANTA_PP}/plugin/ptsplugins.cpp
173   ${MANTA_PP}/plugin/secondaryparticles.cpp
174   ${MANTA_PP}/plugin/surfaceturbulence.cpp
175 # TODO (sebbas): add numpy to libraries
176 #   ${MANTA_PP}/plugin/tfplugins.cpp
177   ${MANTA_PP}/plugin/vortexplugins.cpp
178   ${MANTA_PP}/plugin/waveletturbulence.cpp
179   ${MANTA_PP}/plugin/waves.cpp
180   ${MANTA_PP}/python/defines.py
181   ${MANTA_PP}/python/defines.py.reg.cpp
182   ${MANTA_PP}/registration.cpp
183   ${MANTA_PP}/shapes.cpp
184   ${MANTA_PP}/shapes.h
185   ${MANTA_PP}/shapes.h.reg.cpp
186   ${MANTA_PP}/test.cpp
187   ${MANTA_PP}/timing.cpp
188   ${MANTA_PP}/timing.h
189   ${MANTA_PP}/timing.h.reg.cpp
190   ${MANTA_PP}/turbulencepart.cpp
191   ${MANTA_PP}/turbulencepart.h
192   ${MANTA_PP}/turbulencepart.h.reg.cpp
193   ${MANTA_PP}/vortexpart.cpp
194   ${MANTA_PP}/vortexpart.h
195   ${MANTA_PP}/vortexpart.h.reg.cpp
196   ${MANTA_PP}/vortexsheet.cpp
197   ${MANTA_PP}/vortexsheet.h
198   ${MANTA_PP}/vortexsheet.h.reg.cpp
199
200   ${MANTA_HLP}/pwrapper/manta.h
201 # TODO (sebbas): add numpy to libraries
202 #  ${MANTA_HLP}/pwrapper/numpyWrap.cpp
203 #  ${MANTA_HLP}/pwrapper/numpyWrap.h
204   ${MANTA_HLP}/pwrapper/pclass.cpp
205   ${MANTA_HLP}/pwrapper/pclass.h
206   ${MANTA_HLP}/pwrapper/pconvert.cpp
207   ${MANTA_HLP}/pwrapper/pconvert.h
208   ${MANTA_HLP}/pwrapper/pvec3.cpp
209   ${MANTA_HLP}/pwrapper/pythonInclude.h
210   ${MANTA_HLP}/pwrapper/registry.cpp
211   ${MANTA_HLP}/pwrapper/registry.h
212   ${MANTA_HLP}/util/integrator.h
213   ${MANTA_HLP}/util/interpol.h
214   ${MANTA_HLP}/util/interpolHigh.h
215   ${MANTA_HLP}/util/matrixbase.h
216   ${MANTA_HLP}/util/mcubes.h
217   ${MANTA_HLP}/util/quaternion.h
218   ${MANTA_HLP}/util/randomstream.h
219   ${MANTA_HLP}/util/rcmatrix.h
220   ${MANTA_HLP}/util/simpleimage.cpp
221   ${MANTA_HLP}/util/simpleimage.h
222   ${MANTA_HLP}/util/solvana.h
223   ${MANTA_HLP}/util/vector4d.cpp
224   ${MANTA_HLP}/util/vector4d.h
225   ${MANTA_HLP}/util/vectorbase.cpp
226   ${MANTA_HLP}/util/vectorbase.h
227 )
228
229 set(LIB
230   ${PYTHON_LINKFLAGS}
231   ${PYTHON_LIBRARIES}
232 )
233
234 blender_add_lib(extern_mantaflow "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")