From 98120fb9d876725c1b7975b74bfaccc26a655748 Mon Sep 17 00:00:00 2001 From: leda Date: Mon, 24 Sep 2018 20:16:04 -0700 Subject: [PATCH] refactor cmake on use libs (#19054) * link external build by modern cmake * use "--whole-archive" for part android spec * update travis * update CI, add cmake tests on win32 --- .appveyor.yml | 5 +- .travis.yml | 5 + CMakeLists.txt | 2 +- cmake/Modules/CocosBuildHelpers.cmake | 79 +---- cmake/Modules/CocosBuildModules.cmake | 208 ------------ cmake/Modules/CocosBuildSet.cmake | 14 +- cmake/Modules/CocosCompileOptions.cmake | 24 +- ...sUseLibs.cmake => CocosConfigDepend.cmake} | 144 +++----- cmake/Modules/CocosPickLibs.cmake | 319 ------------------ cocos/2d/CMakeLists.txt | 8 - cocos/CMakeLists.txt | 54 +-- cocos/cc_dummy.c | 27 -- cocos/platform/CMakeLists.txt | 80 +---- cocos/platform/android/CMakeLists.txt | 28 ++ cocos/scripting/js-bindings/CMakeLists.txt | 31 +- .../js-bindings/proj.android/CMakeLists.txt | 23 ++ cocos/scripting/lua-bindings/CMakeLists.txt | 88 +---- .../lua-bindings/proj.android/CMakeLists.txt | 26 ++ external/config.json | 2 +- templates/cocos2dx_files.json | 160 +++++---- templates/cpp-template-default/CMakeLists.txt | 30 +- templates/js-template-default/CMakeLists.txt | 25 +- templates/lua-template-default/CMakeLists.txt | 22 +- tests/cpp-empty-test/CMakeLists.txt | 21 +- tests/cpp-tests/CMakeLists.txt | 55 +-- tests/js-tests/project/CMakeLists.txt | 34 +- tests/lua-empty-test/project/CMakeLists.txt | 32 +- tests/lua-tests/project/CMakeLists.txt | 30 +- tools/appveyor-scripts/build.ps1 | 29 +- tools/travis-scripts/before-install.sh | 1 + tools/travis-scripts/run-script.sh | 103 ++++-- 31 files changed, 545 insertions(+), 1164 deletions(-) delete mode 100644 cmake/Modules/CocosBuildModules.cmake rename cmake/Modules/{CocosUseLibs.cmake => CocosConfigDepend.cmake} (51%) delete mode 100644 cmake/Modules/CocosPickLibs.cmake delete mode 100644 cocos/cc_dummy.c create mode 100644 cocos/platform/android/CMakeLists.txt create mode 100644 cocos/scripting/js-bindings/proj.android/CMakeLists.txt create mode 100644 cocos/scripting/lua-bindings/proj.android/CMakeLists.txt diff --git a/.appveyor.yml b/.appveyor.yml index ca90fd8595..a3834cec3d 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -8,9 +8,10 @@ environment: PYTHON_VERSION: "2.7.13" PYTHON_ARCH: "32" matrix: - - build_type: windows32_cocos_new_test - - build_type: windows32 + - build_type: windows32_cmake_test + - build_type: windows32_sln_test - build_type: android_cpp_tests + - build_type: android_lua_tests # - build_type: android_cocos_new_test # - build_type: android_cpp_empty_test # - build_type: android_gen_libs diff --git a/.travis.yml b/.travis.yml index a33fba2b1a..434feab6f0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -42,6 +42,11 @@ matrix: env: BUILD_TARGET=android_lua_cmake language: android sudo: required + # android_js cmake + - os: linux + env: BUILD_TARGET=android_js_cmake + language: android + sudo: required # mac - os: osx env: BUILD_TARGET=mac diff --git a/CMakeLists.txt b/CMakeLists.txt index c4257a222d..f379e71ece 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ # build engine library and all tests -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.6) project(Cocos2d-x) diff --git a/cmake/Modules/CocosBuildHelpers.cmake b/cmake/Modules/CocosBuildHelpers.cmake index 586e50d7a9..bc6fa009e8 100644 --- a/cmake/Modules/CocosBuildHelpers.cmake +++ b/cmake/Modules/CocosBuildHelpers.cmake @@ -78,7 +78,7 @@ function(get_target_depends_ext_dlls cocos_target all_depend_dlls_out) list(APPEND tmp_depend_libs ${tmp_target}) foreach(depend_lib ${tmp_depend_libs}) if(TARGET ${depend_lib}) - get_target_property(tmp_dlls ${depend_lib} DEPEND_DLLS) + get_target_property(tmp_dlls ${depend_lib} CC_DEPEND_DLLS) if(tmp_dlls) list(APPEND all_depend_ext_dlls ${tmp_dlls}) endif() @@ -103,7 +103,10 @@ function(cocos_copy_target_dll cocos_target) cmake_parse_arguments(opt "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) get_target_depends_ext_dlls(${cocos_target} all_depend_dlls) # remove repeat items - list(REMOVE_DUPLICATES all_depend_dlls) + if(all_depend_dlls) + list(REMOVE_DUPLICATES all_depend_dlls) + endif() + # todo, add a option to enable/disable debug print message(STATUS "prepare to copy external dlls for ${cocos_target}:${all_depend_dlls}") foreach(cc_dll_file ${all_depend_dlls}) get_filename_component(cc_dll_name ${cc_dll_file} NAME) @@ -188,34 +191,8 @@ function(source_group_single_file single_file) source_group("${ide_file_group}" FILES ${single_file}) endfunction() -# build a cocos application -# hrough compile the files `APP_SRC`, link the libs in `*LIBS`, use the packages in `*.PKGS` -# this method hide the link lib details, those is prebuilt libs or not -function(cocos_build_app app_name) - set(multiValueArgs - APP_SRC - DEPEND_COMMON_LIBS - DEPEND_ANDROID_LIBS - COMMON_USE_PKGS - LINUX_USE_PKGS - DEPEND_MACOSX_LIBS - DEPEND_WINDOWS_LIBS - ) - cmake_parse_arguments(opt "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - - if(ANDROID) - add_library(${app_name} SHARED ${opt_APP_SRC}) - foreach(android_lib ${opt_DEPEND_ANDROID_LIBS}) - if(USE_COCOS_PREBUILT) - target_link_libraries(${app_name} -Wl,-whole-archive "${${_${android_lib}_prefix}_LIBRARIES}" -Wl,-no-whole-archive) - else() - target_link_libraries(${app_name} -Wl,-whole-archive ${android_lib} -Wl,-no-whole-archive) - add_dependencies(${app_name} ${android_lib}) - endif() - endforeach() - else() - add_executable(${app_name} ${opt_APP_SRC}) - endif() +# setup a cocos application, include "APP_BIN_DIR", "APP_RES_DIR" config +function(setup_cocos_app_config app_name) # set target PROPERTIES, depend different platforms if(APPLE) set(APP_BIN_DIR "${CMAKE_BINARY_DIR}/bin") @@ -233,47 +210,13 @@ function(cocos_build_app app_name) endif() set_target_properties(${app_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${APP_BIN_DIR}") - if(MACOSX) - list(APPEND opt_DEPEND_COMMON_LIBS ${opt_DEPEND_MACOSX_LIBS}) - elseif(WINDOWS) - list(APPEND opt_DEPEND_COMMON_LIBS ${opt_DEPEND_WINDOWS_LIBS}) - endif() - # link commom libs, and common libs need external or system libs - if(USE_COCOS_PREBUILT) - include(CocosUseLibs) - foreach(common_lib ${opt_DEPEND_COMMON_LIBS}) - message(STATUS "${app_name} prepare to link engine lib: ${common_lib}") - cocos_use_pkg(${app_name} ${_${common_lib}_prefix}) - if(common_lib STREQUAL "cocos2d") - target_use_cocos2d_depend_libs(${app_name}) - elseif(common_lib STREQUAL "jscocos2d") - target_use_jscocos2d_depend_libs(${app_name}) - elseif(common_lib STREQUAL "luacocos2d") - target_use_luacocos2d_depend_libs(${app_name}) - elseif(common_lib STREQUAL "simulator") - target_use_simulator_depend_libs(${app_name}) - endif() - endforeach() - else() - foreach(common_lib ${opt_DEPEND_COMMON_LIBS}) - target_link_libraries(${app_name} ${common_lib}) - add_dependencies(${app_name} ${common_lib}) - endforeach() - endif() - - if(LINUX) - foreach(_pkg ${opt_LINUX_USE_PKGS}) - cocos_use_pkg(${app_name} ${_pkg}) - endforeach() - endif() - foreach(_pkg ${opt_COMMON_USE_PKGS}) - cocos_use_pkg(${app_name} ${_pkg}) - endforeach() # auto mark code files for IDE when mark app if(XCODE OR VS) cocos_mark_code_files(${APP_NAME}) endif() + # generate prebuilt auto when build app if GEN_COCOS_PREBUILT=ON + # tocheck, do we really need prebuilt cocos2dx libs? if(GEN_COCOS_PREBUILT) add_dependencies(${APP_NAME} prebuilt) endif() @@ -440,13 +383,13 @@ function(cocos_use_pkg target pkg) # message(STATUS "${target} add dll: ${_dlls}") get_property(pre_dlls TARGET ${target} - PROPERTY DEPEND_DLLS) + PROPERTY CC_DEPEND_DLLS) if(pre_dlls) set(_dlls ${pre_dlls} ${_dlls}) endif() set_property(TARGET ${target} PROPERTY - DEPEND_DLLS ${_dlls} + CC_DEPEND_DLLS ${_dlls} ) endif() endif() diff --git a/cmake/Modules/CocosBuildModules.cmake b/cmake/Modules/CocosBuildModules.cmake deleted file mode 100644 index ac6a50be8f..0000000000 --- a/cmake/Modules/CocosBuildModules.cmake +++ /dev/null @@ -1,208 +0,0 @@ - # header files third libiary needed, such as tinyxml2.h - include_directories( - ${COCOS2DX_ROOT_PATH} - ${COCOS2DX_ROOT_PATH}/cocos - ${COCOS2DX_ROOT_PATH}/deprecated - ${COCOS2DX_ROOT_PATH}/cocos/platform - ${COCOS2DX_ROOT_PATH}/extensions - ${COCOS2DX_ROOT_PATH}/external - ${COCOS2DX_ROOT_PATH}/external/uv/include - ) - - # desktop platforms - if(LINUX OR MACOSX OR WINDOWS) - cocos_find_package(OpenGL OPENGL REQUIRED) - cocos_find_package(SQLite3 SQLITE3 REQUIRED) - - if(LINUX OR WINDOWS) - cocos_find_package(GLEW GLEW REQUIRED) - include_directories(${GLEW_INCLUDE_DIRS}) - endif() - - cocos_find_package(GLFW3 GLFW3 REQUIRED) - include_directories(${GLFW3_INCLUDE_DIRS}) - - if(LINUX) - set(CMAKE_THREAD_PREFER_PTHREAD TRUE) - find_package(Threads REQUIRED) - set(THREADS_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) - - cocos_find_package(FMOD FMOD REQUIRED) - cocos_find_package(Fontconfig FONTCONFIG REQUIRED) - cocos_find_package(GTK3 GTK3 REQUIRED) - endif() - - if(WINDOWS) - cocos_find_package(Vorbis VORBIS REQUIRED) - cocos_find_package(MPG123 MPG123 REQUIRED) - cocos_find_package(OpenAL OPENAL REQUIRED) - # because FindOpenAL.cmake set include dir for '#include ' for portability (not for '#include ' - set(OPENAL_DEFINITIONS "-DOPENAL_PLAIN_INCLUDES") - endif() - endif(LINUX OR MACOSX OR WINDOWS) - - # Freetype required on all platforms - cocos_find_package(Freetype FREETYPE REQUIRED) - - # Recast (not prebuilded, exists as source) - if(USE_RECAST) - if(USE_EXTERNAL_PREBUILT) - set(_recast_prefix RECAST) - set(RECAST_INCLUDE_DIRS ${COCOS2DX_ROOT_PATH}/external/recast) - if(USE_COCOS_PREBUILT) - cocos_find_prebuilt_lib_by_name(recast RECAST_LIBRARIES) - else() - add_subdirectory(${COCOS2DX_ROOT_PATH}/external/recast ${ENGINE_BINARY_PATH}/external/recast) - set(RECAST_LIBRARIES recast) - endif() - else() - cocos_find_package(recast RECAST REQUIRED) - set(RECAST_LIBRARIES recast) - endif() - message(STATUS "Recast include dirs: ${RECAST_INCLUDE_DIRS}") - add_definitions(-DCC_USE_NAVMESH=1) - else(USE_RECAST) - add_definitions(-DCC_USE_NAVMESH=0) - endif(USE_RECAST) - - # Tinyxml2 (not prebuilded, exists as source) - if(USE_EXTERNAL_PREBUILT) - set(_tinyxml2_prefix TinyXML2) - set(TinyXML2_INCLUDE_DIRS ${COCOS2DX_ROOT_PATH}/external/tinyxml2) - if(USE_COCOS_PREBUILT) - cocos_find_prebuilt_lib_by_name(tinyxml2 TinyXML2_LIBRARIES) - else() - add_subdirectory(${COCOS2DX_ROOT_PATH}/external/tinyxml2 ${ENGINE_BINARY_PATH}/external/tinyxml2) - set(TinyXML2_LIBRARIES tinyxml2) - endif() - else() - cocos_find_package(TinyXML2 TinyXML2 REQUIRED) - endif() - message(STATUS "TinyXML2 include dirs: ${TinyXML2_INCLUDE_DIRS}") - - if(NOT IOS) - cocos_find_package(ZLIB ZLIB REQUIRED) - endif() - if(IOS) - cocos_find_package(SQLite3 SQLITE3 REQUIRED) - endif(IOS) - - if(ANDROID) - set(_pvmp3dec_prefix PVMP3DEC) - set(PVMP3DEC_INCLUDE_DIRS ${COCOS2DX_ROOT_PATH}/external/android-specific/pvmp3dec/include ${COCOS2DX_ROOT_PATH}/external/android-specific/pvmp3dec/src) - if(USE_COCOS_PREBUILT) - cocos_find_prebuilt_lib_by_name(pvmp3dec PVMP3DEC_LIBRARIES) - else() - add_subdirectory(${COCOS2DX_ROOT_PATH}/external/android-specific/pvmp3dec ${ENGINE_BINARY_PATH}/external/android-specific/pvmp3dec) - set(PVMP3DEC_LIBRARIES pvmp3dec) - endif() - message(STATUS "pvmp3dec include dirs: ${PVMP3DEC_INCLUDE_DIRS}") - - set(_tremolo_prefix TREMOLO) - set(TREMOLO_INCLUDE_DIRS ${COCOS2DX_ROOT_PATH}/external/android-specific/tremolo) - if(USE_COCOS_PREBUILT) - cocos_find_prebuilt_lib_by_name(tremolo TREMOLO_LIBRARIES) - else() - add_subdirectory(${COCOS2DX_ROOT_PATH}/external/android-specific/tremolo ${ENGINE_BINARY_PATH}/external/android-specific/tremolo) - set(TREMOLO_LIBRARIES tremolo) - endif() - message(STATUS "Tremolo include dirs: ${TREMOLO_INCLUDE_DIRS}") - - set(_cpufeatures_prefix CPUFEATURES) - if(USE_COCOS_PREBUILT) - cocos_find_prebuilt_lib_by_name(cpufeatures CPUFEATURES_LIBRARIES) - else() - include(AndroidNdkModules) - android_ndk_import_module_cpufeatures() - set_target_properties(cpufeatures - PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" - ) - set(CPUFEATURES_LIBRARIES cpufeatures) - endif() - endif() - - # minizip (we try to migrate to minizip from https://github.com/nmoinvaz/minizip) - # only msys2 currently provides package for this variant, all other - # dists have packages from zlib, thats very old for us. - # moreover our embedded version modified to quick provide - # functionality needed by cocos. - if(USE_EXTERNAL_PREBUILT) - set(_unzip_prefix MINIZIP) - include_directories(${ZLIB_INCLUDE_DIRS}) - set(MINIZIP_INCLUDE_DIRS ${COCOS2DX_ROOT_PATH}/external/unzip ${ZLIB_INCLUDE_DIRS}) - if(USE_COCOS_PREBUILT) - cocos_find_prebuilt_lib_by_name(unzip MINIZIP_LIBRARIES) - else() - add_subdirectory(${COCOS2DX_ROOT_PATH}/external/unzip ${ENGINE_BINARY_PATH}/external/unzip) - # set(MINIZIP_LIBRARIES unzip ${ZLIB_LIBRARIES}) - set(MINIZIP_LIBRARIES unzip) - endif() - message(STATUS "MINIZIP include dirs: ${MINIZIP_INCLUDE_DIRS}") - else() - cocos_find_package(MINIZIP MINIZIP REQUIRED) - # double check that we have needed functions - include(CheckLibraryExists) - add_definitions(-DMINIZIP_FROM_SYSTEM) - endif() - - # Jpeg - if(USE_JPEG) - cocos_find_package(JPEG JPEG REQUIRED) - add_definitions(-DCC_USE_JPEG=1) - else(USE_JPEG) - add_definitions(-DCC_USE_JPEG=0) - endif(USE_JPEG) - - # Tiff - if(USE_TIFF) - cocos_find_package(TIFF TIFF REQUIRED) - add_definitions(-DCC_USE_TIFF=1) - else(USE_TIFF) - add_definitions(-DCC_USE_TIFF=0) - endif(USE_TIFF) - - # Png - if(USE_PNG) - cocos_find_package(PNG PNG REQUIRED) - add_definitions(-DCC_USE_PNG=1) - else(USE_PNG) - add_definitions(-DCC_USE_PNG=0) - endif(USE_PNG) - - cocos_find_package(WEBSOCKETS WEBSOCKETS REQUIRED) - cocos_find_package(CURL CURL REQUIRED) - if(NOT USE_EXTERNAL_PREBUILT) - cocos_find_package(OpenSSL OPENSSL REQUIRED) - endif() - - # flatbuffers - if(USE_EXTERNAL_PREBUILT) - set(_flatbuffers_prefix FLATBUFFERS) - set(FLATBUFFERS_INCLUDE_DIRS ${COCOS2DX_ROOT_PATH}/external) - if(USE_COCOS_PREBUILT) - cocos_find_prebuilt_lib_by_name(flatbuffers FLATBUFFERS_LIBRARIES) - else() - add_subdirectory(${COCOS2DX_ROOT_PATH}/external/flatbuffers ${ENGINE_BINARY_PATH}/external/flatbuffers) - set(FLATBUFFERS_LIBRARIES flatbuffers) - endif() - message(STATUS "Flatbuffers include dirs: ${FLATBUFFERS_INCLUDE_DIRS}") - else() - cocos_find_package(flatbuffers FLATBUFFERS REQUIRED) - endif() - - # xxhash - if(USE_EXTERNAL_PREBUILT) - set(_xxhash_prefix XXHASH) - set(XXHASH_INCLUDE_DIRS ${COCOS2DX_ROOT_PATH}/external/xxhash) - if(USE_COCOS_PREBUILT) - cocos_find_prebuilt_lib_by_name(xxhash XXHASH_LIBRARIES) - else() - add_subdirectory(${COCOS2DX_ROOT_PATH}/external/xxhash ${ENGINE_BINARY_PATH}/external/xxhash) - set(XXHASH_LIBRARIES xxhash) - endif() - message(STATUS "xxhash include dirs: ${XXHASH_INCLUDE_DIRS}") - else() - cocos_find_package(xxhash xxhash REQUIRED) - endif() diff --git a/cmake/Modules/CocosBuildSet.cmake b/cmake/Modules/CocosBuildSet.cmake index 6ffafb89af..e9ea8f7efa 100644 --- a/cmake/Modules/CocosBuildSet.cmake +++ b/cmake/Modules/CocosBuildSet.cmake @@ -6,6 +6,14 @@ if(" ${CMAKE_SOURCE_DIR}" STREQUAL " ${CMAKE_BINARY_DIR}") ") endif() +# print cmake debug info +set(CMAKE_DEBUG_TARGET_PROPERTIES + # INCLUDE_DIRECTORIES + # COMPILE_DEFINITIONS + # POSITION_INDEPENDENT_CODE + # CONTAINER_SIZE_REQUIRED + # LIB_VERSION +) # It ensures that when Find*.cmake files included from cmake's Modules dir # include another *.cmake file with relative path, that file will be included # also from cmake's Modules dir, to not clash with per-project files. @@ -38,8 +46,4 @@ include(CocosSelectModule) # set common compiler options include(CocosCompileOptions) -# collect prebuilt libraries -include(CocosPickLibs) - -# compile source libraries -include(CocosBuildModules) +include(CocosConfigDepend) diff --git a/cmake/Modules/CocosCompileOptions.cmake b/cmake/Modules/CocosCompileOptions.cmake index 6c22709d56..ecaa802901 100644 --- a/cmake/Modules/CocosCompileOptions.cmake +++ b/cmake/Modules/CocosCompileOptions.cmake @@ -110,6 +110,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") endif() if(LINUX) + add_definitions(-D_GNU_SOURCE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -lrt") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread -lrt") endif() @@ -177,11 +178,6 @@ else() message(FATAL_ERROR "using Windows MSVC generate cocos2d-x project, MSVC_VERSION:${MSVC_VERSION} lower than needed") endif() - define_property(TARGET - PROPERTY DEPEND_DLLS - BRIEF_DOCS "depend dlls of a target" - FULL_DOCS "use to save depend dlls of a target" - ) else() message(FATAL_ERROR "please using Windows MSVC compile cocos2d-x project, support other compile tools not yet") endif() @@ -219,3 +215,21 @@ message(FATAL_ERROR "can't find prebuilt libs location") endif() endif() + +# custom target property for dll collect +define_property(TARGET + PROPERTY CC_DEPEND_DLLS + BRIEF_DOCS "depend dlls of a target" + FULL_DOCS "use to save depend dlls of a target" +) +# custom target property for lua/js link +define_property(TARGET + PROPERTY CC_JS_DEPEND + BRIEF_DOCS "cocos2d js depend libs" + FULL_DOCS "use to save depend libs of cocos2d js project" +) +define_property(TARGET + PROPERTY CC_LUA_DEPEND + BRIEF_DOCS "cocos2d lua depend libs" + FULL_DOCS "use to save depend libs of cocos2d lua project" +) \ No newline at end of file diff --git a/cmake/Modules/CocosUseLibs.cmake b/cmake/Modules/CocosConfigDepend.cmake similarity index 51% rename from cmake/Modules/CocosUseLibs.cmake rename to cmake/Modules/CocosConfigDepend.cmake index 0c770d71dd..2c37db3dbb 100644 --- a/cmake/Modules/CocosUseLibs.cmake +++ b/cmake/Modules/CocosConfigDepend.cmake @@ -1,26 +1,26 @@ -macro(cocos2d_depend_libs) +macro(cocos2dx_depend) # confim the libs, prepare to link set(PLATFORM_SPECIFIC_LIBS) - # confim the prebuilt libs, prepare to use - set(PREBUILT_SPECIFIC_LIBS) if(WINDOWS) - foreach(_pkg OPENGL GLEW GLFW3 VORBIS MPG123 OPENAL SQLITE3) - list(APPEND PREBUILT_SPECIFIC_LIBS ${_pkg}) - endforeach() - list(APPEND PLATFORM_SPECIFIC_LIBS ws2_32 userenv psapi winmm Version Iphlpapi) - if(MINGW) - list(APPEND PLATFORM_SPECIFIC_LIBS shlwapi version) - endif() + list(APPEND PLATFORM_SPECIFIC_LIBS ws2_32 userenv psapi winmm Version Iphlpapi opengl32) elseif(LINUX) # need review those libs: X11 Xi Xrandr Xxf86vm Xinerama Xcursor rt m list(APPEND PLATFORM_SPECIFIC_LIBS dl X11 Xi Xrandr Xxf86vm Xinerama Xcursor rt m) - foreach(_pkg OPENGL GLEW GLFW3 FMOD FONTCONFIG THREADS GTK3 SQLITE3) - list(APPEND PREBUILT_SPECIFIC_LIBS ${_pkg}) - endforeach() + # use older cmake style on below linux libs + cocos_find_package(Fontconfig FONTCONFIG REQUIRED) + cocos_find_package(GTK3 GTK3 REQUIRED) + cocos_find_package(ZLIB ZLIB REQUIRED) + cocos_find_package(PNG PNG REQUIRED) + cocos_find_package(GLEW GLEW REQUIRED) + cocos_find_package(OpenGL OPENGL REQUIRED) + cocos_find_package(CURL CURL REQUIRED) + cocos_find_package(SQLite3 SQLITE3 REQUIRED) + set(CMAKE_THREAD_PREFER_PTHREAD TRUE) + find_package(Threads REQUIRED) + set(THREADS_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) elseif(ANDROID) list(APPEND PLATFORM_SPECIFIC_LIBS GLESv2 EGL log android OpenSLES) - list(APPEND PREBUILT_SPECIFIC_LIBS TREMOLO PVMP3DEC CPUFEATURES) elseif(APPLE) include_directories(/System/Library/Frameworks) @@ -39,6 +39,11 @@ macro(cocos2d_depend_libs) ${GAMECONTROLLER_LIBRARY} ) + if(BUILD_JS_LIBS) + find_library(SQLITE3_LIBRARY SQLite3) + list(APPEND COCOS_APPLE_LIBS ${SQLITE3_LIBRARY}) + endif() + if(MACOSX) list(APPEND PREBUILT_SPECIFIC_LIBS GLFW3) @@ -46,12 +51,14 @@ macro(cocos2d_depend_libs) find_library(OPENGL_LIBRARY OpenGL) find_library(APPLICATIONSERVICES_LIBRARY ApplicationServices) find_library(IOKIT_LIBRARY IOKit) + find_library(APPKIT_LIBRARY AppKit) list(APPEND PLATFORM_SPECIFIC_LIBS ${COCOA_LIBRARY} ${OPENGL_LIBRARY} ${APPLICATIONSERVICES_LIBRARY} ${IOKIT_LIBRARY} ${COCOS_APPLE_LIBS} + ${APPKIT_LIBRARY} ) elseif(IOS) # Locate system libraries on iOS @@ -78,150 +85,79 @@ macro(cocos2d_depend_libs) ) endif() endif() +endmacro() - foreach(_pkg ZLIB MINIZIP TinyXML2 FREETYPE WEBSOCKETS CURL FLATBUFFERS XXHASH UV) - list(APPEND PREBUILT_SPECIFIC_LIBS ${_pkg}) - endforeach() - - if(NOT EMSCRIPTEN) - list(APPEND PREBUILT_SPECIFIC_LIBS OPENSSL) - endif() - +macro(cocos2dx_define) + if(USE_JPEG) add_definitions(-DCC_USE_JPEG=1) - list(APPEND PREBUILT_SPECIFIC_LIBS JPEG) else() add_definitions(-DCC_USE_JPEG=0) endif() if(USE_WEBP) - cocos_find_package(WebP WEBP REQUIRED) add_definitions(-DCC_USE_WEBP=1) - list(APPEND PREBUILT_SPECIFIC_LIBS WEBP) else() add_definitions(-DCC_USE_WEBP=0) endif() if(USE_TIFF) add_definitions(-DCC_USE_TIFF=1) - list(APPEND PREBUILT_SPECIFIC_LIBS TIFF) else() add_definitions(-DCC_USE_TIFF=0) endif() if(USE_PNG) add_definitions(-DCC_USE_PNG=1) - list(APPEND PREBUILT_SPECIFIC_LIBS PNG) else() add_definitions(-DCC_USE_PNG=0) endif() if(USE_CHIPMUNK) - cocos_find_package(Chipmunk CHIPMUNK REQUIRED) add_definitions(-DCC_USE_PHYSICS=1) add_definitions(-DCC_ENABLE_CHIPMUNK_INTEGRATION=1) - list(APPEND PREBUILT_SPECIFIC_LIBS CHIPMUNK) else() add_definitions(-DCC_USE_PHYSICS=0) add_definitions(-DCC_ENABLE_CHIPMUNK_INTEGRATION=0) endif() if(USE_BOX2D) - cocos_find_package(box2d Box2D REQUIRED) add_definitions(-DCC_ENABLE_BOX2D_INTEGRATION=1) - list(APPEND PREBUILT_SPECIFIC_LIBS Box2D) else() add_definitions(-DCC_ENABLE_BOX2D_INTEGRATION=0) endif(USE_BOX2D) if(USE_BULLET) - cocos_find_package(bullet BULLET REQUIRED) add_definitions(-DCC_USE_3D_PHYSICS=1) add_definitions(-DCC_ENABLE_BULLET_INTEGRATION=1) - list(APPEND PREBUILT_SPECIFIC_LIBS BULLET) else(USE_BULLET) add_definitions(-DCC_USE_3D_PHYSICS=0) add_definitions(-DCC_ENABLE_BULLET_INTEGRATION=0) endif(USE_BULLET) - if(USE_RECAST) - list(APPEND PREBUILT_SPECIFIC_LIBS RECAST) - endif() + # tocheck, libuv option + add_definitions(-DLWS_WITH_LIBUV) endmacro() -add_definitions(-DLWS_WITH_LIBUV) -macro(target_use_cocos2d_depend_libs target) - cocos2d_depend_libs() - message(STATUS "${target} prepare to use cpp needed libs: ${PREBUILT_SPECIFIC_LIBS}") - foreach(prebuilt_lib ${PREBUILT_SPECIFIC_LIBS}) - cocos_use_pkg(${target} ${prebuilt_lib}) - endforeach() +macro(target_use_cocos2dx_depend target) + cocos2dx_depend() + cocos2dx_define() + message(STATUS "${target} prepare to use system depend: ${PLATFORM_SPECIFIC_LIBS}") foreach(platform_lib ${PLATFORM_SPECIFIC_LIBS}) target_link_libraries(${target} ${platform_lib}) endforeach() -endmacro() -macro(jscocos2d_depend_libs) - set(PLATFORM_SPECIFIC_LIBS) - set(PREBUILT_SPECIFIC_LIBS) - - list(APPEND PREBUILT_SPECIFIC_LIBS SPIDERMONKEY) - if(APPLE) - list(APPEND PREBUILT_SPECIFIC_LIBS SQLITE3) + if(LINUX) + cocos_use_pkg(${target} FONTCONFIG) + cocos_use_pkg(${target} GTK3) + cocos_use_pkg(${target} ZLIB) + cocos_use_pkg(${target} PNG) + cocos_use_pkg(${target} GLEW) + cocos_use_pkg(${target} OPENGL) + cocos_use_pkg(${target} CURL) + cocos_use_pkg(${target} THREADS) + cocos_use_pkg(${target} SQLITE3) endif() endmacro() -macro(target_use_jscocos2d_depend_libs target) - jscocos2d_depend_libs() - message(STATUS "${target} prepare to use js needed libs: ${PREBUILT_SPECIFIC_LIBS}") - foreach(prebuilt_lib ${PREBUILT_SPECIFIC_LIBS}) - cocos_use_pkg(${target} ${prebuilt_lib}) - endforeach() - foreach(platform_lib ${PLATFORM_SPECIFIC_LIBS}) - target_link_libraries(${target} ${platform_lib}) - endforeach() -endmacro() - -macro(luacocos2d_depend_libs) - set(PLATFORM_SPECIFIC_LIBS) - set(PREBUILT_SPECIFIC_LIBS) - list(APPEND PREBUILT_SPECIFIC_LIBS LUAJIT) -endmacro() - -macro(target_use_luacocos2d_depend_libs target) - luacocos2d_depend_libs() - message(STATUS "${target} prepare to use lua needed libs: ${PREBUILT_SPECIFIC_LIBS}") - foreach(prebuilt_lib ${PREBUILT_SPECIFIC_LIBS}) - cocos_use_pkg(${target} ${prebuilt_lib}) - endforeach() - foreach(platform_lib ${PLATFORM_SPECIFIC_LIBS}) - target_link_libraries(${target} ${platform_lib}) - endforeach() -endmacro() - -macro(simulator_depend_libs) - set(PLATFORM_SPECIFIC_LIBS) - set(PREBUILT_SPECIFIC_LIBS) - if(MACOSX) - include_directories(/System/Library/Frameworks) - find_library(APPKIT_LIBRARY AppKit) - list(APPEND PLATFORM_SPECIFIC_LIBS ${APPKIT_LIBRARY}) - elseif(WINDOWS) - list(APPEND PREBUILT_SPECIFIC_LIBS TinyXML2 CURL) - endif() - -endmacro() - -macro(target_use_simulator_depend_libs target) - simulator_depend_libs() - if(WINDOWS) - message(STATUS "${target} prepare to use simulator needed libs: ${PREBUILT_SPECIFIC_LIBS}") - endif() - foreach(prebuilt_lib ${PREBUILT_SPECIFIC_LIBS}) - cocos_use_pkg(${target} ${prebuilt_lib}) - endforeach() - foreach(platform_lib ${PLATFORM_SPECIFIC_LIBS}) - target_link_libraries(${target} ${platform_lib}) - endforeach() -endmacro() diff --git a/cmake/Modules/CocosPickLibs.cmake b/cmake/Modules/CocosPickLibs.cmake deleted file mode 100644 index c0bdd8e15d..0000000000 --- a/cmake/Modules/CocosPickLibs.cmake +++ /dev/null @@ -1,319 +0,0 @@ -# CocosPickLibs - sets external libs variables to link with - -# START CONFIG - -# record all the prebuilt libs which found for specific platform -set(COCOS_EXTERNAL_LIBS) - -# Debug build use debug folder libs, Release build use release folder libs -string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE_FOLDER) - -# RelWithDebInfo is one of Visual Studio 2017 default build type -if(${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo") - # RelWithDebInfo build use release folder libs - set(BUILD_TYPE_FOLDER "release") -endif() - -set(_chipmunk_inc chipmunk/chipmunk.h) -set(_chipmunk_inc_paths include) -if(WINDOWS) - if(MSVC) - set(_chipmunk_libs chipmunk libchipmunk libchipmunk-2015) - else() - set(_chipmunk_libs chipmunk libchipmunk) - endif() -else() - set(_chipmunk_libs chipmunk libchipmunk) -endif(WINDOWS) - -set(_bullet_inc bullet/Bullet-C-Api.h BulletCollision/btBulletCollisionCommon.h) -set(_bullet_inc_paths bullet) -# sequence is important -set(_bullet_libs BulletDynamics libBulletDynamics BulletCollision libBulletCollision BulletMultiThreaded libBulletMultiThreaded LinearMath libLinearMath MiniCL libMiniCL) -if(MSVC) - set(_bullet_libs bullet libbullet) -endif() - -set(_Box2D_inc Box2D/Box2D.h) -set(_Box2D_inc_paths include) -set(_Box2D_libs box2d libbox2d) -set(_Box2D_prefix Box2D) - -set(_glfw3_inc glfw3.h glfw3native.h) -set(_glfw3_libs glfw3 libglfw3) - -set(_curl_inc curl/curl.h) -# order: curl, ssl, crypto -set(_curl_libs curl libcurl_imp libcurl ssl libeay32 ssleay32 crypto) - -set(_freetype2_prefix FREETYPE) -set(_freetype2_inc ft2build.h freetype/freetype.h) -set(_freetype2_inc_paths freetype2) -set(_freetype2_libs freetype freetype250) - -set(_jpeg_inc jpeglib.h) -if(WINDOWS) - if(MSVC) - set(_jpeg_libs jpeg libjpeg libjpeg-2015) - else() - set(_jpeg_libs jpeg libjpeg) - endif() -else() - set(_jpeg_libs jpeg libjpeg) -endif(WINDOWS) - -set(_png_inc png.h) -if(WINDOWS) - if(MSVC) - set(_png_libs png libpng libpng-2015) - else() - set(_png_libs png libpng) - endif() -else() - set(_png_libs png libpng) -endif(WINDOWS) - -set(_tiff_inc tiff.h) -if(WINDOWS) - if(MSVC) - set(_tiff_libs tiff libtiff libtiff-2015) - else() - set(_tiff_libs tiff libtiff) - endif() -else() - set(_tiff_libs tiff libtiff) -endif(WINDOWS) - -set(_webp_inc decode.h) -set(_webp_libs webp libwebp) - -set(_websockets_inc libwebsockets.h) -set(_websockets_libs websockets libwebsockets) - -set(_openssl_inc openssl/ssl.h) -set(_openssl_libs ssl crypto) -if(MSVC) - set(_openssl_libs ssl crypto libssl libcrypto) -endif() - -set(_sqlite3_inc sqlite3.h) -set(_sqlite3_libs sqlite3) - -set(_gles_prefix GLEW) -set(_gles_inc GL/glew.h) -set(_gles_inc_paths OGLES) -set(_gles_libs glew32) - -set(_icon_prefix ICONV) -set(_icon_inc iconv.h) -set(_icon_libs libiconv) - -set(_MP3Decoder_prefix MPG123) -set(_MP3Decoder_inc mpg123.h) -set(_MP3Decoder_libs libmpg123) - -set(_OggDecoder_prefix VORBIS) -set(_OggDecoder_inc ogg/ogg.h) -set(_OggDecoder_libs libogg libvorbis libvorbisfile) - -set(_OpenalSoft_prefix OPENAL) -set(_OpenalSoft_inc al.h) -set(_OpenalSoft_inc_paths AL) -set(_OpenalSoft_libs OpenAL32) - -set(_zlib_inc zlib.h) -set(_zlib_libs z libzlib libz) -if(MSVC) - set(_zlib_libs libzlib) - # zlib's dll is so special, lib name and dll name is different - # single special - set(_zlib_dll zlib1) -endif() - -set(_fmod_prefix FMOD) -set(_fmod_inc fmod.hpp) -set(_fmod_libs fmod fmod64 fmod fmod64) - -set(_luajit_prefix LUAJIT) -set(_luajit_inc lua.hpp) -set(_luajit_libs luajit) -if(MSVC) - set(_luajit_libs lua51) -endif() - -set(_spidermonkey_prefix SPIDERMONKEY) -set(_spidermonkey_inc jsapi.h) -set(_spidermonkey_libs js_static) -if(MSVC) - set(_spidermonkey_libs mozjs-33) -endif() - -set(_uv_inc uv.h) -set(_uv_libs uv_a libuv uv) - -set(all_prebuilt_libs - chipmunk - curl - freetype2 - jpeg - png - tiff - webp - websockets - openssl - bullet - Box2D - luajit - spidermonkey - uv - ) - - -if(MACOSX) - list(APPEND all_prebuilt_libs glfw3 zlib) -endif() - -# We use MSVC instead of WINDOWS because it can be mingw that can't use our prebuilt libs -if(MSVC) - list(APPEND all_prebuilt_libs glfw3 sqlite3 gles icon MP3Decoder OggDecoder OpenalSoft zlib) -endif() - -if(LINUX) - list(APPEND all_prebuilt_libs fmod glfw3) -endif() - -if(ANDROID) - list(APPEND all_prebuilt_libs zlib) -endif() - -# END CONFIG - -foreach(_lib ${all_prebuilt_libs}) - if(_${_lib}_prefix) - set(_prefix ${_${_lib}_prefix}) - else() - # auto-prefix is uppercased name - string(TOUPPER ${_lib} _prefix) - set(_${_lib}_prefix ${_prefix}) - endif() - - set(roots - ${COCOS_EXTERNAL_DIR}/${_lib} - ${COCOS_EXTERNAL_DIR}/${PLATFORM_FOLDER}-specific/${_lib} - #lua/luajit - ${COCOS_EXTERNAL_DIR}/lua/${_lib} - ) - foreach(_root ${roots}) - if(EXISTS ${_root}) - set(include_dir_candidates - ${_root}/include - ${_root}/include/${ARCH_DIR} - ${_root}/include/${PLATFORM_FOLDER} - ${_root}/include/${PLATFORM_FOLDER}/${ARCH_DIR} - ) - set(include_dirs) - foreach(_dir ${include_dir_candidates}) - if(EXISTS ${_dir}) - # find all include paths - if(_${_lib}_inc_paths) - set(_suffixes ${_${_lib}_inc_paths}) - else() - set(_suffixes include) - endif() - foreach(_inc_name ${_${_lib}_inc}) - unset(_inc_tmp CACHE) - find_path(_inc_tmp ${_inc_name} PATH_SUFFIXES ${_suffixes} PATHS ${_dir} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) - if(_inc_tmp) - list(APPEND include_dirs ${_inc_tmp}) - endif() - endforeach() - endif(EXISTS ${_dir}) - endforeach() - if(include_dirs) - list(REMOVE_DUPLICATES include_dirs) - set(${_prefix}_INCLUDE_DIRS ${include_dirs} CACHE PATH "Path to includes for ${_prefix}" FORCE) - message(STATUS "${_lib} ${_prefix}_INCLUDE_DIRS: ${${_prefix}_INCLUDE_DIRS}") - # don't find lib, if not find include in once ${_root} search - set(lib_dir_candidates - ${_root}/prebuilt/${PLATFORM_FOLDER} - ${_root}/prebuilt/${PLATFORM_FOLDER}/${BUILD_TYPE_FOLDER} - ${_root}/prebuilt/${PLATFORM_FOLDER}/${BUILD_TYPE_FOLDER}-lib - ${_root}/libraries/${PLATFORM_FOLDER} - ${_root}/prebuilt - ) - if(ANDROID_ABI) - list(APPEND lib_dir_candidates ${_root}/prebuilt/${PLATFORM_FOLDER}/${ANDROID_ABI}) - endif() - if(ARCH_DIR) - list(APPEND lib_dir_candidates ${_root}/prebuilt/${PLATFORM_FOLDER}/${ARCH_DIR}) - list(APPEND lib_dir_candidates ${_root}/prebuilt/${ARCH_DIR}) - endif() - set(libs) - set(dlls) - foreach(_dir ${lib_dir_candidates}) - if(EXISTS ${_dir}) - # find all libs - foreach(_lib_name ${_${_lib}_libs}) - find_library(_lib_tmp ${_lib_name} PATHS ${_dir} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) - if(_lib_tmp) - list(APPEND libs ${_lib_tmp}) - #find dlls for _lib_tmp - if(MSVC) - cocos_find_dlls_for_lib(_dll_tmp LIB_ABS_PATH ${_lib_tmp}) - endif() - list(APPEND dlls ${_dll_tmp}) - unset(_dll_tmp CACHE) - endif() - unset(_lib_tmp CACHE) - endforeach() - endif(EXISTS ${_dir}) - endforeach() - - if(libs) - set(${_prefix}_LIBRARIES ${libs} CACHE STRING "Libraries to link for ${_prefix}" FORCE) - message(STATUS "${_lib} ${_prefix}_LIBRARIES: ${${_prefix}_LIBRARIES}") - endif() - - if(MSVC) - if(dlls) - # remove repeat items - list(REMOVE_DUPLICATES dlls) - # set dlls into var ${_prefix}_DLLS - set(${_prefix}_DLLS ${dlls} CACHE STRING "dlls to link for ${_prefix}" FORCE) - message(STATUS "${_lib} ${_prefix}_DLLS: ${${_prefix}_DLLS}") - endif(dlls) - endif() - - if(${_prefix}_LIBRARIES AND ${_prefix}_INCLUDE_DIRS) - set(${_prefix}_FOUND YES) - list(APPEND COCOS_EXTERNAL_LIBS ${${_prefix}_LIBRARIES}) - endif() - endif() - endif(EXISTS ${_root}) - endforeach() -endforeach() - -# use engine prebuilt libs, try to pick all engine libs -if(USE_COCOS_PREBUILT) - # cocos2d/jscocos2d/luacocos2d - set(_cocos2d_prefix COCOS2D) - cocos_find_prebuilt_lib_by_name(cocos2d COCOS2D_LIBRARIES) - - set(_jscocos2d_prefix JSCOCOS2D) - cocos_find_prebuilt_lib_by_name(jscocos2d JSCOCOS2D_LIBRARIES) - - set(_luacocos2d_prefix LUACOCOS2D) - cocos_find_prebuilt_lib_by_name(luacocos2d LUACOCOS2D_LIBRARIES) - - set(_simulator_prefix SIMULATOR) - cocos_find_prebuilt_lib_by_name(simulator SIMULATOR_LIBRARIES) - - if(ANDROID) - set(_cocos2d_android_prefix ANDROID_COCOS2D) - cocos_find_prebuilt_lib_by_name(cocos2d_android ANDROID_COCOS2D_LIBRARIES) - endif() -endif(USE_COCOS_PREBUILT) - - - - diff --git a/cocos/2d/CMakeLists.txt b/cocos/2d/CMakeLists.txt index 1f4d47a8b0..92a15df354 100644 --- a/cocos/2d/CMakeLists.txt +++ b/cocos/2d/CMakeLists.txt @@ -1,10 +1,3 @@ -include_directories( - ../external/ConvertUTF - ../external/poly2tri - ../external/poly2tri/common - ../external/poly2tri/sweep -) - set(COCOS_2D_HEADER 2d/CCActionPageTurn3D.h @@ -144,7 +137,6 @@ set(COCOS_2D_SRC 2d/CCSpriteFrameCache.cpp 2d/CCSpriteFrame.cpp 2d/CCAutoPolygon.cpp - ../external/clipper/clipper.cpp 2d/CCTextFieldTTF.cpp 2d/CCTileMapAtlas.cpp 2d/CCTMXLayer.cpp diff --git a/cocos/CMakeLists.txt b/cocos/CMakeLists.txt index dff518cebc..868f30b847 100644 --- a/cocos/CMakeLists.txt +++ b/cocos/CMakeLists.txt @@ -113,17 +113,27 @@ set(COCOS_SRC cocos2d.cpp ${COCOS_STORAGE_SRC} ) -#todo: provide prebuild versions of the xx libs for all platforms -include_directories(../external/xxtea) -include_directories(../external/clipper) - list(APPEND COCOS_SRC ${COCOS_HEADER}) add_library(cocos2d ${COCOS_SRC}) -# use necessary external libs and system libs -include(CocosUseLibs) -target_use_cocos2d_depend_libs(cocos2d) +# use external libs +add_subdirectory(${COCOS2DX_ROOT_PATH}/external ${ENGINE_BINARY_PATH}/external) +target_link_libraries(cocos2d external) + +# use all platform related system libs +target_use_cocos2dx_depend(cocos2d) + +target_include_directories(cocos2d + PUBLIC ${COCOS2DX_ROOT_PATH} + PUBLIC ${COCOS2DX_ROOT_PATH}/cocos + PUBLIC ${COCOS2DX_ROOT_PATH}/extensions + PUBLIC ${COCOS2DX_ROOT_PATH}/cocos/platform + INTERFACE ${COCOS2DX_ROOT_PATH}/cocos/base + INTERFACE ${COCOS2DX_ROOT_PATH}/cocos/editor-support + INTERFACE ${COCOS2DX_ROOT_PATH}/cocos/audio/include + INTERFACE ${COCOS2DX_ROOT_PATH}/cocos/platform/${PLATFORM_FOLDER} +) set_target_properties(cocos2d PROPERTIES @@ -133,32 +143,6 @@ set_target_properties(cocos2d FOLDER "Internal" ) -# set custom target: prebuilt, to copy all libs to prebuilt libs folder -if(GEN_COCOS_PREBUILT) - add_custom_target(prebuilt ALL) - add_dependencies(prebuilt cocos2d) - set_target_properties(prebuilt - PROPERTIES - FOLDER "Internal" - ) - add_custom_command(TARGET "prebuilt" - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - "${CMAKE_BINARY_DIR}/lib" - "${COCOS_PREBUILT_PATH}" - COMMENT "copy library directory:${CMAKE_BINARY_DIR}/lib to directory:${COCOS_PREBUILT_PATH}" - ) - if(BUILD_LUA_LIBS) - add_dependencies(prebuilt luacocos2d) - endif() - if(BUILD_JS_LIBS) - add_dependencies(prebuilt jscocos2d) - endif() - if(BUILD_SIMU_LIB AND (MACOSX OR WINDOWS)) - add_dependencies(prebuilt simulator) - endif() -endif() - ## Lua bindings lib if(BUILD_LUA_LIBS) add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/scripting/lua-bindings ${ENGINE_BINARY_PATH}/cocos/lua-bindings) @@ -167,10 +151,6 @@ endif() if(BUILD_JS_LIBS) add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/scripting/js-bindings ${ENGINE_BINARY_PATH}/cocos/js-bindings) endif() -# simulator -if(BUILD_SIMU_LIB AND (MACOSX OR WINDOWS)) - add_subdirectory(${COCOS2DX_ROOT_PATH}/tools/simulator/libsimulator ${ENGINE_BINARY_PATH}/cocos/libsimulator) -endif() if(XCODE OR VS) cocos_mark_code_files("cocos2d") diff --git a/cocos/cc_dummy.c b/cocos/cc_dummy.c deleted file mode 100644 index bc15d88127..0000000000 --- a/cocos/cc_dummy.c +++ /dev/null @@ -1,27 +0,0 @@ -/**************************************************************************** - Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -static void making_cmake_happy(void) -{ -} diff --git a/cocos/platform/CMakeLists.txt b/cocos/platform/CMakeLists.txt index a721a244da..14a43d3f53 100644 --- a/cocos/platform/CMakeLists.txt +++ b/cocos/platform/CMakeLists.txt @@ -22,7 +22,16 @@ # THE SOFTWARE. # ****************************************************************************/ -if(WINDOWS) +if(ANDROID) + # refer to target: cocos/platform/android/CMakeLists.txt + set(COCOS_PLATFORM_SPECIFIC_SRC + platform/android/CCApplication-android.cpp + platform/android/CCCommon-android.cpp + platform/android/CCGLViewImpl-android.cpp + platform/android/CCFileUtils-android.cpp + platform/android/CCEnhanceAPI-android.cpp + ) +elseif(WINDOWS) set(COCOS_PLATFORM_SPECIFIC_HEADER platform/win32/compat/stdint.h platform/win32/CCApplication-win32.h @@ -126,68 +135,8 @@ elseif(LINUX) platform/linux/CCDevice-linux.cpp platform/desktop/CCGLViewImpl-desktop.cpp ) - -elseif(ANDROID) - - set(COCOS_PLATFORM_SPECIFIC_HEADER - platform/android/CCApplication-android.h - platform/android/CCStdC-android.h - platform/android/CCFileUtils-android.h - platform/android/CCEnhanceAPI-android.h - platform/android/CCPlatformDefine-android.h - platform/android/CCGLViewImpl-android.h - platform/android/jni/ProcessCpuTracker.h - platform/android/jni/JniHelper.h - platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxBitmap.h - platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.h - platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxEngineDataManager.h - platform/android/CCGL-android.h - ) - # need move to COCOS2DX_ANDROID_SRC? - # need refactor - set(COCOS_PLATFORM_SPECIFIC_SRC - platform/android/CCApplication-android.cpp - platform/android/CCCommon-android.cpp - platform/android/CCGLViewImpl-android.cpp - platform/android/CCFileUtils-android.cpp - platform/android/CCEnhanceAPI-android.cpp - platform/android/jni/JniHelper.cpp - ) - - set(COCOS2DX_ANDROID_SRC - platform/android/CCDevice-android.cpp - platform/android/javaactivity-android.cpp - platform/android/jni/TouchesJni.cpp - platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxAccelerometer.cpp - platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp - platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp - platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp - platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxEngineDataManager.cpp - - ) - - add_library(cocos2d_android STATIC ${COCOS2DX_ANDROID_SRC}) - set_property(TARGET cocos2d_android PROPERTY POSITION_INDEPENDENT_CODE TRUE) - set_target_properties(cocos2d_android - PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" - VERSION "${COCOS2D_X_VERSION}" - ) - endif() -#leave andatory external stuff here also - -include_directories( - ../external - ../external/ConvertUTF - ../external/edtaa3func - ../external/poly2tri - ../external/poly2tri/common - ../external/poly2tri/sweep -) - set(COCOS_PLATFORM_HEADER ${COCOS_PLATFORM_SPECIFIC_HEADER} platform/CCApplication.h @@ -213,13 +162,4 @@ set(COCOS_PLATFORM_SRC platform/CCGLView.cpp platform/CCFileUtils.cpp platform/CCImage.cpp - ../external/edtaa3func/edtaa3func.cpp - ../external/ConvertUTF/ConvertUTFWrapper.cpp - ../external/ConvertUTF/ConvertUTF.c - ../external/md5/md5.c - ../external/poly2tri/common/shapes.cc - ../external/poly2tri/sweep/advancing_front.cc - ../external/poly2tri/sweep/cdt.cc - ../external/poly2tri/sweep/sweep_context.cc - ../external/poly2tri/sweep/sweep.cc ) diff --git a/cocos/platform/android/CMakeLists.txt b/cocos/platform/android/CMakeLists.txt new file mode 100644 index 0000000000..17cbd0d94b --- /dev/null +++ b/cocos/platform/android/CMakeLists.txt @@ -0,0 +1,28 @@ +cmake_minimum_required(VERSION 3.6) + +# need to whole-archive this lib +set(target_name cpp_android_spec) + +project(${target_name}) + +set(${target_name}_src + CCDevice-android.cpp + javaactivity-android.cpp + jni/JniHelper.cpp + jni/TouchesJni.cpp + jni/Java_org_cocos2dx_lib_Cocos2dxAccelerometer.cpp + jni/Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp + jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp + jni/Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp + jni/Java_org_cocos2dx_lib_Cocos2dxEngineDataManager.cpp +) + +add_library(${target_name} STATIC + ${${target_name}_src} +) + +target_include_directories(${target_name} + PRIVATE .. + PRIVATE ../.. +) + diff --git a/cocos/scripting/js-bindings/CMakeLists.txt b/cocos/scripting/js-bindings/CMakeLists.txt index 3b50b31e8f..0345172f53 100644 --- a/cocos/scripting/js-bindings/CMakeLists.txt +++ b/cocos/scripting/js-bindings/CMakeLists.txt @@ -25,14 +25,11 @@ set(cocos_root ${COCOS2DX_ROOT_PATH}) #platform -if(WIN32) # Win32 - add_definitions(-D_USRJSSTATIC) -elseif(APPLE)# osx or ios +if(APPLE)# osx or ios set(PLATFORM_HEADER manual/platform/ios/JavaScriptObjCBridge.h) set(PLATFORM_SRC manual/platform/ios/JavaScriptObjCBridge.mm) elseif(ANDROID) - set(PLATFORM_HEADER manual/platform/android/CCJavascriptJavaBridge.h) - set(PLATFORM_SRC manual/platform/android/CCJavascriptJavaBridge.cpp) + # refer to: cocos/scripting/js-bindings/proj.android endif() if(ANDROID OR IOS) @@ -151,11 +148,6 @@ set(JSBINDING_SRC manual/navmesh/jsb_cocos2dx_navmesh_manual.cpp ) -include_directories( - ${cocos_root}/cocos/platform/${PLATFORM_FOLDER} - ${cocos_root}/external/spidermonkey/include/${PLATFORM_FOLDER} -) - list(APPEND JSBINDING_SRC ${JSBINDING_HEADER} ${PLATFORM_HEADER}) add_library(jscocos2d STATIC @@ -165,8 +157,23 @@ add_library(jscocos2d STATIC target_link_libraries(jscocos2d cocos2d) add_dependencies(jscocos2d cocos2d) -# use necessary external libs and system libs -target_use_jscocos2d_depend_libs(jscocos2d) +get_target_property(js_ext_depend external CC_JS_DEPEND) +target_link_libraries(jscocos2d ${js_ext_depend}) + +target_include_directories(jscocos2d + INTERFACE ${cocos_root}/cocos/scripting/js-bindings/auto + INTERFACE ${cocos_root}/cocos/scripting/js-bindings/manual +) + +# ignore part warnings on binding codes. tocheck: not take effect? + +if(WINDOWS) + target_compile_definitions(jscocos2d PRIVATE _USRJSSTATIC) +else() + target_compile_options(jscocos2d PRIVATE + -Wno-deprecated + ) +endif() set_target_properties(jscocos2d PROPERTIES diff --git a/cocos/scripting/js-bindings/proj.android/CMakeLists.txt b/cocos/scripting/js-bindings/proj.android/CMakeLists.txt new file mode 100644 index 0000000000..29bbcb8357 --- /dev/null +++ b/cocos/scripting/js-bindings/proj.android/CMakeLists.txt @@ -0,0 +1,23 @@ +cmake_minimum_required(VERSION 3.6) + +# need to whole-archive this lib +set(target_name js_android_spec) + +project(${target_name}) + +set(${target_name}_src + ../manual/platform/android/CCJavascriptJavaBridge.cpp +) + +add_library(${target_name} STATIC + ${${target_name}_src} +) + +get_target_property(spiderm_header ext_spidermonkey INTERFACE_INCLUDE_DIRECTORIES) +target_include_directories(${target_name} + PRIVATE ../../.. + PRIVATE ../manual + PRIVATE ../manual/platform/android + PRIVATE ${spiderm_header} +) + diff --git a/cocos/scripting/lua-bindings/CMakeLists.txt b/cocos/scripting/lua-bindings/CMakeLists.txt index 1f952af5c5..4467dc00f6 100644 --- a/cocos/scripting/lua-bindings/CMakeLists.txt +++ b/cocos/scripting/lua-bindings/CMakeLists.txt @@ -1,67 +1,5 @@ set(cocos_root ${COCOS2DX_ROOT_PATH}) -include_directories( - ${cocos_root}/external/lua - ${cocos_root}/external/lua/tolua - ${cocos_root}/external/xxtea - ${cocos_root}/external - ${cocos_root}/cocos - ${cocos_root}/cocos/editor-support -) - -if(ANDROID) - include_directories( - manual/platform/android - manual/platform/android/jni - ) -endif() - -file(GLOB lua_cocos2d_source_files - "${cocos_root}/external/lua/tolua/*.c" - "${cocos_root}/external/xxtea/xxtea.cpp" - ) - -list(APPEND lua_cocos2d_source_files - ${cocos_root}/external/lua/luasocket/luasocket.c - ${cocos_root}/external/lua/luasocket/timeout.c - ${cocos_root}/external/lua/luasocket/buffer.c - ${cocos_root}/external/lua/luasocket/io.c - ${cocos_root}/external/lua/luasocket/auxiliar.c - ${cocos_root}/external/lua/luasocket/options.c - ${cocos_root}/external/lua/luasocket/inet.c - ${cocos_root}/external/lua/luasocket/except.c - ${cocos_root}/external/lua/luasocket/select.c - ${cocos_root}/external/lua/luasocket/tcp.c - ${cocos_root}/external/lua/luasocket/udp.c - ${cocos_root}/external/lua/luasocket/mime.c - ${cocos_root}/external/lua/luasocket/luasocket_scripts.c - ) - -if(WINDOWS) - if(MINGW) - add_definitions(-DLUASOCKET_INET_ATON -DLUASOCKET_INET_PTON) - endif() - add_definitions(-D_USRLUASTATIC) - list(APPEND lua_cocos2d_source_files - ${cocos_root}/external/lua/luasocket/wsocket.c - ) -elseif(UNIX OR ANDROID) - # because we have -std=c99 - add_definitions(-D_POSIX_C_SOURCE=200809L) - if(LINUX OR ANDROID) - add_definitions(-D_BSD_SOURCE -D_DEFAULT_SOURCE) - endif() - if(APPLE) - add_definitions(-D_DARWIN_C_SOURCE) - endif() - - list(APPEND lua_cocos2d_source_files - ${cocos_root}/external/lua/luasocket/serial.c - ${cocos_root}/external/lua/luasocket/unix.c - ${cocos_root}/external/lua/luasocket/usocket.c - ) -endif() - set(lua_bindings_manual_headers manual/CCComponentLua.h manual/3d/lua_cocos2dx_3d_manual.h @@ -203,31 +141,21 @@ if(APPLE) elseif(ANDROID) set(lua_bindings_manual_headers ${lua_bindings_manual_headers} - manual/platform/android/CCLuaJavaBridge.h - manual/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxLuaJavaBridge.h auto/lua_cocos2dx_experimental_webview_auto.hpp manual/ui/lua_cocos2dx_experimental_webview_manual.hpp ) set(lua_bindings_manual_files ${lua_bindings_manual_files} - manual/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxLuaJavaBridge.cpp - manual/platform/android/CCLuaJavaBridge.cpp auto/lua_cocos2dx_experimental_webview_auto.cpp manual/ui/lua_cocos2dx_experimental_webview_manual.cpp ) endif() -if(USE_BULLET) - include_directories(${BULLET_INCLUDE_DIRS}) -endif() - set(lua_bindings_files - ${lua_cocos2d_source_files} ${lua_bindings_manual_files} ${lua_bindings_auto_files} ) set(lua_bindings_headers - ${lua_cocos2d_source_headers} ${lua_bindings_manual_headers} ${lua_bindings_auto_headers} ) @@ -238,8 +166,20 @@ add_library(luacocos2d ${lua_bindings_files}) target_link_libraries(luacocos2d cocos2d) add_dependencies(luacocos2d cocos2d) -# use necessary external libs and system libs -target_use_luacocos2d_depend_libs(luacocos2d) +get_target_property(lua_ext_depend external CC_LUA_DEPEND) +target_link_libraries(luacocos2d ${lua_ext_depend}) + +target_include_directories(luacocos2d + PRIVATE manual/platform/android + PRIVATE manual/platform/android/jni + INTERFACE ${cocos_root}/cocos/scripting/lua-bindings/auto + INTERFACE ${cocos_root}/cocos/scripting/lua-bindings/manual +) + +if(WINDOWS) + target_compile_definitions(luacocos2d PRIVATE _USRLUASTATIC) +endif() + set_target_properties(luacocos2d PROPERTIES diff --git a/cocos/scripting/lua-bindings/proj.android/CMakeLists.txt b/cocos/scripting/lua-bindings/proj.android/CMakeLists.txt new file mode 100644 index 0000000000..298bf5b06c --- /dev/null +++ b/cocos/scripting/lua-bindings/proj.android/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.6) + +# need to whole-archive this lib +set(target_name lua_android_spec) + +project(${target_name}) + +set(${target_name}_src + ../manual/platform/android/CCLuaJavaBridge.cpp + ../manual/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxLuaJavaBridge.cpp +) + +add_library(${target_name} STATIC + ${${target_name}_src} +) + +get_target_property(lua_header ext_lua INTERFACE_INCLUDE_DIRECTORIES) +get_target_property(tolua_header ext_tolua INTERFACE_INCLUDE_DIRECTORIES) +target_include_directories(${target_name} + PRIVATE ../../.. + PRIVATE ../manual + PRIVATE ../manual/platform/android + PRIVATE ${lua_header} + PRIVATE ${tolua_header} +) + diff --git a/external/config.json b/external/config.json index bf8b10b1c7..397689bc81 100644 --- a/external/config.json +++ b/external/config.json @@ -1,5 +1,5 @@ { - "version": "v3-deps-144", + "version": "v3-deps-145", "zip_file_size": "146254799", "repo_name": "cocos2d-x-3rd-party-libs-bin", "repo_parent": "https://github.com/cocos2d/", diff --git a/templates/cocos2dx_files.json b/templates/cocos2dx_files.json index 1fd1c2c1d2..dd3201f269 100644 --- a/templates/cocos2dx_files.json +++ b/templates/cocos2dx_files.json @@ -1,6 +1,8 @@ { "common": [ ".appveyor.yml", + ".vscode/c_cpp_properties.json", + ".vscode/settings.json", "AUTHORS", "CHANGELOG", "CMakeLists.txt", @@ -12,12 +14,10 @@ "build/cocos2d_tests.xcodeproj/project.pbxproj", "build/install-deps-linux.sh", "cmake/Modules/CocosBuildHelpers.cmake", - "cmake/Modules/CocosBuildModules.cmake", "cmake/Modules/CocosBuildSet.cmake", "cmake/Modules/CocosCompileOptions.cmake", - "cmake/Modules/CocosPickLibs.cmake", + "cmake/Modules/CocosConfigDepend.cmake", "cmake/Modules/CocosSelectModule.cmake", - "cmake/Modules/CocosUseLibs.cmake", "cmake/Modules/FindChipmunk.cmake", "cmake/Modules/FindFMOD.cmake", "cmake/Modules/FindFontconfig.cmake", @@ -515,7 +515,6 @@ "cocos/base/s3tc.h", "cocos/base/uthash.h", "cocos/base/utlist.h", - "cocos/cc_dummy.c", "cocos/cocos2d.cpp", "cocos/cocos2d.h", "cocos/deprecated/CCArray.cpp", @@ -1007,6 +1006,7 @@ "cocos/platform/android/CCGLViewImpl-android.h", "cocos/platform/android/CCPlatformDefine-android.h", "cocos/platform/android/CCStdC-android.h", + "cocos/platform/android/CMakeLists.txt", "cocos/platform/android/ControllerManualAdapter/.classpath", "cocos/platform/android/ControllerManualAdapter/.project", "cocos/platform/android/ControllerManualAdapter/.settings/org.eclipse.jdt.core.prefs", @@ -1816,6 +1816,7 @@ "extensions/physics-nodes/CCPhysicsDebugNode.h", "extensions/physics-nodes/CCPhysicsSprite.cpp", "extensions/physics-nodes/CCPhysicsSprite.h", + "external/Box2D/CMakeLists.txt", "external/Box2D/include/Box2D/Box2D.h", "external/Box2D/include/Box2D/Collision/Shapes/b2ChainShape.h", "external/Box2D/include/Box2D/Collision/Shapes/b2CircleShape.h", @@ -1872,9 +1873,13 @@ "external/Box2D/prebuilt/mac/libbox2d.a", "external/Box2D/prebuilt/win32/debug/libbox2d.lib", "external/Box2D/prebuilt/win32/release/libbox2d.lib", + "external/CMakeLists.txt", + "external/ConvertUTF/CMakeLists.txt", "external/ConvertUTF/ConvertUTF.c", "external/ConvertUTF/ConvertUTF.h", "external/ConvertUTF/ConvertUTFWrapper.cpp", + "external/README.md", + "external/android-specific/cpufeatures/CMakeLists.txt", "external/android-specific/pvmp3dec/Android.mk", "external/android-specific/pvmp3dec/CMakeLists.txt", "external/android-specific/pvmp3dec/include/mp3_decoder_selection.h", @@ -1990,6 +1995,7 @@ "external/android-specific/tremolo/Tremolo/treminfo.c", "external/android-specific/tremolo/Tremolo/vorbisfile.c", "external/android-specific/tremolo/Tremolo/window_lookup.h", + "external/bullet/CMakeLists.txt", "external/bullet/include/bullet/Bullet-C-Api.h", "external/bullet/include/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.h", "external/bullet/include/bullet/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h", @@ -2300,6 +2306,7 @@ "external/bullet/prebuilt/mac/libMiniCL.a", "external/bullet/prebuilt/win32/debug/libbullet.lib", "external/bullet/prebuilt/win32/release/libbullet.lib", + "external/chipmunk/CMakeLists.txt", "external/chipmunk/include/chipmunk/chipmunk.h", "external/chipmunk/include/chipmunk/chipmunk_ffi.h", "external/chipmunk/include/chipmunk/chipmunk_private.h", @@ -2344,9 +2351,11 @@ "external/chipmunk/prebuilt/win10/x64/chipmunk.lib", "external/chipmunk/prebuilt/win32/debug-lib/libchipmunk.lib", "external/chipmunk/prebuilt/win32/release-lib/libchipmunk.lib", + "external/clipper/CMakeLists.txt", "external/clipper/clipper.cpp", "external/clipper/clipper.hpp", - "external/config.json", + "external/cmake/CocosExternalConfig.cmake", + "external/curl/CMakeLists.txt", "external/curl/include/android/curl/curl.h", "external/curl/include/android/curl/curlbuild-arm32.h", "external/curl/include/android/curl/curlbuild-arm64.h", @@ -2423,8 +2432,13 @@ "external/curl/prebuilt/win10/x64/libcurl_imp.lib", "external/curl/prebuilt/win32/libcurl.dll", "external/curl/prebuilt/win32/libcurl.lib", + "external/edtaa3func/CMakeLists.txt", "external/edtaa3func/edtaa3func.cpp", "external/edtaa3func/edtaa3func.h", + "external/empty.cpp", + "external/fbx-conv/README.md", + "external/fbx-conv/mac/fbx-conv", + "external/fbx-conv/mac/libfbxsdk.dylib", "external/flatbuffers/Android.mk", "external/flatbuffers/CMakeLists.txt", "external/flatbuffers/flatbuffers.h", @@ -2437,6 +2451,7 @@ "external/flatbuffers/idl_gen_text.cpp", "external/flatbuffers/idl_parser.cpp", "external/flatbuffers/util.h", + "external/freetype2/CMakeLists.txt", "external/freetype2/include/android/freetype2/config/ftconfig.h", "external/freetype2/include/android/freetype2/config/ftheader.h", "external/freetype2/include/android/freetype2/config/ftmodule.h", @@ -2539,57 +2554,57 @@ "external/freetype2/include/ios/freetype2/tttables.h", "external/freetype2/include/ios/freetype2/tttags.h", "external/freetype2/include/ios/freetype2/ttunpat.h", - "external/freetype2/include/linux/freetype/config/ftconfig.h", - "external/freetype2/include/linux/freetype/config/ftheader.h", - "external/freetype2/include/linux/freetype/config/ftmodule.h", - "external/freetype2/include/linux/freetype/config/ftoption.h", - "external/freetype2/include/linux/freetype/config/ftstdlib.h", - "external/freetype2/include/linux/freetype/freetype.h", - "external/freetype2/include/linux/freetype/ftadvanc.h", - "external/freetype2/include/linux/freetype/ftautoh.h", - "external/freetype2/include/linux/freetype/ftbbox.h", - "external/freetype2/include/linux/freetype/ftbdf.h", - "external/freetype2/include/linux/freetype/ftbitmap.h", - "external/freetype2/include/linux/freetype/ftbzip2.h", - "external/freetype2/include/linux/freetype/ftcache.h", - "external/freetype2/include/linux/freetype/ftcffdrv.h", - "external/freetype2/include/linux/freetype/ftchapters.h", - "external/freetype2/include/linux/freetype/ftcid.h", - "external/freetype2/include/linux/freetype/fterrdef.h", - "external/freetype2/include/linux/freetype/fterrors.h", - "external/freetype2/include/linux/freetype/ftgasp.h", - "external/freetype2/include/linux/freetype/ftglyph.h", - "external/freetype2/include/linux/freetype/ftgxval.h", - "external/freetype2/include/linux/freetype/ftgzip.h", - "external/freetype2/include/linux/freetype/ftimage.h", - "external/freetype2/include/linux/freetype/ftincrem.h", - "external/freetype2/include/linux/freetype/ftlcdfil.h", - "external/freetype2/include/linux/freetype/ftlist.h", - "external/freetype2/include/linux/freetype/ftlzw.h", - "external/freetype2/include/linux/freetype/ftmac.h", - "external/freetype2/include/linux/freetype/ftmm.h", - "external/freetype2/include/linux/freetype/ftmodapi.h", - "external/freetype2/include/linux/freetype/ftmoderr.h", - "external/freetype2/include/linux/freetype/ftotval.h", - "external/freetype2/include/linux/freetype/ftoutln.h", - "external/freetype2/include/linux/freetype/ftpfr.h", - "external/freetype2/include/linux/freetype/ftrender.h", - "external/freetype2/include/linux/freetype/ftsizes.h", - "external/freetype2/include/linux/freetype/ftsnames.h", - "external/freetype2/include/linux/freetype/ftstroke.h", - "external/freetype2/include/linux/freetype/ftsynth.h", - "external/freetype2/include/linux/freetype/ftsystem.h", - "external/freetype2/include/linux/freetype/fttrigon.h", - "external/freetype2/include/linux/freetype/ftttdrv.h", - "external/freetype2/include/linux/freetype/fttypes.h", - "external/freetype2/include/linux/freetype/ftwinfnt.h", - "external/freetype2/include/linux/freetype/ftxf86.h", - "external/freetype2/include/linux/freetype/t1tables.h", - "external/freetype2/include/linux/freetype/ttnameid.h", - "external/freetype2/include/linux/freetype/tttables.h", - "external/freetype2/include/linux/freetype/tttags.h", - "external/freetype2/include/linux/freetype/ttunpat.h", - "external/freetype2/include/linux/ft2build.h", + "external/freetype2/include/linux/freetype2/config/ftconfig.h", + "external/freetype2/include/linux/freetype2/config/ftheader.h", + "external/freetype2/include/linux/freetype2/config/ftmodule.h", + "external/freetype2/include/linux/freetype2/config/ftoption.h", + "external/freetype2/include/linux/freetype2/config/ftstdlib.h", + "external/freetype2/include/linux/freetype2/freetype.h", + "external/freetype2/include/linux/freetype2/ft2build.h", + "external/freetype2/include/linux/freetype2/ftadvanc.h", + "external/freetype2/include/linux/freetype2/ftautoh.h", + "external/freetype2/include/linux/freetype2/ftbbox.h", + "external/freetype2/include/linux/freetype2/ftbdf.h", + "external/freetype2/include/linux/freetype2/ftbitmap.h", + "external/freetype2/include/linux/freetype2/ftbzip2.h", + "external/freetype2/include/linux/freetype2/ftcache.h", + "external/freetype2/include/linux/freetype2/ftcffdrv.h", + "external/freetype2/include/linux/freetype2/ftchapters.h", + "external/freetype2/include/linux/freetype2/ftcid.h", + "external/freetype2/include/linux/freetype2/fterrdef.h", + "external/freetype2/include/linux/freetype2/fterrors.h", + "external/freetype2/include/linux/freetype2/ftgasp.h", + "external/freetype2/include/linux/freetype2/ftglyph.h", + "external/freetype2/include/linux/freetype2/ftgxval.h", + "external/freetype2/include/linux/freetype2/ftgzip.h", + "external/freetype2/include/linux/freetype2/ftimage.h", + "external/freetype2/include/linux/freetype2/ftincrem.h", + "external/freetype2/include/linux/freetype2/ftlcdfil.h", + "external/freetype2/include/linux/freetype2/ftlist.h", + "external/freetype2/include/linux/freetype2/ftlzw.h", + "external/freetype2/include/linux/freetype2/ftmac.h", + "external/freetype2/include/linux/freetype2/ftmm.h", + "external/freetype2/include/linux/freetype2/ftmodapi.h", + "external/freetype2/include/linux/freetype2/ftmoderr.h", + "external/freetype2/include/linux/freetype2/ftotval.h", + "external/freetype2/include/linux/freetype2/ftoutln.h", + "external/freetype2/include/linux/freetype2/ftpfr.h", + "external/freetype2/include/linux/freetype2/ftrender.h", + "external/freetype2/include/linux/freetype2/ftsizes.h", + "external/freetype2/include/linux/freetype2/ftsnames.h", + "external/freetype2/include/linux/freetype2/ftstroke.h", + "external/freetype2/include/linux/freetype2/ftsynth.h", + "external/freetype2/include/linux/freetype2/ftsystem.h", + "external/freetype2/include/linux/freetype2/fttrigon.h", + "external/freetype2/include/linux/freetype2/ftttdrv.h", + "external/freetype2/include/linux/freetype2/fttypes.h", + "external/freetype2/include/linux/freetype2/ftwinfnt.h", + "external/freetype2/include/linux/freetype2/ftxf86.h", + "external/freetype2/include/linux/freetype2/t1tables.h", + "external/freetype2/include/linux/freetype2/ttnameid.h", + "external/freetype2/include/linux/freetype2/tttables.h", + "external/freetype2/include/linux/freetype2/tttags.h", + "external/freetype2/include/linux/freetype2/ttunpat.h", "external/freetype2/include/mac/freetype2/config/ftconfig.h", "external/freetype2/include/mac/freetype2/config/ftheader.h", "external/freetype2/include/mac/freetype2/config/ftmodule.h", @@ -2698,6 +2713,7 @@ "external/freetype2/include/win10/freetype2/config/ftoption.h", "external/freetype2/include/win10/freetype2/config/ftstdlib.h", "external/freetype2/include/win10/freetype2/freetype.h", + "external/freetype2/include/win10/freetype2/ft2build.h", "external/freetype2/include/win10/freetype2/ftadvanc.h", "external/freetype2/include/win10/freetype2/ftautoh.h", "external/freetype2/include/win10/freetype2/ftbbox.h", @@ -2742,7 +2758,6 @@ "external/freetype2/include/win10/freetype2/tttables.h", "external/freetype2/include/win10/freetype2/tttags.h", "external/freetype2/include/win10/freetype2/ttunpat.h", - "external/freetype2/include/win10/ft2build.h", "external/freetype2/include/win32/freetype2/config/ftconfig.h", "external/freetype2/include/win32/freetype2/config/ftheader.h", "external/freetype2/include/win32/freetype2/config/ftmodule.h", @@ -2843,6 +2858,7 @@ "external/freetype2/prebuilt/win10/win32/freetype.lib", "external/freetype2/prebuilt/win10/x64/freetype.lib", "external/freetype2/prebuilt/win32/freetype.lib", + "external/glfw3/CMakeLists.txt", "external/glfw3/include/linux/glfw3.h", "external/glfw3/include/linux/glfw3native.h", "external/glfw3/include/mac/glfw3.h", @@ -2924,6 +2940,7 @@ "external/json/stream.h", "external/json/stringbuffer.h", "external/json/writer.h", + "external/linux-specific/fmod/CMakeLists.txt", "external/linux-specific/fmod/include/fmod.h", "external/linux-specific/fmod/include/fmod.hpp", "external/linux-specific/fmod/include/fmod_codec.h", @@ -2936,8 +2953,10 @@ "external/linux-specific/fmod/prebuilt/64-bit/libfmod.so.6", "external/linux-specific/fmod/prebuilt/64-bit/libfmodL.so", "external/linux-specific/fmod/prebuilt/64-bit/libfmodL.so.6", + "external/md5/CMakeLists.txt", "external/md5/md5.c", "external/md5/md5.h", + "external/openssl/CMakeLists.txt", "external/openssl/include/android/openssl/aes.h", "external/openssl/include/android/openssl/asn1.h", "external/openssl/include/android/openssl/asn1_mac.h", @@ -3566,6 +3585,7 @@ "external/openssl/prebuilt/win32/libcrypto.lib", "external/openssl/prebuilt/win32/libssl-1_1.dll", "external/openssl/prebuilt/win32/libssl.lib", + "external/png/CMakeLists.txt", "external/png/include/android/png.h", "external/png/include/android/pngconf.h", "external/png/include/android/pnglibconf.h", @@ -3594,6 +3614,7 @@ "external/png/prebuilt/tizen/x86/libpng.a", "external/png/prebuilt/tvos/libpng.a", "external/png/prebuilt/win32/libpng.lib", + "external/poly2tri/CMakeLists.txt", "external/poly2tri/common/shapes.cc", "external/poly2tri/common/shapes.h", "external/poly2tri/common/utils.h", @@ -3671,6 +3692,7 @@ "external/recast/proj.win10/librecast.vcxproj.filters", "external/recast/proj.win32/librecast.vcxproj", "external/recast/proj.win32/librecast.vcxproj.filters", + "external/sqlite3/CMakeLists.txt", "external/sqlite3/include/sqlite3.h", "external/sqlite3/include/sqlite3ext.h", "external/sqlite3/libraries/win10/arm/sqlite3.dll", @@ -3739,6 +3761,7 @@ "external/unzip/ioapi_mem.h", "external/unzip/unzip.cpp", "external/unzip/unzip.h", + "external/uv/CMakeLists.txt", "external/uv/include/uv.h", "external/uv/include/uv/aix.h", "external/uv/include/uv/android-ifaddrs.h", @@ -3812,6 +3835,7 @@ "external/webp/prebuilt/tizen/x86/libwebp.a", "external/webp/prebuilt/tvos/libwebp.a", "external/webp/prebuilt/win32/libwebp.lib", + "external/websockets/CMakeLists.txt", "external/websockets/include/android/libwebsockets.h", "external/websockets/include/android/lws_config.h", "external/websockets/include/ios/libwebsockets.h", @@ -3907,9 +3931,11 @@ "external/win10-specific/zlib/prebuilt/x64/zlib.lib", "external/win10-specific/zlib/prebuilt/x64/zlib1.dll", "external/win10-specific/zlib/prebuilt/x64/zlibstatic.lib", + "external/win32-specific/MP3Decoder/CMakeLists.txt", "external/win32-specific/MP3Decoder/include/mpg123.h", "external/win32-specific/MP3Decoder/prebuilt/libmpg123.dll", "external/win32-specific/MP3Decoder/prebuilt/libmpg123.lib", + "external/win32-specific/OggDecoder/CMakeLists.txt", "external/win32-specific/OggDecoder/include/ogg/ogg.h", "external/win32-specific/OggDecoder/include/ogg/os_types.h", "external/win32-specific/OggDecoder/include/vorbis/codec.h", @@ -3921,6 +3947,7 @@ "external/win32-specific/OggDecoder/prebuilt/libvorbis.lib", "external/win32-specific/OggDecoder/prebuilt/libvorbisfile.dll", "external/win32-specific/OggDecoder/prebuilt/libvorbisfile.lib", + "external/win32-specific/OpenalSoft/CMakeLists.txt", "external/win32-specific/OpenalSoft/include/AL/al.h", "external/win32-specific/OpenalSoft/include/AL/alc.h", "external/win32-specific/OpenalSoft/include/AL/alext.h", @@ -3929,14 +3956,17 @@ "external/win32-specific/OpenalSoft/include/AL/efx.h", "external/win32-specific/OpenalSoft/prebuilt/OpenAL32.dll", "external/win32-specific/OpenalSoft/prebuilt/OpenAL32.lib", + "external/win32-specific/gles/CMakeLists.txt", "external/win32-specific/gles/include/OGLES/GL/glew.h", "external/win32-specific/gles/include/OGLES/GL/glxew.h", "external/win32-specific/gles/include/OGLES/GL/wglew.h", "external/win32-specific/gles/prebuilt/glew32.dll", "external/win32-specific/gles/prebuilt/glew32.lib", + "external/win32-specific/icon/CMakeLists.txt", "external/win32-specific/icon/include/iconv.h", "external/win32-specific/icon/prebuilt/iconv.dll", "external/win32-specific/icon/prebuilt/libiconv.lib", + "external/win32-specific/zlib/Readme.md", "external/win32-specific/zlib/include/zconf.h", "external/win32-specific/zlib/include/zlib.h", "external/win32-specific/zlib/prebuilt/libzlib.lib", @@ -3944,8 +3974,10 @@ "external/xxhash/CMakeLists.txt", "external/xxhash/xxhash.c", "external/xxhash/xxhash.h", + "external/xxtea/CMakeLists.txt", "external/xxtea/xxtea.cpp", "external/xxtea/xxtea.h", + "external/zlib/CMakeLists.txt", "external/zlib/include/zconf.h", "external/zlib/include/zlib.h", "external/zlib/prebuilt/android/Android.mk", @@ -3992,9 +4024,6 @@ "tools/appveyor-scripts/setup_android.py", "tools/coding-style/include-linter.py", "tools/coding-style/tailing-spaces.py", - "tools/fbx-conv/README.md", - "tools/fbx-conv/mac/fbx-conv", - "tools/fbx-conv/mac/libfbxsdk.dylib", "tools/missing-tools.txt", "tools/particle/convert_YCoordFlipped.py", "tools/performance-analyze/README.md", @@ -4344,6 +4373,7 @@ "cocos/scripting/js-bindings/precheader.cpp", "cocos/scripting/js-bindings/precheader.h", "cocos/scripting/js-bindings/proj.android/Android.mk", + "cocos/scripting/js-bindings/proj.android/CMakeLists.txt", "cocos/scripting/js-bindings/proj.ios_mac/cocos2d_js_bindings.xcodeproj/project.pbxproj", "cocos/scripting/js-bindings/proj.win32/libjscocos2d.vcxproj", "cocos/scripting/js-bindings/proj.win32/libjscocos2d.vcxproj.filters", @@ -4406,6 +4436,7 @@ "cocos/scripting/js-bindings/script/studio/parsers/timelineParser-1.x.js", "cocos/scripting/js-bindings/script/studio/parsers/timelineParser-2.x.js", "cocos/scripting/js-bindings/script/studio/parsers/uiParser-1.x.js", + "external/spidermonkey/CMakeLists.txt", "external/spidermonkey/README.md", "external/spidermonkey/include/android/js-config-32.h", "external/spidermonkey/include/android/js-config-64.h", @@ -4976,8 +5007,7 @@ "tools/tojs/cocos2dx_spine.ini", "tools/tojs/cocos2dx_studio.ini", "tools/tojs/cocos2dx_ui.ini", - "tools/tojs/genbindings.py", - "tools/tojs/userconf.ini" + "tools/tojs/genbindings.py" ], "lua": [ "cocos/scripting/lua-bindings/CMakeLists.txt", @@ -5566,6 +5596,7 @@ "cocos/scripting/lua-bindings/manual/video/lua_cocos2dx_experimental_video_manual.cpp", "cocos/scripting/lua-bindings/manual/video/lua_cocos2dx_experimental_video_manual.hpp", "cocos/scripting/lua-bindings/proj.android/Android.mk", + "cocos/scripting/lua-bindings/proj.android/CMakeLists.txt", "cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj", "cocos/scripting/lua-bindings/proj.tizen/.cproject", "cocos/scripting/lua-bindings/proj.tizen/.project", @@ -5707,6 +5738,7 @@ "external/lua/lua/lzio.h", "external/lua/lua/prebuilt/ios/liblua.a", "external/lua/lua/print.c", + "external/lua/luajit/CMakeLists.txt", "external/lua/luajit/include/lauxlib.h", "external/lua/luajit/include/lua.h", "external/lua/luajit/include/lua.hpp", @@ -5722,6 +5754,7 @@ "external/lua/luajit/prebuilt/mac/libluajit.a", "external/lua/luajit/prebuilt/win32/lua51.dll", "external/lua/luajit/prebuilt/win32/lua51.lib", + "external/lua/luasocket/CMakeLists.txt", "external/lua/luasocket/auxiliar.c", "external/lua/luasocket/auxiliar.h", "external/lua/luasocket/buffer.c", @@ -5859,7 +5892,6 @@ "tools/tolua/cocos2dx_spine.ini", "tools/tolua/cocos2dx_studio.ini", "tools/tolua/cocos2dx_ui.ini", - "tools/tolua/genbindings.py", - "tools/tolua/userconf.ini" + "tools/tolua/genbindings.py" ] } \ No newline at end of file diff --git a/templates/cpp-template-default/CMakeLists.txt b/templates/cpp-template-default/CMakeLists.txt index d26e44199a..5375c9488e 100644 --- a/templates/cpp-template-default/CMakeLists.txt +++ b/templates/cpp-template-default/CMakeLists.txt @@ -23,7 +23,7 @@ # THE SOFTWARE. # ****************************************************************************/ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.6) set(APP_NAME HelloCpp) @@ -48,10 +48,6 @@ if(APPLE OR WINDOWS) cocos_mark_multi_resources(common_res_files RES_TO "Resources" FOLDERS ${GAME_RES_FOLDER}) endif() -include_directories( - Classes - ${COCOS2DX_ROOT_PATH}/cocos/audio/include/ -) # add cross-platforms source files and header files list(APPEND GAME_SOURCE Classes/AppDelegate.cpp @@ -115,16 +111,26 @@ elseif(APPLE) endif() # mark app complie info and libs info -set(APP_SRC - ${GAME_SOURCE} +set(all_code_files ${GAME_HEADER} + ${GAME_SOURCE} ) -cocos_build_app(${APP_NAME} - APP_SRC "${APP_SRC}" - DEPEND_COMMON_LIBS "cocos2d" - DEPEND_ANDROID_LIBS "cocos2d_android" - ) +if(NOT ANDROID) + add_executable(${APP_NAME} ${all_code_files}) +else() + add_library(${APP_NAME} SHARED ${all_code_files}) + add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/platform) + target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) +endif() +target_link_libraries(${APP_NAME} cocos2d) +target_include_directories(${APP_NAME} + PRIVATE Classes + PRIVATE ${COCOS2DX_ROOT_PATH}/cocos/audio/include/ +) + +# mark app resources +setup_cocos_app_config(${APP_NAME}) if(APPLE) set_target_properties(${APP_NAME} PROPERTIES RESOURCE "${APP_UI_RES}") if(MACOSX) diff --git a/templates/js-template-default/CMakeLists.txt b/templates/js-template-default/CMakeLists.txt index 4e0618b33f..6b5928698b 100644 --- a/templates/js-template-default/CMakeLists.txt +++ b/templates/js-template-default/CMakeLists.txt @@ -24,7 +24,7 @@ # THE SOFTWARE. # ****************************************************************************/ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.6) set(APP_NAME HelloJavascript) @@ -66,13 +66,6 @@ endif() set(GAME_SOURCE ${RUNTIME_SRC_ROOT}/Classes/AppDelegate.cpp) set(GAME_HEADER ${RUNTIME_SRC_ROOT}/Classes/AppDelegate.h) -# sources need to compile info, include dirs and source files -include_directories( - ${RUNTIME_SRC_ROOT}/Classes - ${COCOS2DX_ROOT_PATH}/cocos/editor-support - ${COCOS2DX_ROOT_PATH}/external/spidermonkey/include/${PLATFORM_FOLDER} -) - if(ANDROID) # change APP_NAME to the share library name for Android, it's value depend on AndroidManifest.xml set(APP_NAME cocos2djs) @@ -122,13 +115,19 @@ endif() set(APP_SRC ${GAME_HEADER} ${GAME_SOURCE}) # mark app complie info and libs info -cocos_build_app(${APP_NAME} - APP_SRC "${APP_SRC}" - DEPEND_COMMON_LIBS "jscocos2d" "cocos2d" - DEPEND_ANDROID_LIBS "cocos2d_android" - ) +if(NOT ANDROID) + add_executable(${APP_NAME} ${APP_SRC}) +else() + add_library(${APP_NAME} SHARED ${APP_SRC}) + add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/platform) + target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) +endif() + +target_link_libraries(${APP_NAME} jscocos2d) +target_include_directories(${APP_NAME} PRIVATE ${RUNTIME_SRC_ROOT}/Classes) # mark app resources, resource will be copy auto after mark +setup_cocos_app_config(${APP_NAME}) if(APPLE) set_target_properties(${APP_NAME} PROPERTIES RESOURCE "${APP_UI_RES}") if(MACOSX) diff --git a/templates/lua-template-default/CMakeLists.txt b/templates/lua-template-default/CMakeLists.txt index 6c952346a8..60fe55257a 100644 --- a/templates/lua-template-default/CMakeLists.txt +++ b/templates/lua-template-default/CMakeLists.txt @@ -21,7 +21,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # ****************************************************************************/ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.6) set(APP_NAME HelloLua) @@ -135,15 +135,19 @@ endif() set(APP_SRC ${GAME_HEADER} ${GAME_SOURCE}) # mark app complie info and libs info -cocos_build_app(${APP_NAME} - APP_SRC "${APP_SRC}" - DEPEND_COMMON_LIBS "luacocos2d" "cocos2d" - DEPEND_ANDROID_LIBS "cocos2d_android" - DEPEND_MACOSX_LIBS "simulator" - DEPEND_WINDOWS_LIBS "simulator" - ) +if(NOT ANDROID) + add_executable(${APP_NAME} ${APP_SRC}) +else() + add_library(${APP_NAME} SHARED ${APP_SRC}) + add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/platform) + target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) +endif() -# mark app resources +target_link_libraries(${APP_NAME} luacocos2d) +target_include_directories(${APP_NAME} PRIVATE ${RUNTIME_SRC_ROOT}/Classes) + +# mark app resources, resource will be copy auto after mark +setup_cocos_app_config(${APP_NAME}) if(APPLE) set_target_properties(${APP_NAME} PROPERTIES RESOURCE "${APP_UI_RES}") if(MACOSX) diff --git a/tests/cpp-empty-test/CMakeLists.txt b/tests/cpp-empty-test/CMakeLists.txt index 812b3b037d..f94ed76180 100644 --- a/tests/cpp-empty-test/CMakeLists.txt +++ b/tests/cpp-empty-test/CMakeLists.txt @@ -21,7 +21,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # ****************************************************************************/ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.6) set(APP_NAME cpp-empty-test) @@ -113,16 +113,21 @@ set(all_code_files ${GAME_SOURCE} ) -include_directories(Classes) +# mark app complie info +if(NOT ANDROID) + add_executable(${APP_NAME} ${all_code_files}) +else() + add_library(${APP_NAME} SHARED ${all_code_files}) + add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/platform) + target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) +endif() -# mark app complie info and libs info -cocos_build_app(${APP_NAME} - APP_SRC "${all_code_files}" - DEPEND_COMMON_LIBS "cocos2d" - DEPEND_ANDROID_LIBS "cocos2d_android" - ) +target_link_libraries(${APP_NAME} cocos2d) + +target_include_directories(${APP_NAME} PRIVATE Classes) # mark app resources +setup_cocos_app_config(${APP_NAME}) if(APPLE) set_target_properties(${APP_NAME} PROPERTIES RESOURCE "${APP_UI_RES}") if(MACOSX) diff --git a/tests/cpp-tests/CMakeLists.txt b/tests/cpp-tests/CMakeLists.txt index ecb376ae97..621adf3311 100644 --- a/tests/cpp-tests/CMakeLists.txt +++ b/tests/cpp-tests/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.6) set(APP_NAME cpp-tests) @@ -91,7 +91,6 @@ list(APPEND GAME_HEADER Classes/UnitTest/UnitTest.h Classes/UnitTest/RefPtrTest.h Classes/ConfigurationTest/ConfigurationTest.h - Classes/PhysicsTest/PhysicsTest.h Classes/CurrentLanguageTest/CurrentLanguageTest.h Classes/AppDelegate.h Classes/LabelTest/LabelTestNew.h @@ -278,7 +277,6 @@ list(APPEND GAME_SOURCE Classes/ParallaxTest/ParallaxTest.cpp Classes/Particle3DTest/Particle3DTest.cpp Classes/ParticleTest/ParticleTest.cpp - Classes/PhysicsTest/PhysicsTest.cpp Classes/ReleasePoolTest/ReleasePoolTest.cpp Classes/RenderTextureTest/RenderTextureTest.cpp Classes/RotateWorldTest/RotateWorldTest.cpp @@ -360,16 +358,6 @@ if(WIN32 OR MACOSX OR LINUX) ) endif() -if(USE_CHIPMUNK) - include_directories(${CHIPMUNK_INCLUDE_DIRS}) - list(APPEND GAME_HEADER - Classes/ChipmunkTest/ChipmunkTest.h - ) - list(APPEND GAME_SOURCE - Classes/ChipmunkTest/ChipmunkTest.cpp - ) -endif() - if(USE_BOX2D) list(APPEND GAME_HEADER Classes/Box2DTest/Box2dTest.cpp @@ -449,31 +437,46 @@ if(USE_BULLET) include_directories(${BULLET_INCLUDE_DIRS}) endif() + +if(USE_CHIPMUNK) + include_directories(${CHIPMUNK_INCLUDE_DIRS}) + list(APPEND GAME_HEADER + Classes/PhysicsTest/PhysicsTest.h + Classes/ChipmunkTest/ChipmunkTest.h + ) + list(APPEND GAME_SOURCE + Classes/PhysicsTest/PhysicsTest.cpp + Classes/ChipmunkTest/ChipmunkTest.cpp + ) +endif() + if(NOT LINUX) list(APPEND GAME_SOURCE Classes/UITest/CocoStudioGUITest/UIEditBoxTest.cpp ) endif() -include_directories( - Classes - ${COCOS2DX_ROOT_PATH}/cocos/editor-support -) - # mark app complie info and libs info -set(APP_SRC +set(all_code_files ${GAME_HEADER} ${GAME_SOURCE} ) -cocos_build_app(${APP_NAME} - APP_SRC "${APP_SRC}" - DEPEND_COMMON_LIBS "cocos2d" - DEPEND_ANDROID_LIBS "cocos2d_android" - COMMON_USE_PKGS "FREETYPE" "CURL" - LINUX_USE_PKGS "FONTCONFIG" "GTK3" - ) + +if(NOT ANDROID) + add_executable(${APP_NAME} ${all_code_files}) +else() + add_library(${APP_NAME} SHARED ${all_code_files}) + add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/platform) + target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) +endif() + +target_link_libraries(${APP_NAME} cocos2d) +target_include_directories(${APP_NAME} + PRIVATE Classes +) # mark app resources +setup_cocos_app_config(${APP_NAME}) if(APPLE) set_target_properties(${APP_NAME} PROPERTIES RESOURCE "${APP_UI_RES}") if(MACOSX) diff --git a/tests/js-tests/project/CMakeLists.txt b/tests/js-tests/project/CMakeLists.txt index 69748162cc..be5ed780b4 100644 --- a/tests/js-tests/project/CMakeLists.txt +++ b/tests/js-tests/project/CMakeLists.txt @@ -21,14 +21,13 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # ****************************************************************************/ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.6) set(APP_NAME js-tests) project(${APP_NAME}) if(NOT DEFINED BUILD_ENGINE_DONE) - # define some variables set(COCOS2DX_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../..) set(CMAKE_MODULE_PATH ${COCOS2DX_ROOT_PATH}/cmake/Modules/) @@ -43,6 +42,7 @@ set(res_main_files "${CMAKE_CURRENT_SOURCE_DIR}/../main.js" "${CMAKE_CURRENT_SOURCE_DIR}/../project.json" ) +# to check, dumplicate copy on macOS sometime. why? # "${COCOS2DX_ROOT_PATH}/tests/cpp-tests/Resources" set(res_res_folders "${CMAKE_CURRENT_SOURCE_DIR}/../resjs" @@ -132,27 +132,23 @@ list(APPEND GAME_SOURCE Classes/js_Effect3D_bindings.cpp ) -include_directories( - Classes - ${COCOS2DX_ROOT_PATH}/cocos/scripting/js-bindings/auto - ${COCOS2DX_ROOT_PATH}/cocos/scripting/js-bindings/manual - ${COCOS2DX_ROOT_PATH}/cocos/base - ${COCOS2DX_ROOT_PATH}/cocos/editor-support - ${COCOS2DX_ROOT_PATH}/cocos/audio/include - ${COCOS2DX_ROOT_PATH}/external/spidermonkey/include/${PLATFORM_FOLDER} - ${COCOS2DX_ROOT_PATH}/external/chipmunk/include/chipmunk -) - set(APP_SRC ${GAME_HEADER} ${GAME_SOURCE}) -# mark app complie info and libs info -cocos_build_app(${APP_NAME} - APP_SRC "${APP_SRC}" - DEPEND_COMMON_LIBS "jscocos2d" "cocos2d" - DEPEND_ANDROID_LIBS "cocos2d_android" - ) +if(NOT ANDROID) + add_executable(${APP_NAME} ${APP_SRC}) +else() + add_library(${APP_NAME} SHARED ${APP_SRC}) + add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/cpp-android) + target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) + add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/scripting/js-bindings/proj.android ${ENGINE_BINARY_PATH}/cocos/js-android) + target_link_libraries(${APP_NAME} -Wl,--whole-archive js_android_spec -Wl,--no-whole-archive) +endif() + +target_link_libraries(${APP_NAME} jscocos2d) +target_include_directories(${APP_NAME} PRIVATE Classes) # mark app resources +setup_cocos_app_config(${APP_NAME}) if(APPLE) set_target_properties(${APP_NAME} PROPERTIES RESOURCE "${APP_UI_RES}") if(MACOSX) diff --git a/tests/lua-empty-test/project/CMakeLists.txt b/tests/lua-empty-test/project/CMakeLists.txt index 39490ff52e..cf85a2038f 100644 --- a/tests/lua-empty-test/project/CMakeLists.txt +++ b/tests/lua-empty-test/project/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.6) set(APP_NAME lua-empty-test) @@ -84,25 +84,23 @@ elseif(APPLE) list(APPEND GAME_SOURCE ${cc_common_res}) endif() -include_directories( - Classes - ${COCOS2DX_ROOT_PATH}/cocos/scripting/lua-bindings/auto - ${COCOS2DX_ROOT_PATH}/cocos/scripting/lua-bindings/manual - ${COCOS2DX_ROOT_PATH}/external/lua/luajit/include - ${COCOS2DX_ROOT_PATH}/external/lua/tolua -) - -include_directories(${LUAJIT_INCLUDE_DIRS}) - set(APP_SRC ${GAME_HEADER} ${GAME_SOURCE}) -# mark app complie info and libs info -cocos_build_app(${APP_NAME} - APP_SRC "${APP_SRC}" - DEPEND_COMMON_LIBS "luacocos2d" "cocos2d" - DEPEND_ANDROID_LIBS "cocos2d_android" - ) + +if(NOT ANDROID) + add_executable(${APP_NAME} ${APP_SRC}) +else() + add_library(${APP_NAME} SHARED ${APP_SRC}) + add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/cpp-android) + target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) + add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/scripting/lua-bindings/proj.android ${ENGINE_BINARY_PATH}/cocos/lua-android) + target_link_libraries(${APP_NAME} -Wl,--whole-archive lua_android_spec -Wl,--no-whole-archive) +endif() + +target_link_libraries(${APP_NAME} luacocos2d) +target_include_directories(${APP_NAME} PRIVATE Classes) # mark app resources +setup_cocos_app_config(${APP_NAME}) if(APPLE) set_target_properties(${APP_NAME} PROPERTIES RESOURCE "${APP_UI_RES}") if(MACOSX) diff --git a/tests/lua-tests/project/CMakeLists.txt b/tests/lua-tests/project/CMakeLists.txt index e8d534e29d..3b7e72dc3f 100644 --- a/tests/lua-tests/project/CMakeLists.txt +++ b/tests/lua-tests/project/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.6) set(APP_NAME lua-tests) @@ -93,24 +93,22 @@ elseif(APPLE) list(APPEND GAME_SOURCE ${cc_common_res}) endif() -include_directories( - Classes - ${COCOS2DX_ROOT_PATH}/cocos/scripting/lua-bindings/manual - ${COCOS2DX_ROOT_PATH}/cocos/scripting/lua-bindings/auto - ${COCOS2DX_ROOT_PATH}/external/lua/tolua -) - -include_directories(${LUAJIT_INCLUDE_DIRS}) - set(APP_SRC ${GAME_HEADER} ${GAME_SOURCE}) -# mark app complie info and libs info -cocos_build_app(${APP_NAME} - APP_SRC "${APP_SRC}" - DEPEND_COMMON_LIBS "luacocos2d" "cocos2d" - DEPEND_ANDROID_LIBS "cocos2d_android" - ) + +if(NOT ANDROID) + add_executable(${APP_NAME} ${APP_SRC}) +else() + add_library(${APP_NAME} SHARED ${APP_SRC}) + add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/cpp-android) + target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) + add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos/scripting/lua-bindings/proj.android ${ENGINE_BINARY_PATH}/cocos/lua-android) + target_link_libraries(${APP_NAME} -Wl,--whole-archive lua_android_spec -Wl,--no-whole-archive) +endif() +target_link_libraries(${APP_NAME} luacocos2d) +target_include_directories(${APP_NAME} PRIVATE Classes) # mark app resources +setup_cocos_app_config(${APP_NAME}) if(APPLE) set_target_properties(${APP_NAME} PROPERTIES RESOURCE "${APP_UI_RES}") if(MACOSX) diff --git a/tools/appveyor-scripts/build.ps1 b/tools/appveyor-scripts/build.ps1 index a859957deb..f81d952968 100644 --- a/tools/appveyor-scripts/build.ps1 +++ b/tools/appveyor-scripts/build.ps1 @@ -19,7 +19,16 @@ function PushAndroidArtifacts If ($env:build_type -eq "android_cpp_tests") { Write-Host "Build tests\cpp-tests" Push-Location $env:APPVEYOR_BUILD_FOLDER\tests\cpp-tests\proj.android\ - & ./gradlew assembleDebug + & ./gradlew assembleRelease -PPROP_BUILD_TYPE=cmake --parallel --info + if ($lastexitcode -ne 0) {throw} + PushAndroidArtifacts + Pop-Location + +} elseif ($env:build_type -eq "android_lua_tests") { + Write-Host "Build tests\lua-test" + Push-Location $env:APPVEYOR_BUILD_FOLDER\tests\lua-tests\project\proj.android\ + # tocheck, release mode failed on "LuaTests:mergeReleaseAssets" + & ./gradlew assembleDebug -PPROP_BUILD_TYPE=ndk-build --parallel --info if ($lastexitcode -ne 0) {throw} PushAndroidArtifacts Pop-Location @@ -39,7 +48,7 @@ If ($env:build_type -eq "android_cpp_tests") { Write-Host "Build cocos_new_test" Push-Location $env:APPVEYOR_BUILD_FOLDER\cocos_new_test\proj.android\ - & ./gradlew assembleRelease + & ./gradlew assembleRelease -PPROP_BUILD_TYPE=cmake --parallel --info if ($lastexitcode -ne 0) {throw} PushAndroidArtifacts Pop-Location @@ -49,27 +58,27 @@ If ($env:build_type -eq "android_cpp_tests") { # & $python -u tools\cocos2d-console\bin\cocos.py gen-libs -p android -m release --ap android-15 --app-abi armeabi-v7a --agreement n # if ($lastexitcode -ne 0) {throw} -} elseif ($env:build_type -eq "windows32_cocos_new_test") { - Write-Host "Create new project windows32_cocos_new_test" - & $python -u tools\cocos2d-console\bin\cocos.py --agreement n new -l cpp -p my.pack.qqqq cocos_new_test - if ($lastexitcode -ne 0) {throw} +} elseif ($env:build_type -eq "windows32_cmake_test") { + Write-Host "Build tests project by cmake" - & mkdir $env:APPVEYOR_BUILD_FOLDER\cocos_new_test\b - if ($lastexitcode -ne 0) {throw} + & mkdir $env:APPVEYOR_BUILD_FOLDER\win32-build + # if ($lastexitcode -ne 0) {throw} # mkdir return no-zero - Push-Location $env:APPVEYOR_BUILD_FOLDER\cocos_new_test\b + Push-Location $env:APPVEYOR_BUILD_FOLDER\win32-build & cmake -DCMAKE_BUILD_TYPE=Release .. if ($lastexitcode -ne 0) {throw} & cmake --build . --config Release if ($lastexitcode -ne 0) {throw} - & 7z a release_win32.7z $env:APPVEYOR_BUILD_FOLDER\cocos_new_test\b\bin\ + & 7z a release_win32.7z $env:APPVEYOR_BUILD_FOLDER\win32-build\bin\ if ($lastexitcode -ne 0) {throw} Push-AppveyorArtifact release_win32.7z + Pop-Location } Else { + # default, windows32_sln_test & msbuild $env:APPVEYOR_BUILD_FOLDER\build\cocos2d-win32.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m /consoleloggerparameters:"PerformanceSummary;NoSummary" if ($lastexitcode -ne 0) {throw} diff --git a/tools/travis-scripts/before-install.sh b/tools/travis-scripts/before-install.sh index 43aa41d278..e98792ccd7 100755 --- a/tools/travis-scripts/before-install.sh +++ b/tools/travis-scripts/before-install.sh @@ -12,6 +12,7 @@ function install_android_ndk() if [ "$BUILD_TARGET" == "android_ndk-build" ]\ || [ "$BUILD_TARGET" == "android_lua_ndk-build" ]\ || [ "$BUILD_TARGET" == "android_cmake" ]\ + || [ "$BUILD_TARGET" == "android_js_cmake" ]\ || [ "$BUILD_TARGET" == "android_lua_cmake" ] ; then python $COCOS2DX_ROOT/tools/appveyor-scripts/setup_android.py else diff --git a/tools/travis-scripts/run-script.sh b/tools/travis-scripts/run-script.sh index eb51e7bac5..fda27302f6 100755 --- a/tools/travis-scripts/run-script.sh +++ b/tools/travis-scripts/run-script.sh @@ -39,27 +39,40 @@ function build_ios() function build_mac_cmake() { - pushd $COCOS2DX_ROOT - python -u tools/cocos2d-console/bin/cocos.py --agreement n new -l cpp -p my.pack.qqqq cocos_new_test - popd - cd $COCOS2DX_ROOT/cocos_new_test + NUM_OF_CORES=`getconf _NPROCESSORS_ONLN` + + # pushd $COCOS2DX_ROOT + # python -u tools/cocos2d-console/bin/cocos.py --agreement n new -l cpp -p my.pack.qqqq cocos_new_test + # popd + # cd $COCOS2DX_ROOT/cocos_new_test + cd $COCOS2DX_ROOT mkdir -p mac_cmake_build cd mac_cmake_build - cmake .. - cmake --build . + cmake .. -GXcode + # cmake --build . + xcodebuild -project Cocos2d-x.xcodeproj -alltargets -jobs $NUM_OF_CORES build | xcpretty + #the following commands must not be removed + xcodebuild -project Cocos2d-x.xcodeproj -alltargets -jobs $NUM_OF_CORES build exit 0 } function build_ios_cmake() { - pushd $COCOS2DX_ROOT - python -u tools/cocos2d-console/bin/cocos.py --agreement n new -l cpp -p my.pack.qqqq cocos_new_test - popd - cd $COCOS2DX_ROOT/cocos_new_test + NUM_OF_CORES=`getconf _NPROCESSORS_ONLN` + + # pushd $COCOS2DX_ROOT + # python -u tools/cocos2d-console/bin/cocos.py --agreement n new -l cpp -p my.pack.qqqq cocos_new_test + # popd + # cd $COCOS2DX_ROOT/cocos_new_test + cd $COCOS2DX_ROOT mkdir -p ios_cmake_build cd ios_cmake_build cmake .. -DCMAKE_TOOLCHAIN_FILE=$COCOS2DX_ROOT/cmake/ios.toolchain.cmake -GXcode -DIOS_PLATFORM=SIMULATOR64 - cmake --build . + # too much logs on console when "cmake --build ." + # cmake --build . + xcodebuild -project Cocos2d-x.xcodeproj -alltargets -jobs $NUM_OF_CORES -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" build | xcpretty + #the following commands must not be removed + xcodebuild -project Cocos2d-x.xcodeproj -alltargets -jobs $NUM_OF_CORES -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" build exit 0 } @@ -124,6 +137,19 @@ function build_android_lua_cmake() } +function build_android_js_cmake() +{ + # Build all samples + echo "Building Android samples js ..." + source ../environment.sh + + # build lua-tests + pushd $COCOS2DX_ROOT/tests/js-tests/project/proj.android + ./gradlew assembleDebug -PPROP_BUILD_TYPE=cmake --parallel --info + popd + +} + function genernate_binding_codes() { if [ $TRAVIS_OS_NAME == "linux" ]; then @@ -158,12 +184,39 @@ function genernate_binding_codes() fi } +# generate cocos_files.json and check diff +function update_cocos_files() +{ + # Don't exit on non-zero return value + set +e + + COCOSFILE_PATH="$COCOS2DX_ROOT/templates/cocos2dx_files.json" + echo "Updates cocos_files.json" + $COCOS2DX_ROOT/tools/travis-scripts/generate-template-files.py + git diff FETCH_HEAD --stat --exit-code "$COCOSFILE_PATH" + COCOSFILE_DIFF_RETVAL=$? + + if [ $LUA_DIFF_RETVAL -eq 0 ] && [ $JS_DIFF_RETVAL -eq 0 ] && [ $COCOSFILE_DIFF_RETVAL -eq 0 ]; then + echo + echo "No differences in generated files" + echo "Exiting with success." + echo + exit 0 + else + echo + echo "Generated files differ from HEAD. Continuing." + echo + fi + + # Exit on error + set -e +} + function generate_pull_request_for_binding_codes_and_cocosfiles() { COCOS_ROBOT_REMOTE="https://${GH_USER}:${GH_PASSWORD}@github.com/${GH_USER}/cocos2d-x.git" LUA_AUTO_GENERATE_SCRIPT_PATH="$COCOS2DX_ROOT/cocos/scripting/lua-bindings/auto" JS_AUTO_GENERATE_SCRIPT_PATH="$COCOS2DX_ROOT/cocos/scripting/js-bindings/auto" - COCOSFILE_PATH="$COCOS2DX_ROOT/templates/cocos2dx_files.json" ELAPSEDSECS=`date +%s` COCOS_BRANCH="update_lua_bindings_$ELAPSEDSECS" COMMITTAG="[ci skip][AUTO]: updating luabinding & jsbinding & cocos_file.json automatically" @@ -192,22 +245,7 @@ function generate_pull_request_for_binding_codes_and_cocosfiles() JS_DIFF_RETVAL=$? # generate cocos_files.json and check diff - echo "Updates cocos_files.json" - $COCOS2DX_ROOT/tools/travis-scripts/generate-template-files.py - git diff FETCH_HEAD --stat --exit-code "$COCOSFILE_PATH" - COCOSFILE_DIFF_RETVAL=$? - - if [ $LUA_DIFF_RETVAL -eq 0 ] && [ $JS_DIFF_RETVAL -eq 0 ] && [ $COCOSFILE_DIFF_RETVAL -eq 0 ]; then - echo - echo "No differences in generated files" - echo "Exiting with success." - echo - exit 0 - else - echo - echo "Generated files differ from HEAD. Continuing." - echo - fi + update_cocos_files # Exit on error set -e @@ -259,6 +297,11 @@ function run_pull_request() build_android_lua_cmake fi + # android_js + if [ $BUILD_TARGET == 'android_js_cmake' ]; then + build_android_js_cmake + fi + if [ $BUILD_TARGET == 'mac' ]; then build_mac fi @@ -298,6 +341,7 @@ if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then if [ "$BUILD_TARGET" == "android_cocos_new_test" ]; then source ../environment.sh pushd $COCOS2DX_ROOT + update_cocos_files python -u tools/cocos2d-console/bin/cocos.py --agreement n new -l cpp -p my.pack.qqqq cocos_new_test popd pushd $COCOS2DX_ROOT/cocos_new_test/proj.android @@ -308,7 +352,8 @@ if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then if [ "$BUILD_TARGET" == "linux_cocos_new_test" ]; then pushd $COCOS2DX_ROOT - python -u tools/cocos2d-console/bin/cocos.py --agreement n new -l cpp -p my.pack.qqqq cocos_new_test + update_cocos_files + python -u tools/cocos2d-console/bin/cocos.py --agreement n new -l lua -p my.pack.qqqq cocos_new_test popd CPU_CORES=`grep -c ^processor /proc/cpuinfo` echo "Building tests ..."