summaryrefslogtreecommitdiffstats
path: root/js/src/Makefile.in
blob: 6daed727342d38a32784b979fdbcf2c07f7aec2c (plain)
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
# -*- Mode: makefile -*-
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

ifeq (,$(MAKE_VERSION))
$(error GNU Make is required)
endif
make_min_ver := 3.81
ifneq ($(make_min_ver),$(firstword $(sort $(make_min_ver) $(MAKE_VERSION))))
$(error GNU Make $(make_min_ver) or higher is required)
endif

DASH_R		= -r

# Define keyword generator before rules.mk, see bug 323979 comment 50

USE_HOST_CXX = 1

include $(topsrcdir)/config/rules.mk

ifdef MOZ_VALGRIND
ifndef MOZ_ASAN
JITTEST_VALGRIND_FLAG = --valgrind
endif
endif

ifneq ($(LLVM_SYMBOLIZER),)
# Use the LLVM symbolizer when running jit-tests under ASan and TSan, if available
ifdef MOZ_ASAN
JITTEST_SANITIZER_ENV=ASAN_SYMBOLIZER_PATH='$(LLVM_SYMBOLIZER)'
endif
ifdef MOZ_TSAN
JITTEST_SANITIZER_ENV=TSAN_OPTIONS="external_symbolizer_path=$(LLVM_SYMBOLIZER) handle_segv=0 $$TSAN_OPTIONS"
endif
ifdef MOZ_MSAN
JITTEST_SANITIZER_ENV=MSAN_SYMBOLIZER_PATH='$(LLVM_SYMBOLIZER)'
endif
endif

check-js-msg::
	(cd $(topsrcdir) && $(PYTHON3) $(topsrcdir)/config/check_js_msg_encoding.py);

check-jit-test::
	$(JITTEST_SANITIZER_ENV) $(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON3) -u $(srcdir)/jit-test/jit_test.py \
	        --no-slow --no-progress --format=automation --jitflags=all \
			$(JITTEST_VALGRIND_FLAG) \
			$(JITTEST_EXTRA_ARGS) \
	        $(DIST)/bin/js$(BIN_SUFFIX) $(JITTEST_TEST_ARGS)

check:: check-js-msg

check-jstests:
	$(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON3) -u $(srcdir)/tests/jstests.py \
		--no-progress --format=automation --timeout 300 \
		$(JSTESTS_EXTRA_ARGS) \
		$(DIST)/bin/js$(BIN_SUFFIX)

# FIXME:
# We want to run check-jstests as part of |make check| on all platforms, on
# tinderbox. However, some configurations don't work quite right just yet.
# Rather than risking regressions in major configurations while fixing these
# secondary configuration, we work around them and fix the bugs later.
#
#   Bug 652154: On Windows, SM(!m !t) don't work because of path problems with
#				their unusual directory layout
#
#   Bug 652155: On Mac, SM(d) doesn't work for unknown reasons

ifneq ($(OS_ARCH),WINNT)
ifndef HAVE_DTRACE
#check:: check-jstests
endif
endif

CFLAGS += $(MOZ_ZLIB_CFLAGS)

# Silence warnings on AIX/HP-UX from non-GNU compilers
ifndef GNU_CC
ifeq ($(OS_ARCH),AIX)
# Suppress warnings from xlC
# 1540-1281: offsetof() on null non-POD types
# 1540-1608: anonymous unions using static data members
CFLAGS		+= -qsuppress=1540-1281 -qsuppress=1540-1608
CXXFLAGS	+= -qsuppress=1540-1281 -qsuppress=1540-1608
endif
ifeq ($(OS_ARCH),HP-UX)
# Suppress warnings from aCC
# 3055: anonymous unions declaring types
# 4189: offsetof() on non-POD types
CFLAGS		+= +W3055,4189
CXXFLAGS	+= +W3055,4189
endif
endif
ifeq ($(OS_ARCH),SunOS)
ifeq ($(TARGET_CPU),sparc)

ifdef GNU_CC
CFLAGS   += -mcpu=v9
CXXFLAGS += -mcpu=v9
endif # GNU_CC

endif
endif

install::
	$(MAKE) -C build install
	$(MAKE) -C shell install

ifdef HAVE_DTRACE
javascript-trace.h: $(srcdir)/devtools/javascript-trace.d
	dtrace -x nolibs -h -s $(srcdir)/devtools/javascript-trace.d -o javascript-trace.h.in
	sed -e 's/if _DTRACE_VERSION/ifdef INCLUDE_MOZILLA_DTRACE/' \
	    -e '/const/!s/char \*/const char */g' \
	    javascript-trace.h.in > javascript-trace.h

# We can't automatically generate dependencies on auto-generated headers;
# we have to list them explicitly.
$(addsuffix .$(OBJ_SUFFIX),Probes jsinterp jsobj): $(CURDIR)/javascript-trace.h

ifneq ($(OS_ARCH),Darwin)
DTRACE_PROBE_OBJ = js-dtrace.$(OBJ_SUFFIX)
$(LIBRARY): $(DTRACE_PROBE_OBJ)
$(DTRACE_PROBE_OBJ): $(srcdir)/devtools/javascript-trace.d $(OBJS)
	dtrace -x nolibs -G -C -s $< -o $@ $(filter-out $<, $^)

OBJS += $(DTRACE_PROBE_OBJ)
endif # OS_ARCH != Darwin
endif # HAVE_DTRACE

###############################################
# Generating source package tarballs
# (only possible when tar is found)
ifneq (,$(TAR))

source-package:
	SRCDIR=$(srcdir) \
	DIST=$(DIST) \
	MKDIR=$(MKDIR) \
	TAR=$(TAR) \
	M4=$(M4) \
	AWK=$(AWK) \
	MOZJS_MAJOR_VERSION=$(MOZJS_MAJOR_VERSION) \
	MOZJS_MINOR_VERSION=$(MOZJS_MINOR_VERSION) \
	MOZJS_PATCH_VERSION=$(MOZJS_PATCH_VERSION) \
	MOZJS_ALPHA=$(MOZJS_ALPHA) \
	$(srcdir)/make-source-package.sh

endif