OSCAR-code/oscar/oscar.pro
sawinglogz 0a996cde73 Move PRS1 parser event definitions into new parser cpp/h files.
No change in functionality.

This is almost entirely copy/paste, with the main exception of moving the
contents() method definitions out of the class definitions and moving the
needed TYPE definitions out of the header file.

Use git blame dd9a087 to follow the history before this refactoring.
2021-05-31 13:18:39 -04:00

604 lines
17 KiB
Prolog

#-------------------------------------------------
#
# Project created by QtCreator 2011-06-20T22:05:30
#
#-------------------------------------------------
message(Platform is $$QMAKESPEC )
lessThan(QT_MAJOR_VERSION,5) {
error("You need Qt 5.7 or newer to build OSCAR");
}
if (equals(QT_MAJOR_VERSION,5)) {
lessThan(QT_MINOR_VERSION,9) {
message("You need Qt 5.9 to build OSCAR with Help Pages")
DEFINES += helpless
}
lessThan(QT_MINOR_VERSION,7) {
error("You need Qt 5.7 or newer to build OSCAR");
}
}
# get rid of the help browser, at least for now
DEFINES += helpless
QT += core gui network xml printsupport serialport widgets help
contains(DEFINES, helpless) {
QT -= help
}
DEFINES += QT_DEPRECATED_WARNINGS
# Enable this to turn off Check for Updates feature
# DEFINES += NO_CHECKUPDATES
#OSCAR requires OpenGL 2.0 support to run smoothly
#On platforms where it's not available, it can still be built to work
#provided the BrokenGL DEFINES flag is passed to qmake (eg, qmake [specs] /path/to/OSCAR_QT.pro DEFINES+=BrokenGL) (hint, Projects button on the left)
contains(DEFINES, NoGL) {
message("Building with QWidget gGraphView to support systems without ANY OpenGL")
DEFINES += BROKEN_OPENGL_BUILD
DEFINES += NO_OPENGL_BUILD
} else:contains(DEFINES, BrokenGL) {
DEFINES += BROKEN_OPENGL_BUILD
message("Building with QWidget gGraphView to support systems with legacy graphics")
DEFINES-=BrokenGL
} else {
QT += opengl
message("Building with regular OpenGL gGraphView")
}
DEFINES += LOCK_RESMED_SESSIONS
CONFIG += c++11
CONFIG += rtti
CONFIG -= debug_and_release
contains(DEFINES, STATIC) {
static {
CONFIG += static
QTPLUGIN += qgif qpng
message("Static build.")
}
}
TARGET = OSCAR
unix:!macx:!haiku {
TARGET.path=/usr/bin
}
TEMPLATE = app
gitinfotarget.target = git_info.h
gitinfotarget.depends = FORCE
win32 {
system("$$_PRO_FILE_PWD_/update_gitinfo.bat");
message("Updating gitinfo.h for Windows build")
gitinfotarget.commands = "$$_PRO_FILE_PWD_/update_gitinfo.bat"
} else {
system("/bin/bash $$_PRO_FILE_PWD_/update_gitinfo.sh");
message("Updating gitinfo.h for non-Windows build")
gitinfotarget.commands = "/bin/bash $$_PRO_FILE_PWD_/update_gitinfo.sh"
}
PRE_TARGETDEPS += git_info.h
QMAKE_EXTRA_TARGETS += gitinfotarget
!contains(DEFINES, helpless) {
#Build the help documentation
message("Generating help files");
qtPrepareTool(QCOLGENERATOR, qcollectiongenerator)
command=$$QCOLGENERATOR $$PWD/help/index.qhcp -o $$PWD/help/index.qhc
system($$command)|error("Failed to run: $$command")
message("Finished generating help files");
}
QMAKE_TARGET_PRODUCT = OSCAR
QMAKE_TARGET_COMPANY = The OSCAR Team
QMAKE_TARGET_COPYRIGHT = © 2019-2020 The OSCAR Team
QMAKE_TARGET_DESCRIPTION = "OpenSource CPAP Analysis Reporter"
_VERSION_FILE = $$cat(./VERSION)
VERSION = $$section(_VERSION_FILE, '"', 1, 1)
win32 {
VERSION = $$section(VERSION, '-', 0, 0)
}
RC_ICONS = ./icons/logo.ico
macx {
QMAKE_TARGET_BUNDLE_PREFIX = "org.oscar-team"
# QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12
LIBS += -lz
ICON = icons/OSCAR.icns
} else:haiku {
LIBS += -lz -lGLU
DEFINES += _TTY_POSIX_
} else:unix {
LIBS += -lX11 -lz -lGLU
DEFINES += _TTY_POSIX_
} else:win32 {
DEFINES += WINVER=0x0501 # needed for mingw to pull in appropriate dbt business...probably a better way to do this
LIBS += -lsetupapi
INCLUDEPATH += $$PWD
INCLUDEPATH += $$[QT_INSTALL_PREFIX]/../src/qtbase/src/3rdparty/zlib
if (*-msvc*):!equals(TEMPLATE_PREFIX, "vc") {
LIBS += -ladvapi32
} else {
# MingW needs this
LIBS += -lz
}
if (*-msvc*) {
CONFIG += precompile_header
PRECOMPILED_HEADER = pch.h
HEADERS += pch.h
}
CONFIG(release, debug|release) {
contains(DEFINES, OfficialBuild) {
QMAKE_POST_LINK += "$$PWD/../../scripts/release_tool.sh --testing --source \"$$PWD/..\" --binary \"$${OUT_PWD}/$${TARGET}.exe\""
}
}
}
TRANSLATIONS = $$files($$PWD/../Translations/*.ts)
TRANSLATIONS += $$files($$PWD/../Translations/qt/*.ts)
qtPrepareTool(LRELEASE, lrelease)
for(file, TRANSLATIONS) {
qmfile = $$absolute_path($$basename(file), $$PWD/translations/)
qmfile ~= s,.ts$,.qm,
qmdir = $$PWD/translations
!exists($$qmdir) {
mkpath($$qmdir)|error("Aborting.")
}
qmout = $$qmfile
command = $$LRELEASE -removeidentical $$file -qm $$qmfile
system($$command)|error("Failed to run: $$command")
TRANSLATIONS_FILES += $$qmfile
}
HTML_FILES = $$files($$PWD/../Htmldocs/*.html)
#copy the Translation and Help files to where the test binary wants them
message("Setting up Translations & Help Transfers")
macx {
!contains(DEFINES, helpless) {
HelpFiles.files = $$files($$PWD/help/*.qch)
HelpFiles.path = Contents/Resources/Help
QMAKE_BUNDLE_DATA += HelpFiles
}
# Removed because we are not using QT's translation files
# QtTransFiles.files = $$files($$[QT_INSTALL_TRANSLATIONS]/qt*.qm)
# QtTransFiles.path = Contents/translations
# QMAKE_BUNDLE_DATA += QtTransFiles
TransFiles.files = $${TRANSLATIONS_FILES}
TransFiles.path = Contents/Resources/translations
QMAKE_BUNDLE_DATA += TransFiles
HtmlFiles.files = $${HTML_FILES}
HtmlFiles.path = Contents/Resources/html
QMAKE_BUNDLE_DATA += HtmlFiles
} else {
!contains(DEFINES, helpless) {
HELPDIR = $$OUT_PWD/Help
HELP_FILES += $$PWD/help/*.qch
}
DDIR = $$OUT_PWD/Translations
HTMLDIR = $$OUT_PWD/Html
TRANS_FILES = $${TRANSLATIONS_FILES}
win32 {
TRANS_FILES_WIN = $${TRANS_FILES}
TRANS_FILES_WIN ~= s,/,\\,g
DDIR ~= s,/,\\,g
!exists($$quote($$DDIR)): system(mkdir $$quote($$DDIR))
for(FILE,TRANS_FILES_WIN) {
system(xcopy /y $$quote($$FILE) $$quote($$DDIR))
}
HTML_FILES_WIN = $${HTML_FILES}
HTML_FILES_WIN ~= s,/,\\,g
HTMLDIR ~= s,/,\\,g
!exists($$quote($$HTMLDIR)): system(mkdir $$quote($$HTMLDIR))
for(FILE,HTML_FILES_WIN) {
system(xcopy /y $$quote($$FILE) $$quote($$HTMLDIR))
}
!contains(DEFINES, helpless) {
HELP_FILES_WIN = $${HELP_FILES}
HELP_FILES_WIN ~= s,/,\\,g
HELPDIR ~= s,/,\\,g
!exists($$quote($$HELPDIR)): system(mkdir $$quote($$HELPDIR))
for(FILE,HELP_FILES_WIN) {
system(xcopy /y $$quote($$FILE) $$quote($$HELPDIR))
}
}
} else {
system(mkdir -p $$quote($$DDIR))
for(FILE,TRANS_FILES) {
system(cp $$quote($$FILE) $$quote($$DDIR))
}
system(mkdir -p $$quote($$HTMLDIR))
for(FILE,HTML_FILES) {
system(cp $$quote($$FILE) $$quote($$HTMLDIR))
}
!contains(DEFINES, helpless) {
system(mkdir -p $$quote($$HELPDIR))
for(FILE,HELP_FILES) {
system(cp $$quote($$FILE) $$quote($$HELPDIR))
}
}
}
}
lessThan(QT_MAJOR_VERSION,5)|lessThan(QT_MINOR_VERSION,12) {
unix {
system("/bin/bash $$_PRO_FILE_PWD_/fix_5-12_UI_files.sh");
message("Fixing UI files for old QT versions")
}
}
SOURCES += \
checkupdates.cpp \
common_gui.cpp \
cprogressbar.cpp \
daily.cpp \
exportcsv.cpp \
main.cpp \
mainwindow.cpp \
newprofile.cpp \
overview.cpp \
preferencesdialog.cpp \
reports.cpp \
sessionbar.cpp \
# updateparser.cpp \
version.cpp \
Graphs/gFlagsLine.cpp \
Graphs/gFooBar.cpp \
Graphs/gGraph.cpp \
Graphs/gGraphView.cpp \
Graphs/glcommon.cpp \
Graphs/gLineChart.cpp \
Graphs/gLineOverlay.cpp \
Graphs/gSegmentChart.cpp \
Graphs/gspacer.cpp \
Graphs/gStatsLine.cpp \
Graphs/gSummaryChart.cpp \
Graphs/gXAxis.cpp \
Graphs/gYAxis.cpp \
Graphs/layer.cpp \
SleepLib/calcs.cpp \
SleepLib/common.cpp \
SleepLib/day.cpp \
SleepLib/event.cpp \
SleepLib/machine.cpp \
SleepLib/machine_loader.cpp \
SleepLib/preferences.cpp \
SleepLib/profiles.cpp \
SleepLib/schema.cpp \
SleepLib/session.cpp \
SleepLib/loader_plugins/cms50_loader.cpp \
SleepLib/loader_plugins/dreem_loader.cpp \
SleepLib/loader_plugins/icon_loader.cpp \
SleepLib/loader_plugins/intellipap_loader.cpp \
SleepLib/loader_plugins/mseries_loader.cpp \
SleepLib/loader_plugins/prs1_loader.cpp \
SleepLib/loader_plugins/prs1_parser.cpp \
SleepLib/loader_plugins/resmed_loader.cpp \
SleepLib/loader_plugins/resmed_EDFinfo.cpp \
SleepLib/loader_plugins/somnopose_loader.cpp \
SleepLib/loader_plugins/viatom_loader.cpp \
SleepLib/loader_plugins/zeo_loader.cpp \
zip.cpp \
miniz.c \
csv.cpp \
rawdata.cpp \
translation.cpp \
statistics.cpp \
oximeterimport.cpp \
SleepLib/deviceconnection.cpp \
SleepLib/xmlreplay.cpp \
SleepLib/serialoximeter.cpp \
SleepLib/loader_plugins/md300w1_loader.cpp \
Graphs/gSessionTimesChart.cpp \
Graphs/gPressureChart.cpp \
logger.cpp \
SleepLib/machine_common.cpp \
SleepLib/loader_plugins/weinmann_loader.cpp \
Graphs/gdailysummary.cpp \
Graphs/MinutesAtPressure.cpp \
SleepLib/journal.cpp \
SleepLib/progressdialog.cpp \
SleepLib/loader_plugins/cms50f37_loader.cpp \
profileselector.cpp \
SleepLib/appsettings.cpp \
SleepLib/loader_plugins/edfparser.cpp \
aboutdialog.cpp \
welcome.cpp
!contains(DEFINES, helpless) {
SOURCES += help.cpp
}
HEADERS += \
checkupdates.h \
common_gui.h \
cprogressbar.h \
daily.h \
exportcsv.h \
mainwindow.h \
newprofile.h \
overview.h \
preferencesdialog.h \
reports.h \
sessionbar.h \
# updateparser.h \
version.h \
VERSION \
Graphs/gFlagsLine.h \
Graphs/gFooBar.h \
Graphs/gGraph.h \
Graphs/gGraphView.h \
Graphs/glcommon.h \
Graphs/gLineChart.h \
Graphs/gLineOverlay.h \
Graphs/gSegmentChart.h\
Graphs/gspacer.h \
Graphs/gStatsLine.h \
Graphs/gSummaryChart.h \
Graphs/gXAxis.h \
Graphs/gYAxis.h \
Graphs/layer.h \
SleepLib/calcs.h \
SleepLib/common.h \
SleepLib/day.h \
SleepLib/event.h \
SleepLib/machine.h \
SleepLib/machine_common.h \
SleepLib/machine_loader.h \
SleepLib/preferences.h \
SleepLib/profiles.h \
SleepLib/schema.h \
SleepLib/session.h \
SleepLib/loader_plugins/cms50_loader.h \
SleepLib/loader_plugins/dreem_loader.h \
SleepLib/loader_plugins/icon_loader.h \
SleepLib/loader_plugins/intellipap_loader.h \
SleepLib/loader_plugins/mseries_loader.h \
SleepLib/loader_plugins/prs1_loader.h \
SleepLib/loader_plugins/prs1_parser.h \
SleepLib/loader_plugins/resmed_loader.h \
SleepLib/loader_plugins/resmed_EDFinfo.h \
SleepLib/loader_plugins/somnopose_loader.h \
SleepLib/loader_plugins/viatom_loader.h \
SleepLib/loader_plugins/zeo_loader.h \
zip.h \
miniz.h \
csv.h \
rawdata.h \
translation.h \
statistics.h \
oximeterimport.h \
SleepLib/deviceconnection.h \
SleepLib/xmlreplay.h \
SleepLib/serialoximeter.h \
SleepLib/loader_plugins/md300w1_loader.h \
Graphs/gSessionTimesChart.h \
Graphs/gPressureChart.h \
logger.h \
SleepLib/loader_plugins/weinmann_loader.h \
Graphs/gdailysummary.h \
Graphs/MinutesAtPressure.h \
SleepLib/journal.h \
SleepLib/progressdialog.h \
SleepLib/loader_plugins/cms50f37_loader.h \
profileselector.h \
SleepLib/appsettings.h \
SleepLib/loader_plugins/edfparser.h \
aboutdialog.h \
welcome.h \
mytextbrowser.h \
git_info.h
!contains(DEFINES, helpless) {
HEADERS += help.h
}
FORMS += \
daily.ui \
overview.ui \
mainwindow.ui \
oximetry.ui \
preferencesdialog.ui \
newprofile.ui \
exportcsv.ui \
# UpdaterWindow.ui \
oximeterimport.ui \
profileselector.ui \
aboutdialog.ui \
welcome.ui
!contains(DEFINES, helpless) {
FORMS += help.ui
}
equals(QT_MAJOR_VERSION,5) {
lessThan(QT_MINOR_VERSION,12) {
FORMS += reports.ui
}
}
RESOURCES += \
Resources.qrc
OTHER_FILES += \
docs/index.html \
docs/schema.xml \
docs/graphs.xml \
docs/channels.xml \
docs/startup_tips.txt \
docs/countries.txt \
docs/tz.txt \
../LICENSE.txt \
docs/tooltips.css \
docs/script.js \
../update.xml \
docs/changelog.txt \
docs/intro.html \
docs/statistics.xml \
update_gitinfo.bat \
update_gitinfo.sh
DISTFILES += \
../README
!contains(DEFINES, helpless) {
DISTFILES += help/default.css \
help/help_en/daily.html \
help/help_en/glossary.html \
help/help_en/import.html \
help/help_en/index.html \
help/help_en/overview.html \
help/help_en/oximetry.html \
help/help_en/statistics.html \
help/help_en/supported.html \
help/help_en/gettingstarted.html \
help/help_en/tipsntricks.html \
help/help_en/faq.html \
help/help_nl/daily.html \
help/help_nl/faq.html \
help/help_nl/gettingstarted.html \
help/help_nl/glossary.html \
help/help_nl/import.html \
help/help_nl/index.html \
help/help_nl/overview.html \
help/help_nl/oximetry.html \
help/help_nl/statistics.html \
help/help_nl/supported.html \
help/help_nl/tipsntricks.html \
help/help_en/reportingbugs.html \
help/help_nl/OSCAR_Guide_nl.qhp \
help/help_en/OSCAR_Guide_en.qhp \
help/index.qhcp
}
# Always treat warnings as errors, even (especially!) in release
QMAKE_CFLAGS += -Werror
QMAKE_CXXFLAGS += -Werror
gcc | clang {
COMPILER_VERSION = $$system($$QMAKE_CXX " -dumpversion")
COMPILER_MAJOR = $$split(COMPILER_VERSION, ".")
COMPILER_MAJOR = $$first(COMPILER_MAJOR)
message("$$QMAKE_CXX major version $$COMPILER_MAJOR")
greaterThan(COMPILER_MAJOR, 10) : {
QMAKE_CFLAGS += -Wno-error=stringop-overread
QMAKE_CXXFLAGS += -Wno-error=stringop-overread
message("Removing stringop-overread error")
}
}
# Make deprecation warnings just warnings
QMAKE_CFLAGS += -Wno-error=deprecated-declarations
QMAKE_CXXFLAGS += -Wno-error=deprecated-declarations
lessThan(QT_MAJOR_VERSION,5)|lessThan(QT_MINOR_VERSION,9) {
QMAKE_CFLAGS += -Wno-error=strict-aliasing
QMAKE_CXXFLAGS += -Wno-error=strict-aliasing
}
# Create a debug GUI build by adding "CONFIG+=memdebug" to your qmake command
memdebug {
CONFIG += debug
!win32 { # add memory checking on Linux and macOS debug builds
QMAKE_CFLAGS += -g -Werror -fsanitize=address -fno-omit-frame-pointer -fno-common -fsanitize-address-use-after-scope
lessThan(QT_MAJOR_VERSION,5)|lessThan(QT_MINOR_VERSION,9) {
QMAKE_CFLAGS -= -fsanitize-address-use-after-scope
}
QMAKE_CXXFLAGS += -g -Werror -fsanitize=address -fno-omit-frame-pointer -fno-common -fsanitize-address-use-after-scope
lessThan(QT_MAJOR_VERSION,5)|lessThan(QT_MINOR_VERSION,9) {
QMAKE_CXXFLAGS -= -fsanitize-address-use-after-scope
}
QMAKE_LFLAGS += -fsanitize=address
}
}
# Turn on unit testing by adding "CONFIG+=test" to your qmake command
test {
TARGET = test
DEFINES += UNITTEST_MODE
QT += testlib
QT -= gui
CONFIG += console debug
CONFIG -= app_bundle
!win32 { # add memory checking on Linux and macOS test builds
QMAKE_CFLAGS += -Werror -fsanitize=address -fno-omit-frame-pointer -fno-common -fsanitize-address-use-after-scope
lessThan(QT_MAJOR_VERSION,5)|lessThan(QT_MINOR_VERSION,9) {
QMAKE_CFLAGS -= -fsanitize-address-use-after-scope
}
QMAKE_CXXFLAGS += -Werror -fsanitize=address -fno-omit-frame-pointer -fno-common -fsanitize-address-use-after-scope
lessThan(QT_MAJOR_VERSION,5)|lessThan(QT_MINOR_VERSION,9) {
QMAKE_CXXFLAGS -= -fsanitize-address-use-after-scope
}
QMAKE_LFLAGS += -fsanitize=address
}
SOURCES += \
tests/prs1tests.cpp \
tests/rawdatatests.cpp \
tests/resmedtests.cpp \
tests/sessiontests.cpp \
tests/versiontests.cpp \
tests/viatomtests.cpp \
tests/deviceconnectiontests.cpp \
tests/dreemtests.cpp \
tests/zeotests.cpp
HEADERS += \
tests/AutoTest.h \
tests/prs1tests.h \
tests/rawdatatests.h \
tests/resmedtests.h \
tests/sessiontests.h \
tests/versiontests.h \
tests/viatomtests.h \
tests/deviceconnectiontests.h \
tests/dreemtests.h \
tests/zeotests.h
}
macx {
app_bundle {
# On macOS put a custom Info.plist into the bundle that disables dark mode on Mojave.
QMAKE_INFO_PLIST = "../Building/MacOS/Info.plist.in"
# Add the git revision to the Info.plist.
Info_plist.target = Info.plist
Info_plist.depends = $${TARGET}.app/Contents/Info.plist
Info_plist.commands = $$_PRO_FILE_PWD_/../Building/MacOS/finalize_plist $$_PRO_FILE_PWD_ $${TARGET}.app/Contents/Info.plist
QMAKE_EXTRA_TARGETS += Info_plist
PRE_TARGETDEPS += $$Info_plist.target
}
# Add a dist-mac target to build the distribution .dmg.
QMAKE_EXTRA_TARGETS += dist-mac
dist-mac.commands = QT_BIN=$$[QT_INSTALL_PREFIX]/bin $$_PRO_FILE_PWD_/../Building/MacOS/create_dmg $${TARGET} $${TARGET}.app $$_PRO_FILE_PWD_/../Building/MacOS/README.rtfd
dist-mac.depends = $${TARGET}.app/Contents/MacOS/$${TARGET}
}