#------------------------------------------------- # # 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/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 \ 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/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 \ 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 = $$str_member($$COMPILER_VERSION) greaterThan(COMPILER_MAJOR, 9) : { QMAKE_CFLAGS += -Wno-error=depreciated-copy QMAKE_CXX_FLAGS += -Wno-error=depreciated-copy message("Removing depreciated-copy 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/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/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} }