File: rules

package info (click to toggle)
libv8-3.14 3.14.5.8-11
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 58,996 kB
  • ctags: 70,298
  • sloc: cpp: 694,074; python: 9,631; ansic: 3,263; sh: 885; makefile: 293; lisp: 222
file content (164 lines) | stat: -rwxr-xr-x 6,059 bytes parent folder | download
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)