|
23 | 23 | # ****************************************************************************/
|
24 | 24 |
|
25 | 25 | cmake_minimum_required(VERSION 2.8)
|
26 |
| -project (Cocos2djs) |
| 26 | +project (Cocos2d-JS) |
27 | 27 |
|
28 | 28 | # The version number
|
29 |
| -#set(Cocos2djsSamples_VERSION_MAJOR 3) |
30 |
| -#set(Cocos2djsSamples_VERSION_MINOR 0) |
31 |
| - |
32 |
| -include(frameworks/js-bindings/cocos2d-x/cmake/BuildHelpers.CMakeLists.txt) |
| 29 | +set(Cocos2d_JS_Samples_VERSION_MAJOR 3) |
| 30 | +set(Cocos2d_JS_Samples_VERSION_MINOR 2) |
33 | 31 |
|
| 32 | +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/cmake/Modules/") |
| 33 | +include(CocosBuildHelpers) |
34 | 34 |
|
35 | 35 | option(USE_CHIPMUNK "Use chipmunk for physics library" ON)
|
36 | 36 | option(USE_BOX2D "Use box2d for physics library" OFF)
|
37 | 37 | option(DEBUG_MODE "Debug or release?" ON)
|
38 |
| -option(BUILD_LIBS_LUA "Build lua libraries" ON) |
39 | 38 | option(BUILD_EXTENSIONS "Build extension library" ON)
|
40 | 39 | option(BUILD_EDITOR_SPINE "Build editor support for spine" ON)
|
41 | 40 | option(BUILD_EDITOR_COCOSTUDIO "Build editor support for cocostudio" ON)
|
42 | 41 | option(BUILD_EDITOR_COCOSBUILDER "Build editor support for cocosbuilder" ON)
|
| 42 | +option(USE_PREBUILT_LIBS "Use prebuilt libraries in external directory" ON) |
43 | 43 |
|
44 | 44 | option(BUILD_JSTests "build TestJS sample" ON)
|
45 | 45 | option(BUILD_JSMOONWARRIORS "build MoonWarriors sample" ON)
|
@@ -70,7 +70,7 @@ elseif(APPLE)
|
70 | 70 |
|
71 | 71 |
|
72 | 72 | else()#Linux
|
73 |
| -ADD_DEFINITIONS(-DLINUX) |
| 73 | +ADD_DEFINITIONS(-DLINUX -DCC_RESOURCE_FOLDER_LINUX="/") |
74 | 74 | endif()
|
75 | 75 |
|
76 | 76 |
|
@@ -111,82 +111,159 @@ else() # Assume Linux
|
111 | 111 | set(PLATFORM_FOLDER linux)
|
112 | 112 | endif()
|
113 | 113 |
|
| 114 | +set(COCOS_EXTERNAL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external) |
| 115 | + |
| 116 | + |
114 | 117 | include_directories(
|
115 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x |
116 | 118 | ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/cocos
|
117 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/cocos/platform |
118 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/cocos/platform/desktop |
119 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/cocos/platform/${PLATFORM_FOLDER} |
120 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/cocos/audio/include |
121 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/cocos/editor-support |
122 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/cocos/scripting/lua-bindings/auto |
123 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/cocos/scripting/lua-bindings/manual |
| 119 | + ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/ |
| 120 | + ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/deprecated |
| 121 | + ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/cocos/platform |
124 | 122 | ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/extensions
|
125 | 123 | ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external
|
126 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/tinyxml2 |
127 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/unzip |
128 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/edtaa3func |
129 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/chipmunk/include/chipmunk |
130 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/jpeg/include/${PLATFORM_FOLDER} |
131 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/png/include/${PLATFORM_FOLDER} |
132 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/tiff/include/${PLATFORM_FOLDER} |
133 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/webp/include/${PLATFORM_FOLDER} |
134 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/glfw3/include/${PLATFORM_FOLDER} |
135 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/freetype2/include/${PLATFORM_FOLDER} |
136 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/websockets/include/${PLATFORM_FOLDER} |
137 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/xxhash |
138 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/external/spidermonkey/include/${PLATFORM_FOLDER} |
139 | 124 | )
|
140 | 125 |
|
141 |
| -if(WIN32) |
142 |
| - include_directories( |
143 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/${PLATFORM_FOLDER}-specific/gles/include/OGLES |
144 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/${PLATFORM_FOLDER}-specific/icon/include |
145 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/${PLATFORM_FOLDER}-specific/zlib/include |
146 |
| - external/curl/include/${PLATFORM_FOLDER} |
147 |
| - ) |
148 |
| -elseif(APPLE) |
149 |
| - include_directories( |
150 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/curl/include/${PLATFORM_FOLDER} |
151 |
| - ) |
152 |
| -else() |
153 |
| - include_directories( |
154 |
| - /usr/include |
155 |
| - /usr/include/GLFW |
156 |
| - /usr/local/include/GLFW |
157 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/${PLATFORM_FOLDER}-specific/fmod/include/${ARCH_DIR} |
158 |
| - ) |
| 126 | +if(USE_PREBUILT_LIBS) |
| 127 | + include(CocosUsePrebuiltLibs) |
159 | 128 | endif()
|
160 | 129 |
|
| 130 | +# GLFW3 used on Mac, Windows and Linux desktop platforms |
| 131 | +if(LINUX OR MACOSX OR WINDOWS) |
| 132 | + cocos_find_package(OpenGL OPENGL REQUIRED) |
161 | 133 |
|
| 134 | + if(LINUX OR WINDOWS) |
| 135 | + cocos_find_package(GLEW GLEW REQUIRED) |
| 136 | + endif() |
162 | 137 |
|
| 138 | + cocos_find_package(GLFW3 GLFW3 REQUIRED) |
| 139 | + include_directories(${GLFW3_INCLUDE_DIRS}) |
163 | 140 |
|
164 |
| -link_directories( |
165 |
| - /usr/local/lib |
166 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/chipmunk/prebuilt/${PLATFORM_FOLDER}/${ARCH_DIR} |
167 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/jpeg/prebuilt/${PLATFORM_FOLDER}/${ARCH_DIR} |
168 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/tiff/prebuilt/${PLATFORM_FOLDER}/${ARCH_DIR} |
169 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/webp/prebuilt/${PLATFORM_FOLDER}/${ARCH_DIR} |
170 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/png/prebuilt/${PLATFORM_FOLDER}/${ARCH_DIR} |
171 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/freetype2/prebuilt/${PLATFORM_FOLDER}/${ARCH_DIR} |
172 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/websockets/prebuilt/${PLATFORM_FOLDER}/${ARCH_DIR} |
173 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/${PLATFORM_FOLDER}-specific/fmod/prebuilt/${ARCH_DIR} |
174 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/external/spidermonkey/prebuilt/${PLATFORM_FOLDER}/${ARCH_DIR} |
175 |
| -) |
| 141 | + if(LINUX) |
| 142 | + set(CMAKE_THREAD_PREFER_PTHREAD TRUE) |
| 143 | + find_package(Threads REQUIRED) |
| 144 | + set(THREADS_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) |
| 145 | + |
| 146 | + #cocos_find_package(FMODEX FMODEX REQUIRED) |
| 147 | + cocos_find_package(Fontconfig FONTCONFIG REQUIRED) |
| 148 | + endif() |
| 149 | + |
| 150 | + if(WINDOWS) |
| 151 | + cocos_find_package(Vorbis VORBIS REQUIRED) |
| 152 | + cocos_find_package(MPG123 MPG123 REQUIRED) |
| 153 | + cocos_find_package(OpenAL OPENAL REQUIRED) |
| 154 | + # because FindOpenAL.cmake set include dir for '#include <al.h>' for portability (not for '#include <AL/al.h>' |
| 155 | + set(OPENAL_DEFINITIONS "-DOPENAL_PLAIN_INCLUDES") |
| 156 | + endif() |
| 157 | +endif(LINUX OR MACOSX OR WINDOWS) |
176 | 158 |
|
| 159 | +# Freetype required on all platforms |
| 160 | +cocos_find_package(Freetype FREETYPE REQUIRED) |
| 161 | + |
| 162 | +# WebP required if used |
| 163 | +if(USE_WEBP) |
| 164 | + cocos_find_package(WebP WEBP REQUIRED) |
| 165 | +endif(USE_WEBP) |
| 166 | + |
| 167 | +# Chipmunk |
| 168 | +if(USE_CHIPMUNK) |
| 169 | + cocos_find_package(Chipmunk CHIPMUNK REQUIRED) |
| 170 | + add_definitions(-DCC_ENABLE_CHIPMUNK_INTEGRATION=1) |
| 171 | + if(IOS OR MACOSX) |
| 172 | + # without this chipmunk will try to use apple defined geometry types, that conflicts with cocos |
| 173 | + add_definitions(-DCP_USE_CGPOINTS=0) |
| 174 | + endif() |
| 175 | +else(USE_CHIPMUNK) |
| 176 | + add_definitions(-DCC_USE_PHYSICS=0) |
| 177 | +endif(USE_CHIPMUNK) |
| 178 | + |
| 179 | +# Box2d (not prebuilded, exists as source) |
| 180 | +if(USE_BOX2D) |
| 181 | + if(USE_PREBUILT_LIBS) |
| 182 | + add_subdirectory(frameworks/js-bindings/cocos2d-x/external/Box2D) |
| 183 | + set(Box2D_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/box2d/include) |
| 184 | + set(Box2D_LIBRARIES box2d) |
| 185 | + else() |
| 186 | + find_package(Box2D REQUIRED CONFIG) |
| 187 | + # actually Box2D in next line is not a library, it is target exported from Box2DConfig.cmake |
| 188 | + set(Box2D_LIBRARIES Box2D) |
| 189 | + endif() |
| 190 | + message(STATUS "Box2D include dirs: ${Box2D_INCLUDE_DIRS}") |
| 191 | + add_definitions(-DCC_ENABLE_BOX2D_INTEGRATION=1) |
| 192 | +else() |
| 193 | + add_definitions(-DCC_ENABLE_BOX2D_INTEGRATION=0) |
| 194 | +endif(USE_BOX2D) |
| 195 | + |
| 196 | +# Tinyxml2 (not prebuilded, exists as source) |
| 197 | +if(USE_PREBUILT_LIBS) |
| 198 | + add_subdirectory(frameworks/js-bindings/cocos2d-x/external/tinyxml2) |
| 199 | + set(TinyXML2_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/tinyxml2) |
| 200 | + set(TinyXML2_LIBRARIES tinyxml2) |
| 201 | +else() |
| 202 | + cocos_find_package(TinyXML2 TinyXML2 REQUIRED) |
| 203 | +endif() |
| 204 | +message(STATUS "TinyXML2 include dirs: ${TinyXML2_INCLUDE_DIRS}") |
| 205 | + |
| 206 | +# libjpeg |
| 207 | +cocos_find_package(JPEG JPEG REQUIRED) |
| 208 | +cocos_find_package(ZLIB ZLIB REQUIRED) |
| 209 | + |
| 210 | +# minizip (we try to migrate to minizip from https://github.com/nmoinvaz/minizip) |
| 211 | +# only msys2 currently provides package for this variant, all other |
| 212 | +# dists have packages from zlib, thats very old for us. |
| 213 | +# moreover our embedded version modified to quick provide |
| 214 | +# functionality needed by cocos. |
| 215 | +if(USE_PREBUILT_LIBS OR NOT MINGW) |
| 216 | + add_subdirectory(frameworks/js-bindings/cocos2d-x/external/unzip) |
| 217 | + set(MINIZIP_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/unzip) |
| 218 | + set(MINIZIP_LIBRARIES unzip) |
| 219 | + message(STATUS "MINIZIP include dirs: ${MINIZIP_INCLUDE_DIRS}") |
| 220 | +else() |
| 221 | + cocos_find_package(MINIZIP MINIZIP REQUIRED) |
| 222 | + # double check that we have needed functions |
| 223 | + include(CheckLibraryExists) |
| 224 | + check_library_exists(${MINIZIP_LIBRARIES} "unzGoToFirstFile2" "" MINIZIP_HAS_GOTOFIRSTFILE2) |
| 225 | + if(NOT MINIZIP_HAS_GOTOFIRSTFILE2) |
| 226 | + message(FATAL_ERROR "Minizip library on you system very old. Please use recent version from https://github.com/nmoinvaz/minizip or enable USE_PREBUILT_LIBS") |
| 227 | + endif() |
| 228 | + add_definitions(-DMINIZIP_FROM_SYSTEM) |
| 229 | +endif() |
| 230 | + |
| 231 | +cocos_find_package(PNG PNG REQUIRED) |
| 232 | +cocos_find_package(TIFF TIFF REQUIRED) |
| 233 | +cocos_find_package(WEBSOCKETS WEBSOCKETS REQUIRED) |
| 234 | +cocos_find_package(CURL CURL REQUIRED) |
| 235 | + |
| 236 | +# protobuf-lite (not prebuilded, exists as source) |
| 237 | +# TODO: for now we can't use upstream protobuf because these files: |
| 238 | +# cocos/editor-support/cocostudio/CSParseBinary.pb.h |
| 239 | +# cocos/editor-support/cocostudio/CSParseBinary.pb.cc |
| 240 | +# was generated by concrete version of protobuf compiler |
| 241 | +# and source file not provided. So these files can be |
| 242 | +# compiled only with our in-source version of protobuf-lite |
| 243 | +## if(USE_PREBUILT_LIBS) |
| 244 | + add_subdirectory(frameworks/js-bindings/cocos2d-x/external/protobuf-lite) |
| 245 | + set(PROTOBUF_LITE_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/cocos2d-x/external/protobuf-lite/src) |
| 246 | + set(PROTOBUF_LITE_LIBRARIES protobuf) |
| 247 | +## else() |
| 248 | +## cocos_find_package(Protobuf REQUIRED PROTOBUF_LITE_LIBRARIES) |
| 249 | +## set(PROTOBUF_LITE_INCLUDE_DIRS ${PROTOBUF_INCLUDE_DIRS}) |
| 250 | +## endif() |
| 251 | +message(STATUS "Protobuf lite libs: ${PROTOBUF_LITE_LIBRARIES}") |
| 252 | +message(STATUS "Protobuf include dirs: ${PROTOBUF_LITE_INCLUDE_DIRS}") |
177 | 253 |
|
178 | 254 | # build for 3rd party libraries
|
179 | 255 | if(LINUX OR APPLE)
|
180 |
| -add_subdirectory(frameworks/js-bindings/cocos2d-x/external/Box2D) |
181 |
| -add_subdirectory(frameworks/js-bindings/cocos2d-x/external/unzip) |
182 | 256 | add_subdirectory(frameworks/js-bindings/cocos2d-x/external/xxhash)
|
183 |
| -add_subdirectory(frameworks/js-bindings/cocos2d-x/external/tinyxml2) |
184 |
| -add_subdirectory(frameworks/js-bindings/cocos2d-x/external/protobuf-lite) |
185 | 257 | endif()
|
186 | 258 |
|
187 | 259 | # cocos2d library
|
188 | 260 | add_subdirectory(frameworks/js-bindings/cocos2d-x/cocos)
|
189 | 261 |
|
| 262 | +link_directories( |
| 263 | + /usr/local/lib |
| 264 | + ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/js-bindings/external/spidermonkey/prebuilt/${PLATFORM_FOLDER}/${ARCH_DIR} |
| 265 | +) |
| 266 | + |
190 | 267 | # jsbindings library
|
191 | 268 | add_subdirectory(frameworks/js-bindings/bindings)
|
192 | 269 |
|
|
0 commit comments