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 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290
|
#!/usr/bin/make -f
# -*- makefile -*-
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1)))
DPKG_VARS := $(shell dpkg-architecture)
DEB_HOST_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH)
DEB_HOST_GNU_CPU ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU)
DEB_HOST_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE)
DEB_HOST_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH)
CC = $(DEB_HOST_GNU_TYPE)-gcc
CXX = $(DEB_HOST_GNU_TYPE)-g++
distribution := $(shell lsb_release -is)
distrelease := $(shell lsb_release -cs)
# On non official archives, "lsb_release -cs" default to "n/a". Assume
# sid in that case
ifeq ($(distrelease),n/a)
distrelease := sid
endif
ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
with_check = yes
endif
ifneq (,$(filter $(DEB_HOST_ARCH), i386 mips mipsel powerpc s390 sparc))
multiarch += biarch64
m64 = -m64
endif
ifneq (,$(filter $(DEB_HOST_ARCH), amd64 kfreebsd-amd64 ppc64))
multiarch += biarch32
m32 = -m32
endif
ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel))
multiarch += biarchn32
m64 = -mabi=64
mn32 = -mabi=n32
abin32 = -gnuabin32
abi64 = -gnuabi64
endif
ifeq (,$(filter $(distrelease),lenny etch squeeze sid dapper hardy jaunty karmic lucid))
biarch_map := i686=x86_64 powerpc=powerpc64 sparc=sparc64 s390=s390x \
x86_64=i686 powerpc64=powerpc mips=mips64 mipsel=mips64el
else
biarch_map := i486=x86_64 powerpc=powerpc64 sparc=sparc64 s390=s390x \
x86_64=i486 powerpc64=powerpc mips=mips64 mipsel=mips64el
endif
biarch_cpu := $(patsubst $(DEB_HOST_GNU_CPU)=%,%, \
$(filter $(DEB_HOST_GNU_CPU)=%,$(biarch_map)))
biarch_gnu_type := $(subst $(DEB_HOST_GNU_CPU),$(biarch_cpu),$(DEB_HOST_GNU_TYPE))
major=5
p=libffi$(major)
configure: stamp-configure $(foreach a, $(multiarch), stamp-configure-$(a))
stamp-configure:
dh_testdir
rm -rf build
mkdir -p build
cd build && ../configure \
--host=$(DEB_HOST_GNU_TYPE) \
--build=$(DEB_BUILD_GNU_TYPE) \
--prefix=/usr \
--mandir=\$${prefix}/share/man \
--infodir=\$${prefix}/share/info \
--libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \
CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CCASFLAGS="$(CFLAGS) -Wa,--gdwarf2" LDFLAGS="-Wl,-z,defs $(LDFLAGS)"
touch $@
stamp-configure-biarch32:
dh_testdir
rm -rf build32
mkdir -p build32
cd build32 && ../configure \
--host=$(biarch_gnu_type) \
--build=$(DEB_BUILD_GNU_TYPE) \
--prefix=/usr \
--mandir=\$${prefix}/share/man \
--infodir=\$${prefix}/share/info \
--includedir=\$${prefix}/include/$(biarch_gnu_type) \
--libdir=\$${prefix}/lib32 \
CC="$(CC) $(m32)" CXX="$(CXX) $(m32)" CFLAGS="$(CFLAGS)" CCASFLAGS="$(CFLAGS) -Wa,--gdwarf2" LDFLAGS="-Wl,-z,defs $(LDFLAGS)"
touch $@
stamp-configure-biarch64:
dh_testdir
rm -rf build64
mkdir -p build64
cd build64 && ../configure \
--host=$(biarch_gnu_type) \
--build=$(DEB_BUILD_GNU_TYPE) \
--prefix=/usr \
--mandir=\$${prefix}/share/man \
--infodir=\$${prefix}/share/info \
--includedir=\$${prefix}/include/$(biarch_gnu_type)$(abi64) \
--libdir=\$${prefix}/lib64 \
CC="$(CC) $(m64)" CXX="$(CXX) $(m64)" CFLAGS="$(CFLAGS)" CCASFLAGS="$(CFLAGS) -Wa,--gdwarf2" LDFLAGS="-Wl,-z,defs $(LDFLAGS)"
touch $@
stamp-configure-biarchn32:
dh_testdir
rm -rf buildn32
mkdir -p buildn32
cd buildn32 && ../configure \
--host=$(biarch_gnu_type) \
--build=$(DEB_BUILD_GNU_TYPE) \
--prefix=/usr \
--mandir=\$${prefix}/share/man \
--infodir=\$${prefix}/share/info \
--includedir=\$${prefix}/include/$(biarch_gnu_type)$(abin32) \
--libdir=\$${prefix}/lib32 \
CC="$(CC) $(mn32)" CXX="$(CXX) $(mn32)" CFLAGS="$(CFLAGS)" CCASFLAGS="$(CFLAGS) -Wa,--gdwarf2" LDFLAGS="-Wl,-z,defs $(LDFLAGS)"
touch $@
build: stamp-build \
$(foreach arch, $(multiarch), stamp-build-$(arch)) \
$(if $(filter yes, $(with_check)), stamp-check $(foreach a, $(multiarch), stamp-check-$(a)))
stamp-build: stamp-configure
dh_testdir
$(MAKE) -C build
$(MAKE) -C build html
touch $@
stamp-build-biarch32: stamp-configure-biarch32
dh_testdir
$(MAKE) -C build32
touch $@
stamp-build-biarch64: stamp-configure-biarch64
dh_testdir
$(MAKE) -C build64
touch $@
stamp-build-biarchn32: stamp-configure-biarchn32
dh_testdir
$(MAKE) -C buildn32
touch $@
check: stamp-check $(foreach a, $(multiarch), stamp-check-$(a))
stamp-check: stamp-build
dh_testdir
-$(MAKE) -C build check 2>&1 | tee build/check.log
touch $@
stamp-check-biarch32: stamp-build-biarch32
dh_testdir
mkdir -p build32/bin
echo '/usr/bin/gcc $(m32) "$$@"' > build32/bin/gcc
chmod 755 build32/bin/gcc
-PATH=$(CURDIR)/build32/bin:$$PATH $(MAKE) -C build32 check CC="gcc $(m32)" 2>&1 | tee build32/check.log
touch $@
stamp-check-biarch64: stamp-build-biarch64
dh_testdir
mkdir -p build64/bin
echo '/usr/bin/gcc $(m64) "$$@"' > build64/bin/gcc
chmod 755 build64/bin/gcc
ifneq (,$(filter $(DEB_HOST_ARCH), powerpc))
# work around dejagnu configury; on 64bit powerpc -m64 must be in CFLAGS to pass the testsuite
-PATH=$(CURDIR)/build64/bin:$$PATH \
$(MAKE) -C build64 check CC=gcc CXX=g++ CFLAGS="$(m64) $(CFLAGS)" CXXFLAGS="$(m64)" 2>&1 | tee build64/check.log
else
-PATH=$(CURDIR)/build64/bin:$$PATH $(MAKE) -C build64 check CC="gcc $(m64)" 2>&1 | tee build64/check.log
endif
touch $@
stamp-check-biarchn32: stamp-build-biarchn32
dh_testdir
mkdir -p buildn32/bin
echo '/usr/bin/gcc $(mn32) "$$@"' > buildn32/bin/gcc
chmod 755 buildn32/bin/gcc
-PATH=$(CURDIR)/buildn32/bin:$$PATH $(MAKE) -C buildn32 check CC="gcc $(mn32)" 2>&1 | tee buildn32/check.log
touch $@
clean:
dh_testdir
dh_testroot
rm -f stamp-*
rm -rf build*
dh_clean
install: build
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs -s
$(MAKE) -C build DESTDIR=$(CURDIR)/debian/tmp install
cp -p build/.libs/libffi_convenience.a \
debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libffi_pic.a
mkdir -p debian/libffi-dev/usr/share/doc/$(p)
cp -a build/doc/libffi.html debian/libffi-dev/usr/share/doc/$(p)/html
ifneq (,$(filter biarch32, $(multiarch)))
$(MAKE) -C build32 DESTDIR=$(CURDIR)/debian/tmp install
cp -p build32/.libs/libffi_convenience.a \
debian/tmp/usr/lib32/libffi_pic.a
endif
ifneq (,$(filter biarch64, $(multiarch)))
$(MAKE) -C build64 DESTDIR=$(CURDIR)/debian/tmp install
cp -p build64/.libs/libffi_convenience.a \
debian/tmp/usr/lib64/libffi_pic.a
endif
ifneq (,$(filter biarchn32, $(multiarch)))
$(MAKE) -C buildn32 DESTDIR=$(CURDIR)/debian/tmp install
cp -p buildn32/.libs/libffi_convenience.a \
debian/tmp/usr/lib32/libffi_pic.a
endif
dh_install -s --sourcedir=debian/tmp
mkdir -p debian/libffi-dev/usr/include/$(DEB_HOST_MULTIARCH)
mv debian/libffi-dev/usr/include/*.h \
debian/libffi-dev/usr/include/$(DEB_HOST_MULTIARCH)/
ifneq (,$(filter biarch32, $(multiarch)))
mkdir -p debian/lib32ffi-dev/usr/include/$(biarch_gnu_type)
mv debian/libffi-dev/usr/include/$(biarch_gnu_type) \
debian/lib32ffi-dev/usr/include/
endif
ifneq (,$(filter biarch64, $(multiarch)))
mkdir -p debian/lib64ffi-dev/usr/include/$(biarch_gnu_type)$(abi64)
mv debian/libffi-dev/usr/include/$(biarch_gnu_type)$(abi64) \
debian/lib64ffi-dev/usr/include/
endif
ifneq (,$(filter biarchn32, $(multiarch)))
mkdir -p debian/libn32ffi-dev/usr/include/$(biarch_gnu_type)$(abin32)
mv debian/libffi-dev/usr/include/$(biarch_gnu_type)$(abin32) \
debian/libn32ffi-dev/usr/include/
endif
# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: build install
dh_testdir
dh_testroot
dh_installchangelogs -s
dh_installdocs -s
dh_installinfo -plibffi-dev doc/libffi.info
rm -f debian/libffi-dev/usr/share/info/dir*
cp -p ChangeLog debian/libffi-dev/usr/share/doc/libffi$(major)/changelog
cp -p ChangeLog.* debian/libffi-dev/usr/share/doc/libffi$(major)/
ifeq ($(with_check),yes)
cp -p build/check.log debian/libffi-dev/usr/share/doc/libffi$(major)/test_results_$(DEB_HOST_MULTIARCH).txt
endif
rm -rf debian/libffi-dev/usr/share/doc/libffi-dev
ln -s libffi$(major) debian/libffi-dev/usr/share/doc/libffi-dev
rm -rf debian/libffi$(major)-dbg/usr/share/doc/libffi$(major)-dbg
ln -s libffi$(major) debian/libffi$(major)-dbg/usr/share/doc/libffi$(major)-dbg
ifneq (,$(filter biarch32, $(multiarch)))
rm -rf debian/lib32ffi-dev/usr/share/doc/lib32ffi-dev
ln -s libffi-dev debian/lib32ffi-dev/usr/share/doc/lib32ffi-dev
ifeq ($(with_check),yes)
cat build32/check.log >> debian/libffi-dev/usr/share/doc/libffi$(major)/test_results_bi32_$(DEB_HOST_MULTIARCH).txt
endif
endif
ifneq (,$(filter biarch64, $(multiarch)))
rm -rf debian/lib64ffi-dev/usr/share/doc/lib64ffi-dev
ln -s libffi-dev debian/lib64ffi-dev/usr/share/doc/lib64ffi-dev
ifeq ($(with_check),yes)
cat build64/check.log >> debian/libffi-dev/usr/share/doc/libffi$(major)/test_results_bi64_$(DEB_HOST_MULTIARCH).txt
endif
endif
ifneq (,$(filter biarchn32, $(multiarch)))
rm -rf debian/libn32ffi-dev/usr/share/doc/libn32ffi-dev
ln -s libffi-dev debian/libn32ffi-dev/usr/share/doc/libn32ffi-dev
ifeq ($(with_check),yes)
cat buildn32/check.log >> debian/libffi-dev/usr/share/doc/libffi$(major)/test_results_bi32n_$(DEB_HOST_MULTIARCH).txt
endif
endif
dh_strip -s --dbg-package=libffi$(major)-dbg
dh_compress -s
dh_fixperms -s
dh_makeshlibs -plibffi$(major) --add-udeb=libffi$(major)-udeb
dh_makeshlibs -s -Nlibffi$(major)
dh_installdeb -s
dh_shlibdeps -s
dh_gencontrol -s
dh_md5sums -s
dh_builddeb -s
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install
|