Cleanup: deduplicate OpenVDB library definitions/include/libs logic
[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(WIN32)
53   add_definitions(-D_USE_MATH_DEFINES)
54 endif()
55
56 set(INC
57   ${MANTA_PP}
58   ${MANTA_PP}/fileio
59   ${MANTA_PP}/python
60   ${MANTA_PP}/plugin
61   ${MANTA_HLP}/pwrapper
62   ${MANTA_HLP}/util
63   ${MANTA_DEP}/cnpy
64 )
65
66 set(INC_SYS
67   ${PYTHON_INCLUDE_DIRS}
68   ${ZLIB_INCLUDE_DIRS}
69 )
70
71 if(WITH_TBB)
72   list(APPEND INC_SYS
73     ${TBB_INCLUDE_DIRS}
74   )
75   list(APPEND LIB
76     ${TBB_LIBRARIES}
77   )
78 endif()
79
80 if(WITH_OPENVDB)
81   add_definitions(-DOPENVDB=1 ${OPENVDB_DEFINITIONS})
82   list(APPEND INC_SYS
83     ${OPENVDB_INCLUDE_DIRS}
84   )
85   list(APPEND LIB
86     ${OPENVDB_LIBRARIES}
87   )
88 endif()
89
90 set(SRC
91   ${MANTA_DEP}/cnpy/cnpy.cpp
92   ${MANTA_DEP}/cnpy/cnpy.h
93
94   ${MANTA_PP}/commonkernels.h
95   ${MANTA_PP}/commonkernels.h.reg.cpp
96   ${MANTA_PP}/conjugategrad.cpp
97   ${MANTA_PP}/conjugategrad.h
98   ${MANTA_PP}/conjugategrad.h.reg.cpp
99   ${MANTA_PP}/edgecollapse.cpp
100   ${MANTA_PP}/edgecollapse.h
101   ${MANTA_PP}/edgecollapse.h.reg.cpp
102   ${MANTA_PP}/fastmarch.cpp
103   ${MANTA_PP}/fastmarch.h
104   ${MANTA_PP}/fastmarch.h.reg.cpp
105   ${MANTA_PP}/fileio/ioutil.cpp
106   ${MANTA_PP}/fileio/iogrids.cpp
107   ${MANTA_PP}/fileio/iomeshes.cpp
108   ${MANTA_PP}/fileio/ioparticles.cpp
109   ${MANTA_PP}/fileio/mantaio.h
110   ${MANTA_PP}/fileio/mantaio.h.reg.cpp
111   ${MANTA_PP}/fluidsolver.cpp
112   ${MANTA_PP}/fluidsolver.h
113   ${MANTA_PP}/fluidsolver.h.reg.cpp
114   ${MANTA_PP}/general.cpp
115   ${MANTA_PP}/general.h
116   ${MANTA_PP}/general.h.reg.cpp
117   ${MANTA_PP}/gitinfo.h
118   ${MANTA_PP}/grid.cpp
119   ${MANTA_PP}/grid.h
120   ${MANTA_PP}/grid.h.reg.cpp
121   ${MANTA_PP}/grid4d.cpp
122   ${MANTA_PP}/grid4d.h
123   ${MANTA_PP}/grid4d.h.reg.cpp
124   ${MANTA_PP}/kernel.cpp
125   ${MANTA_PP}/kernel.h
126   ${MANTA_PP}/kernel.h.reg.cpp
127   ${MANTA_PP}/levelset.cpp
128   ${MANTA_PP}/levelset.h
129   ${MANTA_PP}/levelset.h.reg.cpp
130   ${MANTA_PP}/mesh.cpp
131   ${MANTA_PP}/mesh.h
132   ${MANTA_PP}/mesh.h.reg.cpp
133   ${MANTA_PP}/movingobs.cpp
134   ${MANTA_PP}/movingobs.h
135   ${MANTA_PP}/movingobs.h.reg.cpp
136   ${MANTA_PP}/multigrid.cpp
137   ${MANTA_PP}/multigrid.h
138   ${MANTA_PP}/multigrid.h.reg.cpp
139   ${MANTA_PP}/noisefield.cpp
140   ${MANTA_PP}/noisefield.h
141   ${MANTA_PP}/noisefield.h.reg.cpp
142   ${MANTA_PP}/particle.cpp
143   ${MANTA_PP}/particle.h
144   ${MANTA_PP}/particle.h.reg.cpp
145   ${MANTA_PP}/plugin/advection.cpp
146   ${MANTA_PP}/plugin/apic.cpp
147   ${MANTA_PP}/plugin/extforces.cpp
148   ${MANTA_PP}/plugin/fire.cpp
149   ${MANTA_PP}/plugin/flip.cpp
150   ${MANTA_PP}/plugin/fluidguiding.cpp
151   ${MANTA_PP}/plugin/initplugins.cpp
152   ${MANTA_PP}/plugin/kepsilon.cpp
153   ${MANTA_PP}/plugin/meshplugins.cpp
154 # TODO (sebbas): add numpy to libraries
155 #   ${MANTA_PP}/plugin/numpyconvert.cpp
156   ${MANTA_PP}/plugin/pressure.cpp
157   ${MANTA_PP}/plugin/ptsplugins.cpp
158   ${MANTA_PP}/plugin/secondaryparticles.cpp
159   ${MANTA_PP}/plugin/surfaceturbulence.cpp
160 # TODO (sebbas): add numpy to libraries
161 #   ${MANTA_PP}/plugin/tfplugins.cpp
162   ${MANTA_PP}/plugin/vortexplugins.cpp
163   ${MANTA_PP}/plugin/waveletturbulence.cpp
164   ${MANTA_PP}/plugin/waves.cpp
165   ${MANTA_PP}/python/defines.py
166   ${MANTA_PP}/python/defines.py.reg.cpp
167   ${MANTA_PP}/registration.cpp
168   ${MANTA_PP}/shapes.cpp
169   ${MANTA_PP}/shapes.h
170   ${MANTA_PP}/shapes.h.reg.cpp
171   ${MANTA_PP}/test.cpp
172   ${MANTA_PP}/timing.cpp
173   ${MANTA_PP}/timing.h
174   ${MANTA_PP}/timing.h.reg.cpp
175   ${MANTA_PP}/turbulencepart.cpp
176   ${MANTA_PP}/turbulencepart.h
177   ${MANTA_PP}/turbulencepart.h.reg.cpp
178   ${MANTA_PP}/vortexpart.cpp
179   ${MANTA_PP}/vortexpart.h
180   ${MANTA_PP}/vortexpart.h.reg.cpp
181   ${MANTA_PP}/vortexsheet.cpp
182   ${MANTA_PP}/vortexsheet.h
183   ${MANTA_PP}/vortexsheet.h.reg.cpp
184
185   ${MANTA_HLP}/pwrapper/manta.h
186 # TODO (sebbas): add numpy to libraries
187 #  ${MANTA_HLP}/pwrapper/numpyWrap.cpp
188 #  ${MANTA_HLP}/pwrapper/numpyWrap.h
189   ${MANTA_HLP}/pwrapper/pclass.cpp
190   ${MANTA_HLP}/pwrapper/pclass.h
191   ${MANTA_HLP}/pwrapper/pconvert.cpp
192   ${MANTA_HLP}/pwrapper/pconvert.h
193   ${MANTA_HLP}/pwrapper/pvec3.cpp
194   ${MANTA_HLP}/pwrapper/pythonInclude.h
195   ${MANTA_HLP}/pwrapper/registry.cpp
196   ${MANTA_HLP}/pwrapper/registry.h
197   ${MANTA_HLP}/util/integrator.h
198   ${MANTA_HLP}/util/interpol.h
199   ${MANTA_HLP}/util/interpolHigh.h
200   ${MANTA_HLP}/util/matrixbase.h
201   ${MANTA_HLP}/util/mcubes.h
202   ${MANTA_HLP}/util/quaternion.h
203   ${MANTA_HLP}/util/randomstream.h
204   ${MANTA_HLP}/util/rcmatrix.h
205   ${MANTA_HLP}/util/simpleimage.cpp
206   ${MANTA_HLP}/util/simpleimage.h
207   ${MANTA_HLP}/util/solvana.h
208   ${MANTA_HLP}/util/vector4d.cpp
209   ${MANTA_HLP}/util/vector4d.h
210   ${MANTA_HLP}/util/vectorbase.cpp
211   ${MANTA_HLP}/util/vectorbase.h
212 )
213
214 set(LIB
215   ${PYTHON_LINKFLAGS}
216   ${PYTHON_LIBRARIES}
217 )
218
219 blender_add_lib(extern_mantaflow "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")