From f47b69d037b74cf0916bbab248abcafe8a1f01a3 Mon Sep 17 00:00:00 2001 From: Benjamin Dobell Date: Sat, 8 Jun 2013 14:58:37 +1000 Subject: Modified Heimdall Frontend so it can find Heimdall CLI in /usr/local/bin on OS X. Also updated the OS X build files, as well as READMEs for all platforms. --- Linux/README | 30 +++++-------- OSX/README.txt | 76 +++++++++++++++++++-------------- Win32/README.txt | 31 +++++++------- heimdall-frontend/Source/mainwindow.cpp | 11 ++++- heimdall-frontend/heimdall-frontend.pro | 5 +++ heimdall/configure.ac | 2 +- 6 files changed, 84 insertions(+), 71 deletions(-) diff --git a/Linux/README b/Linux/README index 78cf3af..33a8bc0 100644 --- a/Linux/README +++ b/Linux/README @@ -183,7 +183,7 @@ Performing a Custom Flash with Heimdall Frontend: Flashing Firmware from Command Line: - + 1. Fully charge your phone (use the wall charger as it's faster). 2. Download a decrypted device ROM or a Heimdall Firmware Package @@ -218,10 +218,10 @@ Flashing Firmware from Command Line: button) after executing --no-reboot commands. 8. Use the help and print-pit output to construct a command with all the - files you want to flash. + files you want to flash. Here is an example that does a full flash and repartition on a GT-I9000: - + heimdall flash --repartition --resume --pit s1_odin_20100512.pit --FACTORYFS factoryfs.rfs --CACHE cache.rfs --DBDATA dbdata.rfs --IBL+PBL boot.bin --SBL Sbl.bin --PARAM param.lfs --KERNEL zImage --MODEM modem.bin 9. Heimdall will display the progress as it flashes so that you know things @@ -499,13 +499,6 @@ Appendix B - Installing Heimdall from Source: sudo make install cd .. - NOTE: As an alternative to "sudo make install" you may chose to generate - a package by typing the following: - - sudo checkinstall --pkgversion - - Where is the current Heimdall release e.g. 1.3.0 - 5. Done @@ -514,25 +507,22 @@ Appendix C - Installing Heimdall Frontend from Source: 1. Compile and install Heimdall, see Appendix B. - 2. First make sure you have installed Qt 4.7 or later, available from: + 2. First make sure you have installed Qt (4.7 or later, but prior to 5.0). + You can typically install Qt through your platforms package manager, or + alternatively download it from: - http://qt.nokia.com/downloads/ + http://qt-project.org/downloads 3. Open a terminal and navigate to the directory you extracted Heimdall to. 4. Enter the following commands to compile and install Heimdall Frontend: cd heimdall-frontend - qmake-qt4 heimdall-frontend.pro + qmake-qt4 make sudo make install - - NOTE: As an alternative to "sudo make install" you may chose to generate - a package by typing the following: - - sudo checkinstall --pkgversion - - Where is the current Heimdall release e.g. 1.3.0 + + NOTE: If qmake-qt4 does not exist on your platform, try qmake instead. 5. Done diff --git a/OSX/README.txt b/OSX/README.txt index 47b0bf4..3b33cd4 100644 --- a/OSX/README.txt +++ b/OSX/README.txt @@ -19,7 +19,7 @@ Installing Heimdall and Heimdall Frontend Binaries: 1. Run "Heimdall Suite.pkg" and follow the instructions. 2. Reboot your system. - + 3. Done @@ -187,7 +187,7 @@ Performing a Custom Flash with Heimdall Frontend: Flashing Firmware from Command Line: - + 1. Fully charge your phone (use the wall charger as it's faster). 2. Download a decrypted device ROM or a Heimdall Firmware Package @@ -226,7 +226,7 @@ Flashing Firmware from Command Line: file you want to flash. Here is an example that does a full flash and repartition on a GT-I9000: - + heimdall flash --repartition --resume --pit s1_odin_20100512.pit --FACTORYFS factoryfs.rfs --CACHE cache.rfs --DBDATA dbdata.rfs --IBL+PBL boot.bin --SBL Sbl.bin --PARAM param.lfs --KERNEL zImage --MODEM modem.bin 9. Heimdall will display the progress as it flashes so that you know things @@ -479,24 +479,40 @@ be included. Appendix B - Installing Heimdall from Source: - 1. First make sure you have installed XCode and pkgconfig. - - NOTE: There are several different ways you can install pkgconfig, one - option is to use Macports (http://www.macports.org/). - - 2. Open a terminal and navigate to the directory you downloaded, - or extracted, Heimdall to. - - 3. Download, compile and install libusb-1.0: - - http://www.libusb.org/ - - NOTE: Alternatively you may install Macport's libusb-devel package. - - 4. Enter the following commands to compile libpit. + PREREQUISITES: + + Heimdall requires C++11 (aka C++0x) functionality in order to compile. + Unfortunately, XCode includes an old version of GCC which does not + include support for C++11. XCode does include clang, which does + support C++11. However, clang's C++11 can only target OS X 10.7 or + newer. There are also slight compatibility issues between clang and + Qt, which is required in order to compile Heimdall Frontend. As such + these instructions will utilise GCC 4.7 installed via Homebrew. + + Xcode can be downloaded through the App store or from Apple's + developer website: + + https://developer.apple.com/xcode/ + + Homebrew install instructions are available at: + + http://mxcl.github.io/homebrew/ + + 1. First make sure you have installed XCode and Homebrew (see above). Then + open a terminal and install GCC 4.7, pkgconfig and libusbx via Homebrew: + + brew tap homebrew/versions + brew install gcc47 pkgconfig libusbx + + NOTE: Installing GCC 4.7 will take a long time. + + 2. In a terminal navigate to the directory you downloaded (or extracted) + Heimdall to. + + 3. Enter the following commands to compile libpit. cd libpit - ./configure + ./configure CC=gcc-4.7 CXX=g++-4.7 make cd .. @@ -505,12 +521,12 @@ Appendix B - Installing Heimdall from Source: 4. Enter the following commands to compile and install Heimdall: cd heimdall - ./configure + ./configure CC=gcc-4.7 CXX=g++-4.7 make sudo make install cd .. - 5. If you haven't installed the driver before, enter the following: + 5. If you haven't installed the driver before, do the following: cd OSX sudo ./install-kext.sh @@ -523,23 +539,17 @@ Appendix C - Installing Heimdall Frontend from Source: 1. Compile and install Heimdall, see Appendix B. - 2. First make sure you have installed XCode from your OS X install DVD. - You'll also need Qt 4.7 or later, available from: + 2. Heimdall Frontend requires Qt (4.7 or later, but prior to 5.0), available + from: - http://qt.nokia.com/downloads/ + http://qt-project.org/downloads 3. Open a terminal and navigate to the directory you extracted Heimdall to. 4. Enter the following commands to compile and install Heimdall Frontend: cd heimdall-frontend - qmake heimdall-frontend.pro - - 5. Open Finder and navigate to the heimdall-frontend sub-directory. Open - the newly created XCode project. - - 6. From the menu bar select Build -> Build. This outputs heimdall-frontend - to /Applications - - 7. Done + qmake -spec macx-g++ QMAKE_CC=gcc-4.7 QMAKE_CXX=g++-4.7 + make + 5. Done diff --git a/Win32/README.txt b/Win32/README.txt index 6480258..2214497 100644 --- a/Win32/README.txt +++ b/Win32/README.txt @@ -11,22 +11,23 @@ DISCLAIMER: for the result of your actions. -These instructions were written for Windows Vista / Server 2008 however the +These instructions were written for Windows 7 / Vista / Server 2008 however the producedure should be essentially the same for all supported versions of Windows (XP onwards). Troubleshooting: - 1. If you get an error as follows: + 1. If when you try launch Heimdall or Heimdall Frontend you receive a + similar to: - The program can't start because MSVCP100.dll is missing from your + The program can't start because MSVCP110.dll is missing from your computer. - This means that you haven't installed the Microsoft Visual C++ 2010 + This means that you haven't installed the Microsoft Visual C++ 2012 runtimes. The runtimes can be downloaded from Microsoft's website: - http://www.microsoft.com/download/en/details.aspx?id=5555 + http://www.microsoft.com/en-au/download/details.aspx?id=30679 @@ -233,7 +234,7 @@ Performing a Custom Flash with Heimdall Frontend: Flashing Firmware from Command Line: - + 1. Fully charge your phone (use the wall charger as it's faster). 2. Download a decrypted device ROM or a Heimdall Firmware Package @@ -275,7 +276,7 @@ Flashing Firmware from Command Line: file you want to flash. Here is an example that does a full flash and repartition on a GT-I9000: - + heimdall flash --repartition --resume --pit s1_odin_20100512.pit --FACTORYFS factoryfs.rfs --CACHE cache.rfs --DBDATA dbdata.rfs --IBL+PBL boot.bin --SBL Sbl.bin --PARAM param.lfs --KERNEL zImage --MODEM modem.bin NOTE: The above command assumes the files specified are installed in the @@ -531,20 +532,20 @@ be included. Appendix B - Installing Heimdall Suite from Source - 1. Ensure that you have both a version of Visual Studio 2010 with C++ - support and Qt Developer Framework 4.7 (or newer) installed on your - system. + 1. Ensure that you have both a version of Visual Studio 2012 with C++ + support and Qt Developer Framework (4.7 or later, but prior to 5.0) + installed on your system. - A free version (Visual C++ 2010 Express) can be downloaded from + A free version (Visual C++ 2012 Express) can be downloaded from Microsoft's website: - http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express + http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products - Qt can also be downloaded freely from Nokia's website: + Qt can also be downloaded freely from: - http://qt.nokia.com/downloads/ + http://qt-project.org/downloads - 2. Open Heimdall/msvc2010.sln + 2. Open msvc2012.sln 3. From the Solutions Configuration drop-down change from "Debug" to "Release". diff --git a/heimdall-frontend/Source/mainwindow.cpp b/heimdall-frontend/Source/mainwindow.cpp index 02d7a62..46dc381 100644 --- a/heimdall-frontend/Source/mainwindow.cpp +++ b/heimdall-frontend/Source/mainwindow.cpp @@ -52,13 +52,19 @@ void MainWindow::StartHeimdall(const QStringList& arguments) QStringList paths; - // Ensure /usr/bin is in PATH + // Ensure /usr/local/bin and /usr/bin are in PATH. for (int i = 0; i < environment.length(); i++) { if (environment[i].left(5) == "PATH=") { paths = environment[i].mid(5).split(':'); - paths.prepend("/usr/bin"); + + if (!paths.contains("/usr/local/bin")) + paths.prepend("/usr/local/bin"); + + if (!paths.contains("/usr/bin")) + paths.prepend("/usr/bin"); + break; } } @@ -71,6 +77,7 @@ void MainWindow::StartHeimdall(const QStringList& arguments) if (heimdallPath.length() > 0) { + utilityOutputPlainTextEdit->clear(); heimdallFailed = false; if (heimdallPath[heimdallPath.length() - 1] != QDir::separator()) diff --git a/heimdall-frontend/heimdall-frontend.pro b/heimdall-frontend/heimdall-frontend.pro index ecc6235..6cb5774 100644 --- a/heimdall-frontend/heimdall-frontend.pro +++ b/heimdall-frontend/heimdall-frontend.pro @@ -53,8 +53,13 @@ macx { PRIVATE_FRAMEWORKS.path = Contents/Frameworks QMAKE_BUNDLE_DATA += PRIVATE_FRAMEWORKS + LIBS += -L/usr/lib config += x86 x86_64 ppc + + QMAKE_CFLAGS_X86_64 = -m64 -mmacosx-version-min=10.5 + QMAKE_CXXFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64 + QMAKE_LFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64 isEmpty(OUTPUTDIR) { DESTDIR = /Applications diff --git a/heimdall/configure.ac b/heimdall/configure.ac index e900770..4654730 100644 --- a/heimdall/configure.ac +++ b/heimdall/configure.ac @@ -22,7 +22,7 @@ case $target in *-darwin*) AC_DEFINE(OS_DARWIN, [], [Darwin backend]) AC_MSG_RESULT([Darwin/MacOS X]) - AC_PROG_CXX([clang++]) + AC_PROG_CXX linuxtarget=false ;; *-mingw*) -- cgit v1.1