QT       += core gui printsupport network svg

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17
CONFIG += nokey

isEmpty(APP_NAME) {
    APP_NAME = RedPandaCPP
}

isEmpty(APP_VERSION) {
    APP_VERSION=0.14.1
}

isEmpty(PREFIX) {
    PREFIX = /usr/local
}

DEFINES += PREFIX=\\\"$${PREFIX}\\\"
DEFINES += APP_NAME=\\\"$${APP_NAME}\\\"
DEFINES += REDPANDA_CPP_VERSION=\\\"$${APP_VERSION}\\\"

gcc {
    QMAKE_CXXFLAGS_RELEASE += -Werror=return-type
    QMAKE_CXXFLAGS_DEBUG += -Werror=return-type
}

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    HighlighterManager.cpp \
    autolinkmanager.cpp \
    caretlist.cpp \
    codeformatter.cpp \
    codesnippetsmanager.cpp \
    colorscheme.cpp \
    compiler/ojproblemcasesrunner.cpp \
    compiler/projectcompiler.cpp \
    compiler/runner.cpp \
    gdbmiresultparser.cpp \
    platform.cpp \
    compiler/compiler.cpp \
    compiler/compilermanager.cpp \
    compiler/executablerunner.cpp \
    compiler/filecompiler.cpp \
    compiler/stdincompiler.cpp \
    cpprefacter.cpp \
    parser/cppparser.cpp \
    parser/cpppreprocessor.cpp \
    parser/cpptokenizer.cpp \
    parser/parserutils.cpp \
    parser/statementmodel.cpp \
    problems/ojproblemset.cpp \
    problems/problemcasevalidator.cpp \
    project.cpp \
    projectoptions.cpp \
    projecttemplate.cpp \
    qsynedit/Search.cpp \
    qsynedit/SearchBase.cpp \
    qsynedit/SearchRegex.cpp \
    qsynedit/Types.cpp \
    settingsdialog/compilerautolinkwidget.cpp \
    settingsdialog/debuggeneralwidget.cpp \
    settingsdialog/editorautosavewidget.cpp \
    settingsdialog/editorcodecompletionwidget.cpp \
    settingsdialog/editormiscwidget.cpp \
    settingsdialog/editorsnippetwidget.cpp \
    settingsdialog/editortooltipswidget.cpp \
    settingsdialog/environmentfolderswidget.cpp \
    settingsdialog/environmentperformancewidget.cpp \
    settingsdialog/environmentshortcutwidget.cpp \
    settingsdialog/executorproblemsetwidget.cpp \
    settingsdialog/formattergeneralwidget.cpp \
    settingsdialog/projectcompileparamaterswidget.cpp \
    settingsdialog/projectcompilerwidget.cpp \
    settingsdialog/projectdirectorieswidget.cpp \
    settingsdialog/projectdllhostwidget.cpp \
    settingsdialog/projectfileswidget.cpp \
    settingsdialog/projectgeneralwidget.cpp \
    settingsdialog/projectmakefilewidget.cpp \
    settingsdialog/projectoutputwidget.cpp \
    settingsdialog/projectprecompilewidget.cpp \
    settingsdialog/toolsgeneralwidget.cpp \
    shortcutmanager.cpp \
    symbolusagemanager.cpp \
    thememanager.cpp \
    todoparser.cpp \
    toolsmanager.cpp \
    widgets/aboutdialog.cpp \
    widgets/bookmarkmodel.cpp \
    widgets/classbrowser.cpp \
    widgets/codecompletionlistview.cpp \
    widgets/codecompletionpopup.cpp \
    widgets/cpudialog.cpp \
    debugger.cpp \
    editor.cpp \
    editorlist.cpp \
    iconsmanager.cpp \
    main.cpp \
    mainwindow.cpp \
    qsynedit/CodeFolding.cpp \
    qsynedit/Constants.cpp \
    qsynedit/KeyStrokes.cpp \
    qsynedit/MiscClasses.cpp \
    qsynedit/MiscProcs.cpp \
    qsynedit/SynEdit.cpp \
    qsynedit/TextBuffer.cpp \
    qsynedit/TextPainter.cpp \
    qsynedit/exporter/synexporter.cpp \
    qsynedit/exporter/synhtmlexporter.cpp \
    qsynedit/exporter/synrtfexporter.cpp \
    qsynedit/highlighter/asm.cpp \
    qsynedit/highlighter/base.cpp \
    qsynedit/highlighter/composition.cpp \
    qsynedit/highlighter/cpp.cpp \
    qsynedit/highlighter/glsl.cpp \
    settingsdialog/compilersetdirectorieswidget.cpp \
    settingsdialog/compilersetoptionwidget.cpp \
    settings.cpp \
    settingsdialog/editorclipboardwidget.cpp \
    settingsdialog/editorcolorschemewidget.cpp \
    settingsdialog/editorfontwidget.cpp \
    settingsdialog/editorgeneralwidget.cpp \
    settingsdialog/editorsymbolcompletionwidget.cpp \
    settingsdialog/editorsyntaxcheckwidget.cpp \
    settingsdialog/environmentappearencewidget.cpp \
    settingsdialog/executorgeneralwidget.cpp \
    settingsdialog/settingsdialog.cpp \
    settingsdialog/settingswidget.cpp \
    systemconsts.cpp \
    utils.cpp \
    widgets/coloredit.cpp \
    widgets/consolewidget.cpp \
    widgets/customdisablediconengine.cpp \
    widgets/custommakefileinfodialog.cpp \
    widgets/darkfusionstyle.cpp \
    widgets/editorstabwidget.cpp \
    widgets/filepropertiesdialog.cpp \
    widgets/functiontooltipwidget.cpp \
    widgets/headercompletionpopup.cpp \
    widgets/issuestable.cpp \
    widgets/labelwithmenu.cpp \
    widgets/lightfusionstyle.cpp \
    widgets/macroinfomodel.cpp \
    widgets/newclassdialog.cpp \
    widgets/newheaderdialog.cpp \
    widgets/newprojectdialog.cpp \
    widgets/ojproblempropertywidget.cpp \
    widgets/ojproblemsetmodel.cpp \
    widgets/qconsole.cpp \
    widgets/qpatchedcombobox.cpp \
    widgets/searchdialog.cpp \
    widgets/searchresultview.cpp \
    widgets/signalmessagedialog.cpp

