Fix for iOS CMake

Update toolchain file to reflect that we want to use clang (rock88 is using clang).
Set target in the CMake. Fix for packaging and signing (thanks rock88).
Update linking to include audio and GLKit (thanks rock88).
Update README
This commit is contained in:
Sacha 2013-02-24 13:23:04 +10:00
parent adf461802d
commit e3a953972a
3 changed files with 37 additions and 22 deletions

View file

@ -63,12 +63,12 @@ else()
endif()
#find_package(Qt5Widgets)
if(USING_GLES2)
if(USING_GLES2 AND NOT IOS)
set(OPENGL_LIBRARIES GLESv2)
else()
elseif(NOT IOS)
include(FindOpenGL REQUIRED)
endif()
if (NOT BLACKBERRY AND NOT ANDROID)
if (NOT BLACKBERRY AND NOT ANDROID AND NOT IOS)
include(FindSDL)
endif()
include(FindThreads)
@ -119,9 +119,8 @@ if(NOT MSVC)
add_definitions(-D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED -D__BSD_VISIBLE=1)
add_definitions(-D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64)
endif()
if(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
if(IOS)
add_definitions(-DGL_ETC1_RGB8_OES=0)
endif()
if(BLACKBERRY)
@ -133,6 +132,9 @@ if(NOT MSVC)
add_definitions(-msse2)
endif()
if(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
endif()
if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7.0)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
@ -415,9 +417,8 @@ elseif(IOS)
ios/AppDelegate.h
ios/ViewController.mm
ios/ViewController.h)
set(CMAKE_EXE_LINKER_FLAGS "-framework Foundation -framework CoreGraphics -framework QuartzCore -framework OpenGLES -framework UIKit")
# No target
# set(TargetBin PPSSPP)
set(nativeExtraLibs ${nativeExtraLibs} "-framework Foundation -framework AudioToolbox -framework CoreGraphics -framework QuartzCore -framework OpenGLES -framework UIKit -framework GLKit")
set(TargetBin PPSSPP)
elseif(USING_QT_UI)
# Currently unused
find_package(Qt4 COMPONENTS QtMultimedia QtOpenGL QtGui QtCore)
@ -950,15 +951,28 @@ set(NativeAssets
set(LinkCommon ${CoreLibName} ${CMAKE_THREAD_LIBS_INIT} ${nativeExtraLibs})
if (TargetBin)
add_executable(${TargetBin} ${NativeAppSource})
if (IOS)
add_executable(${TargetBin} MACOSX_BUNDLE ${NativeAppSource})
else()
add_executable(${TargetBin} ${NativeAppSource})
endif()
target_link_libraries(${TargetBin} ${LinkCommon})
endif()
# installs
file(INSTALL ${NativeAssets} DESTINATION assets)
# code signing
# packaging and code signing
if (IOS)
set_target_properties(${NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST PPSSPP-Info.plist XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer: My Name")
set(RSRC_XIB_FILES assets/Icon@2x.png)
set(RSRC_PATH /Developer/Library/PrivateFrameworks/DevToolsCore.framework/Resources)
SET_SOURCE_FILES_PROPERTIES(${RSRC_XIB_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
set(APP_DIR_NAME \${TARGET_BUILD_DIR}/\${FULL_PRODUCT_NAME})
set(RES_DIR assets)
add_custom_command(TARGET PPSSPP POST_BUILD
COMMAND ${RSRC_PATH}/pbxcp -exclude .DS_Store -exclude CVS -exclude .git -resolve-src-symlinks ${RES_DIR} ${APP_DIR_NAME}
)
set_target_properties(${TargetBin} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ../ios/PPSSPP-Info.plist XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer: My Name")
endif()
#include(CPack)

View file

@ -103,8 +103,6 @@ other than Microsoft's, but `NMake Makefiles` works fine.
Building for iOS
----------------
Note: This does not work yet.
Create a `build-ios` directory and inside it run:
cmake -DCMAKE_TOOLCHAIN_FILE=../ios/ios.toolchain.cmake -GXcode ..

View file

@ -31,9 +31,12 @@
# Standard settings
set (CMAKE_SYSTEM_NAME Darwin)
set (CMAKE_SYSTEM_VERSION 1)
set (CMAKE_SYSTEM_PROCESSOR arm)
set (UNIX True)
set (APPLE True)
set (IOS True)
set (APP_TYPE MACOSX_BUNDLE)
set (CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET 5.0)
# 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)
@ -42,12 +45,8 @@ if (CMAKE_UNAME)
string (REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\1" DARWIN_MAJOR_VERSION "${CMAKE_HOST_SYSTEM_VERSION}")
endif (CMAKE_UNAME)
# Force the compilers to gcc for iOS
include (CMakeForceCompiler)
CMAKE_FORCE_C_COMPILER (gcc gcc)
CMAKE_FORCE_CXX_COMPILER (g++ g++)
# Skip the platform compiler checks for cross compiling
set (CMAKE_CROSSCOMPILING TRUE)
set (CMAKE_CXX_COMPILER_WORKS TRUE)
set (CMAKE_C_COMPILER_WORKS TRUE)
@ -105,12 +104,9 @@ endif (${IOS_PLATFORM} STREQUAL "OS")
# 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")
@ -132,6 +128,13 @@ set (CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Location of the select
# Set the sysroot default to the most recent SDK
set (CMAKE_OSX_SYSROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Sysroot used for iOS support")
# Force the compilers to clang for iOS
include (CMakeForceCompiler)
CMAKE_FORCE_C_COMPILER ("${CMAKE_IOS_DEVELOPER_ROOT}/usr/bin/clang")
CMAKE_FORCE_CXX_COMPILER ("${CMAKE_IOS_DEVELOPER_ROOT}/usr/bin/clang++")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libstdc++")
# set the architecture for iOS
# NOTE: Currently both ARCHS_STANDARD_32_BIT and ARCHS_UNIVERSAL_IPHONE_OS set armv7 only, so set both manually
if (${IOS_PLATFORM} STREQUAL "OS")