Skip to content

Commit 49ca449

Browse files
committed
support qt4
1 parent cc4af3a commit 49ca449

File tree

4 files changed

+118
-41
lines changed

4 files changed

+118
-41
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
[submodule "breakpad"]
22
path = breakpad
33
url = https://github.com/NatronGitHub/breakpad
4+
[submodule "qjson4"]
5+
path = qjson4
6+
url = https://github.com/eteran/qjson4

CMakeLists.txt

Lines changed: 92 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -37,24 +37,30 @@ set(IDENTIFIER "net.fxarena.breakdown")
3737

3838
file(MAKE_DIRECTORY ${BREAKPAD_BIN})
3939

40-
find_package(Qt5Core REQUIRED)
41-
find_package(Qt5Gui REQUIRED)
42-
find_package(Qt5Widgets REQUIRED)
43-
find_package(Qt5Network REQUIRED)
44-
find_package(Qt5Concurrent REQUIRED)
45-
#find_package(Qt5Test REQUIRED)
40+
option(MXE32_STATIC "Build using MXE i686 static" OFF)
41+
option(MXE64_STATIC "Build using MXE x86_64 static" OFF)
42+
option(MXE32_SHARED "Build using MXE i686 shared" OFF)
43+
option(MXE64_SHARED "Build using MXE x86_64 shared" OFF)
44+
option(USE_QT4 "Build using Qt4" OFF)
45+
46+
if(USE_QT4)
47+
find_package(Qt4 REQUIRED QtCore QtGui QtNetwork)
48+
else()
49+
find_package(Qt5Core REQUIRED)
50+
find_package(Qt5Gui REQUIRED)
51+
find_package(Qt5Widgets REQUIRED)
52+
find_package(Qt5Network REQUIRED)
53+
find_package(Qt5Concurrent REQUIRED)
54+
#find_package(Qt5Test REQUIRED)
55+
endif()
56+
4657
find_package(PkgConfig REQUIRED)
4758
find_package(Git QUIET)
4859

4960
pkg_search_module(CURL REQUIRED libcurl)
5061
pkg_search_module(ZIP REQUIRED libzip)
5162
pkg_search_module(JSON REQUIRED jsoncpp)
5263

53-
option(MXE32_STATIC "Build using MXE i686 static" OFF)
54-
option(MXE64_STATIC "Build using MXE x86_64 static" OFF)
55-
option(MXE32_SHARED "Build using MXE i686 shared" OFF)
56-
option(MXE64_SHARED "Build using MXE x86_64 shared" OFF)
57-
5864
if(WIN32)
5965
set(ICON_FILE ${BREAKDOWN}/breakdown.ico)
6066
endif()
@@ -104,35 +110,69 @@ include_directories(
104110
${CURL_INCLUDE_DIRS}
105111
${ZIP_INCLUDE_DIRS}
106112
${JSON_INCLUDE_DIRS}
113+
${CMAKE_CURRENT_SOURCE_DIR}/qjson4
107114
)
108115

109-
add_executable(
110-
breakdown
111-
${STACKWALKER}/http_symbol_supplier.cc
112-
${BREAKDOWN}/main.cpp
113-
${BREAKDOWN}/breakdown.cpp
114-
${BREAKDOWN}/breakdown.ui
115-
${BREAKDOWN}/breakdown.qrc
116-
)
116+
if(USE_QT4)
117+
add_executable(
118+
breakdown
119+
${CMAKE_CURRENT_SOURCE_DIR}/qjson4/QJsonArray.cpp
120+
${CMAKE_CURRENT_SOURCE_DIR}/qjson4/QJsonDocument.cpp
121+
${CMAKE_CURRENT_SOURCE_DIR}/qjson4/QJsonObject.cpp
122+
${CMAKE_CURRENT_SOURCE_DIR}/qjson4/QJsonParseError.cpp
123+
${CMAKE_CURRENT_SOURCE_DIR}/qjson4/QJsonValue.cpp
124+
${CMAKE_CURRENT_SOURCE_DIR}/qjson4/QJsonValueRef.cpp
125+
${CMAKE_CURRENT_SOURCE_DIR}/qjson4/QJsonParser.cpp
126+
${STACKWALKER}/http_symbol_supplier.cc
127+
${BREAKDOWN}/main.cpp
128+
${BREAKDOWN}/breakdown.cpp
129+
${BREAKDOWN}/breakdown.ui
130+
${BREAKDOWN}/breakdown.qrc
131+
)
132+
else()
133+
add_executable(
134+
breakdown
135+
${STACKWALKER}/http_symbol_supplier.cc
136+
${BREAKDOWN}/main.cpp
137+
${BREAKDOWN}/breakdown.cpp
138+
${BREAKDOWN}/breakdown.ui
139+
${BREAKDOWN}/breakdown.qrc
140+
)
141+
endif()
142+
117143
add_executable(
118144
stackwalker
119145
${STACKWALKER}/http_symbol_supplier.cc
120146
${STACKWALKER}/stackwalker.cc
121147
)
122148

