From 67c17cc48bc3a2914d8e6ecb39ec1fb54b4806aa Mon Sep 17 00:00:00 2001 From: Benjamin Dobell Date: Thu, 19 Feb 2015 05:08:26 +1100 Subject: Fix Unix build issues and work-around Qt5 Mac UI bugs --- OSX/README.txt | 80 ++++----------------------------------- heimdall-frontend/CMakeLists.txt | 6 ++- heimdall-frontend/mainwindow.ui | 59 ++++++++++++++++++++++++++++- heimdall-frontend/source/main.cpp | 2 + heimdall/CMakeLists.txt | 5 ++- 5 files changed, 77 insertions(+), 75 deletions(-) diff --git a/OSX/README.txt b/OSX/README.txt index 3d6b434..8c368b5 100644 --- a/OSX/README.txt +++ b/OSX/README.txt @@ -477,79 +477,15 @@ be included. -Appendix B - Installing Heimdall from Source: +Appendix B - Installing Heimdall Suite from Source - 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. + 1. Open Terminal and install dependencies using Homebrew (http://brew.sh) - 2. In a terminal navigate to the directory you downloaded (or extracted) - Heimdall to. + brew install libusb qt5 cmake - 3. Enter the following commands to compile libpit. + 2. Build Heimdall & Heimdall Frontend - cd libpit - ./configure CC=gcc-4.7 CXX=g++-4.7 - make - cd .. - - NOTE: There is no need to run "sudo make install". - - 4. Enter the following commands to compile and install Heimdall: - - cd heimdall - ./configure CC=gcc-4.7 CXX=g++-4.7 - make - sudo make install - cd .. - - 5. If you haven't installed the driver before, do the following: - - cd OSX - sudo ./install-kext.sh - - 6. Done - - - -Appendix C - Installing Heimdall Frontend from Source: - - 1. Compile and install Heimdall, see Appendix B. - - 2. Heimdall Frontend requires Qt (4.7 or later, but prior to 5.0), available - from: - - 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 -spec macx-g++ QMAKE_CC=gcc-4.7 QMAKE_CXX=g++-4.7 - make - - 5. Done + mkdir build + cd build + cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DQt5Widgets_DIR=/usr/local/opt/qt5/lib/cmake/Qt5Widgets .. + make diff --git a/heimdall-frontend/CMakeLists.txt b/heimdall-frontend/CMakeLists.txt index 76dac2e..95889b3 100644 --- a/heimdall-frontend/CMakeLists.txt +++ b/heimdall-frontend/CMakeLists.txt @@ -12,7 +12,10 @@ find_package(Qt5Widgets REQUIRED) find_package(ZLIB REQUIRED) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") -set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static") + +if(MINGW) + set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static") +endif(MINGW) include_directories(${LIBPIT_INCLUDE_DIRS}) @@ -33,6 +36,7 @@ qt5_add_resources(HEIMDALL_FRONTEND_RESOURCES mainwindow.qrc) add_executable(heimdall-frontend WIN32 + MACOSX_BUNDLE ${HEIMDALL_FRONTEND_SOURCE_FILES} ${HEIMDALL_FRONTEND_FORMS} ${HEIMDALL_FRONTEND_RESOURCES}) diff --git a/heimdall-frontend/mainwindow.ui b/heimdall-frontend/mainwindow.ui index f3113f2..91df00f 100644 --- a/heimdall-frontend/mainwindow.ui +++ b/heimdall-frontend/mainwindow.ui @@ -196,6 +196,9 @@ 31 + + Qt::NoFocus + Load / Customise @@ -269,6 +272,9 @@ 23 + + Qt::NoFocus + Browse @@ -343,6 +349,9 @@ 23 + + Qt::NoFocus + Donate @@ -359,6 +368,9 @@ 23 + + Qt::NoFocus + Homepage @@ -510,9 +522,21 @@ 23 + + Qt::NoFocus + Browse + + false + + + false + + + false + @@ -935,6 +959,9 @@ 23 + + Qt::NoFocus + Remove Device @@ -1105,6 +1132,9 @@ 23 + + Qt::NoFocus + Add @@ -1122,6 +1152,9 @@ 23 + + Qt::NoFocus + Remove @@ -1338,6 +1371,9 @@ 23 + + Qt::NoFocus + Add Device @@ -1355,6 +1391,9 @@ 31 + + Qt::NoFocus + Build @@ -1416,6 +1455,9 @@ 23 + + Qt::NoFocus + Save As... @@ -1433,6 +1475,9 @@ 23 + + Qt::NoFocus + Download @@ -1531,6 +1576,9 @@ 23 + + Qt::NoFocus + @@ -1625,6 +1673,9 @@ 23 + + Qt::NoFocus + Print @@ -1750,6 +1801,9 @@ 23 + + Qt::NoFocus + Browse @@ -1777,6 +1831,9 @@ 23 + + Qt::NoFocus + Close @@ -1828,7 +1885,7 @@ 0 0 788 - 21 + 22 diff --git a/heimdall-frontend/source/main.cpp b/heimdall-frontend/source/main.cpp index c327b63..5d70e28 100644 --- a/heimdall-frontend/source/main.cpp +++ b/heimdall-frontend/source/main.cpp @@ -25,7 +25,9 @@ // Heimdall Frontend #include "mainwindow.h" +#if defined(QT_STATIC) Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin); +#endif using namespace HeimdallFrontend; diff --git a/heimdall/CMakeLists.txt b/heimdall/CMakeLists.txt index a822702..82dc2d3 100644 --- a/heimdall/CMakeLists.txt +++ b/heimdall/CMakeLists.txt @@ -9,7 +9,10 @@ set(LIBPIT_INCLUDE_DIRS ../libpit/source) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") -set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static") + +if(MINGW) + set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static") +endif(MINGW) include_directories(SYSTEM ${LIBUSB_INCLUDE_DIRS}) -- cgit v1.2.3