Skip to content

Commit cc5cff0

Browse files
committed
Merge commit 'f75172b42b6b4486352e5d51eade779f641c7c1a' into scgamex-v3
STEVE: merged with some of my changes * commit 'f75172b42b6b4486352e5d51eade779f641c7c1a': [ci skip][AUTO]: updating luabinding & jsbinding & cocos_file.json automatically (cocos2d#18687) Support Belarusian language (cocos2d#18658) Fix warning for converting int to float (cocos2d#18672) V3 android cmake support, add mac/ios support (cocos2d#18646) # Conflicts: # .gitignore # cocos/editor-support/spine/CMakeLists.txt # cocos/platform/android/CCApplication-android.cpp # cocos/platform/android/libcocos2dx/build.gradle
2 parents 3045940 + f75172b commit cc5cff0

File tree

84 files changed

+2561
-1575
lines changed

Some content is hidden

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

84 files changed

+2561
-1575
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,3 +157,9 @@ tests/lua-tests/project/proj.tizen/res/
157157
prebuilt-20150920
158158
.d
159159
android-backup.zip
160+
161+
# Ignore vscode folder
162+
.vscode/
163+
164+
# Ignore static libraries
165+
*.a

CMakeLists.txt

Lines changed: 18 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -24,108 +24,29 @@
2424
# THE SOFTWARE.
2525
# ****************************************************************************/
2626

27-
cmake_minimum_required(VERSION 3.1)
28-
# It ensures that when Find*.cmake files included from cmake's Modules dir
29-
# include another *.cmake file with relative path, that file will be included
30-
# also from cmake's Modules dir, to not clash with per-project files.
31-
cmake_policy(SET CMP0017 NEW)
32-
33-
# Use new behaviour with cmake >= 3.1:
34-
# Only interpret if() arguments as variables or keywords when unquoted.
35-
if(CMAKE_VERSION VERSION_GREATER 3.1)
36-
cmake_policy(SET CMP0054 NEW)
37-
endif()
38-
39-
project (Cocos2d-X)
40-
41-
# The version number
42-
set(COCOS2D_X_VERSION 3.13)
43-
44-
# define some variables
45-
46-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/Modules/")
47-
set(COCOS_EXTERNAL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external)
48-
# architecture
49-
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
50-
set(ARCH_DIR "64-bit")
51-
elseif (CMAKE_SIZEOF_VOID_P EQUAL 4)
52-
set(ARCH_DIR "32-bit")
53-
else()
54-
message(FATAL_ERROR "Unsupported architecture, CMake will exit")
55-
return()
56-
endif()
57-
# CMAKE_BUILD_TYPE has precedence over DEBUG_MODE
58-
# Still supporting DEBUG_MODE for backwards compatibility
59-
if (NOT CMAKE_BUILD_TYPE)
60-
if(DEBUG_MODE)
61-
set(CMAKE_BUILD_TYPE DEBUG)
62-
else(DEBUG_MODE)
63-
set(CMAKE_BUILD_TYPE RELEASE)
64-
endif(DEBUG_MODE)
65-
endif(NOT CMAKE_BUILD_TYPE)
66-
67-
include(CocosBuildHelpers)
68-
69-
message(${BUILDING_STRING})
27+
# build engine library and all tests
7028

71-
# SelectModule() is a macro to select building modules
72-
include(SelectModule)
73-
SelectModule()
74-
75-
# set compiler options
76-
include(SetCompilerOptions)
77-
SetCompilerOptions()
78-
79-
if (CMAKE_FIND_ROOT_PATH AND USE_PREBUILT_LIBS)
80-
# Adds cocos2d-x external folder to the list of valid include/library paths when cross-compiling and using prebuilds
81-
set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${COCOS_EXTERNAL_DIR})
82-
endif ()
83-
84-
include_directories(
85-
${CMAKE_CURRENT_SOURCE_DIR}
86-
${CMAKE_CURRENT_SOURCE_DIR}/cocos
87-
${CMAKE_CURRENT_SOURCE_DIR}/deprecated
88-
${CMAKE_CURRENT_SOURCE_DIR}/cocos/platform
89-
${CMAKE_CURRENT_SOURCE_DIR}/extensions
90-
${CMAKE_CURRENT_SOURCE_DIR}/external
91-
)
92-
93-
if(USE_PREBUILT_LIBS)
94-
include(CocosUsePrebuiltLibs)
95-
endif()
96-
97-
include(BuildModules)
98-
BuildModules()
99-
100-
# build cpp-empty-test
101-
if(BUILD_CPP_EMPTY_TEST)
102-
add_subdirectory(tests/cpp-empty-test)
103-
endif(BUILD_CPP_EMPTY_TEST)
29+
cmake_minimum_required(VERSION 3.1)
10430