HEADERS += \
    HighlighterManager.h \
    SimpleIni.h \
    autolinkmanager.h \
    caretlist.h \
    codeformatter.h \
    codesnippetsmanager.h \
    colorscheme.h \
    compiler/compiler.h \
    compiler/compilermanager.h \
    compiler/executablerunner.h \
    compiler/filecompiler.h \
    compiler/ojproblemcasesrunner.h \
    compiler/projectcompiler.h \
    compiler/runner.h \
    compiler/stdincompiler.h \
    cpprefacter.h \
    gdbmiresultparser.h \
    parser/cppparser.h \
    parser/cpppreprocessor.h \
    parser/cpptokenizer.h \
    parser/parserutils.h \
    parser/statementmodel.h \
    platform.h \
    problems/ojproblemset.h \
    problems/problemcasevalidator.h \
    project.h \
    projectoptions.h \
    projecttemplate.h \
    qsynedit/Search.h \
    qsynedit/SearchBase.h \
    qsynedit/SearchRegex.h \
    settingsdialog/compilerautolinkwidget.h \
    settingsdialog/debuggeneralwidget.h \
    settingsdialog/editorautosavewidget.h \
    settingsdialog/editorcodecompletionwidget.h \
    settingsdialog/editormiscwidget.h \
    settingsdialog/editorsnippetwidget.h \
    settingsdialog/editortooltipswidget.h \
    settingsdialog/environmentfolderswidget.h \
    settingsdialog/environmentperformancewidget.h \
    settingsdialog/environmentshortcutwidget.h \
    settingsdialog/executorproblemsetwidget.h \
    settingsdialog/formattergeneralwidget.h \
    settingsdialog/projectcompileparamaterswidget.h \
    settingsdialog/projectcompilerwidget.h \
    settingsdialog/projectdirectorieswidget.h \
    settingsdialog/projectdllhostwidget.h \
    settingsdialog/projectfileswidget.h \
    settingsdialog/projectgeneralwidget.h \
    settingsdialog/projectmakefilewidget.h \
    settingsdialog/projectoutputwidget.h \
    settingsdialog/projectprecompilewidget.h \
    settingsdialog/toolsgeneralwidget.h \
    shortcutmanager.h \
    symbolusagemanager.h \
    thememanager.h \
    todoparser.h \
    toolsmanager.h \
    widgets/aboutdialog.h \
    widgets/bookmarkmodel.h \
    widgets/classbrowser.h \
    widgets/codecompletionlistview.h \
    widgets/codecompletionpopup.h \
    widgets/cpudialog.h \
    debugger.h \
    editor.h \
    editorlist.h \
    iconsmanager.h \
    mainwindow.h \
    qsynedit/CodeFolding.h \
    qsynedit/Constants.h \
    qsynedit/KeyStrokes.h \
    qsynedit/MiscClasses.h \
    qsynedit/MiscProcs.h \
    qsynedit/SynEdit.h \
    qsynedit/TextBuffer.h \
    qsynedit/TextPainter.h \
    qsynedit/Types.h \
    qsynedit/exporter/synexporter.h \
    qsynedit/exporter/synhtmlexporter.h \
    qsynedit/exporter/synrtfexporter.h \
    qsynedit/highlighter/asm.h \
    qsynedit/highlighter/base.h \
    qsynedit/highlighter/composition.h \
    qsynedit/highlighter/cpp.h \
    qsynedit/highlighter/glsl.h \
    settingsdialog/compilersetdirectorieswidget.h \
    settingsdialog/compilersetoptionwidget.h \
    settings.h \
    settingsdialog/editorclipboardwidget.h \
    settingsdialog/editorcolorschemewidget.h \
    settingsdialog/editorfontwidget.h \
    settingsdialog/editorgeneralwidget.h \
    settingsdialog/editorsymbolcompletionwidget.h \
    settingsdialog/editorsyntaxcheckwidget.h \
    settingsdialog/environmentappearencewidget.h \
    settingsdialog/executorgeneralwidget.h \
    settingsdialog/settingsdialog.h \
    settingsdialog/settingswidget.h \
    systemconsts.h \
    utils.h \
    common.h \
    widgets/coloredit.h \
    widgets/consolewidget.h \
    widgets/customdisablediconengine.h \
    widgets/custommakefileinfodialog.h \
    widgets/darkfusionstyle.h \
    widgets/editorstabwidget.h \
    widgets/filepropertiesdialog.h \
    widgets/functiontooltipwidget.h \
    widgets/headercompletionpopup.h \
    widgets/issuestable.h \
    widgets/labelwithmenu.h \
    widgets/lightfusionstyle.h \
    widgets/macroinfomodel.h \
    widgets/newclassdialog.h \
    widgets/newheaderdialog.h \
    widgets/newprojectdialog.h \
    widgets/ojproblempropertywidget.h \
    widgets/ojproblemsetmodel.h \
    widgets/qconsole.h \
    widgets/qpatchedcombobox.h \
    widgets/searchdialog.h \
    widgets/searchresultview.h \
    widgets/signalmessagedialog.h

