Lock-free memory allocator
[blender-staging.git] / source / blender / makesrna / intern / 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) 2006, Blender Foundation
18 # All rights reserved.
19 #
20 # The Original Code is: all of this file.
21 #
22 # Contributor(s): Jacques Beaurain.
23 #
24 # ***** END GPL LICENSE BLOCK *****
25
26 if(CMAKE_COMPILER_IS_GNUCC)
27         # add here so we fail early.
28         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=implicit-function-declaration")
29 endif()
30
31 # message(STATUS "Configuring makesrna")
32
33 # files rna_access.c rna_define.c makesrna.c intentionally excluded.
34 set(DEFSRC
35         rna_ID.c
36         rna_action.c
37         rna_actuator.c
38         rna_animation.c
39         rna_animviz.c
40         rna_armature.c
41         rna_boid.c
42         rna_brush.c
43         rna_camera.c
44         rna_cloth.c
45         rna_color.c
46         rna_constraint.c
47         rna_context.c
48         rna_controller.c
49         rna_curve.c
50         rna_dynamicpaint.c
51         rna_fcurve.c
52         rna_fluidsim.c
53         rna_gpencil.c
54         rna_group.c
55         rna_image.c
56         rna_key.c
57         rna_lamp.c
58         rna_lattice.c
59         rna_linestyle.c
60         rna_main.c
61         rna_mask.c
62         rna_material.c
63         rna_mesh.c
64         rna_meta.c
65         rna_modifier.c
66         rna_movieclip.c
67         rna_nla.c
68         rna_nodetree.c
69         rna_object.c
70         rna_object_force.c
71         rna_packedfile.c
72         rna_particle.c
73         rna_pose.c
74         rna_property.c
75         rna_render.c
76         rna_rigidbody.c
77         rna_rna.c
78         rna_scene.c
79         rna_screen.c
80         rna_sculpt_paint.c
81         rna_sensor.c
82         rna_sequencer.c
83         rna_smoke.c
84         rna_sound.c
85         rna_space.c
86         rna_speaker.c
87         rna_test.c
88         rna_text.c
89         rna_texture.c
90         rna_timeline.c
91         rna_tracking.c
92         rna_ui.c
93         rna_userdef.c
94         rna_vfont.c
95         rna_wm.c
96         rna_world.c
97 )
98
99 set(APISRC
100         rna_action_api.c
101         rna_actuator_api.c
102         rna_animation_api.c
103         rna_armature_api.c
104         rna_camera_api.c
105         rna_controller_api.c
106         rna_fcurve_api.c
107         rna_image_api.c
108         rna_main_api.c
109         rna_material_api.c
110         rna_mesh_api.c
111         rna_meta_api.c
112         rna_texture_api.c
113         rna_object_api.c
114         rna_pose_api.c
115         rna_scene_api.c
116         rna_sensor_api.c
117         rna_sequencer_api.c
118         rna_text_api.c
119         rna_ui_api.c
120         rna_wm_api.c
121 )
122
123 string(REGEX REPLACE "rna_([a-zA-Z0-9_-]*).c" "${CMAKE_CURRENT_BINARY_DIR}/rna_\\1_gen.c" GENSRC "${DEFSRC}")
124 set_source_files_properties(${GENSRC} PROPERTIES GENERATED TRUE)
125
126 set(SRC_RNA_INC
127         ../RNA_access.h
128         ../RNA_define.h
129         ../RNA_documentation.h
130         ../RNA_enum_types.h
131         ../RNA_types.h
132 )
133
134 set(SRC
135         makesrna.c
136         rna_define.c
137         ${DEFSRC}
138         ${APISRC}
139         ../../../../intern/guardedalloc/intern/mallocn.c
140         ../../../../intern/guardedalloc/intern/mallocn_guarded_impl.c
141         ../../../../intern/guardedalloc/intern/mallocn_lockfree_impl.c
142         ../../../../intern/guardedalloc/intern/mmap_win.c
143 )
144
145 set(INC
146
147 )
148
149 set(INC_SYS
150
151 )
152
153 if(WITH_CYCLES)
154         add_definitions(-DWITH_CYCLES)
155 endif()
156
157 if(WITH_PYTHON)
158         add_definitions(-DWITH_PYTHON)
159 endif()
160
161 if(WITH_GAMEENGINE)
162         add_definitions(-DWITH_GAMEENGINE)
163 endif()
164
165 if(WITH_IMAGE_OPENEXR)
166         add_definitions(-DWITH_OPENEXR)
167 endif()
168
169 if(WITH_IMAGE_PSD)
170         add_definitions(-DWITH_PSD)
171 endif()
172
173 if(WITH_IMAGE_TIFF)
174         add_definitions(-DWITH_TIFF)
175 endif()
176
177 if(WITH_IMAGE_OPENJPEG)
178         add_definitions(-DWITH_OPENJPEG)
179 endif()
180
181 if(WITH_IMAGE_DDS)
182         add_definitions(-DWITH_DDS)
183 endif()
184
185 if(WITH_IMAGE_CINEON)
186         add_definitions(-DWITH_CINEON)
187 endif()
188
189 if(WITH_IMAGE_HDR)
190         add_definitions(-DWITH_HDR)
191 endif()
192
193 if(WITH_IMAGE_FRAMESERVER)
194         add_definitions(-DWITH_FRAMESERVER)
195 endif()
196
197 if(WITH_AUDASPACE)
198         add_definitions(-DWITH_AUDASPACE)
199 endif()
200
201 if(WITH_CODEC_QUICKTIME)
202         list(APPEND INC
203                 ../../quicktime
204         )
205         add_definitions(-DWITH_QUICKTIME)
206 endif()
207
208 if(WITH_CODEC_FFMPEG)
209         list(APPEND INC_SYS
210                 ${FFMPEG_INCLUDE_DIRS}
211         )
212         add_definitions(-DWITH_FFMPEG)
213 endif()
214
215 if(WITH_MOD_FLUID)
216         add_definitions(-DWITH_MOD_FLUID)
217 endif()
218
219 if(WITH_FFTW3)
220         add_definitions(-DWITH_FFTW3)
221 endif()
222
223 if(WITH_MOD_SMOKE)
224         add_definitions(-DWITH_SMOKE)
225 endif()
226
227 if(WITH_MOD_OCEANSIM)
228         add_definitions(-DWITH_OCEANSIM)
229 endif()
230
231 if(WITH_SDL)
232         add_definitions(-DWITH_SDL)
233 endif()
234
235 if(WITH_OPENAL)
236         add_definitions(-DWITH_OPENAL)
237 endif()
238
239 if(WITH_JACK)
240         add_definitions(-DWITH_JACK)
241 endif()
242
243 if(WITH_OPENCOLLADA)
244         add_definitions(-DWITH_COLLADA)
245 endif()
246
247 if(WITH_INTERNATIONAL)
248         add_definitions(-DWITH_INTERNATIONAL)
249 endif()
250
251 if(WITH_BULLET)
252         list(APPEND INC
253                 ../../../../intern/rigidbody
254         )
255         add_definitions(-DWITH_BULLET)
256 endif()
257
258 # Build makesrna executable
259 blender_include_dirs(
260         .
261         ..
262         ../../blenkernel
263         ../../blenlib
264         ../../bmesh
265         ../../blenfont
266         ../../gpu
267         ../../imbuf
268         ../../ikplugin
269         ../../makesdna
270         ../../nodes/
271         ../../windowmanager
272         ../../editors/include
273         ../../render/extern/include
274         ../../../../intern/audaspace/intern
275         ../../../../intern/cycles/blender
276         ../../../../intern/guardedalloc
277         ../../../../intern/atomic
278         ../../../../intern/memutil
279         ../../../../intern/smoke/extern
280 )
281
282 blender_include_dirs_sys(
283         ${GLEW_INCLUDE_PATH}
284 )
285
286 add_executable(makesrna ${SRC} ${SRC_RNA_INC} ${SRC_DNA_INC})
287 target_link_libraries(makesrna bf_dna)
288 target_link_libraries(makesrna bf_dna_blenlib)
289
290 # too many warnings with clang
291 remove_cc_flag("-Wmissing-prototypes")
292
293 # Output rna_*_gen.c
294 # note (linux only): with crashes try add this after COMMAND: valgrind --leak-check=full --track-origins=yes
295 add_custom_command(
296         OUTPUT ${GENSRC}
297         COMMAND ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/makesrna ${CMAKE_CURRENT_BINARY_DIR}/
298         DEPENDS makesrna
299 )
300
301 # Build bf_rna
302 set(SRC
303         rna_access.c
304         ${GENSRC}
305
306         ${SRC_RNA_INC}
307         rna_internal.h
308         rna_internal_types.h
309         rna_mesh_utils.h
310 )
311
312 blender_add_lib(bf_rna "${SRC}" "${INC}" "${INC_SYS}")