105-
# build cpp-tests
106-
if(BUILD_CPP_TESTS)
107-
add_subdirectory(tests/cpp-tests)
108-
endif(BUILD_CPP_TESTS)
31+
project(Cocos2d-x)
10932

110-
## Scripting
111-
if(BUILD_LUA_LIBS)
112-
add_subdirectory(cocos/scripting/lua-bindings)
33+
# cocos2dx root path
34+
set(COCOS2DX_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})
35+
set(CMAKE_MODULE_PATH ${COCOS2DX_ROOT_PATH}/cmake/Modules/)
11336

114-
# build lua tests
115-
if(BUILD_LUA_TESTS)
116-
add_subdirectory(tests/lua-tests/project)
117-
add_subdirectory(tests/lua-empty-test/project)
118-
endif(BUILD_LUA_TESTS)
37+
# works before build libcocos2d
38+
include(CocosBuildSet)
39+
CocosBuildSet()
11940

120-
endif(BUILD_LUA_LIBS)
41+
# TODO: use cocos prebuilt library
42+
if(USE_COCOS_PREBUILT_LIBS)
43+
# use prebuilt library, not build
44+
else(USE_COCOS_PREBUILT_LIBS)
45+
# build engine library
46+
add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos ${ENGINE_BINARY_PATH}/cocos/core)
12147

122-
## JS
123-
if(BUILD_JS_LIBS)
124-
add_subdirectory(cocos/scripting/js-bindings)
48+
# build engine all tests project
49+
add_subdirectory(${COCOS2DX_ROOT_PATH}/tests ${ENGINE_BINARY_PATH}/tests)
12550

126-
# build js tests
127-
if(BUILD_JS_TESTS)
128-
add_subdirectory(tests/js-tests/project)
129-
endif(BUILD_JS_TESTS)
51+
endif(USE_COCOS_PREBUILT_LIBS)
13052

131-
endif(BUILD_JS_LIBS)

README.cmake

Lines changed: 0 additions & 40 deletions
This file was deleted.

cmake/Modules/BuildModules.cmake

Lines changed: 97 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,19 @@
11
macro (BuildModules)
2+
3+
# header files third libiary needed, such as tinyxml2.h
4+
include_directories(
5+
${COCOS2DX_ROOT_PATH}
6+
${COCOS2DX_ROOT_PATH}/cocos
7+
${COCOS2DX_ROOT_PATH}/deprecated
8+
${COCOS2DX_ROOT_PATH}/cocos/platform
9+
${COCOS2DX_ROOT_PATH}/extensions
10+
${COCOS2DX_ROOT_PATH}/external
11+
)
12+
213
# desktop platforms
314
if(LINUX OR MACOSX OR WINDOWS)
4-
cocos_find_package(OpenGL OPENGL REQUIRED)
15+
cocos_find_package(OpenGL OPENGL REQUIRED)
16+
cocos_find_package(SQLite3 SQLITE3 REQUIRED)
517