FORMS += \
    settingsdialog/compilerautolinkwidget.ui \
    settingsdialog/debuggeneralwidget.ui \
    settingsdialog/editorautosavewidget.ui \
    settingsdialog/editorcodecompletionwidget.ui \
    settingsdialog/editormiscwidget.ui \
    settingsdialog/editorsnippetwidget.ui \
    settingsdialog/editortooltipswidget.ui \
    settingsdialog/environmentfolderswidget.ui \
    settingsdialog/environmentperformancewidget.ui \
    settingsdialog/environmentshortcutwidget.ui \
    settingsdialog/executorproblemsetwidget.ui \
    settingsdialog/formattergeneralwidget.ui \
    settingsdialog/projectcompileparamaterswidget.ui \
    settingsdialog/projectcompilerwidget.ui \
    settingsdialog/projectdirectorieswidget.ui \
    settingsdialog/projectdllhostwidget.ui \
    settingsdialog/projectfileswidget.ui \
    settingsdialog/projectgeneralwidget.ui \
    settingsdialog/projectmakefilewidget.ui \
    settingsdialog/projectoutputwidget.ui \
    settingsdialog/projectprecompilewidget.ui \
    settingsdialog/toolsgeneralwidget.ui \
    widgets/aboutdialog.ui \
    widgets/cpudialog.ui \
    mainwindow.ui \
    settingsdialog/compilersetdirectorieswidget.ui \
    settingsdialog/compilersetoptionwidget.ui \
    settingsdialog/editorclipboardwidget.ui \
    settingsdialog/editorcolorschemewidget.ui \
    settingsdialog/editorfontwidget.ui \
    settingsdialog/editorgeneralwidget.ui \
    settingsdialog/editorsymbolcompletionwidget.ui \
    settingsdialog/editorsyntaxcheckwidget.ui \
    settingsdialog/environmentappearencewidget.ui \
    settingsdialog/executorgeneralwidget.ui \
    settingsdialog/settingsdialog.ui \
    widgets/custommakefileinfodialog.ui \
    widgets/filepropertiesdialog.ui \
    widgets/newclassdialog.ui \
    widgets/newheaderdialog.ui \
    widgets/newprojectdialog.ui \
    widgets/ojproblempropertywidget.ui \
    widgets/searchdialog.ui \
    widgets/signalmessagedialog.ui

