1#-------------------------------------------------
2#
3# Project created by QtCreator 2018-04-11T12:57:49
4#
5#-------------------------------------------------
6
7QT += core gui multimedia svg
8
9greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
10
11TARGET = Mu
12TEMPLATE = app
13
14# The following define makes your compiler emit warnings if you use
15# any feature of Qt which has been marked as deprecated (the exact warnings
16# depend on your compiler). Please consult the documentation of the
17# deprecated API in order to know how to port your code away from it.
18DEFINES += QT_DEPRECATED_WARNINGS
19
20# You can also make your code fail to compile if you use deprecated APIs.
21# In order to do so, uncomment the following line.
22# You can also select to disable deprecated APIs only up to a certain version of Qt.
23DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
24
25# OS 5 support is mandatory for the QT port
26CONFIG += support_palm_os5
27
28windows{
29    RC_ICONS = windows/Mu.ico
30    *msvc*{
31        QMAKE_CFLAGS += -openmp
32        QMAKE_CXXFLAGS += -openmp
33        DEFINES += "_Pragma=__pragma" EMU_MULTITHREADED
34    }
35    *-g++{
36        QMAKE_CFLAGS += -fopenmp
37        QMAKE_CXXFLAGS += -fopenmp
38        QMAKE_LFLAGS += -fopenmp
39        DEFINES += EMU_MULTITHREADED EMU_MANAGE_HOST_CPU_PIPELINE
40    }
41    CONFIG += cpu_x86_32 # TODO:this should be auto detected in the future
42}
43
44macx{
45    # QMAKE_CFLAGS += -std=c89 -D__STDBOOL_H -Dinline= -Dbool=char -Dtrue=1 -Dfalse=0 # tests C89 mode
46    ICON = macos/Mu.icns
47    QMAKE_INFO_PLIST = macos/Info.plist
48    DEFINES += EMU_MULTITHREADED EMU_MANAGE_HOST_CPU_PIPELINE
49    CONFIG += cpu_x86_64 # Mac OS is only x86_64
50}
51
52linux-g++{
53    QMAKE_CFLAGS += -fopenmp
54    QMAKE_CXXFLAGS += -fopenmp
55    QMAKE_LFLAGS += -fopenmp
56    DEFINES += EMU_MULTITHREADED EMU_MANAGE_HOST_CPU_PIPELINE
57    CONFIG += cpu_x86_64 # TODO:this should be auto detected in the future
58}
59
60android{
61    QMAKE_CFLAGS += -fopenmp
62    QMAKE_CXXFLAGS += -fopenmp
63    QMAKE_LFLAGS += -fopenmp
64    DEFINES += EMU_MULTITHREADED EMU_MANAGE_HOST_CPU_PIPELINE
65    CONFIG += cpu_armv7 # TODO:this should be auto detected in the future
66}
67
68
69CONFIG(debug, debug|release){
70    # debug build, be accurate, fail hard, and add logging
71    DEFINES += EMU_DEBUG EMU_CUSTOM_DEBUG_LOG_HANDLER
72    macx|linux-g++{
73        # also check for any buffer overflows and memory leaks
74        # -fsanitize=undefined,leak
75        QMAKE_CFLAGS += -fstack-protector-strong -fsanitize=address -Werror=array-bounds
76        QMAKE_CXXFLAGS += -fstack-protector-strong -fsanitize=address -Werror=array-bounds
77        QMAKE_LFLAGS += -fsanitize=address
78    }
79}else{
80    # release build, go fast
81    CONFIG += EMU_NO_SAFETY
82}
83
84EMU_NO_SAFETY{
85    DEFINES += EMU_NO_SAFETY
86}
87
88support_palm_os5{
89    DEFINES += EMU_SUPPORT_PALM_OS5 # the Qt build will not be supporting anything too slow to run OS 5
90    DEFINES += SUPPORT_LINUX # forces the dynarec to use accurate mode and disable Nspire OS hacks
91
92    EMU_NO_SAFETY{
93        # Windows is only supported in 32 bit mode right now(this is a limitation of the dynarec)
94        # iOS needs IS_IOS_BUILD set, but the Qt port does not support iOS currently
95
96        cpu_x86_32{
97            SOURCES += \
98                ../../src/armv5te/translate_x86.c \
99                ../../src/armv5te/asmcode_x86.S
100        }
101        else{
102            # x86 has this implemented in asmcode_x86.S
103            SOURCES += \
104                ../../src/armv5te/asmcode.c
105        }
106
107        cpu_x86_64{
108            SOURCES += \
109                ../../src/armv5te/translate_x86_64.c \
110                ../../src/armv5te/asmcode_x86_64.S
111        }
112
113        cpu_armv7{
114            SOURCES += \
115                ../../src/armv5te/translate_arm.cpp \
116                ../../src/armv5te/asmcode_arm.S
117        }
118
119        cpu_armv8{
120            SOURCES += \
121                ../../src/armv5te/translate_aarch64.cpp \
122                ../../src/armv5te/asmcode_aarch64.S
123        }
124    }
125    else{
126        # use platform independant C with no dynarec
127        SOURCES += \
128            ../../src/armv5te/asmcode.c \
129            ../../src/armv5te/uArm/CPU_2.c \
130            ../../src/armv5te/uArm/icache.c \
131            ../../src/armv5te/uArm/uArmGlue.cpp
132        DEFINES += NO_TRANSLATION
133    }
134
135    windows{
136        SOURCES += \
137            ../../src/armv5te/os/os-win32.c
138    }
139
140    macx|linux-g++|android{
141        SOURCES += \
142            ../../src/armv5te/os/os-linux.c
143    }
144
145    SOURCES += \
146        ../../src/pxa260/pxa260_DMA.c \
147        ../../src/pxa260/pxa260_DSP.c \
148        ../../src/pxa260/pxa260_GPIO.c \
149        ../../src/pxa260/pxa260_IC.c \
150        ../../src/pxa260/pxa260_LCD.c \
151        ../../src/pxa260/pxa260_PwrClk.c \
152        ../../src/pxa260/pxa260_RTC.c \
153        ../../src/pxa260/pxa260_TIMR.c \
154        ../../src/pxa260/pxa260_UART.c \
155        ../../src/pxa260/pxa260I2c.c \
156        ../../src/pxa260/pxa260Memctrl.c \
157        ../../src/pxa260/pxa260Timing.c \
158        ../../src/pxa260/pxa260Ssp.c \
159        ../../src/pxa260/pxa260Udc.c \
160        ../../src/pxa260/pxa260.c \
161        ../../src/armv5te/arm_interpreter.cpp \
162        ../../src/armv5te/cpu.cpp \
163        ../../src/armv5te/coproc.cpp \
164        ../../src/armv5te/disasm.c \
165        ../../src/armv5te/emuVarPool.c \
166        ../../src/armv5te/thumb_interpreter.cpp \
167        ../../src/armv5te/mem.c \
168        ../../src/armv5te/mmu.c \
169        ../../src/tps65010.c \
170        ../../src/tsc2101.c \
171        ../../src/w86l488.c
172
173    HEADERS += \
174        ../../src/pxa260/pxa260_CPU.h \
175        ../../src/pxa260/pxa260_DMA.h \
176        ../../src/pxa260/pxa260_DSP.h \
177        ../../src/pxa260/pxa260_GPIO.h \
178        ../../src/pxa260/pxa260_IC.h \
179        ../../src/pxa260/pxa260_LCD.h \
180        ../../src/pxa260/pxa260_PwrClk.h \
181        ../../src/pxa260/pxa260_RTC.h \
182        ../../src/pxa260/pxa260_TIMR.h \
183        ../../src/pxa260/pxa260_UART.h \
184        ../../src/pxa260/pxa260I2c.h \
185        ../../src/pxa260/pxa260Memctrl.h \
186        ../../src/pxa260/pxa260Timing.h \
187        ../../src/pxa260/pxa260Ssp.h \
188        ../../src/pxa260/pxa260Udc.h \
189        ../../src/pxa260/pxa260_types.h \
190        ../../src/pxa260/pxa260_math64.h \
191        ../../src/pxa260/pxa260Accessors.c.h \
192        ../../src/pxa260/pxa260.h \
193        ../../src/armv5te/os/os.h \
194        ../../src/armv5te/uArm/CPU_2.h \
195        ../../src/armv5te/uArm/icache.h \
196        ../../src/armv5te/uArm/uArmGlue.h \
197        ../../src/armv5te/asmcode.h \
198        ../../src/armv5te/bitfield.h \
199        ../../src/armv5te/cpu.h \
200        ../../src/armv5te/disasm.h \
201        ../../src/armv5te/emu.h \
202        ../../src/armv5te/mem.h \
203        ../../src/armv5te/translate.h \
204        ../../src/armv5te/cpudefs.h \
205        ../../src/armv5te/debug.h \
206        ../../src/armv5te/mmu.h \
207        ../../src/armv5te/armsnippets.h \
208        ../../src/armv5te/literalpool.h \
209        ../../src/tungstenT3Bus.h \
210        ../../src/tps65010.h \
211        ../../src/tsc2101.h \
212        ../../src/w86l488.h
213}
214
215CONFIG += c++11
216
217INCLUDEPATH += $$PWD/qt-common/include
218
219SOURCES += \
220    ../../src/ads7846.c \
221    ../../src/audio/blip_buf.c \
222    ../../src/dbvz.c \
223    ../../src/emulator.c \
224    ../../src/fileLauncher/launcher.c \
225    ../../src/flx68000.c \
226    ../../src/m5XXBus.c \
227    ../../src/m68k/m68kcpu.c \
228    ../../src/m68k/m68kdasm.c \
229    ../../src/m68k/m68kopac.c \
230    ../../src/m68k/m68kopdm.c \
231    ../../src/m68k/m68kopnz.c \
232    ../../src/m68k/m68kops.c \
233    ../../src/pdiUsbD12.c \
234    ../../src/sdCard.c \
235    ../../src/sed1376.c \
236    ../../src/silkscreen.c \
237    debugviewer.cpp \
238    emuwrapper.cpp \
239    main.cpp \
240    mainwindow.cpp \
241    statemanager.cpp \
242    touchscreen.cpp \
243    settingsmanager.cpp
244
245HEADERS += \
246    ../../src/ads7846.h \
247    ../../src/audio/blip_buf.h \
248    ../../src/dbvz.h \
249    ../../src/dbvzRegisterAccessors.c.h \
250    ../../src/dbvzRegisterNames.c.h \
251    ../../src/dbvzTiming.c.h \
252    ../../src/emulator.h \
253    ../../src/fileLauncher/launcher.h \
254    ../../src/flx68000.h \
255    ../../src/m5XXBus.h \
256    ../../src/m68k/m68k.h \
257    ../../src/m68k/m68kconf.h \
258    ../../src/m68k/m68kcpu.h \
259    ../../src/m68k/m68kexternal.h \
260    ../../src/m68k/m68kops.h \
261    ../../src/pdiUsbD12.h \
262    ../../src/pdiUsbD12CommandNames.c.h \
263    ../../src/portability.h \
264    ../../src/sdCard.h \
265    ../../src/sdCardAccessors.c.h \
266    ../../src/sdCardCommandNames.c.h \
267    ../../src/sdCardCrcTables.c.h \
268    ../../src/sed1376.h \
269    ../../src/sed1376Accessors.c.h \
270    ../../src/sed1376RegisterNames.c.h \
271    ../../src/silkscreen.h \
272    debugviewer.h \
273    emuwrapper.h \
274    mainwindow.h \
275    statemanager.h \
276    touchscreen.h \
277    settingsmanager.h
278
279
280FORMS += \
281    mainwindow.ui \
282    debugviewer.ui \
283    statemanager.ui \
284    settingsmanager.ui
285
286CONFIG += mobility
287MOBILITY =
288
289DISTFILES += \
290    ../../src/fileLauncher/readme.md \
291    android/AndroidManifest.xml \
292    android/gradle/wrapper/gradle-wrapper.jar \
293    android/gradlew \
294    android/res/values/libs.xml \
295    android/build.gradle \
296    android/gradle/wrapper/gradle-wrapper.properties \
297    android/gradlew.bat \
298    android/res/drawable-hdpi/icon.png \
299    android/res/drawable-ldpi/icon.png \
300    android/res/drawable-mdpi/icon.png \
301    images/boot.svg \
302    images/addressBook.svg \
303    images/calendar.svg \
304    images/center.svg \
305    images/center.svg \
306    images/debugger.svg \
307    images/down.svg \
308    images/install.svg \
309    images/left.svg \
310    images/left.svg \
311    images/notes.svg \
312    images/pause.svg \
313    images/play.svg \
314    images/power.svg \
315    images/right.svg \
316    images/right.svg \
317    images/screenshot.svg \
318    images/settingsManager.svg \
319    images/stateManager.svg \
320    images/stop.svg \
321    images/todo.svg \
322    images/up.svg
323
324RESOURCES += \
325    mainwindow.qrc
326
327ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
328