618
if(LINUX OR WINDOWS)
719
cocos_find_package(GLEW GLEW REQUIRED)
@@ -17,7 +29,6 @@ macro (BuildModules)
1729
find_package(Threads REQUIRED)
1830
set(THREADS_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
1931

20-
cocos_find_package(SQLite3 SQLITE3 REQUIRED)
2132
cocos_find_package(FMOD FMOD REQUIRED)
2233
cocos_find_package(Fontconfig FONTCONFIG REQUIRED)
2334
cocos_find_package(GTK3 GTK3 REQUIRED)
@@ -42,100 +53,150 @@ macro (BuildModules)
4253

4354
# Chipmunk
4455
if(USE_CHIPMUNK)
45-
if(USE_PREBUILT_LIBS)
46-
cocos_find_package(Chipmunk CHIPMUNK REQUIRED)
47-
endif()
56+
cocos_find_package(Chipmunk CHIPMUNK REQUIRED)
57+
add_definitions(-DCC_ENABLE_CHIPMUNK_INTEGRATION=1)
58+
else(USE_CHIPMUNK)
59+
add_definitions(-DCC_USE_PHYSICS=0)
4860
endif(USE_CHIPMUNK)
4961

5062
# Box2d
5163
if(USE_BOX2D)
52-
if(USE_PREBUILT_LIBS)
64+
if(USE_EXTERNAL_PREBUILT_LIBS)
5365
cocos_find_package(box2d Box2D REQUIRED)
54-
endif(USE_PREBUILT_LIBS)
66+
endif(USE_EXTERNAL_PREBUILT_LIBS)
5567
message(STATUS "Box2D include dirs: ${Box2D_INCLUDE_DIRS}")
68+
add_definitions(-DCC_ENABLE_BOX2D_INTEGRATION=1)
69+
elseif(BUILD_BOX2D)
70+
add_subdirectory(${COCOS2DX_ROOT_PATH}/external/Box2D ${ENGINE_BINARY_PATH}/external/Box2D)
71+
add_definitions(-DCC_ENABLE_BOX2D_INTEGRATION=1)
72+
else()
73+
add_definitions(-DCC_ENABLE_BOX2D_INTEGRATION=0)
5674
endif(USE_BOX2D)
5775

5876
# Bullet
5977
if(USE_BULLET)
60-
if(USE_PREBUILT_LIBS)
78+
if(USE_EXTERNAL_PREBUILT_LIBS)
6179
cocos_find_package(bullet BULLET REQUIRED)
6280
endif()
81+
add_definitions(-DCC_ENABLE_BULLET_INTEGRATION=1)
82+
add_definitions(-DCC_USE_PHYSICS=1)
6383
message(STATUS "Bullet include dirs: ${BULLET_INCLUDE_DIRS}")
84+
else(USE_BULLET)
85+
add_definitions(-DCC_ENABLE_BULLET_INTEGRATION=0)
86+
add_definitions(-DCC_USE_3D_PHYSICS=0)
6487
endif(USE_BULLET)
6588

6689
# Recast (not prebuilded, exists as source)
6790
if(USE_RECAST)
68-
if(USE_PREBUILT_LIBS OR USE_SOURCES_EXTERNAL)
69-
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/recast)
70-
set(RECAST_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external/recast)
91+
if(USE_EXTERNAL_PREBUILT_LIBS OR USE_SOURCES_EXTERNAL)
92+
add_subdirectory(${COCOS2DX_ROOT_PATH}/external/recast ${ENGINE_BINARY_PATH}/external/recast)
93+
set(RECAST_INCLUDE_DIRS ${COCOS2DX_ROOT_PATH}/external/recast)
7194
set(RECAST_LIBRARIES recast)
7295
else()
7396
cocos_find_package(recast RECAST REQUIRED)
7497
set(RECAST_LIBRARIES recast)
7598
endif()
7699
message(STATUS "Recast include dirs: ${RECAST_INCLUDE_DIRS}")
100+
add_definitions(-DCC_USE_NAVMESH=1)
101+
else(USE_RECAST)
102+
add_definitions(-DCC_USE_NAVMESH=0)
77103
endif(USE_RECAST)
78104

