Whamcloud - gitweb
Many files:
[tools/e2fsprogs.git] / debian / rules
1 #! /usr/bin/make -f
2 # -*- makefile -*-
3 #
4 # Invoke each target with `./debian/rules <target>'.  All targets should be
5 # invoked with the package root as the current directory.
6 #
7 # The `binary' target must be run as root, as it needs to install files with
8 # specific ownerships.
9
10 # be paranoid
11 export LC_ALL=C
12
13 export DH_COMPAT=2
14
15 DEB_BUILD_ARCH := $(shell dpkg --print-architecture)
16 DEB_BUILD_GNU_TYPE := $(shell ./config.guess)
17 ifndef DEB_HOST_ARCH
18   DEB_HOST_ARCH := ${DEB_BUILD_ARCH}
19 endif
20 DEB_HOST_GNU_CPU := $(patsubst hurd-%,%,$(DEB_HOST_ARCH))
21 ifeq ($(filter-out hurd-%,${DEB_HOST_ARCH}),)
22   DEB_HOST_GNU_SYSTEM := gnu
23 else
24 # FIXME: we won't always have only Hurd and Linux
25   DEB_HOST_GNU_SYSTEM := linux
26 endif
27 DEB_HOST_GNU_TYPE := ${DEB_HOST_GNU_CPU}-${DEB_HOST_GNU_SYSTEM}
28
29
30 # find the version for the main package, from changelog file
31 MAIN_VERSION = $(shell head -1 debian/changelog | cut '-d ' -f 2 | sed 's/[()]//g')
32 # find versions for libraries going into their own packages, from their Makefile.in's
33 COMERR_VERSION = $(shell grep ELF_VERSION lib/et/Makefile.in | cut '-d ' -f3)
34 COMERR_MAJOR = $(word 1,$(subst ., ,${COMERR_VERSION}))
35 SS_VERSION = $(shell grep ELF_VERSION lib/ss/Makefile.in | cut '-d ' -f3)
36 SS_MAJOR = $(word 1,$(subst ., ,${SS_VERSION}))
37 UUID_VERSION = $(shell grep ELF_VERSION lib/uuid/Makefile.in | cut '-d ' -f3)
38 # UUID_MAJOR = $(word 1,$(subst ., ,${UUID_VERSION}))
39
40 package=e2fsprogs
41
42 topdir=$(shell pwd)
43 debdir=${topdir}/debian
44 tmpdir=${debdir}/tmp
45 maindir=${debdir}/e2fsprogs
46 builddir=${debdir}/BUILD
47 # docdir=${maindir}/usr/share/doc/${package}
48 MANDIR=/usr/share/man
49 mandir=${tmpdir}${MANDIR}
50
51 SUBPACKAGES_DIRS = tmp e2fslibs-dev comerr-dev ss-dev
52
53 CCOPTS = -O2 -fsigned-char
54 LIBC-DEV = libc6-dev
55
56 INSTALL = install
57 INSTALL_PROGRAM = $(INSTALL) -p -o root -g root  -m  755
58
59 ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
60 CCOPTS += -g -O1
61 endif
62 ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
63 INSTALL_PROGRAM += -s
64 endif
65
66 ifeq (${DEB_HOST_ARCH},alpha)
67 CCOPTS += -DHAVE_NETINET_IN_H
68 LIBC-DEV = libc6.1-dev
69 else
70 CCOPTS += -D__NO_STRING_INLINES
71 endif
72
73 build: build-stamp
74 build-stamp: configure-stamp
75         dh_testdir
76         make -C ${builddir} all pic
77         ( cd ${builddir}/doc && \
78           texi2html -split_chapter ${topdir}/doc/libext2fs.texinfo )
79         ( cd ${builddir}/lib/et && make com_err.info && \
80           texi2html -split_chapter -expandinfo ${topdir}/lib/et/com_err.texinfo )
81         touch build-stamp
82
83 configure-stamp:
84         dh_testdir
85         mkdir -p ${builddir}
86 ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
87         cd ${builddir} && CFLAGS="${CFLAGS}" \
88                 ${topdir}/configure --with-ccopts="${CCOPTS}" \
89                 --enable-elf-shlibs --enable-dynamic-e2fsck \
90                 --enable-nls --enable-compression \
91                 --mandir=${MANDIR} --infodir=/usr/share/info
92 else
93         cd ${builddir} && CFLAGS="${CFLAGS}" CC="${DEB_HOST_GNU_TYPE}-gcc" \
94                 ${topdir}/configure --with-ccopts="${CCOPTS}" \
95                 --enable-elf-shlibs --enable-dynamic-e2fsck \
96                 --enable-nls --enable-compression \
97                 --mandir=${MANDIR} --infodir=/usr/share/info \
98                 --build=$(DEB_BUILD_GNU_TYPE) $(DEB_HOST_GNU_TYPE)
99 endif
100         touch configure-stamp
101
102 clean:
103         dh_testdir
104         rm -f build-stamp configure-stamp install
105         -make -C ${builddir} -i distclean
106         rm -rf ${builddir}
107         rm -f doc/libext2fs_*.html lib/et/com_err_*.html debian/*.substvars
108         dh_clean
109
110 install: DH_OPTIONS=
111 install: build
112         dh_testdir
113         dh_testroot
114         dh_clean -k
115         dh_installdirs
116
117         mkdir -p ${tmpdir}/sbin
118         make -C ${builddir} install DESTDIR=${tmpdir} INSTALL_PROGRAM="${INSTALL_PROGRAM}" LDCONFIG=true
119   # static libs, pic libs and .h files
120         make -C ${builddir} install-libs install-pic DESTDIR=${tmpdir} LDCONFIG=true
121         mv ${tmpdir}/lib/*.a ${tmpdir}/usr/lib
122
123   # statically-linked fsck
124         ${INSTALL_PROGRAM} ${builddir}/e2fsck/e2fsck.static ${tmpdir}/sbin
125         ln -s e2fsck.8.gz ${mandir}/man8/e2fsck.static.8.gz
126
127         dh_movefiles
128         test -z `find ${tmpdir} -type f`
129
130 binary-indep: 
131   # no arch-independant debs.
132
133 binary-arch: DH_OPTIONS= -a
134 binary-arch: install
135         dh_testdir
136         dh_testroot
137
138   # symlinks to prepare dh_installdocs run
139         mkdir -p ${debdir}/e2fsck-static/usr/share/doc/
140         ln -sf e2fsprogs ${debdir}/e2fsck-static/usr/share/doc/e2fsck-static
141
142         mkdir -p ${debdir}/e2fslibs-pic/usr/share/doc/
143         ln -sf e2fsprogs ${debdir}/e2fslibs-pic/usr/share/doc/e2fslibs-pic
144
145         mkdir -p ${debdir}/e2fslibs-dev/usr/share/doc/e2fsprogs
146         ln -sf e2fsprogs ${debdir}/e2fslibs-dev/usr/share/doc/e2fslibs-dev
147
148         mkdir -p ${debdir}/uuid-dev/usr/share/doc/e2fsprogs
149         ln -sf e2fsprogs ${debdir}/uuid-dev/usr/share/doc/uuid-dev
150
151   # comerr and ss have their own copyright notices
152         mkdir -p ${maindir}/usr/share/doc/libcomerr${COMERR_MAJOR}
153         mkdir -p ${debdir}/comerr-dev/usr/share/doc/libcomerr${COMERR_MAJOR}
154         ln -sf libcomerr${COMERR_MAJOR} ${debdir}/comerr-dev/usr/share/doc/comerr-dev
155
156         mkdir -p ${maindir}/usr/share/doc/libss${SS_MAJOR}
157         mkdir -p ${debdir}/ss-dev/usr/share/doc/libss${SS_MAJOR}
158         ln -sf libss${SS_MAJOR} ${debdir}/ss-dev/usr/share/doc/ss-dev
159
160         for i in libcomerr${COMERR_MAJOR} libss${SS_MAJOR}; do \
161           install -m 644 debian/$$i.copyright ${maindir}/usr/share/doc/$$i/copyright ; \
162         done
163
164         dh_installdocs
165
166   # HTML docs
167         install -d ${debdir}/e2fslibs-dev/usr/share/doc/e2fslibs-dev/html-info/
168         install -p ${builddir}/doc/libext2fs_*.html \
169            ${debdir}/e2fslibs-dev/usr/share/doc/e2fslibs-dev/html-info/
170         install -d ${debdir}/comerr-dev/usr/share/doc/comerr-dev/html-info/
171         install -p ${builddir}/lib/et/com_err_*.html \
172            ${debdir}/comerr-dev/usr/share/doc/comerr-dev/html-info/
173
174   # texinfo docs
175         install -p ${topdir}/doc/libext2fs.texinfo \
176            ${debdir}/e2fslibs-dev/usr/share/doc/e2fslibs-dev/libext2fs.texi
177         install -p ${topdir}/lib/et/com_err.texinfo \
178            ${debdir}/comerr-dev/usr/share/doc/libcomerr${COMERR_MAJOR}/com_err.texi
179
180         dh_installexamples
181         dh_installman
182
183 #       dh_installinfo -pcomerr-dev ${builddir}/lib/et/com_err.info
184         dh_installinfo -pe2fslibs-dev ${builddir}/doc/libext2fs.info
185
186         dh_undocumented
187
188         DH_OPTIONS= dh_installchangelogs -pe2fsprogs ChangeLog
189
190         for i in libcomerr${COMERR_MAJOR} libss${SS_MAJOR} ; do \
191           mkdir -p ${maindir}/usr/share/doc/$$i ; \
192           ln -s ../e2fsprogs/changelog.Debian.gz ${maindir}/usr/share/doc/$$i/ ; \
193           ln -s ../e2fsprogs/changelog.gz ${maindir}/usr/share/doc/$$i/ ; \
194         done
195
196         dh_strip
197
198         dh_link -pe2fsprogs \
199           /usr/share/man/man8/e2fsck.8.gz /usr/share/man/man8/fsck.ext2.8.gz \
200           /usr/share/man/man8/mke2fs.8.gz /usr/share/man/man8/mkfs.ext2.8.gz
201         dh_link -puuid-dev \
202           /usr/share/man/man3/uuid_generate.3.gz /usr/share/man/man3/uuid_generate_random.3.gz \
203           /usr/share/man/man3/uuid_generate.3.gz /usr/share/man/man3/uuid_generate_time.3.gz
204
205         dh_compress
206         dh_fixperms
207
208         echo "libcdev:Depends=${LIBC-DEV}" > debian/comerr-dev.substvars
209         echo "libcdev:Depends=${LIBC-DEV}" > debian/ss-dev.substvars
210         echo "libcdev:Depends=${LIBC-DEV}" > debian/uuid-dev.substvars
211         echo "libcdev:Depends=${LIBC-DEV}" > debian/e2fslibs-dev.substvars
212
213 # We do this one by hand
214 #       dh_makeshlibs
215
216         dh_installdeb
217         dh_shlibdeps -l${builddir}/lib
218
219         dh_gencontrol -Ncomerr-dev -Nss-dev -Nuuid-dev
220         DH_OPTIONS= dh_gencontrol -pcomerr-dev \
221           -u '-v${COMERR_VERSION}-${MAIN_VERSION}'
222         DH_OPTIONS= dh_gencontrol -pss-dev \
223           -u '-v${SS_VERSION}-${MAIN_VERSION}'
224         DH_OPTIONS= dh_gencontrol -puuid-dev \
225           -u '-v${UUID_VERSION}-${MAIN_VERSION}'
226
227         dh_md5sums
228         dh_builddeb
229
230 binary: binary-indep binary-arch
231
232 .PHONY: binary binary-arch binary-indep clean checkroot