# vim: ft=qmake # Custom functions defineReplace(glob_filenames) { for(pattern, ARGS) { results *= $$files(src/$${pattern}, true) } return($$results) } # Base configuration # widgets: Make native file dialogs available to QML (must use QApplication) QT = quick quickcontrols2 widgets DEFINES += QT_DEPRECATED_WARNINGS CONFIG += warn_off c++11 release TEMPLATE = app BUILD_DIR = build MOC_DIR = $$BUILD_DIR/moc OBJECTS_DIR = $$BUILD_DIR/obj RCC_DIR = $$BUILD_DIR/rcc QRC_FILE = $$BUILD_DIR/resources.qrc RESOURCES += $$QRC_FILE HEADERS += $$glob_filenames(*.h) submodules/hsluv-c/src/hsluv.h SOURCES += $$glob_filenames(*.cpp) submodules/hsluv-c/src/hsluv.c TARGET = moment unix:!macx { LIBS += -lX11 -lXss } # Custom CONFIG options dev { # Enable debugging and don't use the Qt Resource System to compile faster CONFIG -= warn_off release CONFIG += debug qml_debug declarative_debug RESOURCES -= $$QRC_FILE warning(make install cannot be used with the dev CONFIG option.) } no-x11 { # Compile without X11-specific features (auto-away) DEFINES += NO_X11 LIBS -= -lX11 -lXss } # Files to copy for `make install` command !dev:unix { isEmpty(PREFIX) { PREFIX = /usr/local } executables.path = $$PREFIX/bin executables.files = $$TARGET shortcuts.path = $$PREFIX/share/applications shortcuts.files = packaging/moment.desktop icons256.path = $$PREFIX/share/icons/hicolor/256x256/apps icons256.files = packaging/moment.png examples.path = $$PREFIX/share/examples/moment examples.files = src/config/settings.py metainfo.path = $$PREFIX/share/metainfo metainfo.files = packaging/moment.metainfo.xml INSTALLS += executables shortcuts icons256 examples metainfo } !dev:win32 { executables.path = "C:/Program Files" executables.files = $$TARGET INSTALLS += executables } # Add `make test` command test.commands = find src/gui -type f -name '*.qml' -exec qmllint '{}' + && test.commands += flake8 src/backend && test.commands += mypy --pretty src/backend QMAKE_EXTRA_TARGETS += test # Add stuff to `make clean` command # Allow cleaning folders instead of just files win32:QMAKE_DEL_FILE = rmdir /q /s !win32:QMAKE_DEL_FILE = rm -rf for(file, $$list($$glob_filenames(*.py))) { PYCACHE_DIRS *= $$dirname(file)/__pycache__ PYCACHE_DIRS *= $$dirname(file)/.mypy_cache } QMAKE_CLEAN *= $$MOC_DIR $$OBJECTS_DIR $$RCC_DIR $$PYCACHE_DIRS $$QRC_FILE QMAKE_CLEAN *= $$BUILD_DIR $$TARGET Makefile moment.pro.user .qmake.stash QMAKE_CLEAN *= $$glob_filenames(*.pyc, *.qmlc, *.jsc, *.egg-info) QMAKE_CLEAN *= packaging/flatpak/flatpak-env QMAKE_CLEAN *= packaging/flatpak/flatpak-pip-generator QMAKE_CLEAN *= packaging/flatpak/flatpak-env-requirements.txt QMAKE_CLEAN *= packaging/flatpak/flatpak-pip.json .flatpak-builder # Generate resource file RESOURCE_FILES *= $$glob_filenames(qmldir, *.qml, *.qpl, *.js, *.py) RESOURCE_FILES *= $$glob_filenames( *.jpg, *.jpeg, *.png, *.svg, *.wav) file_content += '' file_content += '' file_content += '' file_content += '' for(file, RESOURCE_FILES) { file_content += ' ../$$file' } file_content += '' file_content += '' write_file($$QRC_FILE, file_content)