cfccd92ef86c41bbcee7b32f01eec407d5bf6501
[blender.git] / source / blenderplayer / 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 # message(STATUS "Configuring blenderplayer")
27
28 setup_libdirs()
29
30 if(WITH_CODEC_QUICKTIME)
31         add_definitions(-DWITH_QUICKTIME)
32 endif()
33
34 add_custom_command(
35         OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/dna.c
36         COMMAND ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/makesdna ${CMAKE_CURRENT_BINARY_DIR}/dna.c ${CMAKE_SOURCE_DIR}/source/blender/makesdna/
37         DEPENDS ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/makesdna
38 )
39
40 if(WIN32 AND NOT UNIX)
41         string(SUBSTRING ${BLENDER_VERSION} 0 1 bver1)
42         string(SUBSTRING ${BLENDER_VERSION} 2 1 bver2)
43         string(SUBSTRING ${BLENDER_VERSION} 3 1 bver3)
44         if(MINGW)
45                 add_definitions(
46                         -DWINDRES
47                         -DBLEN_VER_RC_STR_M=${BLENDER_VERSION}
48                         -DBLEN_VER_RC_1=${bver1}
49                         -DBLEN_VER_RC_2=${bver2}
50                         -DBLEN_VER_RC_3=${bver3}
51                         -DBLEN_VER_RC_4=0
52                 )
53         else()
54                 add_definitions(
55                         -DBLEN_VER_RC_STR=${BLENDER_VERSION}
56                         -DBLEN_VER_RC_1=${bver1}
57                         -DBLEN_VER_RC_2=${bver2}
58                         -DBLEN_VER_RC_3=${bver3}
59                         -DBLEN_VER_RC_4=0
60                 )
61         endif()
62
63         add_executable(blenderplayer ${EXETYPE} ${CMAKE_CURRENT_BINARY_DIR}/dna.c ../icons/winblender.rc)
64
65 elseif(APPLE)
66         add_executable(blenderplayer ${EXETYPE} ${CMAKE_CURRENT_BINARY_DIR}/dna.c)
67         # setup Info.plist
68         execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE BLENDER_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
69         set(PLAYER_SOURCEDIR ${CMAKE_SOURCE_DIR}/source/darwin/blenderplayer.app)
70         set(PLAYER_SOURCEINFO ${PLAYER_SOURCEDIR}/Contents/Info.plist)
71         set_target_properties(blenderplayer PROPERTIES
72                 MACOSX_BUNDLE_INFO_PLIST ${PLAYER_SOURCEINFO}
73                 MACOSX_BUNDLE_SHORT_VERSION_STRING ${BLENDER_VERSION}
74                 MACOSX_BUNDLE_LONG_VERSION_STRING "${BLENDER_VERSION} ${BLENDER_DATE}")
75
76 else()
77         add_executable(blenderplayer ${CMAKE_CURRENT_BINARY_DIR}/dna.c)
78 endif()
79
80 add_dependencies(blenderplayer makesdna)
81
82 get_property(BLENDER_LINK_LIBS GLOBAL PROPERTY BLENDER_LINK_LIBS)
83
84 list(APPEND BLENDER_LINK_LIBS
85         ge_player_common
86         ge_player_ghost
87         blenkernel_blc
88 )
89
90 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
91         list(APPEND BLENDER_LINK_LIBS extern_binreloc)
92 endif()
93
94 # if(UNIX)
95         # Sort libraries
96         set(BLENDER_SORTED_LIBS
97                 ge_player_ghost 
98                 ge_player_common 
99                 bf_intern_string 
100                 bf_intern_ghost
101                 bf_rna
102                 bf_bmesh
103                 bf_blenkernel
104                 bf_blenloader 
105                 bf_blenpluginapi 
106                 ge_blen_routines
107                 bf_editor_datafiles
108                 ge_converter 
109                 ge_logic_ketsji 
110                 ge_phys_bullet 
111                 ge_phys_dummy
112                 ge_phys_common 
113                 ge_logic 
114                 ge_rasterizer 
115                 ge_oglrasterizer 
116                 ge_logic_expressions 
117                 ge_scenegraph
118                 bf_ikplugin
119                 bf_intern_itasc
120                 bf_intern_ik
121                 bf_intern_smoke
122                 bf_modifiers
123                 bf_intern_moto 
124                 bf_nodes
125                 bf_gpu
126                 bf_imbuf
127                 bf_avi 
128                 ge_logic_network 
129                 ge_logic_ngnetwork 
130                 ge_logic_loopbacknetwork 
131                 extern_bullet 
132                 bf_intern_guardedalloc 
133                 bf_intern_memutil 
134                 bf_python_ext
135                 bf_python_mathutils
136                 bf_python_bmesh
137                 bf_blenlib 
138                 bf_intern_utfconv
139                 bf_imbuf_cineon
140                 bf_imbuf_openexr 
141                 extern_openjpeg
142                 extern_redcode
143                 bf_imbuf_dds
144                 bf_dna
145                 ge_videotex
146                 bf_blenfont
147                 bf_intern_audaspace
148                 blenkernel_blc
149                 bf_bmesh
150                 extern_binreloc
151                 extern_minilzo
152                 bf_intern_ghost # duplicate for linking
153                 bf_blenkernel # duplicate for linking
154                 bf_intern_mikktspace
155                 extern_recastnavigation
156         )
157
158         if(WITH_MOD_CLOTH_ELTOPO)
159                 list(APPEND BLENDER_SORTED_LIBS extern_eltopo)
160         endif()
161
162         if(WITH_BUILTIN_GLEW)
163                 list(APPEND BLENDER_SORTED_LIBS extern_glew)
164         endif()
165
166         if(WITH_LZMA)
167                 list(APPEND BLENDER_SORTED_LIBS extern_lzma)
168         endif()
169
170         if(WITH_LIBMV)
171                 list(APPEND BLENDER_SORTED_LIBS extern_libmv)
172         endif()
173
174         list(APPEND BLENDER_SORTED_LIBS extern_colamd)
175
176         if(WITH_MOD_DECIMATE)
177                 list(APPEND BLENDER_SORTED_LIBS bf_intern_decimate)
178         endif()
179
180         if(WITH_MOD_BOOLEAN)
181                 list(APPEND BLENDER_SORTED_LIBS bf_intern_bsp)
182                 list(APPEND BLENDER_SORTED_LIBS bf_intern_bop)
183                 list(APPEND BLENDER_SORTED_LIBS bf_intern_moto)
184         endif()
185
186         if(WITH_CARVE)
187                 list(APPEND BLENDER_SORTED_LIBS extern_carve)
188         endif()
189
190         if(WITH_GHOST_XDND)
191                 list(APPEND BLENDER_SORTED_LIBS extern_xdnd)
192         endif()
193
194         if(WITH_CODEC_QUICKTIME)
195                 list(APPEND BLENDER_SORTED_LIBS bf_quicktime)
196         endif()
197
198         if(WITH_CXX_GUARDEDALLOC)
199                 list(APPEND BLENDER_SORTED_LIBS bf_intern_guardedalloc_cpp)
200         endif()
201
202         foreach(SORTLIB ${BLENDER_SORTED_LIBS})
203                 set(REMLIB ${SORTLIB})
204                 foreach(SEARCHLIB ${BLENDER_LINK_LIBS})
205                         if(${SEARCHLIB} STREQUAL ${SORTLIB})
206                                 set(REMLIB "")
207                         endif()
208                 endforeach()
209                 if(REMLIB)
210                         # message(STATUS "Removing library ${REMLIB} from blenderplayer linking because: not configured")
211                         list(APPEND REM_MSG ${REMLIB})
212                         list(REMOVE_ITEM BLENDER_SORTED_LIBS ${REMLIB})
213                 endif()
214         endforeach()
215         if(REM_MSG)
216                 list(SORT REM_MSG)
217                 message(STATUS "Player Skipping: (${REM_MSG})")
218         endif()
219         target_link_libraries(blenderplayer ${BLENDER_SORTED_LIBS})
220
221         unset(SEARCHLIB)
222         unset(SORTLIB)
223         unset(REMLIB)
224         unset(REM_MSG)
225
226 # else()
227 #       target_link_libraries(blenderplayer ${BLENDER_LINK_LIBS})
228 # endif()
229
230 if(WITH_PLAYER)
231         add_subdirectory(bad_level_call_stubs)
232 endif()
233
234 setup_liblinks(blenderplayer)