79105
# Tinyxml2 (not prebuilded, exists as source)
80-
if(USE_PREBUILT_LIBS OR USE_SOURCES_EXTERNAL)
81-
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/tinyxml2)
82-
set(TinyXML2_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external/tinyxml2)
106+
if(USE_EXTERNAL_PREBUILT_LIBS OR USE_SOURCES_EXTERNAL)
107+
add_subdirectory(${COCOS2DX_ROOT_PATH}/external/tinyxml2 ${ENGINE_BINARY_PATH}/external/tinyxml2)
108+
set(TinyXML2_INCLUDE_DIRS ${COCOS2DX_ROOT_PATH}/external/tinyxml2)
83109
set(TinyXML2_LIBRARIES tinyxml2)
84110
else()
85111
cocos_find_package(TinyXML2 TinyXML2 REQUIRED)
86112
endif()
87113
message(STATUS "TinyXML2 include dirs: ${TinyXML2_INCLUDE_DIRS}")
88114

89-
# libjpeg
90-
cocos_find_package(JPEG JPEG REQUIRED)
91-
cocos_find_package(ZLIB ZLIB REQUIRED)
115+
# need review
116+
if(NOT IOS)
117+
cocos_find_package(ZLIB ZLIB REQUIRED)
118+
endif()
119+
if(IOS)
120+
cocos_find_package(SQLite3 SQLITE3 REQUIRED)
121+
endif(IOS)
122+
123+
if(ANDROID)
124+
add_subdirectory(${COCOS2DX_ROOT_PATH}/external/android-specific/pvmp3dec ${ENGINE_BINARY_PATH}/external/android-specific/pvmp3dec)
125+
set(PVMP3DEC_INCLUDE_DIRS ${COCOS2DX_ROOT_PATH}/external/android-specific/pvmp3dec/include ${COCOS2DX_ROOT_PATH}/external/android-specific/pvmp3dec/src)
126+
set(PVMP3DEC_LIBRARIES pvmp3dec)
127+
message(STATUS "pvmp3dec include dirs: ${PVMP3DEC_INCLUDE_DIRS}")
128+
129+
add_subdirectory(${COCOS2DX_ROOT_PATH}/external/android-specific/tremolo ${ENGINE_BINARY_PATH}/external/android-specific/tremolo)
130+
set(TREMOLO_INCLUDE_DIRS ${COCOS2DX_ROOT_PATH}/external/android-specific/tremolo)
131+
set(TREMOLO_LIBRARIES tremolo)
132+
message(STATUS "Tremolo include dirs: ${TREMOLO_INCLUDE_DIRS}")
133+
endif()
92134