win32: {
    FORMS +=  \
	settingsdialog/projectversioninfowidget.ui \
    settingsdialog/environmentfileassociationwidget.ui

    HEADERS += \
    settingsdialog/projectversioninfowidget.h \
    settingsdialog/environmentfileassociationwidget.h  
      
    SOURCES += \
    settingsdialog/environmentfileassociationwidget.cpp \
    settingsdialog/projectversioninfowidget.cpp
}

unix: {
    HEADERS += \
    settingsdialog/formatterpathwidget.h \
    settingsdialog/environmentprogramswidget.h

    SOURCES += \
    settingsdialog/formatterpathwidget.cpp \
    settingsdialog/environmentprogramswidget.cpp

    FORMS += \
    settingsdialog/formatterpathwidget.ui \
    settingsdialog/environmentprogramswidget.ui
}
linux: {
    LIBS+= \
    -lrt
}

TRANSLATIONS += \
    RedPandaIDE_zh_CN.ts

#CONFIG += lrelease embed_translations

win32: {
    !isEmpty(PREFIX) {
        target.path = $${PREFIX}
    }
}

# Default rules for deployment.
qnx: target.path = $${PREFIX}/bin
else: unix:!android: target.path = $${PREFIX}/bin
!isEmpty(target.path): INSTALLS += target

RESOURCES += \
    codes.qrc \
    defaultconfigs.qrc \
    icons.qrc \
    translations.qrc

RC_ICONS = images/devcpp.ico images/associations/c.ico images/associations/cpp.ico images/associations/dev.ico images/associations/c.ico images/associations/cpp.ico images/associations/h.ico images/associations/hpp.ico


# fixed lrelease.prf
qtPrepareTool(QMAKE_LRELEASE, lrelease)

isEmpty(LRELEASE_DIR): LRELEASE_DIR = .qm
isEmpty(QM_FILES_RESOURCE_PREFIX): QM_FILES_RESOURCE_PREFIX = i18n

lrelease.name = lrelease
lrelease.input = TRANSLATIONS EXTRA_TRANSLATIONS
lrelease.output = $$LRELEASE_DIR/${QMAKE_FILE_IN_BASE}.qm
lrelease.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN} $$QMAKE_LRELEASE_FLAGS -qm ${QMAKE_FILE_OUT}
silent: lrelease.commands = @echo lrelease ${QMAKE_FILE_IN} && $$lrelease.commands
lrelease.CONFIG = no_link target_predeps
QMAKE_EXTRA_COMPILERS += lrelease

all_translations = $$TRANSLATIONS $$EXTRA_TRANSLATIONS
for (translation, all_translations) {
    # mirrors $$LRELEASE_DIR/${QMAKE_FILE_IN_BASE}.qm above
    translation = $$basename(translation)
    QM_FILES += $$OUT_PWD/$$LRELEASE_DIR/$$replace(translation, \\..*$, .qm)
}

qmake_qm_files.files = $$QM_FILES
qmake_qm_files.base = $$OUT_PWD/$$LRELEASE_DIR
qmake_qm_files.prefix = $$QM_FILES_RESOURCE_PREFIX

iconsets_files.files += $$files(resources/iconsets/*.svg, true)
iconsets_files.files += $$files(resources/iconsets/*.json, true)

theme_files.files += $$files(themes/*.json, false)
theme_files.files += $$files(themes/*.png, false)

colorscheme_files.files += $$files(colorschemes/*.scheme, false)
colorscheme_files.prefix = /colorschemes

RESOURCES += qmake_qm_files
RESOURCES += iconsets_files
RESOURCES += theme_files
RESOURCES += colorscheme_files