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
|
#!/usr/bin/make -f
# This needs to run before inclusion of CDBS snippets
debian/control:: debian/control.in debian/watch
DEB_PHONY_RULES += debian/control.in
debian/control.in::
sed $(foreach re,API ABI ARCHS,-e 's/__$(re)__/$($(re))/g') \
< debian/control.in.in > debian/control.in
debian/watch::
sed $(foreach re,API ABI ARCHS,-e 's/__$(re)__/$($(re))/g') \
< debian/control.in.in > debian/control.in
include /usr/share/cdbs/1/rules/upstream-tarball.mk
include /usr/share/cdbs/1/rules/utils.mk
include /usr/share/cdbs/1/class/makefile.mk
include /usr/share/cdbs/1/rules/debhelper.mk
# See README.source for details on these.
MAJOR = $(word 1, $(subst .,$(space), $(DEB_UPSTREAM_VERSION)))
MINOR = $(word 2, $(subst .,$(space), $(DEB_UPSTREAM_VERSION)))
BUILD = $(word 3, $(subst .,$(space), $(DEB_UPSTREAM_VERSION)))
API = $(MAJOR).$(MINOR)
ABI = $(MAJOR).$(MINOR).$(BUILD)
LIBSTEM = libv8.so
watchBranch = $(MAJOR)\\.$(MINOR)
DEB_UPSTREAM_URL = https://github.com/v8/v8/archive
# TODO: use $(DEB_UPSTREAM_TARBALL_VERSION) when upstream properly tags release
DEB_UPSTREAM_TARBALL_BASENAME = 6b10fef46e
DEB_UPSTREAM_TARBALL_MD5 = be049128a44adf26f4dfb7d1ab55acfd
# Supported archs
ARCHS = i386 kfreebsd-i386 hurd-i386 amd64 kfreebsd-amd64 armel armhf mipsel mips powerpc ppc64 ppc64el
# allow parallel builds
DEB_BUILD_PARALLEL=1
# suppress checking binary files, to not upset dpkg-source
DEB_COPYRIGHT_CHECK_IGNORE_REGEX = ^(benchmarks/v8-logo\.png|test/mjsunit/unicode-test\.js|debian/(changelog|copyright(|_hints|_newhints)))$
# dpkg-gensymbols(1) - this is not needed since we are not using symbols
# DEB_DH_MAKESHLIBS_ARGS = -- -c4
# map HOST ARCH AND OS to v8 options
v8arch := $(or $(v8arch),$(if $(filter i386,$(DEB_HOST_ARCH)),ia32))
v8arch := $(or $(v8arch),$(if $(filter kfreebsd-i386,$(DEB_HOST_ARCH)),ia32))
v8arch := $(or $(v8arch),$(if $(filter hurd-i386,$(DEB_HOST_ARCH)),ia32))
v8arch := $(or $(v8arch),$(if $(filter amd64,$(DEB_HOST_ARCH)),x64))
v8arch := $(or $(v8arch),$(if $(filter kfreebsd-amd64,$(DEB_HOST_ARCH)),x64))
v8arch := $(or $(v8arch),$(if $(filter armel,$(DEB_HOST_ARCH)),arm))
v8arch := $(or $(v8arch),$(if $(filter armhf,$(DEB_HOST_ARCH)),arm))
v8arch := $(or $(v8arch),$(if $(filter mipsel,$(DEB_HOST_ARCH)),mipsel))
v8arch := $(or $(v8arch),$(if $(filter mips,$(DEB_HOST_ARCH)),mips))
v8arch := $(or $(v8arch),$(if $(filter powerpc,$(DEB_HOST_ARCH)),ppc))
v8arch := $(or $(v8arch),$(if $(filter ppc64el,$(DEB_HOST_ARCH)),ppc64))
v8arch := $(or $(v8arch),$(DEB_HOST_ARCH))
v8os := $(or $(v8os),$(if $(filter linux,$(DEB_HOST_ARCH_OS)),linux))
v8os := $(or $(v8os),$(if $(filter kfreebsd,$(DEB_HOST_ARCH_OS)),freebsd))
v8os := $(or $(v8os),$(DEB_HOST_ARCH_OS))
GYPFLAGS += -Dhost_arch=$(v8arch) -DOS=$(v8os)
# the default test timeout in seconds
timeOut = 180
# mipsel machines are slower
ifeq (mipsel, $(DEB_HOST_ARCH))
timeOut = 600
endif
# mips machines are slower
ifeq (mips, $(DEB_HOST_ARCH))
timeOut = 600
endif
# work-around crashes in tests as reported in #812304
# TODO fix the checks themselves instead
CXXFLAGS += -fno-delete-null-pointer-checks
# keep old ABI to prevent symbol changes due to GCC5 transition
# https://wiki.debian.org/GCC5
CXXFLAGS += -std=c++98
# armel and armhf arches need flags to work around those issues :
# -fno-tree-sink: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39604
# -Wno-psabi: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42748
ifeq (armhf, $(DEB_HOST_ARCH))
CXXFLAGS += -fno-tree-sink
CXXFLAGS += -Wno-psabi
ifeq ($(shell dpkg-vendor --derives-from raspbian && echo true),true)
# enable vfpv2, disable armv7
GYPFLAGS += -Darmv7=0 -Darm_fpu=vfpv2 -Darm_neon=0 -Dv8_use_arm_eabi_hardfloat=true
DEB_MAKE_EXTRA_ARGS += vfp3=off
else
# enable armv7 vfpv3
GYPFLAGS += -Darmv7=1 -Darm_fpu=vfpv3 -Darm_neon=0 -Dv8_use_arm_eabi_hardfloat=true
endif
endif
ifeq (armel, $(DEB_HOST_ARCH))
# hints can be found there:
# https://groups.google.com/forum/#!topic/v8-users/PIP1OgH0sOQ
# https://code.google.com/p/v8/issues/detail?id=914
# arm processors features are detected at runtime - and that can lead to
# a situation where compilation works but runtime crashes
CXXFLAGS += -fno-tree-sink
CXXFLAGS += -Wno-psabi
ifeq ($(shell dpkg-vendor --is ubuntu && echo true),true)
# Ubuntu targets armv7+ with VFP and thumb2 support by default for armel
GYPFLAGS += -Darmv7=1 -Darm_fpu=vfpv3 -Darm_neon=0 -Dv8_use_arm_eabi_hardfloat=false
else
DEB_MAKE_EXTRA_ARGS += vfp3=off
# Disable thumb-interworking because v8 supports it only on >= armv5t.
# http://code.google.com/p/v8/issues/detail?id=590
CXXFLAGS += -mno-thumb-interwork
# disable armv7, use softfloat
GYPFLAGS += -Darmv7=0 -Dv8_use_arm_eabi_hardfloat=false
endif
endif
# hardening gyp
CXXFLAGS+=$(CPPFLAGS)
export LDFLAGS
export CXXFLAGS
export GYPFLAGS
DEB_MAKE_EXTRA_ARGS += library=shared snapshot=off soname_version=$(ABI) OS=$(v8os) V=1
DEB_MAKE_CLEAN_TARGET = clean
DEB_MAKE_BUILD_TARGET = $(v8arch).release
v8out = $(CURDIR)/out/$(v8arch).release/lib.target/$(LIBSTEM).$(ABI)
# regression tests
# * relax regression tests when targeted experimental suite
# * run only javascript tests, cctests are for development purposes
DEB_MAKE_CHECK_TARGET = $(v8arch).release.check \
LD_PRELOAD=$(v8out) \
TESTFLAGS="--no-presubmit mjsunit message preparser" \
TESTJOBS="$(DEB_MAKE_PARALLEL) --timeout=$(timeOut)" \
$(if $(shell dpkg-parsechangelog | grep -Fx 'Distribution: experimental'),|| true)
DEB_DH_INSTALL_ARGS_libv8-$(ABI) = usr/lib/$(LIBSTEM).$(ABI)
# Setup dynamically named debhelper install file during build
pre-build::
cp -f debian/libv8-dev.install debian/libv8-$(API)-dev.install
cp -f debian/libv8-dev.examples debian/libv8-$(API)-dev.examples
clean::
rm -f debian/libv8-$(API)-dev.install
rm -f debian/libv8-$(API)-dev.examples
clean::
rm -rf out
find tools/ -name "*.pyc" -exec rm -f '{}' \;
rm -f test/*/*.pyc
rm -f test/*/*.status2
common-install-impl::
mkdir -p debian/tmp/usr/lib ; \
cd debian/tmp/usr/lib ; \
cp $(v8out) . ; \
ln -s -T $(LIBSTEM).$(ABI) $(LIBSTEM)
|