Skip to content

Commit 73b36d7

Browse files
authored
3.4 version OHOS adaptation (#20820)
* 3.4 version OHOS adaptation
1 parent 173578c commit 73b36d7

File tree

335 files changed

+30212
-239
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

335 files changed

+30212
-239
lines changed

.appveyor.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
version: 1.0.{build}
2+
skip_tags: true
3+
skip_branch_with_pr: true
4+
image:
5+
- Visual Studio 2015
6+
environment:
7+
PYTHON: "C:\\Python27"
8+
PYTHON_VERSION: "2.7.13"
9+
PYTHON_ARCH: "32"
10+
matrix:
11+
# - build_type: windows32_cmake_test
12+
# - build_type: windows32_sln_test
13+
# - build_type: android_lua_tests
14+
# - build_type: android_cocos_new_test
15+
# - build_type: android_cpp_empty_test
16+
# - build_type: android_gen_libs
17+
18+
19+
platform:
20+
- x86
21+
22+
configuration:
23+
- Release
24+
25+
26+
branches:
27+
except:
28+
- v1
29+
- v2
30+
- v4-develop
31+
- v3-doc
32+
- v3.11_backup
33+
- v35-for-tizen
34+
35+
clone_depth: 1
36+
37+
test: off

CMakeLists.txt

Lines changed: 131 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,9 @@ elseif(LINUX)
114114
elseif(ANDROID)
115115
ADD_DEFINITIONS (-DUSE_FILE32API)
116116
set(PLATFORM_FOLDER android)
117+
elseif(OHOS)
118+
ADD_DEFINITIONS (-DUSE_FILE32API)
119+
set(PLATFORM_FOLDER ohos)
117120
else()
118121
message( FATAL_ERROR "Unsupported platform, CMake will exit" )
119122
endif()
@@ -123,8 +126,13 @@ if(MINGW)
123126
add_definitions(-D__SSIZE_T)
124127

125128
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()
128136
endif()
129137
endif()
130138

@@ -180,15 +188,28 @@ if(LINUX OR MACOSX OR WINDOWS)
180188
endif(LINUX OR MACOSX OR WINDOWS)
181189

182190
# 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()
183196
cocos_find_package(Freetype FREETYPE REQUIRED)
184197

185198
# WebP required if used
186199
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()
187204
cocos_find_package(WebP WEBP REQUIRED)
188205
endif(USE_WEBP)
189206

190207
# Chipmunk
191208
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()
192213
cocos_find_package(Chipmunk CHIPMUNK REQUIRED)
193214
add_definitions(-DCC_ENABLE_CHIPMUNK_INTEGRATION=1)
194215
if(IOS OR MACOSX)
@@ -201,14 +222,25 @@ endif(USE_CHIPMUNK)
201222

202223
# Box2d (not prebuilded, exists as source)
203224
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()
206229
set(Box2D_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external/box2d/include)
207230
set(Box2D_LIBRARIES box2d)
208-
else()
209231
find_package(Box2D REQUIRED CONFIG)
210232
# actually Box2D in next line is not a library, it is target exported from Box2DConfig.cmake
211233
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()
212244
endif()
213245
message(STATUS "Box2D include dirs: ${Box2D_INCLUDE_DIRS}")
214246
add_definitions(-DCC_ENABLE_BOX2D_INTEGRATION=1)
@@ -217,16 +249,27 @@ else()
217249
endif(USE_BOX2D)
218250

219251
# Tinyxml2 (not prebuilded, exists as source)
220-
if(USE_PREBUILT_LIBS)
252+
if(OHOS)
221253
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)
225256
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()
226265
endif()
227266
message(STATUS "TinyXML2 include dirs: ${TinyXML2_INCLUDE_DIRS}")
228267

229268
# 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()
230273
cocos_find_package(JPEG JPEG REQUIRED)
231274
cocos_find_package(ZLIB ZLIB REQUIRED)
232275

@@ -235,25 +278,71 @@ cocos_find_package(ZLIB ZLIB REQUIRED)
235278
# dists have packages from zlib, thats very old for us.
236279
# moreover our embedded version modified to quick provide
237280
# functionality needed by cocos.
238-
if(USE_PREBUILT_LIBS OR NOT MINGW)
281+
if(OHOS)
239282
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)
242285
message(STATUS "MINIZIP include dirs: ${MINIZIP_INCLUDE_DIRS}")
243-
else()
244286
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)
250302
endif()
251-
add_definitions(-DMINIZIP_FROM_SYSTEM)
252303
endif()
253304

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()
254309
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()
255315
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()
256321
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()
257346
cocos_find_package(CURL CURL REQUIRED)
258347

259348
add_subdirectory(external/flatbuffers)
@@ -262,16 +351,33 @@ message(STATUS "Flatbuffers include dirs: ${FLATBUFFERS_INCLUDE_DIRS}")
262351

263352

264353
# 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)
267371
endif()
268372

269373
# libcocos2d.a
270374
add_subdirectory(cocos)
271375

272376
# build cpp tests
273377
if(BUILD_CPP_TESTS)
274-
add_subdirectory(tests/cpp-empty-test)
378+
if(!OHOS)
379+
add_subdirectory(tests/cpp-empty-test)
380+
endif()
275381
add_subdirectory(tests/cpp-tests)
276382
endif(BUILD_CPP_TESTS)
277383

@@ -282,7 +388,9 @@ if(BUILD_LUA_LIBS)
282388
# build lua tests
283389
if(BUILD_LUA_TESTS)
284390
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()
286394
endif(BUILD_LUA_TESTS)
287395

288396
endif(BUILD_LUA_LIBS)

cmake/Modules/CocosBuildHelpers.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ endfunction()
114114
#IOS = iOS
115115
#MACOSX = MacOS X
116116
#LINUX = Linux
117-
117+
#OHOS = OpenHarmonyOS
118118
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
119119
if(WINRT)
120120
set(SYSTEM_STRING "Windows RT")
@@ -139,6 +139,8 @@ elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
139139
set(APPLE TRUE)
140140
set(SYSTEM_STRING "Mac OSX")
141141
endif()
142+
elseif(OHOS)
143+
set(SYSTEM_STRING "HarmonyOS Next")
142144
endif()
143145

144146
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")

cocos/2d/CCLabel.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -935,7 +935,7 @@ void Label::createSpriteWithFontDefinition()
935935
void Label::setFontDefinition(const FontDefinition& textDefinition)
936936
{
937937
_fontDefinition = textDefinition;
938-
#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID) && (CC_TARGET_PLATFORM != CC_PLATFORM_IOS)
938+
#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID) && (CC_TARGET_PLATFORM != CC_PLATFORM_OHOS) && (CC_TARGET_PLATFORM != CC_PLATFORM_IOS)
939939
if (_fontDefinition._stroke._strokeEnabled)
940940
{
941941
CCLOGERROR("Currently only supported on iOS and Android!");
@@ -1013,7 +1013,7 @@ void Label::updateContent()
10131013
_fontDefinition._stroke._strokeEnabled = false;
10141014
}
10151015

1016-
#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID) && (CC_TARGET_PLATFORM != CC_PLATFORM_IOS)
1016+
#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID) && (CC_TARGET_PLATFORM != CC_PLATFORM_OHOS) && (CC_TARGET_PLATFORM != CC_PLATFORM_IOS)
10171017
if (_fontDefinition._stroke._strokeEnabled)
10181018
{
10191019
CCLOGERROR("Currently only supported on iOS and Android!");

0 commit comments

Comments
 (0)