rules revision 8dae68786113603556a96d329c751a3367849f70
cc5a4a08dc9783fcbc52ce86f11e01c281a43810minfrin# Copyright (C) 2006-2012 Oracle Corporation
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener# This file is part of VirtualBox Open Source Edition (OSE), as
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener# available from http://www.virtualbox.org. This file is free software;
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener# you can redistribute it and/or modify it under the terms of the GNU
cb666b29f81df1d11d65002250153353568021fccovener# General Public License (GPL) as published by the Free Software
cb666b29f81df1d11d65002250153353568021fccovener# Foundation, in version 2 as it comes in the "COPYING" file of the
cb666b29f81df1d11d65002250153353568021fccovener# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
f58fcd9d79be417ef351cac4e4c0ab264c5521e0trawick# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
f58fcd9d79be417ef351cac4e4c0ab264c5521e0trawick#export DH_VERBOSE=1
6a80c3c6f4b8ea7ba5e89402b8b779b09ce020e0covener# possible overrides:
45dffe6c346dd73571ccaead10295fc7d53b59a6covener# OSE=1 force VBOX_OSE
45dffe6c346dd73571ccaead10295fc7d53b59a6covener# NOPARALLEL=1 compile with -j1
45dffe6c346dd73571ccaead10295fc7d53b59a6covener# LINUX=<dir> compile vboxdrv against Linux found in <dir>
75a230a728338d84dcfe81edd375352f34de22d0covener# VERBOSE=1 verbose build
75a230a728338d84dcfe81edd375352f34de22d0covener# DEBUG=1 debug build
75a230a728338d84dcfe81edd375352f34de22d0covener# NOSUBVER=1 disable generation of the sub-version field (which is
3694b0116c5729804ed6a5ce119bd8efda116c7fcovener# either the subversion rev [if available] or the build date)
3694b0116c5729804ed6a5ce119bd8efda116c7fcovener# NODOCS=1 don't build docs, use precompiled UserManual.pdf and
3694b0116c5729804ed6a5ce119bd8efda116c7fcovener# NOMODS=1 don't build any module
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covener# NOQT=1 don't build the Qt GUI
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covener# EFI=1 include the EFI binary from prebuild
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covener# HEADLESS=1 build the headless version
63a5ea80bddcc84a462e40f402b4f330e0e05411covener# VNC=1 build VNC code
63a5ea80bddcc84a462e40f402b4f330e0e05411covener# NOWEBSVC=1 don't build the webservice API, default for OSE
63a5ea80bddcc84a462e40f402b4f330e0e05411covener# STAGEDISO=<path> don't build the VBoxAdditions, use the precompiled .iso
63a5ea80bddcc84a462e40f402b4f330e0e05411covener# PKGDIR=<path> where to store the final package(s)
986f3ea2c314d4d4b3b937149853a0f23f6119aaminfrin# BLEEDING_EDGE=xyz
cc5a4a08dc9783fcbc52ce86f11e01c281a43810minfrinose := $(if $(OSE),1,$(if $(wildcard $(vboxroot)/src/VBox/RDP/server),,1))
1de839c61281d58dc75715c1ae06b4b00764c4efjorton ifeq ($(wildcard $(STAGEDISO)/VBoxGuestAdditions.iso),)
1de839c61281d58dc75715c1ae06b4b00764c4efjorton $(error STAGEDISO='$(STAGEDISO)/VBoxGuestAdditions.iso' not found)
2e1a0fb12bdf1c20064ffe900a8f44979ec946fcminfrindebrel := $(if $(shell which lsb_release),_$(shell lsb_release -si)_$(shell lsb_release -sc),unknown)
441d366a564bc6faa7c1eaffbacf8c4f37862199minfrin# shipping Linux kernel modules with bleeding-edge releases doesn't make sense
441d366a564bc6faa7c1eaffbacf8c4f37862199minfrininstmod := $(if $(filter _Ubuntu_lucid _Ubuntu_maverick _Ubuntu_natty _Ubuntu_oneiric _Debian_sid,$(debrel)),,1)
441d366a564bc6faa7c1eaffbacf8c4f37862199minfrin# Location of custom built Qt libraries (see below)
0b9de55d178312ec929dbe417dd61199b269991djailletc $(if $(filter _Ubuntu_hardy _Debian_lenny,$(debrel)),--with-qt4-dir=$(qtstdc6)) \
74e7f6c55fd67b10cb400b3f6d1dc718a303d944minfrin $(if $(ose),--ose,) $(if $(LINUX),--with-linux=$(LINUX),) \
2ae6440d9c0beacb1b2a9726d80b755a8a4a851bjailletcbld_flags := AUTOCFG=$(current)/debian/AutoConfig.kmk \
a511a29faf2ff7ead3b67680154a624effb31aafminfrin VBOX_PATH_PACKAGE_DOCS="\"/usr/share/doc/$(verpkg)\"" \
a7584fbbf39ae6a78586ed038d80c31b14ce5461minfrin $(if $(VERBOSE),--print-directory KBUILD_VERBOSE=2,--no-print-directory) \
a7584fbbf39ae6a78586ed038d80c31b14ce5461minfrin $(if $(BLEEDING_EDGE),VBOX_BLEEDING_EDGE=$(BLEEDING_EDGE),) \
a7584fbbf39ae6a78586ed038d80c31b14ce5461minfrin $(if $(filter _Ubuntu_hardy,$(debrel)),,VBOX_WITH_SYSFS_BY_DEFAULT=1)
4860eae0821bbdf3e0da78be7b4057ebed5d86e4minfrin cd $(vboxroot) && ./configure --odir=$(current)/debian $(cfg_flags)
2344a0c1817b88b6df61fc4ed0c6af66bb93ee6bjim . debian/env.sh && kmk -C $(vboxroot) $(bld_flags) $(if $(NOPARALLEL),-j1,) all
2344a0c1817b88b6df61fc4ed0c6af66bb93ee6bjim $(if $(NODOCS),cp $(vboxroot)/prebuild/UserManual*.pdf $(builddir)/bin,)
2344a0c1817b88b6df61fc4ed0c6af66bb93ee6bjim $(if $(NODOCS),cp $(vboxroot)/prebuild/VirtualBox*.chm $(builddir)/bin,)
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin $(if $(EFI),cp $(vboxroot)/prebuild/VBoxEFI32.fd $(builddir)/bin,)
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin $(if $(EFI),cp $(vboxroot)/prebuild/VBoxEFI64.fd $(builddir)/bin,)
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin $(if $(STAGEDISO),cp $(STAGEDISO)/VBoxGuestAdditions.iso $(builddir)/bin/additions,)
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin . debian/env.sh && kmk -C $(vboxroot) $(bld_flags) \
bbb08feeeef547b0908b16df6cbbb65da656b86fminfrin VBOX_LNX_ADD_ARCHIVE.x86=$(builddir)/bin/additions/VBoxGuestAdditions-x86-r$(svnrev).tar.bz2 \
bbb08feeeef547b0908b16df6cbbb65da656b86fminfrin VBOX_LNX_ADD_ARCHIVE.amd64=$(builddir)/bin/additions/VBoxGuestAdditions-amd64-r$(svnrev).tar.bz2 \
bbb08feeeef547b0908b16df6cbbb65da656b86fminfrin VBOX_PATH_ADDITIONS.linux.x86=$(builddir)/bin/additions \
eee20257a5ee9228f4aecdf3d3ca68fd0683ff07minfrin VBOX_PATH_ADDITIONS.linux.amd64=$(builddir)/bin/additions \
eee20257a5ee9228f4aecdf3d3ca68fd0683ff07minfrin# Build modules for every kernel we find in /lib/modules/*
2d2c5cedd0559093c6e88bd92702e369ef949336minfrin make -C $(builddir)/bin/src/vboxdrv KERN_DIR=$$d/build MODULE_DIR=$$d clean && \
2d2c5cedd0559093c6e88bd92702e369ef949336minfrin make -j4 -C $(builddir)/bin/src/vboxdrv KBUILD_VERBOSE= KERN_DIR=$$d/build MODULE_DIR=$$d all \
2d2c5cedd0559093c6e88bd92702e369ef949336minfrin $(builddir)/bin/src/vboxdrv/vboxdrv.ko $(moddir)/$$(basename $$d)/vboxdrv.ko); \
2b82678319a66fd9caad8827ca9b38d2412a5abdminfrin make -C $(builddir)/bin/src/vboxnetflt KERN_DIR=$$d/build MODULE_DIR=$$d clean && \
2b82678319a66fd9caad8827ca9b38d2412a5abdminfrin (cp $(builddir)/bin/src/vboxdrv/Module.symvers $(builddir)/bin/src/vboxnetflt || true) && \
c0da461d68518e8f89f4070a709ba1e56381247cminfrin make -j4 -C $(builddir)/bin/src/vboxnetflt KBUILD_VERBOSE= KERN_DIR=$$d/build MODULE_DIR=$$d all \
c0da461d68518e8f89f4070a709ba1e56381247cminfrin $(builddir)/bin/src/vboxnetflt/vboxnetflt.ko $(moddir)/$$(basename $$d)/vboxnetflt.ko); \
797fb211307298a8a6984c0edc0d8972b35eeac1minfrin make -C $(builddir)/bin/src/vboxnetadp KERN_DIR=$$d/build MODULE_DIR=$$d clean && \
797fb211307298a8a6984c0edc0d8972b35eeac1minfrin (cp $(builddir)/bin/src/vboxdrv/Module.symvers $(builddir)/bin/src/vboxnetadp || true) && \
797fb211307298a8a6984c0edc0d8972b35eeac1minfrin make -j4 -C $(builddir)/bin/src/vboxnetadp KBUILD_VERBOSE= KERN_DIR=$$d/build MODULE_DIR=$$d all \
f27c90ecdefe634bd5f9c529d8658d3a3b441303minfrin $(builddir)/bin/src/vboxnetadp/vboxnetadp.ko $(moddir)/$$(basename $$d)/vboxnetadp.ko); \
f27c90ecdefe634bd5f9c529d8658d3a3b441303minfrin make -C $(builddir)/bin/src/vboxpci KERN_DIR=$$d/build MODULE_DIR=$$d clean && \
f27c90ecdefe634bd5f9c529d8658d3a3b441303minfrin (cp $(builddir)/bin/src/vboxdrv/Module.symvers $(builddir)/bin/src/vboxpci || true) && \
80cabec6752622e0db5421af61502bfda95715eaminfrin make -j4 -C $(builddir)/bin/src/vboxpci KBUILD_VERBOSE= KERN_DIR=$$d/build MODULE_DIR=$$d all \
80cabec6752622e0db5421af61502bfda95715eaminfrin $(builddir)/bin/src/vboxpci/vboxpci.ko $(moddir)/$$(basename $$d)/vboxpci.ko); \
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin rm -f debian/vboxballoonctrl-service.init debian/vboxautostart-service.init debian/vboxweb-service.init
40d570cf1420f497bcac59045d4ce477f0b5d891minfrin rm -f debian/AutoConfig.kmk debian/configure.log debian/env.sh
40d570cf1420f497bcac59045d4ce477f0b5d891minfrin rm -f debian/modules-stamp debian/build-stamp debian/configure-stamp
40d570cf1420f497bcac59045d4ce477f0b5d891minfrin rm -f debian/virtualbox-*.substvars debian/virtualbox*.debhelper
a4273e3e513ce8f5e1311c320cbd334cc382950eminfrin# Build architecture-dependent files here.
a4273e3e513ce8f5e1311c320cbd334cc382950eminfrinbinary binary-arch binary-indep: build $(if $(NOMODS),,modules)
1aac1c71105133d669960501bdf2274e63561054minfrin tar -xjC $(prefix)/opt -f $(builddir)/bin/VirtualBox.tar.bz2
1aac1c71105133d669960501bdf2274e63561054minfrin install -d -g 0 -o 0 $(prefix)/usr/share/applications
2c487ac43b583db869e743772a7a10b278aa2bcfminfrin install -d -g 0 -o 0 $(prefix)/usr/share/doc/$(verpkg)
92108a6c4fd7ca6e9acc94d2485920436763e491sf install -d -g 0 -o 0 $(prefix)/usr/share/icons/hicolor/$$i/apps; \
92108a6c4fd7ca6e9acc94d2485920436763e491sf mv $$i/virtualbox.png $(prefix)/usr/share/icons/hicolor/$$i/apps; \
684e0cfc200f66287a93bbd1708d1dd8a92a7eefcovener install -d -g 0 -o 0 $(prefix)/usr/share/icons/hicolor/$$i/mimetypes; \
684e0cfc200f66287a93bbd1708d1dd8a92a7eefcovener mv $$i/* $(prefix)/usr/share/icons/hicolor/$$i/mimetypes || true; \
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq install -d -g 0 -o 0 $(prefix)/usr/lib/$(package)/ExtensionPacks
26c5829347f6a355c00f1ba0301d575056b69536niq mv $(archdir)/virtualbox.xml debian/$(verpkg).sharedmimeinfo
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq install -d -g 0 -o 0 $(prefix)/usr/share/lintian/overrides
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq -e 's|%VERPKG%|$(verpkg)|g' \
413ee814748f37be168ff12407fa6dba0ceeabe6trawick mv $(archdir)/VBoxEFI64.fd $(prefix)/usr/lib/$(package)
7705103518c61f7cdcd4041fe871cb45114f31a5rpluem mv $(archdir)/*.rel $(prefix)/usr/lib/$(package) || true
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf mv $(archdir)/components $(prefix)/usr/lib/$(package)/components
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sf mv $(archdir)/*.so.4 $(prefix)/usr/lib/$(package) || true
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sf $(if $(NOQT),,mv $(archdir)/VBoxTestOGL $(prefix)/usr/lib/$(package))
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sf $(if $(NOQT),,mv $(archdir)/nls $(prefix)/usr/share/$(package))
d58a822aff1dfda25384d3d009f88f1883c95436kbrand mv $(archdir)/vboxshell.py $(prefix)/usr/lib/$(package)
d58a822aff1dfda25384d3d009f88f1883c95436kbrand install -D -g 0 -o 0 -m 644 $(vboxroot)/src/VBox/Installer/linux/debian/VBox.sh $(prefix)/usr/bin/VBox
e02ff627c1e63137247e20493f6ef44b3bb1a095sf mv $(archdir)/VBoxSysInfo.sh $(prefix)/usr/share/$(package)
e02ff627c1e63137247e20493f6ef44b3bb1a095sf mv $(archdir)/VBoxCreateUSBNode.sh $(prefix)/usr/share/$(package)
bd3f5647b96d378d9c75c954e3f13582af32c643sf $(if $(VNC),mv $(archdir)/ExtensionPacks/VNC $(prefix)/usr/lib/$(package)/ExtensionPacks,)
bd3f5647b96d378d9c75c954e3f13582af32c643sf if [ -f $$d/vboxdrv.ko -a -f $$d/vboxnetflt.ko -a -f $$d/vboxnetadp.ko -a -f $$d/vboxpci.ko ]; then \
bd3f5647b96d378d9c75c954e3f13582af32c643sf install -D -g 0 -o 0 -m 0644 \
2a7beea91d46beb41f043a84eaad060047ee04aafabien $$d/vboxdrv.ko $(prefix)/lib/modules/$$(basename $$d)/misc/vboxdrv.ko; \
2a7beea91d46beb41f043a84eaad060047ee04aafabien install -D -g 0 -o 0 -m 0644 \
2a7beea91d46beb41f043a84eaad060047ee04aafabien $$d/vboxnetflt.ko $(prefix)/lib/modules/$$(basename $$d)/misc/vboxnetflt.ko; \
2a7beea91d46beb41f043a84eaad060047ee04aafabien install -D -g 0 -o 0 -m 0644 \
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf $$d/vboxnetadp.ko $(prefix)/lib/modules/$$(basename $$d)/misc/vboxnetadp.ko; \
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf install -D -g 0 -o 0 -m 0644 \
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf $$d/vboxpci.ko $(prefix)/lib/modules/$$(basename $$d)/misc/vboxpci.ko; \
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf $(if $(NOQT),,mv $(archdir)/kchmviewer $(prefix)/usr/lib/$(package))
132ee6ac1c26d6e8953836316ba50734eefab47bsf rm $(addprefix $(archdir)/,UserManual*.pdf VirtualBox*.chm \
fc1459657a1fde206a847f9028930725d715f8b4trawick for i in rdesktop-vrdp.tar.gz additions/VBoxGuestAdditions.iso; do \
fc1459657a1fde206a847f9028930725d715f8b4trawick mv $(archdir)/$$i $(prefix)/usr/share/$(package); done
fc1459657a1fde206a847f9028930725d715f8b4trawick $(if $(HEADLESS),,mv $(archdir)/rdesktop-vrdp $(prefix)/usr/bin)
85eacfc96a04547ef25aabbc06440039715084c2jorton $(if $(HEADLESS),,mv $(archdir)/rdesktop-vrdp-keymaps $(prefix)/usr/share/$(package))
85eacfc96a04547ef25aabbc06440039715084c2jorton if [ -d $(archdir)/accessible ]; then mv $(archdir)/accessible $(prefix)/usr/lib/virtualbox; fi
d776b0a2d2889ce1d13494873368f34327a2e1bbtrawick mv $(archdir)/$$i $(prefix)/usr/share/$(package); done
10961a2f60207cb873d889bb28b1f0ef707a4311humbedooh $(if $(NOWEBSVC),,usr/bin/VBox usr/bin/vboxwebsrv) \
10961a2f60207cb873d889bb28b1f0ef707a4311humbedooh usr/share/virtualbox/src/vboxhost usr/src/vboxhost-$(ver)
0448378b899e8df0c060360f17c0af692adf17bchumbedooh -e 's|%NOLSB%||g' \
60a765cccbd3f3b5997b65b0034220c79f78369etrawick -e 's|%DEBIAN%|yes|g' \
60a765cccbd3f3b5997b65b0034220c79f78369etrawick -e 's|%PACKAGE%|virtualbox|g' \
e7ca863b04ee2a7aea7738cadbf51ce5e6c5245dhumbedooh -e "s|%GROUP%|$(if $(VBOX_WITHOUT_HARDENING),vboxusers,root)|g" \
e7ca863b04ee2a7aea7738cadbf51ce5e6c5245dhumbedooh $(vboxroot)/src/VBox/Installer/linux/vboxdrv.sh.in > debian/vboxdrv.init
e7ca863b04ee2a7aea7738cadbf51ce5e6c5245dhumbedooh cp $(vboxroot)/src/VBox/Installer/linux/vboxballoonctrl-service.sh debian/vboxballoonctrl-service.init
91654e263480f0fdc2a03d782ff23f8dad07cf79humbedooh dh_installinit --name=vboxballoonctrl-service --noscripts
91814c869ca39ce45dfe147307d2a831cac6ecbehumbedooh cp $(vboxroot)/src/VBox/Installer/linux/vboxautostart-service.sh debian/vboxautostart-service.init
91654e263480f0fdc2a03d782ff23f8dad07cf79humbedooh dh_installinit --name=vboxautostart-service --noscripts
79c5787b92ac5f0e1cc82393816c77a006399316trawick cp $(vboxroot)/src/VBox/Installer/linux/vboxweb-service.sh debian/vboxweb-service.init
79c5787b92ac5f0e1cc82393816c77a006399316trawick -e '/#include installer-common.sh/ {' \
79c5787b92ac5f0e1cc82393816c77a006399316trawick -e "r $(vboxroot)/src/VBox/Installer/linux/installer-common.sh" \
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jorton dh_strip --keep-debug --exclude=libQtCoreVBox.so.4 --exclude=libQtGuiVBox.so.4 --exclude=libQtNetworkVBox.so.4 --exclude=libQtOpenGLVBox.so.4 --exclude=libqtaccessiblewidgets.so
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jorton # manually strip our R0/GC modules, dh_strip cannot handle them
53e9b27aba029b18be814df40bcf6f0428771d1efuankg $(prefix)/usr/lib/$(package)/*.r0 $(prefix)/usr/lib/$(package)/*.gc; do \
53e9b27aba029b18be814df40bcf6f0428771d1efuankg $(prefix)/usr/lib/debug/usr/lib/$(package)/`basename $$f`; \
6bb524f1895f30265a1431afc460977d391cb36bsf objcopy --add-gnu-debuglink=$(prefix)/usr/lib/debug/usr/lib/$(package)/`basename $$f` $$f; \
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrin mv $(current)/debian/$(verpkg)/usr/lib/debug $(current)/debian/$(verpkg)-dbg/usr/lib
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung LD_LIBRARY_PATH=$(prefix)/usr/lib/virtualbox dh_shlibdeps