123-
target_link_libraries(
124-
breakdown
125-
Qt5::Core
126-
Qt5::Gui
127-
Qt5::Widgets
128-
Qt5::Network
129-
Qt5::Concurrent
130-
${BREAKPAD_BIN}/src/libbreakpad.a
131-
${BREAKPAD_BIN}/src/third_party/libdisasm/libdisasm.a
132-
${CURL_STATIC_LIBRARIES}
133-
${ZIP_STATIC_LIBRARIES}
134-
${JSON_STATIC_LIBRARIES}
135-
)
149+
if(USE_QT4)
150+
target_link_libraries(
151+
breakdown
152+
Qt4::QtCore
153+
Qt4::QtGui
154+
Qt4::QtNetwork
155+
${BREAKPAD_BIN}/src/libbreakpad.a
156+
${BREAKPAD_BIN}/src/third_party/libdisasm/libdisasm.a
157+
${CURL_STATIC_LIBRARIES}
158+
${ZIP_STATIC_LIBRARIES}
159+
${JSON_STATIC_LIBRARIES}
160+
)
161+
else()
162+
target_link_libraries(
163+
breakdown
164+
Qt5::Core
165+
Qt5::Gui
166+
Qt5::Widgets
167+
Qt5::Network
168+
Qt5::Concurrent
169+
${BREAKPAD_BIN}/src/libbreakpad.a
170+
${BREAKPAD_BIN}/src/third_party/libdisasm/libdisasm.a
171+
${CURL_STATIC_LIBRARIES}
172+
${ZIP_STATIC_LIBRARIES}
173+
${JSON_STATIC_LIBRARIES}
174+
)
175+
endif()
136176

137177
target_link_libraries(
138178
stackwalker
@@ -145,8 +185,26 @@ target_link_libraries(
145185

146186
if(UNIX AND NOT APPLE)
147187
include(GNUInstallDirs)
148-
install(TARGETS breakdown stackwalker DESTINATION ${CMAKE_INSTALL_BINDIR})
188+
install(
189+
TARGETS
190+
breakdown
191+
stackwalker
192+
DESTINATION
193+
${CMAKE_INSTALL_BINDIR}
194+
)
195+
install(
196+
FILES
197+
${BREAKPAD_BIN}/src/tools/linux/dump_syms/dump_syms
198+
DESTINATION
199+
${CMAKE_INSTALL_BINDIR}
200+
)
149201
#install(DIRECTORY ${RESOURCE_FOLDER}/hicolor DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons)
150202
#install(FILES ${RESOURCE_FOLDER}/breakdown.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
151-
install(FILES COPYING README.md DESTINATION ${CMAKE_INSTALL_DOCDIR}-${PROJECT_VERSION})
203+
install(
204+
FILES
205+
COPYING
206+
README.md
207+
DESTINATION
208+
${CMAKE_INSTALL_DOCDIR}-${PROJECT_VERSION}
209+
)
152210
endif()

breakdown/breakdown.cpp

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,28 @@
2323
#include <QFile>
2424
#include <QDir>
2525
#include <QFileDialog>
26-
#include <QJsonDocument>
27-
#include <QJsonObject>
28-
#include <QJsonValue>
29-
#include <QJsonArray>
3026
#include <QDesktopServices>
3127
#include <QMessageBox>
3228
#include <QSettings>
33-
#include <QMimeDatabase>
34-
#include <QMimeType>
3529
#include <QDebug>
36-
#include <QtConcurrent/QtConcurrent>
3730
#include <QIcon>
3831

32+
#if QT_VERSION >= 0x050000
33+
#include <QtConcurrent/QtConcurrentRun>
34+
#include <QMimeDatabase>
35+
#include <QMimeType>
36+
#include <QJsonDocument>
37+
#include <QJsonObject>
38+
#include <QJsonValue>
39+
#include <QJsonArray>
40+
#else
41+
#include <QtCore/QtConcurrentRun>
42+
#include "QJsonDocument.h"
43+
#include "QJsonObject.h"
44+
#include "QJsonValue.h"
45+
#include "QJsonArray.h"
46+
#endif
47+
3948
#include "stackwalker.h"
4049

4150
BreakDown::BreakDown(QWidget *parent) :
@@ -460,12 +469,18 @@ void BreakDown::on_actionOpen_triggered()
460469
"*.json *.dmp");
461470
if (file.isEmpty()) { return; }
462471

472+
#if QT_VERSION >= 0x050000
463473
QMimeDatabase db;
464474
QMimeType type = db.mimeTypeForFile(file);
475+
#endif
465476

466477
ui->actionOpen->setDisabled(true);
467478
ui->statusBar->showMessage(tr("Parsing minidump, this might take a while ..."), -1);
479+
#if QT_VERSION >= 0x050000
468480
if (type.name() == "application/json") {
481+
#else
482+
if (file.endsWith(".json", Qt::CaseInsensitive)) {
483+
#endif
469484
openJsonFile(file);
470485
} else {
471486
QtConcurrent::run(this, &BreakDown::openDumpFile, file);

qjson4

Submodule qjson4 added at 7fc85f3

0 commit comments

Comments
 (0)