mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-27 20:58:47 +00:00
Implement a qmake-based build for Subsurface
This is working for me, but requires a bit more testing. To build, run: qmake [options] Where options might be: V=1 disable "silent" build LIBDCDEVEL=1 use side-by-side libdivecomputer INCLUDEPATH+=xxx add -Ixxx (e.g., INCLUDEPATH+=/usr/local/marble/include) LIBS+=xxx add xxx to the linker flags (e.g. LIBS+=-L/usr/local/marble/lib) or any other qmake option, including debug and release options If your distribution is already using qtchooser in place of qmake, you may need to pass an extra option to qmake to select the a cross-build. For example: qmake -qt=i686-w64-mingw32-qt4 If your distribution is not yet using qtchooser, then you need to file a bug report requesting it and you need to run the full path to qmake. Note: - there are some ### left in the buildsystem Signed-off-by: Thiago Macieira <thiago@macieira.org>
This commit is contained in:
parent
2e43769108
commit
67e49d6480
5 changed files with 251 additions and 5 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -33,3 +33,9 @@ ui_*
|
|||
/subsurface.includes
|
||||
*.kdev4
|
||||
callgrind.out.*
|
||||
|
||||
.rcc
|
||||
.moc
|
||||
.uic
|
||||
.obj
|
||||
subsurface.pro.user*
|
||||
|
|
|
@ -7,20 +7,20 @@ BROWSER = firefox
|
|||
|
||||
all: doc $(addprefix $(DOCNAME).,pdf text)
|
||||
|
||||
doc: $(HTMLDOC)
|
||||
doc: $(OUT)$(HTMLDOC)
|
||||
|
||||
$(DOCNAME).text: $(DOCSOURCE)
|
||||
$(OUT)$(DOCNAME).text: $(DOCSOURCE)
|
||||
$(A2X) -f text $<
|
||||
|
||||
$(DOCNAME).pdf: $(DOCSOURCE)
|
||||
$(OUT)$(DOCNAME).pdf: $(DOCSOURCE)
|
||||
$(A2X) -f pdf $<
|
||||
|
||||
$(HTMLDOC): $(DOCSOURCE)
|
||||
$(OUT)$(HTMLDOC): $(DOCSOURCE)
|
||||
@echo "if asciidoc isn't found no HTML documentation is produced but Subsurface is still functional"
|
||||
$(ASCIIDOC) $< || true
|
||||
|
||||
# Alternatively::
|
||||
$(DOCNAME).xhtml: $(DOCSOURCE)
|
||||
$(OUT)$(DOCNAME).xhtml: $(DOCSOURCE)
|
||||
$(A2X) --icons -f xhtml $<
|
||||
|
||||
show: $(HTMLDOC)
|
||||
|
|
95
subsurface-configure.pri
Normal file
95
subsurface-configure.pri
Normal file
|
@ -0,0 +1,95 @@
|
|||
#
|
||||
# Global settings
|
||||
#
|
||||
# Set some C constructs to be diagnosed as errors:
|
||||
# - calling implicit functions
|
||||
# - casting from integers to pointers or vice-versa without an explicit cast
|
||||
# Also turn on C99 mode with GNU extensions
|
||||
*-g++*: QMAKE_CFLAGS += -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast -Werror=implicit-int
|
||||
!win32-msvc*: QMAKE_CFLAGS += -std=gnu99
|
||||
|
||||
# Check if we have pkg-config
|
||||
equals($$QMAKE_HOST.os, "Windows"):NUL=NUL
|
||||
else:NUL=/dev/null
|
||||
system(pkg-config --version 2>$$NUL >$$NUL) {
|
||||
CONFIG += link_pkgconfig
|
||||
} else {
|
||||
message("pkg-config not found, no detection performed. See README for details")
|
||||
}
|
||||
|
||||
#
|
||||
# Find libdivecomputer
|
||||
#
|
||||
!isEmpty(LIBDCDEVEL) {
|
||||
# find it next to our sources
|
||||
INCLUDEPATH += ../libdivecomputer/include
|
||||
LIBS += -L../libdivecomputer/src/.libs -ldivecomputer
|
||||
} else:exists(/usr/local/lib/libdivecomputer.a) {
|
||||
LIBS += -L/usr/local/lib -ldivecomputer
|
||||
} else:exists(/usr/local/lib64/libdivecomputer.a) {
|
||||
LIBS += -L/usr/local/lib64 -ldivecomputer
|
||||
} else:link_pkgconfig {
|
||||
# find it via pkg-config
|
||||
PKGCONFIG += libdivecomputer
|
||||
}
|
||||
|
||||
# Libusb-1.0 is only required if libdivecomputer was built with it.
|
||||
# And libdivecomputer is only built with it if libusb-1.0 is
|
||||
# installed. So get libusb if it exists, but don't complain
|
||||
# about it if it doesn't.
|
||||
#link_pkgconfig: packagesExist(libusb-1.0): PKGCONFIG += libusb-1.0
|
||||
|
||||
#
|
||||
# Find libxml2 and libxslt
|
||||
#
|
||||
# They come with shell scripts that contain the information we need, so we just
|
||||
# run them. They also come with pkg-config files, but those are missing on
|
||||
# Mac (where they are part of the XCode-supplied tools).
|
||||
#
|
||||
XML2_CFLAGS = $$system(xml2-config --cflags 2>$$NUL)
|
||||
XSLT_CFLAGS = $$system(xslt-config --cflags 2>$$NUL)
|
||||
XML2_LIBS = $$system(xml2-config --libs 2>$$NUL)
|
||||
XSLT_LIBS = $$system(xslt-config --libs 2>$$NUL)
|
||||
link_pkgconfig {
|
||||
isEmpty(XML2_CFLAGS)|isEmpty(XML2_LIBS): \
|
||||
error("Could not find libxml2. Did you forget to install it?")
|
||||
isEmpty(XSLT_CFLAGS)|isEmpty(XSLT_LIBS): \
|
||||
error("Could not find libxslt. Did you forget to install it?")
|
||||
}
|
||||
|
||||
QMAKE_CFLAGS *= $$XML2_CFLAGS $$XSLT_CFLAGS
|
||||
QMAKE_CXXFLAGS *= $$XML2_CFLAGS $$XSLT_CFLAGS
|
||||
LIBS *= $$XML2_LIBS $$XSLT_LIBS
|
||||
|
||||
#
|
||||
# Find other pkg-config-based projects
|
||||
# We're searching for:
|
||||
# libzip
|
||||
# sqlite3
|
||||
link_pkgconfig: PKGCONFIG += libzip sqlite3
|
||||
|
||||
#
|
||||
# Find libmarble
|
||||
#
|
||||
# Before Marble 4.9, the GeoDataTreeModel.h header wasn't installed
|
||||
# Check if it's present by trying to compile
|
||||
# ### FIXME: implement that
|
||||
win32: CONFIG(debug, debug|release): LIBS += -lmarblewidgetd
|
||||
else: LIBS += -lmarblewidget
|
||||
|
||||
#
|
||||
# Platform-specific changes
|
||||
#
|
||||
win32 {
|
||||
LIBS += -lwsock32
|
||||
DEFINES -= UNICODE
|
||||
}
|
||||
|
||||
#
|
||||
# misc
|
||||
#
|
||||
!equals(V, 1): CONFIG += silent
|
||||
MOC_DIR = .moc
|
||||
UI_DIR = .uic
|
||||
RCC_DIR = .rcc
|
||||
OBJECTS_DIR = .obj
|
16
subsurface-gen-version.pri
Normal file
16
subsurface-gen-version.pri
Normal file
|
@ -0,0 +1,16 @@
|
|||
# Generate the version.h file
|
||||
VERSION_FILE = version.h
|
||||
exists(.git/HEAD): {
|
||||
GIT_HEAD = .git/HEAD
|
||||
VERSION_SCRIPT = $$PWD/scripts/get-version
|
||||
version_h.depends = $$VERSION_SCRIPT
|
||||
version_h.commands = echo \\$${LITERAL_HASH}define VERSION_STRING \\\"`$$VERSION_SCRIPT linux`\\\" > ${QMAKE_FILE_OUT}
|
||||
version_h.input = GIT_HEAD
|
||||
version_h.output = $$VERSION_FILE
|
||||
version_h.variable_out = GENERATED_FILES
|
||||
version_h.CONFIG = ignore_no_exist
|
||||
QMAKE_EXTRA_COMPILERS += version_h
|
||||
} else {
|
||||
# This is probably a package
|
||||
system(echo \\$${LITERAL_HASH}define VERSION_STRING \\\"$$VERSION\\\" > $$VERSION_FILE)
|
||||
}
|
129
subsurface.pro
Normal file
129
subsurface.pro
Normal file
|
@ -0,0 +1,129 @@
|
|||
include(subsurface-configure.pri)
|
||||
|
||||
QT = core gui network webkit svg
|
||||
INCLUDEPATH += qt-ui $$PWD
|
||||
|
||||
VERSION = 3.1
|
||||
|
||||
HEADERS = \
|
||||
color.h \
|
||||
deco.h \
|
||||
device.h \
|
||||
display.h \
|
||||
dive.h \
|
||||
divelist.h \
|
||||
file.h \
|
||||
flag.h \
|
||||
gettextfromc.h \
|
||||
gettext.h \
|
||||
helpers.h \
|
||||
libdivecomputer.h \
|
||||
planner.h \
|
||||
pref.h \
|
||||
profile.h \
|
||||
qt-gui.h \
|
||||
qthelper.h \
|
||||
qt-ui/about.h \
|
||||
qt-ui/completionmodels.h \
|
||||
qt-ui/divecomputermanagementdialog.h \
|
||||
qt-ui/divelistview.h \
|
||||
qt-ui/diveplanner.h \
|
||||
qt-ui/downloadfromdivecomputer.h \
|
||||
qt-ui/globe.h \
|
||||
qt-ui/graphicsview-common.h \
|
||||
qt-ui/kmessagewidget.h \
|
||||
qt-ui/maintab.h \
|
||||
qt-ui/mainwindow.h \
|
||||
qt-ui/modeldelegates.h \
|
||||
qt-ui/models.h \
|
||||
qt-ui/plotareascene.h \
|
||||
qt-ui/preferences.h \
|
||||
qt-ui/printdialog.h \
|
||||
qt-ui/printlayout.h \
|
||||
qt-ui/printoptions.h \
|
||||
qt-ui/profilegraphics.h \
|
||||
qt-ui/simplewidgets.h \
|
||||
qt-ui/starwidget.h \
|
||||
qt-ui/subsurfacewebservices.h \
|
||||
qt-ui/tableview.h \
|
||||
satellite.h \
|
||||
sha1.h \
|
||||
statistics.h \
|
||||
subsurface-icon.h \
|
||||
subsurfacestartup.h \
|
||||
uemis.h \
|
||||
webservice.h
|
||||
|
||||
SOURCES = \
|
||||
deco.c \
|
||||
device.c \
|
||||
dive.c \
|
||||
divelist.c \
|
||||
equipment.c \
|
||||
file.c \
|
||||
gettextfromc.cpp \
|
||||
libdivecomputer.c \
|
||||
main.cpp \
|
||||
parse-xml.c \
|
||||
planner.c \
|
||||
profile.c \
|
||||
qt-gui.cpp \
|
||||
qthelper.cpp \
|
||||
qt-ui/about.cpp \
|
||||
qt-ui/completionmodels.cpp \
|
||||
qt-ui/divecomputermanagementdialog.cpp \
|
||||
qt-ui/divelistview.cpp \
|
||||
qt-ui/diveplanner.cpp \
|
||||
qt-ui/downloadfromdivecomputer.cpp \
|
||||
qt-ui/globe.cpp \
|
||||
qt-ui/graphicsview-common.cpp \
|
||||
qt-ui/kmessagewidget.cpp \
|
||||
qt-ui/maintab.cpp \
|
||||
qt-ui/mainwindow.cpp \
|
||||
qt-ui/modeldelegates.cpp \
|
||||
qt-ui/models.cpp \
|
||||
qt-ui/plotareascene.cpp \
|
||||
qt-ui/preferences.cpp \
|
||||
qt-ui/printdialog.cpp \
|
||||
qt-ui/printlayout.cpp \
|
||||
qt-ui/printoptions.cpp \
|
||||
qt-ui/profilegraphics.cpp \
|
||||
qt-ui/simplewidgets.cpp \
|
||||
qt-ui/starwidget.cpp \
|
||||
qt-ui/subsurfacewebservices.cpp \
|
||||
qt-ui/tableview.cpp \
|
||||
save-xml.c \
|
||||
sha1.c \
|
||||
statistics.c \
|
||||
subsurfacestartup.c \
|
||||
time.c \
|
||||
uemis.c \
|
||||
uemis-downloader.c
|
||||
|
||||
linux*: SOURCES += linux.c
|
||||
mac: SOURCES += macos.c
|
||||
win32: SOURCES += windows.c
|
||||
|
||||
FORMS = \
|
||||
qt-ui/about.ui \
|
||||
qt-ui/divecomputermanagementdialog.ui \
|
||||
qt-ui/diveplanner.ui \
|
||||
qt-ui/downloadfromdivecomputer.ui \
|
||||
qt-ui/maintab.ui \
|
||||
qt-ui/mainwindow.ui \
|
||||
qt-ui/preferences.ui \
|
||||
qt-ui/printoptions.ui \
|
||||
qt-ui/renumber.ui \
|
||||
qt-ui/subsurfacewebservices.ui \
|
||||
qt-ui/tableview.ui
|
||||
|
||||
RESOURCES = subsurface.qrc
|
||||
|
||||
TRANSLATIONS = subsurface_de.ts
|
||||
|
||||
doc.commands = $(CHK_DIR_EXISTS) Documentation || $(MKDIR) Documentation
|
||||
doc.commands += $$escape_expand(\\n\\t)$(MAKE) -C $$PWD/Documentation OUT=$$OUT_PWD/Documentation doc
|
||||
all.depends += doc
|
||||
QMAKE_EXTRA_TARGETS += doc all
|
||||
|
||||
include(subsurface-gen-version.pri)
|
Loading…
Reference in a new issue