summaryrefslogtreecommitdiffstats
path: root/subsurface-install.pri
blob: 9d674153f8278160370cab25ed130dbd30f1670c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
marbledir.files = $$MARBLEDIR
xslt.files = $$XSLT_FILES
doc.files = $$DOC_FILES
translation.files = $$replace(TRANSLATIONS, .ts, .qm)

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 /Applications
    #  "make mac-create-dmg" creates Subsurface.dmg

    mac_bundle.path = /Applications
    mac_bundle.files = Subsurface.app
    mac_bundle.CONFIG += no_check_exist directory
    INSTALLS += mac_bundle
    install.depends += mac-deploy

    datadir = Contents/Resources/share
    marbledir.path = Contents/Resources/data
    xslt.path = $$datadir
    doc.path = $$datadir/doc
    translation.path = Contents/Resources/translations
    doc.files = $$files($$doc.files)
    QMAKE_BUNDLE_DATA += marbledir xslt doc translation

    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
    deploy.files += $$xslt.files $$doc.files
    target.path = $$WINDOWSSTAGING
    marbledir.path = $$WINDOWSSTAGING/data
    INSTALLS += deploy marbledir target

    qt_conf.commands = echo \'[Paths]\' > $@
    qt_conf.commands += $${nltab}echo \'Prefix=.\' >> $@
    qt_conf.commands += $${nltab}echo \'Plugins=.\' >> $@
    qt_conf.target = $$PWD/packaging/windows/qt.conf
    install.depends += qt_conf

    !win32-msvc* {
        #!equals($$QMAKE_HOST.os, "Windows"): dlls.commands += OBJDUMP=`$$QMAKE_CC -dumpmachine`-objdump
        dlls.commands += PATH=\$\$PATH:`$$QMAKE_CC -print-search-dirs | sed -nE \'/^libraries: =/{s///;s,/lib/?(:|\$\$),/bin\\1,g;p;q;}\'`
        dlls.commands += perl $$PWD/scripts/win-ldd.pl \$^

        for(plugin, $$list($$DEPLOYMENT_PLUGIN)) {
            CONFIG(debug, debug|release): dlls.depends += $$[QT_INSTALL_PLUGINS]/$${plugin}d4.dll
            else: dlls.depends += $$[QT_INSTALL_PLUGINS]/$${plugin}4.dll
        }

        dlls.commands += $$LIBS
        dlls.commands += | while read name; do $(INSTALL_FILE) \$\$name $$PWD/$$WINDOWSSTAGING; done
        dlls.depends += $(DESTDIR_TARGET)
        install.depends += dlls
    }
} 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
}
!isEmpty(TRANSLATIONS) {
	isEmpty(QMAKE_LRELEASE) {
		win32: QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\lrelease.exe
		else: QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
	}
	isEmpty(TS_DIR):TS_DIR = translations
	TSQM.input = TRANSLATIONS
	TSQM.output = $$TS_DIR/${QMAKE_FILE_BASE}.qm
	TSQM.CONFIG += no_link target_predeps
	TSQM.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN} -qm $$TS_DIR/${QMAKE_FILE_BASE}.qm
	QMAKE_EXTRA_COMPILERS += TSQM
}
QMAKE_EXTRA_TARGETS += install $$install.depends