From 69b05e837ef54647c86242e5db192e3c06b5745f Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Fri, 15 Mar 2013 23:50:31 -0700 Subject: [PATCH 1/4] iOS: Fix breakpoints, simplify running unit tests. --- CMakeLists.txt | 27 ++++++++++++++++++++++----- android/jni/TestRunner.cpp | 10 ++++++++-- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ed7d97f5fc..4fcc879dc6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1000,16 +1000,33 @@ file(INSTALL ${NativeAssets} DESTINATION assets) # packaging and code signing if (IOS) + # Fix CMake breaking optimization settings. + set(CMAKE_CXX_FLAGS_DEBUG "-g") + set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os") + set(CMAKE_CXX_FLAGS_RELEASE "-O2") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g") + set(CMAKE_C_FLAGS_DEBUG "-g") + set(CMAKE_C_FLAGS_MINSIZEREL "-Os") + set(CMAKE_C_FLAGS_RELEASE "-O2") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g") + + # These can be fast. + set_target_properties(cityhash PROPERTIES COMPILE_FLAGS "-O3") + set_target_properties(zlib PROPERTIES COMPILE_FLAGS "-O3") + file(GLOB IOSAssets ios/assets/*.png) - file(INSTALL - ${IOSAssets} - DESTINATION assets) + file(INSTALL ${IOSAssets} DESTINATION assets) file(INSTALL flash0 DESTINATION assets) + if (IOS_DEBUG) + file(INSTALL pspautotests DESTINATION assets) + endif() set(RSRC_XIB_FILES assets/Icon@2x.png) - SET_SOURCE_FILES_PROPERTIES(${RSRC_XIB_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) + set_source_files_properties(${RSRC_XIB_FILES} + PROPERTIES MACOSX_PACKAGE_LOCATION Resources + ) set(APP_DIR_NAME \${TARGET_BUILD_DIR}/\${FULL_PRODUCT_NAME}) add_custom_command(TARGET PPSSPP POST_BUILD - COMMAND tar -c -C . --exclude .DS_Store --exclude .git -H `find assets` | tar -x -C '${APP_DIR_NAME}' + COMMAND tar -c -C . --exclude .DS_Store --exclude .git -H assets | tar -x -C '${APP_DIR_NAME}' ) set_target_properties(${TargetBin} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "../ios/PPSSPP-Info.plist" diff --git a/android/jni/TestRunner.cpp b/android/jni/TestRunner.cpp index 3783081a1f..101e283631 100644 --- a/android/jni/TestRunner.cpp +++ b/android/jni/TestRunner.cpp @@ -71,14 +71,20 @@ void RunTests() coreParam.useMediaEngine = false; coreParam.collectEmuLog = &output; +#ifdef IOS + std::string baseDirectory = g_Config.flashDirectory + "../"; +#else + std::string baseDirectory = g_Config.memCardDirectory; +#endif + // Never report from tests. std::string savedReportHost = g_Config.sReportHost; g_Config.sReportHost = ""; for (int i = 0; i < ARRAY_SIZE(testsToRun); i++) { const char *testName = testsToRun[i]; - coreParam.fileToStart = g_Config.memCardDirectory + "pspautotests/tests/" + testName + ".prx"; - std::string expectedFile = g_Config.memCardDirectory + "pspautotests/tests/" + testName + ".expected"; + coreParam.fileToStart = baseDirectory + "pspautotests/tests/" + testName + ".prx"; + std::string expectedFile = baseDirectory + "pspautotests/tests/" + testName + ".expected"; ILOG("Preparing to execute %s", testName) std::string error_string; From aa1111e270731839129a6cf72d82834bad59330f Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Fri, 15 Mar 2013 23:52:52 -0700 Subject: [PATCH 2/4] iOS: Use Documents/PSP not DocumentsPSP as the path. --- android/jni/NativeApp.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/android/jni/NativeApp.cpp b/android/jni/NativeApp.cpp index 69234a7e17..31f4cbb87b 100644 --- a/android/jni/NativeApp.cpp +++ b/android/jni/NativeApp.cpp @@ -171,6 +171,7 @@ void NativeInit(int argc, const char *argv[], const char *savegame_directory, co VFSRegister("", new DirectoryAssetReader("app/native/assets/")); #elif defined(IOS) VFSRegister("", new DirectoryAssetReader(external_directory)); + user_data_path += "/"; #else VFSRegister("", new DirectoryAssetReader("assets/")); #endif From 8c7506e2eb9ec2ee8d1a2c2b69c902631d4503d3 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sat, 16 Mar 2013 00:25:41 -0700 Subject: [PATCH 3/4] Mobile: Enable console logging in debug mode. --- CMakeLists.txt | 16 ++++++++-------- Common/LogManager.cpp | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4fcc879dc6..97f814bb6d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1001,14 +1001,14 @@ file(INSTALL ${NativeAssets} DESTINATION assets) # packaging and code signing if (IOS) # Fix CMake breaking optimization settings. - set(CMAKE_CXX_FLAGS_DEBUG "-g") - set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os") - set(CMAKE_CXX_FLAGS_RELEASE "-O2") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g") - set(CMAKE_C_FLAGS_DEBUG "-g") - set(CMAKE_C_FLAGS_MINSIZEREL "-Os") - set(CMAKE_C_FLAGS_RELEASE "-O2") - set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g") + set(CMAKE_CXX_FLAGS_DEBUG "-g -D_DEBUG") + set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -D_NDEBUG") + set(CMAKE_CXX_FLAGS_RELEASE "-O2 -D_NDEBUG") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -D_NDEBUG") + set(CMAKE_C_FLAGS_DEBUG "-g -D_DEBUG") + set(CMAKE_C_FLAGS_MINSIZEREL "-Os -D_NDEBUG") + set(CMAKE_C_FLAGS_RELEASE "-O2 -D_NDEBUG") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -D_NDEBUG") # These can be fast. set_target_properties(cityhash PROPERTIES COMPILE_FLAGS "-O3") diff --git a/Common/LogManager.cpp b/Common/LogManager.cpp index 421a37c1d2..e131968890 100644 --- a/Common/LogManager.cpp +++ b/Common/LogManager.cpp @@ -72,7 +72,7 @@ LogManager::LogManager() m_Log[LogTypes::ME] = new LogContainer("ME", "Media Engine"); // Remove file logging on small devices -#ifndef USING_GLES2 +#if !defined(USING_GLES2) || defined(_DEBUG) m_fileLog = new FileLogListener(File::GetUserPath(F_MAINLOG_IDX).c_str()); m_consoleLog = new ConsoleListener(); m_debuggerLog = new DebuggerLogListener(); @@ -85,7 +85,7 @@ LogManager::LogManager() for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i) { m_Log[i]->SetEnable(true); -#ifndef USING_GLES2 +#if !defined(USING_GLES2) || defined(_DEBUG) m_Log[i]->AddListener(m_fileLog); m_Log[i]->AddListener(m_consoleLog); #ifdef _MSC_VER @@ -100,7 +100,7 @@ LogManager::~LogManager() { for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i) { -#ifndef USING_GLES2 +#if !defined(USING_GLES2) || defined(_DEBUG) if (m_fileLog != NULL) m_logManager->RemoveListener((LogTypes::LOG_TYPE)i, m_fileLog); m_logManager->RemoveListener((LogTypes::LOG_TYPE)i, m_consoleLog); @@ -114,7 +114,7 @@ LogManager::~LogManager() delete m_Log[i]; if (m_fileLog != NULL) delete m_fileLog; -#ifndef USING_GLES2 +#if !defined(USING_GLES2) || defined(_DEBUG) delete m_consoleLog; delete m_debuggerLog; #endif From b6d3623da1a54892424520538267e2e6b6a2e50c Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sat, 16 Mar 2013 01:04:38 -0700 Subject: [PATCH 4/4] iOS: Force Xcode to relink on every build. Apparently Xcode doesn't know how to detect changes in static libraries. So, we just delete the binary to force it to relink it. --- CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 97f814bb6d..3f76ac54a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1014,6 +1014,8 @@ if (IOS) set_target_properties(cityhash PROPERTIES COMPILE_FLAGS "-O3") set_target_properties(zlib PROPERTIES COMPILE_FLAGS "-O3") + add_dependencies(PPSSPP ${CoreLibName} GPU Common native) + file(GLOB IOSAssets ios/assets/*.png) file(INSTALL ${IOSAssets} DESTINATION assets) file(INSTALL flash0 DESTINATION assets) @@ -1028,6 +1030,11 @@ if (IOS) add_custom_command(TARGET PPSSPP POST_BUILD COMMAND tar -c -C . --exclude .DS_Store --exclude .git -H assets | tar -x -C '${APP_DIR_NAME}' ) + # Force Xcode to relink the binary. + add_custom_command(TARGET Core PRE_BUILD + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND rm -f PPSSPP.build/{Debug,Release,MinSizeRel,RelWithDebInfo}-iphoneos/PPSSPP.build/Objects-normal/*/PPSSPP {Debug,Release,MinSizeRel,RelWithDebInfo}-iphoneos/PPSSPP.app/PPSSPP + ) set_target_properties(${TargetBin} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "../ios/PPSSPP-Info.plist" XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "iPhone/iPad"