93135
# minizip (we try to migrate to minizip from https://github.com/nmoinvaz/minizip)
94136
# only msys2 currently provides package for this variant, all other
95137
# dists have packages from zlib, thats very old for us.
96138
# moreover our embedded version modified to quick provide
97139
# functionality needed by cocos.
98-
if(USE_PREBUILT_LIBS OR NOT MINGW)
140+
if(USE_EXTERNAL_PREBUILT_LIBS OR NOT MINGW OR USE_SOURCES_EXTERNAL)
99141
#TODO: hack! should be in external/unzip/CMakeLists.txt
100142
include_directories(${ZLIB_INCLUDE_DIRS})
101-
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/unzip)
102-
set(MINIZIP_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external/unzip ${ZLIB_INCLUDE_DIRS})
143+
add_subdirectory(${COCOS2DX_ROOT_PATH}/external/unzip ${ENGINE_BINARY_PATH}/external/unzip)
144+
set(MINIZIP_INCLUDE_DIRS ${COCOS2DX_ROOT_PATH}/external/unzip ${ZLIB_INCLUDE_DIRS})
103145
set(MINIZIP_LIBRARIES unzip ${ZLIB_LIBRARIES})
104146
message(STATUS "MINIZIP include dirs: ${MINIZIP_INCLUDE_DIRS}")
105147
else()
106148
cocos_find_package(MINIZIP MINIZIP REQUIRED)
107149
# double check that we have needed functions
108150
include(CheckLibraryExists)
109-
check_library_exists(${MINIZIP_LIBRARIES} "unzGoToFirstFile2" "" MINIZIP_HAS_GOTOFIRSTFILE2)
110-
if(NOT MINIZIP_HAS_GOTOFIRSTFILE2)
111-
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")
112-
return()
113-
endif()
151+
add_definitions(-DMINIZIP_FROM_SYSTEM)
114152
endif()
115-
116-
cocos_find_package(PNG PNG REQUIRED)
117-
cocos_find_package(TIFF TIFF REQUIRED)
153+
154+
# Jpeg
155+
if(USE_JPEG)
156+
cocos_find_package(JPEG JPEG REQUIRED)
157+
add_definitions(-DCC_USE_JPEG=1)
158+
else(USE_JPEG)
159+
add_definitions(-DCC_USE_JPEG=0)
160+
endif(USE_JPEG)
161+
162+
# Tiff
163+
if(USE_TIFF)
164+
cocos_find_package(TIFF TIFF REQUIRED)
165+
add_definitions(-DCC_USE_TIFF=1)
166+
else(USE_TIFF)
167+
add_definitions(-DCC_USE_TIFF=0)
168+
endif(USE_TIFF)
169+
170+
# Png
171+
if(USE_PNG)
172+
cocos_find_package(PNG PNG REQUIRED)
173+
add_definitions(-DCC_USE_PNG=1)
174+
else(USE_PNG)
175+
add_definitions(-DCC_USE_PNG=0)
176+
endif(USE_PNG)
177+
118178
cocos_find_package(WEBSOCKETS WEBSOCKETS REQUIRED)
119179
cocos_find_package(CURL CURL REQUIRED)
180+
if(NOT USE_EXTERNAL_PREBUILT_LIBS)
181+
cocos_find_package(OpenSSL OPENSSL REQUIRED)
182+
endif()
120183

121184
# flatbuffers
122-
if(USE_PREBUILT_LIBS OR USE_SOURCES_EXTERNAL)
123-
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/flatbuffers)
124-
set(FLATBUFFERS_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external)
185+
if(USE_EXTERNAL_PREBUILT_LIBS OR USE_SOURCES_EXTERNAL)
186+
add_subdirectory(${COCOS2DX_ROOT_PATH}/external/flatbuffers ${ENGINE_BINARY_PATH}/external/flatbuffers)
187+
set(FLATBUFFERS_INCLUDE_DIRS ${COCOS2DX_ROOT_PATH}/external)
125188
message(STATUS "Flatbuffers include dirs: ${FLATBUFFERS_INCLUDE_DIRS}")
126189
else()
127190
cocos_find_package(flatbuffers flatbuffers REQUIRED)
128191
endif()
129192

130193
# xxhash
131-
if(USE_PREBUILT_LIBS OR USE_SOURCES_EXTERNAL)
132-
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/xxhash)
133-
set(XXHASH_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external/xxhash)
194+
if(USE_EXTERNAL_PREBUILT_LIBS OR USE_SOURCES_EXTERNAL)
195+
add_subdirectory(${COCOS2DX_ROOT_PATH}/external/xxhash ${ENGINE_BINARY_PATH}/external/xxhash)
196+
set(XXHASH_INCLUDE_DIRS ${COCOS2DX_ROOT_PATH}/external/xxhash)
134197
set(XXHASH_LIBRARIES xxhash)
135198
else()
136199
cocos_find_package(xxhash xxhash REQUIRED)
137200
endif()
138201

139-
# libcocos2d.a
140-
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cocos)
141202
endmacro(BuildModules)

0 commit comments

Comments
 (0)