diff options
author | Thiago Macieira <thiago@macieira.org> | 2013-10-06 18:41:37 -0700 |
---|---|---|
committer | Thiago Macieira <thiago@macieira.org> | 2013-10-08 23:29:43 -0700 |
commit | 9e069371c6ee3e2866296c43e15a2bfdd9064804 (patch) | |
tree | 963a34dbc3bd7803ca55960bc63a961bef07468e /subsurface-install.pri | |
parent | 1e7db5f77f01a0f091969c036b007165af35a509 (diff) | |
download | subsurface-9e069371c6ee3e2866296c43e15a2bfdd9064804.tar.gz |
Add qmake rules to install Subsurface
This is probably the most complex part of the new buildsystem. This
adds the following targets:
- Linux:
make install - installs to $(prefix) (default: /usr)
The install path can be changed during make install time.
- Windows:
make install - installs Subsurface and its dependencies to
packaging/windows.
- Mac:
make mac-deploy - populates Subsurface.app with the dependencies
make install - mac-deploy + install Subsurface.app to /Application
make mac-create-dmg - mac-deploy + creates Subsurface-$VERSION.dmg
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Diffstat (limited to 'subsurface-install.pri')
-rw-r--r-- | subsurface-install.pri | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/subsurface-install.pri b/subsurface-install.pri new file mode 100644 index 000000000..585481f62 --- /dev/null +++ b/subsurface-install.pri @@ -0,0 +1,102 @@ +marbledir.files = $$MARBLEDIR +xslt.files = $$XSLT_FILES +doc.files = $$DOC_FILES + +nltab = $$escape_expand(\\n\\t) + +mac { + # OS X bundling rules + # "make mac-deploy" deploys the external libs (Qt, libdivecomputer, libusb, etc.) into the bundle + # "make install" installs the bundle to /Application + # "make mac-create-dmg" creates Subsurface.dmg + + mac_bundle.path = /Application + mac_bundle.files = Subsurface.app + mac_bundle.CONFIG += no_check_exist directory + INSTALLS += mac_bundle + install.depends += mac-deploy + + datadir = Contents/Resources/share/subsurface + marbledir.path = Contents/Resources/data + xslt.path = $$datadir + doc.path = Contents/Resources/share/doc/subsurface + doc.files = $$files($$doc.files) + QMAKE_BUNDLE_DATA += marbledir xslt doc + + mac_deploy.target = mac-deploy + mac_deploy.commands += $$[QT_INSTALL_BINS]/macdeployqt $${TARGET}.app + !isEmpty(V):mac_deploy.commands += -verbose=1 + + mac_dmg.target = mac-create-dmg + mac_dmg.commands = $$mac_deploy.commands -dmg + mac_dmg.commands += $${nltab}$(MOVE) $${TARGET}.dmg $${TARGET}-$${VERSION}.dmg + QMAKE_EXTRA_TARGETS += mac_deploy mac_dmg +} else: win32 { + # Windows bundling rules + # We don't have a helpful tool like macdeployqt for Windows, so we hardcode + # which libs we need. + # The only target is "make install", which copies everything into packaging/windows + WINDOWSSTAGING = packaging/windows + + deploy.path = $$WINDOWSSTAGING + for(qtlib, $$list(QtCore QtGui QtNetwork QtWebKit QtSvg QtXml QtDeclarative)) { + CONFIG(debug, debug|release): deploy.files += $$[QT_INSTALL_BINS]/$${qtlib}d4.dll + else: deploy.files += $$[QT_INSTALL_BINS]/$${qtlib}4.dll + } + + deploy.files += $$marbledir.files $$xslt.files $$doc.files + target.path = $$WINDOWSSTAGING + INSTALLS += deploy target + + qt_conf.commands = echo \'[Paths]\' > $@ + qt_conf.commands += $${nltab}echo \'Prefix=.\' >> $@ + qt_conf.commands += $${nltab}echo \'Plugins=plugins\' >> $@ + qt_conf.target = $$PWD/packaging/windows/qt.conf + install.depends += qt_conf +} else { + # Linux install rules + # On Linux, we can count on packagers doing the right thing + # We just need to drop a few files here and there + + # This is a fake rule just to create some rules in the target file + nl = $$escape_expand(\\n) + dummy.target = dummy-only-for-var-expansion + dummy.commands = $${nl}prefix = /usr$${nl}\ +BINDIR = $(prefix)/bin$${nl}\ +DATADIR = $(prefix)/share$${nl}\ +DOCDIR = $(DATADIR)/doc/subsurface$${nl}\ +DESKTOPDIR = $(DATADIR)/applications$${nl}\ +ICONPATH = $(DATADIR)/icons/hicolor$${nl}\ +ICONDIR = $(ICONPATH)/scalable/apps$${nl}\ +MANDIR = $(DATADIR)/man/man1$${nl}\ +XSLTDIR = $(DATADIR)/subsurface + QMAKE_EXTRA_TARGETS += dummy + + WINDOWSSTAGING = ./packaging/windows + + target.path = /$(BINDIR) + target.files = $$TARGET + + desktop.path = /$(DESKTOPDIR) + desktop.files = $$DESKTOP_FILE + manpage.path = /$(MANDIR) + manpage.files = $$MANPAGE + + icon.path = /$(ICONDIR) + icon.files = $$ICON + + xslt.path = /$(XSLTDIR) + marbledir.path = /$(DATADIR)/subsurface + doc.path = /$(DOCDIR) + + # FIXME: Linguist translations + #l10n_install.commands = for LOC in $$files(share/locale/*/LC_MESSAGES); do \ + # $(INSTALL_PROGRAM) -d $(INSTALL_ROOT)/$(prefix)/$$LOC; \ + # $(INSTALL_FILE) $$LOC/subsurface.mo $(INSTALL_ROOT)/$(prefix)/$$LOC/subsurface.mo; \ + # done + #install.depends += l10n_install + + INSTALLS += target desktop icon manpage xslt doc marbledir + install.target = install +} +QMAKE_EXTRA_TARGETS += install $$install.depends |