Refactor build system.

This commit is contained in:
codestation
2016-09-04 16:34:38 -04:00
parent 1c0ca82072
commit 91ddb1fb55
9 changed files with 80 additions and 67 deletions

View File

@@ -1,21 +1,16 @@
include(../config.pri)
include(../common/defines.pri)
QT += qml quick core network sql
TEMPLATE += app
TARGET = qcma_android
TEMPLATE=app
QT += network sql
CONFIG += mobility
android {
QT += androidextras
QT += androidextras
}
QT -= gui
LIBS += -L../common -lqcma_common
CONFIG += mobility
# this library needs to link statically their deps but Qt doesn't pass --static to PKGCONFIG
QMAKE_CXXFLAGS += $$system(pkg-config --static --cflags libvitamtp)
LIBS += -lvitamtp -lxml2 -liconv
SOURCES += \
main_android.cpp \
@@ -34,3 +29,9 @@ DISTFILES += \
android-src/gradlew.bat
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android-src
include(../common/common.pri)
android {
LIBS += -lvitamtp -lxml2 -liconv
}

View File

@@ -25,10 +25,15 @@
#include <QCoreApplication>
#include <QDir>
#include <QHostInfo>
#include <QSettings>
#include <QStandardPaths>
#include <QTextStream>
#ifdef Q_OS_ANDROID
#include <QAndroidJniObject>
#endif
#include <vitamtp.h>
ServiceManager::ServiceManager(QObject *obj_parent)
@@ -211,9 +216,13 @@ void ServiceManager::loadDefaultSettings()
settings.setValue("protocolVersion", VITAMTP_PROTOCOL_MAX_VERSION);
#ifdef Q_OS_ANDROID
QString deviceName = QAndroidJniObject::getStaticObjectField(
"android/os/Build", "MODEL", "Ljava/lang/String;")
.toString();
#else
QString deviceName = QHostInfo::localHostName();
#endif
qDebug("Detected device model: %s", qPrintable(deviceName));
settings.setValue("hostName", deviceName);

View File

@@ -1,31 +1,34 @@
include(../config.pri)
include(../common/defines.pri)
TARGET = qcma_cli
# remove linked gui libs
QT -= gui
QT += core network sql
TEMPLATE += app
QT += network sql core
greaterThan(QT_MAJOR_VERSION, 4): QT -= gui
LIBS += -L../common -lqcma_common
TARGET = qcma_cli
SOURCES += \
main_cli.cpp \
singlecoreapplication.cpp \
headlessmanager.cpp
main_cli.cpp \
singlecoreapplication.cpp \
headlessmanager.cpp
HEADERS += \
singlecoreapplication.h \
headlessmanager.h
singlecoreapplication.h \
headlessmanager.h
include(../common/common.pri)
DISABLE_FFMPEG {
PKGCONFIG = libvitamtp
} else {
# find packages using pkg-config
PKGCONFIG = libvitamtp libavformat libavcodec libavutil libswscale
}
# Linux-only config
unix:!macx {
# installation prefix
isEmpty(PREFIX) {
PREFIX = /usr/local
}
BINDIR = $$PREFIX/bin
DATADIR = $$PREFIX/share
MANDIR = $$DATADIR/man/man1
man_cli.files = qcma_cli.1
man_cli.path = $$MANDIR
target.path = $$BINDIR

15
common/common.pri Normal file
View File

@@ -0,0 +1,15 @@
INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD
!android {
PKGCONFIG += libvitamtp
}
!DISABLE_FFMPEG {
PKGCONFIG += libavformat libavcodec libavutil libswscale
}
unix|win32: LIBS += -L ../common/ -lqcma_common
win32:!win32-g++: PRE_TARGETDEPS += ../common/qcma_common.lib
else:unix|win32-g++: PRE_TARGETDEPS += ../common/libqcma_common.a

View File

@@ -1,9 +1,10 @@
include(../config.pri)
TARGET = qcma_common
QT += core network sql
TEMPLATE = lib
CONFIG += staticlib
TARGET = qcma_common
SOURCES += \
capability.cpp \
@@ -36,12 +37,12 @@ HEADERS += \
qlistdb.h \
database.h
DISABLE_FFMPEG {
PKGCONFIG = libvitamtp
} else {
PKGCONFIG += libvitamtp
!DISABLE_FFMPEG {
DEFINES += FFMPEG_ENABLED
SOURCES += avdecoder.cpp
PKGCONFIG = libvitamtp libavformat libavcodec libavutil libswscale
PKGCONFIG += libavformat libavcodec libavutil libswscale
}
OTHER_FILES += \

View File

@@ -1,2 +0,0 @@
INCLUDEPATH += $$IN_PWD
DEPENDPATH += $$IN_PWD

View File

@@ -20,15 +20,6 @@ QMAKE_CXXFLAGS += -Wno-write-strings -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MA
unix:!macx {
# largefile support
DEFINES += _FILE_OFFSET_BITS=64 _LARGEFILE_SOURCE
# installation prefix
isEmpty(PREFIX) {
PREFIX = /usr/local
}
BINDIR = $$PREFIX/bin
DATADIR = $$PREFIX/share
MANDIR = $$DATADIR/man/man1
}
# Windows config
@@ -41,8 +32,6 @@ win32 {
macx {
# OS X icon
ICON = resources/images/qcma.icns
# re-enable pkg-config on OS X (brew installs pkg-config files)
QT_CONFIG -= no-pkg-config
}
# try to get the current git version + hash

View File

@@ -1,9 +1,8 @@
include(../config.pri)
include(../common/defines.pri)
TARGET = qcma
TEMPLATE += app
QT += gui widgets network sql
TEMPLATE += app
TARGET = qcma
SOURCES += \
main.cpp \
@@ -51,19 +50,23 @@ OTHER_FILES += \
resources/qcma.desktop \
qcma.rc
RESOURCES += gui.qrc
include(../common/common.pri)
DISABLE_FFMPEG {
PKGCONFIG = libvitamtp
} else {
# find packages using pkg-config
PKGCONFIG = libvitamtp libavformat libavcodec libavutil libswscale
}
RESOURCES += gui.qrc
#Linux-only config
unix:!macx {
PKGCONFIG += libnotify
# installation prefix
isEmpty(PREFIX) {
PREFIX = /usr/local
}
BINDIR = $$PREFIX/bin
DATADIR = $$PREFIX/share
MANDIR = $$DATADIR/man/man1
# config for desktop file and icon
desktop.path = $$DATADIR/applications
desktop.files += resources/$${TARGET}.desktop
@@ -84,11 +87,3 @@ win32 {
# Windows icon
RC_FILE = qcma.rc
}
unix|win32: LIBS += -L$$OUT_PWD/../common/ -lqcma_common
INCLUDEPATH += $$PWD/../common
DEPENDPATH += $$PWD/../common
win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../common/qcma_common.lib
else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../common/libqcma_common.a

View File

@@ -5,7 +5,6 @@
#-------------------------------------------------
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS = common
unix:!macx:!android {
@@ -13,7 +12,6 @@ unix:!macx:!android {
SUBDIRS += cli
cli.depends = common
# The appindicator and kde extensions are linux only too
ENABLE_APPINDICATOR {
SUBDIRS += appindicator
appindicator.depends = gui
@@ -24,10 +22,14 @@ unix:!macx:!android {
}
}
android {
unix {
# Compile the Qt Quick binary only on Android
SUBDIRS += android
android.depends = common
} else {
}
!android {
# Build the Qt Widgets binary on all platforms, except Android
SUBDIRS += gui
gui.depends = common
}