@@ -114,6 +114,9 @@ elseif(LINUX)
114
114
elseif (ANDROID )
115
115
ADD_DEFINITIONS (-DUSE_FILE32API )
116
116
set (PLATFORM_FOLDER android )
117
+ elseif (OHOS )
118
+ ADD_DEFINITIONS (-DUSE_FILE32API )
119
+ set (PLATFORM_FOLDER ohos )
117
120
else ()
118
121
message ( FATAL_ERROR "Unsupported platform, CMake will exit" )
119
122
endif ()
@@ -123,8 +126,13 @@ if(MINGW)
123
126
add_definitions (-D__SSIZE_T )
124
127
125
128
if (CLANG )
126
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-exceptions " )
127
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions " )
129
+ if (OHOS )
130
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fexceptions " )
131
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions " )
132
+ else ()
133
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-exceptions " )
134
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions " )
135
+ endif ()
128
136
endif ()
129
137
endif ()
130
138
@@ -180,15 +188,28 @@ if(LINUX OR MACOSX OR WINDOWS)
180
188
endif (LINUX OR MACOSX OR WINDOWS )
181
189
182
190
# Freetype required on all platforms
191
+ if (OHOS )
192
+ set (FREETYPE_INCLUDE_DIR_ft2build ${CMAKE_CURRENT_SOURCE_DIR} /external/freetype2/include/ohos )
193
+ set (FREETYPE_INCLUDE_DIR_freetype2 ${CMAKE_CURRENT_SOURCE_DIR} /external/freetype2/include/ohos/freetype2 )
194
+ set (FREETYPE_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR} /external/freetype2/prebuilt/ohos/libfreetype.a )
195
+ endif ()
183
196
cocos_find_package (Freetype FREETYPE REQUIRED )
184
197
185
198
# WebP required if used
186
199
if (USE_WEBP )
200
+ if (OHOS )
201
+ set (WEBP_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /external/webp/include/ohos )
202
+ set (WEBP_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR} /external/webp/prebuilt/ohos/libwebp.a )
203
+ endif ()
187
204
cocos_find_package (WebP WEBP REQUIRED )
188
205
endif (USE_WEBP )
189
206
190
207
# Chipmunk
191
208
if (USE_CHIPMUNK )
209
+ if (OHOS )
210
+ set (CHIPMUNK_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /external/chipmunk/include/chipmunk )
211
+ set (CHIPMUNK_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR} /external/chipmunk/prebuilt/ohos/libchipmunk.a )
212
+ endif ()
192
213
cocos_find_package (Chipmunk CHIPMUNK REQUIRED )
193
214
add_definitions (-DCC_ENABLE_CHIPMUNK_INTEGRATION=1 )
194
215
if (IOS OR MACOSX )
@@ -201,14 +222,25 @@ endif(USE_CHIPMUNK)
201
222
202
223
# Box2d (not prebuilded, exists as source)
203
224
if (USE_BOX2D )
204
- if (USE_PREBUILT_LIBS )
205
- add_subdirectory (external/Box2D )
225
+ if (OHOS )
226
+ if (NOT USE_PREBUILT_LIBS )
227
+ add_subdirectory (external/Box2D )
228
+ endif ()
206
229
set (Box2D_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} /external/box2d/include )
207
230
set (Box2D_LIBRARIES box2d )
208
- else ()
209
231
find_package (Box2D REQUIRED CONFIG )
210
232
# actually Box2D in next line is not a library, it is target exported from Box2DConfig.cmake
211
233
set (Box2D_LIBRARIES Box2D )
234
+ else ()
235
+ if (USE_PREBUILT_LIBS )
236
+ add_subdirectory (external/Box2D )
237
+ set (Box2D_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} /external/box2d/include )
238
+ set (Box2D_LIBRARIES box2d )
239
+ else ()
240
+ find_package (Box2D REQUIRED CONFIG )
241
+ # actually Box2D in next line is not a library, it is target exported from Box2DConfig.cmake
242
+ set (Box2D_LIBRARIES Box2D )
243
+ endif ()
212
244
endif ()
213
245
message (STATUS "Box2D include dirs: ${Box2D_INCLUDE_DIRS} " )
214
246
add_definitions (-DCC_ENABLE_BOX2D_INTEGRATION=1 )
@@ -217,16 +249,27 @@ else()
217
249
endif (USE_BOX2D )
218
250
219
251
# Tinyxml2 (not prebuilded, exists as source)
220
- if (USE_PREBUILT_LIBS )
252
+ if (OHOS )
221
253
add_subdirectory (external/tinyxml2 )
222
- set (TinyXML2_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} /external/tinyxml2 )
223
- set (TinyXML2_LIBRARIES tinyxml2 )
224
- else ()
254
+ set (TinyXML2_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /external/tinyxml2 )
255
+ set (TinyXML2_LIBRARY tinyxml2 )
225
256
cocos_find_package (TinyXML2 TinyXML2 REQUIRED )
257
+ else ()
258
+ if (USE_PREBUILT_LIBS )
259
+ add_subdirectory (external/tinyxml2 )
260
+ set (TinyXML2_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} /external/tinyxml2 )
261
+ set (TinyXML2_LIBRARIES tinyxml2 )
262
+ else ()
263
+ cocos_find_package (TinyXML2 TinyXML2 REQUIRED )
264
+ endif ()
226
265
endif ()
227
266
message (STATUS "TinyXML2 include dirs: ${TinyXML2_INCLUDE_DIRS} " )
228
267
229
268
# libjpeg
269
+ if (OHOS )
270
+ set (JPEG_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /external/jpeg/include/ohos )
271
+ set (JPEG_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR} /external/jpeg/prebuilt/ohos/libjpeg.a )
272
+ endif ()
230
273
cocos_find_package (JPEG JPEG REQUIRED )
231
274
cocos_find_package (ZLIB ZLIB REQUIRED )
232
275
@@ -235,25 +278,71 @@ cocos_find_package(ZLIB ZLIB REQUIRED)
235
278
# dists have packages from zlib, thats very old for us.
236
279
# moreover our embedded version modified to quick provide
237
280
# functionality needed by cocos.
238
- if (USE_PREBUILT_LIBS OR NOT MINGW )
281
+ if (OHOS )
239
282
add_subdirectory (external/unzip )
240
- set (MINIZIP_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} /external/unzip )
241
- set (MINIZIP_LIBRARIES unzip )
283
+ set (MINIZIP_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /external/unzip )
284
+ set (MINIZIP_LIBRARY unzip )
242
285
message (STATUS "MINIZIP include dirs: ${MINIZIP_INCLUDE_DIRS} " )
243
- else ()
244
286
cocos_find_package (MINIZIP MINIZIP REQUIRED )
245
- # double check that we have needed functions
246
- include (CheckLibraryExists )
247
- check_library_exists (${MINIZIP_LIBRARIES} "unzGoToFirstFile2" "" MINIZIP_HAS_GOTOFIRSTFILE2 )
248
- if (NOT MINIZIP_HAS_GOTOFIRSTFILE2 )
249
- 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" )
287
+ else ()
288
+ if (USE_PREBUILT_LIBS OR NOT MINGW )
289
+ add_subdirectory (external/unzip )
290
+ set (MINIZIP_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} /external/unzip )
291
+ set (MINIZIP_LIBRARIES unzip )
292
+ message (STATUS "MINIZIP include dirs: ${MINIZIP_INCLUDE_DIRS} " )
293
+ else ()
294
+ cocos_find_package (MINIZIP MINIZIP REQUIRED )
295
+ # double check that we have needed functions
296
+ include (CheckLibraryExists )
297
+ check_library_exists (${MINIZIP_LIBRARIES} "unzGoToFirstFile2" "" MINIZIP_HAS_GOTOFIRSTFILE2 )
298
+ if (NOT MINIZIP_HAS_GOTOFIRSTFILE2 )
299
+ 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" )
300
+ endif ()
301
+ add_definitions (-DMINIZIP_FROM_SYSTEM )
250
302
endif ()
251
- add_definitions (-DMINIZIP_FROM_SYSTEM )
252
303
endif ()
253
304
305
+ if (OHOS )
306
+ set (PNG_PNG_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /external/png/include/ohos )
307
+ set (PNG_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR} /external/png/prebuilt/ohos/libpng.a )
308
+ endif ()
254
309
cocos_find_package (PNG PNG REQUIRED )
310
+
311
+ if (OHOS )
312
+ set (TIFF_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /external/tiff/include/ohos )
313
+ set (TIFF_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR} /external/tiff/prebuilt/ohos/libtiff.a )
314
+ endif ()
255
315
cocos_find_package (TIFF TIFF REQUIRED )
316
+
317
+ if (OHOS )
318
+ set (WEBSOCKETS_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /external/websockets/include/ohos )
319
+ set (WEBSOCKETS_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR} /external/websockets/prebuilt/ohos/libwebsockets.a )
320
+ endif ()
256
321
cocos_find_package (WEBSOCKETS WEBSOCKETS REQUIRED )
322
+
323
+ #openssl for web
324
+ if (OHOS )
325
+ set (OPENSSL_INCLUDE_DIR
326
+ ${CMAKE_CURRENT_SOURCE_DIR} /external/openssl
327
+ ${CMAKE_CURRENT_SOURCE_DIR} /external/openssl/include/ohos
328
+ ${CMAKE_CURRENT_SOURCE_DIR} /external/openssl/include/ohos/openssl
329
+ )
330
+ set (OPENSSL_LIBRARY
331
+ ${CMAKE_CURRENT_SOURCE_DIR} /external/openssl/prebuilt/ohos/libcrypto.a
332
+ ${CMAKE_CURRENT_SOURCE_DIR} /external/openssl/prebuilt/ohos/libssl.a
333
+ )
334
+ endif ()
335
+ cocos_find_package (OPENSSL OPENSSL REQUIRED )
336
+
337
+ if (OHOS )
338
+ set (CURL_INCLUDE_DIR
339
+ ${CMAKE_CURRENT_SOURCE_DIR} /external/curl
340
+ ${CMAKE_CURRENT_SOURCE_DIR} /external/curl/include
341
+ ${CMAKE_CURRENT_SOURCE_DIR} /external/curl/include/ohos
342
+ ${CMAKE_CURRENT_SOURCE_DIR} /external/curl/include/ohos/curl
343
+ )
344
+ set (CURL_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR} /external/curl/prebuilt/ohos/libcurl.a )
345
+ endif ()
257
346
cocos_find_package (CURL CURL REQUIRED )
258
347
259
348
add_subdirectory (external/flatbuffers )
@@ -262,16 +351,33 @@ message(STATUS "Flatbuffers include dirs: ${FLATBUFFERS_INCLUDE_DIRS}")
262
351
263
352
264
353
# build for 3rd party libraries
265
- if (LINUX OR APPLE )
266
- add_subdirectory (external/xxhash )
354
+ if (LINUX OR APPLE OR OHOS )
355
+ add_subdirectory (external/xxhash )
356
+ if (OHOS )
357
+ set (XXHASH_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} /external/xxhash )
358
+ set (XXHASH_LIBRARIES xxhash )
359
+ endif ()
360
+ endif ()
361
+
362
+ if (OHOS )
363
+ add_subdirectory (external/uv )
364
+ add_subdirectory (external/openssl )
365
+ add_subdirectory (external/lua/luasocket )
366
+ add_subdirectory (external/lua/luajit )
367
+ add_subdirectory (external/lua/tolua )
368
+ add_subdirectory (external/websockets )
369
+ add_subdirectory (external/ohos-specific/pvmp3dec )
370
+ add_subdirectory (external/ohos-specific/tremolo )
267
371
endif ()
268
372
269
373
# libcocos2d.a
270
374
add_subdirectory (cocos )
271
375
272
376
# build cpp tests
273
377
if (BUILD_CPP_TESTS )
274
- add_subdirectory (tests/cpp-empty-test )
378
+ if (!OHOS )
379
+ add_subdirectory (tests/cpp-empty-test )
380
+ endif ()
275
381
add_subdirectory (tests/cpp-tests )
276
382
endif (BUILD_CPP_TESTS )
277
383
@@ -282,7 +388,9 @@ if(BUILD_LUA_LIBS)
282
388
# build lua tests
283
389
if (BUILD_LUA_TESTS )
284
390
add_subdirectory (tests/lua-tests/project )
285
- add_subdirectory (tests/lua-empty-test/project )
391
+ if (!OHOS )
392
+ add_subdirectory (tests/lua-empty-test/project )
393
+ endif ()
286
394
endif (BUILD_LUA_TESTS )
287
395
288
396
endif (BUILD_LUA_LIBS )
0 commit comments