diff --git a/.travis.yml b/.travis.yml index 37f6580921..70f98a4742 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,7 @@ matrix: - os: osx env: BUILD_TARGET=mac_cmake language: cpp - osx_image: xcode9.3 + osx_image: xcode10.3 sudo: required # iOS_cmake - os: osx diff --git a/cmake/Modules/CocosConfigDefine.cmake b/cmake/Modules/CocosConfigDefine.cmake index 45250835d2..54ae371fa8 100644 --- a/cmake/Modules/CocosConfigDefine.cmake +++ b/cmake/Modules/CocosConfigDefine.cmake @@ -1,34 +1,39 @@ +If(APPLE) + if(${CMAKE_VERSION} VERSION_LESS "3.14") + message(FATAL_ERROR "Please use CMake 3.14 or newer for Apple platform (macOS, iOS, tvOS or watchOS)") + endif() +endif() + #Please use them everywhere #WINDOWS = Windows Desktop #ANDROID = Android #IOS = iOS #MACOSX = MacOS X #LINUX = Linux - if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") - set(WINDOWS TRUE) - set(PLATFORM_FOLDER win32) - elseif(${CMAKE_SYSTEM_NAME} MATCHES "Android") - set(PLATFORM_FOLDER android) - elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") - if(ANDROID) - set(PLATFORM_FOLDER android) - else() - set(LINUX TRUE) - set(PLATFORM_FOLDER linux) - endif() - elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - if(IOS) - set(APPLE TRUE) - set(PLATFORM_FOLDER ios) - else() - set(APPLE TRUE) - set(MACOSX TRUE) - set(PLATFORM_FOLDER mac) - endif() - else() - message(FATAL_ERROR "Unsupported platform, CMake will exit") - return() - endif() +if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") + set(WINDOWS TRUE) + set(PLATFORM_FOLDER win32) +elseif(${CMAKE_SYSTEM_NAME} MATCHES "Android") + set(PLATFORM_FOLDER android) +elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + if(ANDROID) + set(PLATFORM_FOLDER android) + else() + set(LINUX TRUE) + set(PLATFORM_FOLDER linux) + endif() +elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(APPLE TRUE) + set(MACOSX TRUE) + set(PLATFORM_FOLDER mac) +elseif(${CMAKE_SYSTEM_NAME} MATCHES "iOS") + set(APPLE TRUE) + set(IOS TRUE) + set(PLATFORM_FOLDER ios) +else() + message(FATAL_ERROR "Unsupported platform, CMake will exit") + return() +endif() # generators that are capable of organizing into a hierarchy of folders set_property(GLOBAL PROPERTY USE_FOLDERS ON) diff --git a/cmake/ios.toolchain.cmake b/cmake/ios.toolchain.cmake deleted file mode 100644 index 3d9bd3050c..0000000000 --- a/cmake/ios.toolchain.cmake +++ /dev/null @@ -1,216 +0,0 @@ -# This file is based off of the Platform/Darwin.cmake and Platform/UnixPaths.cmake -# files which are included with CMake 2.8.4 -# It has been altered for iOS development - -# Options: -# -# IOS_PLATFORM = OS (default) or SIMULATOR -# This decides if SDKS will be selected from the iPhoneOS.platform or iPhoneSimulator.platform folders -# OS - the default, used to build for iPhone and iPad physical devices, which have an arm arch. -# SIMULATOR - used to build for the Simulator platforms, which have an x86 arch. -# -# CMAKE_IOS_DEVELOPER_ROOT = automatic(default) or /path/to/platform/Developer folder -# By default this location is automatcially chosen based on the IOS_PLATFORM value above. -# If set manually, it will override the default location and force the user of a particular Developer Platform -# -# CMAKE_IOS_SDK_ROOT = automatic(default) or /path/to/platform/Developer/SDKs/SDK folder -# By default this location is automatcially chosen based on the CMAKE_IOS_DEVELOPER_ROOT value. -# In this case it will always be the most up-to-date SDK found in the CMAKE_IOS_DEVELOPER_ROOT path. -# If set manually, this will force the use of a specific SDK version - -# Macros: -# -# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE) -# A convenience macro for setting xcode specific properties on targets -# example: set_xcode_property (myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1") -# -# find_host_package (PROGRAM ARGS) -# A macro used to find executable programs on the host system, not within the iOS environment. -# Thanks to the android-cmake project for providing the command - -# Standard settings -set(CMAKE_SYSTEM_NAME Darwin) -set(CMAKE_SYSTEM_VERSION 1) -set(UNIX True) -set(APPLE True) -set(IOS True) - -# support iOS on cmake 3.11+ -# cmake 3.11 milestone feature, https://gitlab.kitware.com/cmake/cmake/issues/17431 -set(CMAKE_OSX_DEPLOYMENT_TARGET "8.0" CACHE STRING "set of the deployment target for iOS" FORCE) - -# Determine the cmake host system version so we know where to find the iOS SDKs -find_program(CMAKE_UNAME uname /bin /usr/bin /usr/local/bin) -if(CMAKE_UNAME) - exec_program(uname ARGS -r OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION) - string(REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\1" DARWIN_MAJOR_VERSION "${CMAKE_HOST_SYSTEM_VERSION}") -endif(CMAKE_UNAME) - -# Force the compilers to Clang for iOS -include(CMakeForceCompiler) -set(CMAKE_C_COMPILER /usr/bin/clang Clang) -set(CMAKE_CXX_COMPILER /usr/bin/clang++ Clang) -set(CMAKE_AR ar CACHE FILEPATH "" FORCE) - -# Skip the platform compiler checks for cross compiling -set(CMAKE_CXX_COMPILER_WORKS TRUE) -set(CMAKE_C_COMPILER_WORKS TRUE) - -# All iOS/Darwin specific settings - some may be redundant -set(CMAKE_SHARED_LIBRARY_PREFIX "lib") -set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib") -set(CMAKE_SHARED_MODULE_PREFIX "lib") -set(CMAKE_SHARED_MODULE_SUFFIX ".so") -set(CMAKE_MODULE_EXISTS 1) -set(CMAKE_DL_LIBS "") - -set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ") -set(CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ") -set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}") -set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}") - -set(CMAKE_C_FLAGS_INIT "") -set(CMAKE_CXX_FLAGS_INIT "") - -set(CMAKE_C_LINK_FLAGS "-Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}") -set(CMAKE_CXX_LINK_FLAGS "-Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}") - -set(CMAKE_PLATFORM_HAS_INSTALLNAME 1) -set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -headerpad_max_install_names") -set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -headerpad_max_install_names") -set(CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,") -set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,") -set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib" ".so" ".a") - -# hack: if a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old build tree -# (where install_name_tool was hardcoded) and where CMAKE_INSTALL_NAME_TOOL isn't in the cache -# and still cmake didn't fail in CMakeFindBinUtils.cmake (because it isn't rerun) -# hardcode CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did before, Alex -if(NOT DEFINED CMAKE_INSTALL_NAME_TOOL) - find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool) -endif(NOT DEFINED CMAKE_INSTALL_NAME_TOOL) - -# Setup iOS platform unless specified manually with IOS_PLATFORM -if(NOT DEFINED IOS_PLATFORM) - set(IOS_PLATFORM "OS") -endif(NOT DEFINED IOS_PLATFORM) -set(IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS Platform") - -# Setup building for arm64 or not -if(NOT DEFINED BUILD_ARM64) - set(BUILD_ARM64 true) -endif(NOT DEFINED BUILD_ARM64) -set(BUILD_ARM64 ${BUILD_ARM64} CACHE STRING "Build arm64 arch or not") - -# Check the platform selection and setup for developer root -if(IOS_PLATFORM STREQUAL "OS") - set(IOS_PLATFORM_LOCATION "iPhoneOS.platform") - - # This causes the installers to properly locate the output libraries - set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphoneos") -elseif(IOS_PLATFORM STREQUAL "SIMULATOR") - set(SIMULATOR true) - set(IOS_PLATFORM_LOCATION "iPhoneSimulator.platform") - - # This causes the installers to properly locate the output libraries - set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphonesimulator") -elseif(IOS_PLATFORM STREQUAL "SIMULATOR64") - set(SIMULATOR true) - set(IOS_PLATFORM_LOCATION "iPhoneSimulator.platform") - - # This causes the installers to properly locate the output libraries - set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphonesimulator") -else() - message(FATAL_ERROR "Unsupported IOS_PLATFORM value selected. Please choose OS or SIMULATOR") -endif() - -# Setup iOS developer location unless specified manually with CMAKE_IOS_DEVELOPER_ROOT -# Note Xcode 4.3 changed the installation location, choose the most recent one available -set(XCODE_POST_43_ROOT "/Applications/Xcode.app/Contents/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer") -set(XCODE_PRE_43_ROOT "/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer") -if(NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT) - if(EXISTS ${XCODE_POST_43_ROOT}) - set(CMAKE_IOS_DEVELOPER_ROOT ${XCODE_POST_43_ROOT}) - elseif(EXISTS ${XCODE_PRE_43_ROOT}) - set(CMAKE_IOS_DEVELOPER_ROOT ${XCODE_PRE_43_ROOT}) - endif(EXISTS ${XCODE_POST_43_ROOT}) -endif(NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT) -set(CMAKE_IOS_DEVELOPER_ROOT ${CMAKE_IOS_DEVELOPER_ROOT} CACHE PATH "Location of iOS Platform") - -# Find and use the most recent iOS sdk unless specified manually with CMAKE_IOS_SDK_ROOT -if(NOT DEFINED CMAKE_IOS_SDK_ROOT) - file(GLOB _CMAKE_IOS_SDKS "${CMAKE_IOS_DEVELOPER_ROOT}/SDKs/*") - if(_CMAKE_IOS_SDKS) - list(SORT _CMAKE_IOS_SDKS) - list(REVERSE _CMAKE_IOS_SDKS) - list(GET _CMAKE_IOS_SDKS 0 CMAKE_IOS_SDK_ROOT) - else(_CMAKE_IOS_SDKS) - message(FATAL_ERROR "No iOS SDK's found in default search path ${CMAKE_IOS_DEVELOPER_ROOT}. Manually set CMAKE_IOS_SDK_ROOT or install the iOS SDK.") - endif(_CMAKE_IOS_SDKS) - message(STATUS "Toolchain using default iOS SDK: ${CMAKE_IOS_SDK_ROOT}") -endif(NOT DEFINED CMAKE_IOS_SDK_ROOT) -set(CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Location of the selected iOS SDK") - -# Set the sysroot default to the most recent SDK -set(CMAKE_OSX_SYSROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Sysroot used for iOS support") - -# set the architecture for iOS -if(IOS_PLATFORM STREQUAL "OS") - # set (IOS_ARCH armv7 armv7s arm64) - set(IOS_ARCH arm64 armv7) -elseif(IOS_PLATFORM STREQUAL "SIMULATOR") - set(IOS_ARCH i386) -elseif(IOS_PLATFORM STREQUAL "SIMULATOR64") - set(IOS_ARCH x86_64) -endif() - -set(CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} CACHE string "Build architecture for iOS") - -# Set the find root to the iOS developer roots and to user defined paths -set(CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_DEVELOPER_ROOT} ${CMAKE_IOS_SDK_ROOT} ${CMAKE_PREFIX_PATH} CACHE string "iOS find search path root") - -# default to searching for frameworks first -set(CMAKE_FIND_FRAMEWORK FIRST) - -# set up the default search directories for frameworks -set(CMAKE_SYSTEM_FRAMEWORK_PATH - ${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks - ${CMAKE_IOS_SDK_ROOT}/System/Library/PrivateFrameworks - ${CMAKE_IOS_SDK_ROOT}/Developer/Library/Frameworks - ) - -# only search the iOS sdks, not the remainder of the host filesystem -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - - -# This little macro lets you set any XCode specific property -macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE) - set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} ${XCODE_VALUE}) -endmacro(set_xcode_property) - - -# This macro lets you find executable programs on the host system -macro(find_host_package) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) - set(IOS FALSE) - - find_package(${ARGN}) - - set(IOS TRUE) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -endmacro(find_host_package) - -# This macro lets you find library on the host system -macro(find_host_library) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) - - find_library(${ARGN}) - - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -endmacro(find_host_library) diff --git a/tools/travis-scripts/before-install.sh b/tools/travis-scripts/before-install.sh index e390ce7fe1..6cfe8cb2a9 100755 --- a/tools/travis-scripts/before-install.sh +++ b/tools/travis-scripts/before-install.sh @@ -41,22 +41,6 @@ function install_python_module_for_osx() sudo pip install Cheetah } -function install_latest_python() -{ - python -V - eval "$(pyenv init -)" - pyenv install 2.7.14 - pyenv global 2.7.14 - python -V -} - -function install_cmake_osx() -{ - cmake --version - brew upgrade cmake - cmake --version -} - # set up environment according os and target function install_environement_for_pull_request() { @@ -72,9 +56,7 @@ function install_environement_for_pull_request() fi if [ "$TRAVIS_OS_NAME" == "osx" ]; then - install_latest_python install_python_module_for_osx - install_cmake_osx fi # use NDK's clang to generate binding codes @@ -86,9 +68,7 @@ function install_environement_for_pull_request() function install_environement_for_after_merge() { if [ "$TRAVIS_OS_NAME" == "osx" ]; then - install_latest_python install_python_module_for_osx - install_cmake_osx fi echo "Building merge commit ..." @@ -96,6 +76,9 @@ function install_environement_for_after_merge() download_deps } +cmake --version +python -V + if [ "$BUILD_TARGET" == "android_cocos_new_test" ]; then sudo apt-get update sudo apt-get install ninja-build diff --git a/tools/travis-scripts/run-script.sh b/tools/travis-scripts/run-script.sh index ebf3b673bd..6bf333c665 100755 --- a/tools/travis-scripts/run-script.sh +++ b/tools/travis-scripts/run-script.sh @@ -68,7 +68,7 @@ function build_ios_cmake() 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 .. -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator # 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 @@ -112,11 +112,6 @@ function genernate_binding_codes() ldd $COCOS2DX_ROOT/tools/bindings-generator/libclang/libclang.so fi - if [ "$TRAVIS_OS_NAME" == "osx" ]; then - eval "$(pyenv init -)" - fi - which python - source ../environment.sh # Generate binding glue codes