js/src/Makefile.in

Thu, 15 Jan 2015 15:55:04 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 15:55:04 +0100
branch
TOR_BUG_9701
changeset 9
a63d609f5ebe
permissions
-rw-r--r--

Back out 97036ab72558 which inappropriately compared turds to third parties.

michael@0 1 # -*- Mode: makefile -*-
michael@0 2 #
michael@0 3 # This Source Code Form is subject to the terms of the Mozilla Public
michael@0 4 # License, v. 2.0. If a copy of the MPL was not distributed with this
michael@0 5 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
michael@0 6
michael@0 7 ifndef .PYMAKE
michael@0 8 ifeq (,$(MAKE_VERSION))
michael@0 9 $(error GNU Make is required)
michael@0 10 endif
michael@0 11 make_min_ver := 3.81
michael@0 12 ifneq ($(make_min_ver),$(firstword $(sort $(make_min_ver) $(MAKE_VERSION))))
michael@0 13 $(error GNU Make $(make_min_ver) or higher is required)
michael@0 14 endif
michael@0 15 endif
michael@0 16
michael@0 17 TOPLEVEL_BUILD := 1
michael@0 18
michael@0 19 run_for_side_effects := $(shell echo 'MAKE: $(MAKE)')
michael@0 20 STATIC_LIBRARY_NAME = js_static
michael@0 21 LIBS = $(NSPR_LIBS)
michael@0 22
michael@0 23 DIST_INSTALL = 1
michael@0 24
michael@0 25 ifdef JS_STANDALONE
michael@0 26 SHARED_LIBRARY_LIBS += $(call EXPAND_LIBNAME_PATH,mfbt,$(DEPTH)/mfbt)
michael@0 27 endif
michael@0 28
michael@0 29 ifdef JS_HAS_CTYPES
michael@0 30 ifdef MOZ_NATIVE_FFI
michael@0 31 LOCAL_INCLUDES = $(MOZ_FFI_CFLAGS)
michael@0 32 endif
michael@0 33
michael@0 34 ifdef MOZ_NATIVE_FFI
michael@0 35 EXTRA_DSO_LDOPTS += $(MOZ_FFI_LIBS)
michael@0 36 else
michael@0 37 SHARED_LIBRARY_LIBS += \
michael@0 38 ctypes/libffi/.libs/libffi.$(LIB_SUFFIX) \
michael@0 39 $(NULL)
michael@0 40 endif
michael@0 41
michael@0 42 endif # JS_HAS_CTYPES
michael@0 43
michael@0 44 DASH_R = -r
michael@0 45
michael@0 46 ifneq (,$(filter WINNT,$(OS_ARCH)))
michael@0 47 SDK_LIBRARY = $(IMPORT_LIBRARY)
michael@0 48 else
michael@0 49 SDK_LIBRARY = $(SHARED_LIBRARY)
michael@0 50 endif
michael@0 51
michael@0 52 EXTRA_DSO_LDOPTS += $(NSPR_LIBS)
michael@0 53
michael@0 54 # Define keyword generator before rules.mk, see bug 323979 comment 50
michael@0 55
michael@0 56 GARBAGE += jsautokw.h host_jskwgen$(HOST_BIN_SUFFIX)
michael@0 57
michael@0 58 GARBAGE += selfhosted.out.h
michael@0 59
michael@0 60 USE_HOST_CXX = 1
michael@0 61
michael@0 62 ifdef HAVE_DTRACE
michael@0 63 ifneq ($(OS_ARCH),Darwin)
michael@0 64 DTRACE_PROBE_OBJ = $(LIBRARY_NAME)-dtrace.$(OBJ_SUFFIX)
michael@0 65 endif
michael@0 66 MOZILLA_DTRACE_SRC = $(srcdir)/devtools/javascript-trace.d
michael@0 67 endif
michael@0 68
michael@0 69 # Ensure symbol versions of shared library on Linux do not conflict
michael@0 70 # with those in libxul.
michael@0 71 ifeq (Linux,$(OS_TARGET))
michael@0 72 EXTRA_DSO_LDOPTS += -Wl,-version-script,symverscript
michael@0 73
michael@0 74 symverscript: symverscript.in
michael@0 75 $(call py_action,preprocessor, \
michael@0 76 -DVERSION='$(subst -,_,$(LIBRARY_NAME))' $< -o $@)
michael@0 77
michael@0 78 EXTRA_DEPS += symverscript
michael@0 79 endif
michael@0 80
michael@0 81 export_files = js-config.h
michael@0 82 ifdef HAVE_DTRACE
michael@0 83 export_files += $(CURDIR)/javascript-trace.h
michael@0 84 endif
michael@0 85
michael@0 86 INSTALL_TARGETS += jsconfig
michael@0 87 jsconfig_FILES = $(export_files)
michael@0 88 jsconfig_DEST = $(DIST)/include
michael@0 89 jsconfig_TARGET := export
michael@0 90
michael@0 91 include $(topsrcdir)/config/rules.mk
michael@0 92
michael@0 93 #############################################
michael@0 94 # BEGIN ECMAScript Internationalization API
michael@0 95 #
michael@0 96
michael@0 97 # ICU headers need to be available whether we build with the complete
michael@0 98 # Internationalization API or not - ICU stubs rely on them.
michael@0 99
michael@0 100 LOCAL_INCLUDES += $(MOZ_ICU_CFLAGS)
michael@0 101
michael@0 102 ifdef ENABLE_INTL_API
michael@0 103 ifndef MOZ_NATIVE_ICU
michael@0 104
michael@0 105 endif
michael@0 106 endif
michael@0 107
michael@0 108 #
michael@0 109 # END ECMAScript Internationalization API
michael@0 110 #############################################
michael@0 111
michael@0 112
michael@0 113 # check_vanilla_allocations.py is tailored to Linux, so only run it there.
michael@0 114 # That should be enough to catch any problems.
michael@0 115 check-vanilla-allocations:
michael@0 116 $(PYTHON) $(topsrcdir)/config/check_vanilla_allocations.py $(REAL_LIBRARY)
michael@0 117
michael@0 118 # The "aggressive" variant will likely fail on some compiler/platform
michael@0 119 # combinations, but is worth running by hand every once in a while.
michael@0 120 check-vanilla-allocations-aggressive:
michael@0 121 $(PYTHON) $(topsrcdir)/config/check_vanilla_allocations.py --aggressive $(REAL_LIBRARY)
michael@0 122
michael@0 123 ifeq ($(OS_ARCH),Linux)
michael@0 124 check:: check-vanilla-allocations
michael@0 125 endif
michael@0 126
michael@0 127 # Help ensure that the number of OOM errors in SpiderMonkey doesn't increase.
michael@0 128 # If the number of OOM errors changes, update the number below. We intend this
michael@0 129 # number to go down over time, by fixing OOMs.
michael@0 130 check-ooms:
michael@0 131 $(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON) -u $(topsrcdir)/config/find_OOM_errors.py --regression 125
michael@0 132
michael@0 133 ifeq ($(MOZ_DEBUG),1)
michael@0 134 #check:: check-ooms
michael@0 135 endif
michael@0 136
michael@0 137 ifdef MOZ_VALGRIND
michael@0 138 ifndef MOZ_ASAN
michael@0 139 JITTEST_VALGRIND_FLAG = --valgrind
michael@0 140 endif
michael@0 141 endif
michael@0 142
michael@0 143 ifdef MOZ_ASAN
michael@0 144 ifneq ($(LLVM_SYMBOLIZER),)
michael@0 145 # Use the LLVM symbolizer when running jit-tests under ASan, if available
michael@0 146 JITTEST_ASAN_ENV=ASAN_SYMBOLIZER_PATH='$(LLVM_SYMBOLIZER)'
michael@0 147 endif
michael@0 148 endif
michael@0 149
michael@0 150 check-style::
michael@0 151 (cd $(srcdir) && $(PYTHON) $(topsrcdir)/config/check_spidermonkey_style.py);
michael@0 152
michael@0 153 check-jit-test::
michael@0 154 $(JITTEST_ASAN_ENV) $(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON) -u $(srcdir)/jit-test/jit_test.py \
michael@0 155 --no-slow --no-progress --tinderbox --tbpl $(JITTEST_VALGRIND_FLAG) \
michael@0 156 $(DIST)/bin/$(JS_SHELL_NAME)$(BIN_SUFFIX)
michael@0 157
michael@0 158 check:: check-style
michael@0 159
michael@0 160 # jstests doesn't have a --jitflags option, so we need to loop, updating the
michael@0 161 # exit code (RC) after each invocation.
michael@0 162 # FIXME: MethodJIT doesn't work for 1 test case (bug 644393), so
michael@0 163 # --no-extensions is set to skip that test. Remove as soon as possible.
michael@0 164 check-jstests:
michael@0 165 RC=0; \
michael@0 166 for f in `echo '$(JITFLAGS)' | tr ',' '\n'`; \
michael@0 167 do \
michael@0 168 $(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON) -u $(srcdir)/tests/jstests.py \
michael@0 169 --tinderbox --no-progress \
michael@0 170 --no-extensions \
michael@0 171 --timeout 300 \
michael@0 172 --args="`echo $$f | sed 's/\(.\)/ -\1/g'`" \
michael@0 173 $(DIST)/bin/$(JS_SHELL_NAME)$(BIN_SUFFIX); \
michael@0 174 RC=$$(( $$RC || $$?)); \
michael@0 175 done; \
michael@0 176 exit $$RC
michael@0 177
michael@0 178 # FIXME:
michael@0 179 # We want to run check-jstests as part of |make check| on all platforms, on
michael@0 180 # tinderbox. However, some configurations don't work quite right just yet.
michael@0 181 # Rather than risking regressions in major configurations while fixing these
michael@0 182 # secondary configuration, we work around them and fix the bugs later.
michael@0 183 #
michael@0 184 # Bug 652154: On Windows, SM(!m !t) don't work because of path problems with
michael@0 185 # their unusual directory layout
michael@0 186 #
michael@0 187 # Bug 652155: On Mac, SM(d) doesn't work for unknown reasons
michael@0 188
michael@0 189 ifneq ($(OS_ARCH),WINNT)
michael@0 190 ifndef HAVE_DTRACE
michael@0 191 #check:: check-jstests
michael@0 192 endif
michael@0 193 endif
michael@0 194
michael@0 195 DIST_GARBAGE = config.cache config.log config.status* \
michael@0 196 config/autoconf.mk config/emptyvars.mk \
michael@0 197 js-config.h js-confdefs.h \
michael@0 198 backend.mk config/backend.mk devtools/backend.mk editline/backend.mk \
michael@0 199 gdb/backend.mk jsapi-tests/backend.mk shell/backend.mk tests/backend.mk \
michael@0 200 backend.RecursiveMakeBackend backend.RecursiveMakeBackend.pp \
michael@0 201 devtools/rootAnalysis/Makefile
michael@0 202
michael@0 203 distclean::
michael@0 204 $(RM) $(DIST_GARBAGE)
michael@0 205
michael@0 206 ifneq ($(findstring -L,$(NSPR_LIBS)),)
michael@0 207 NSPR_STATIC_PATH = $(subst -L,,$(findstring -L,$(NSPR_LIBS)))
michael@0 208 else
michael@0 209 NSPR_STATIC_PATH = $(DIST)/lib
michael@0 210 endif
michael@0 211
michael@0 212 # HP-UX does not require the extra linking of "-lm"
michael@0 213 ifeq (,$(filter HP-UX WINNT,$(OS_ARCH)))
michael@0 214 EXTRA_LIBS += -lm
michael@0 215 endif
michael@0 216
michael@0 217 CFLAGS += $(MOZ_ZLIB_CFLAGS)
michael@0 218 EXTRA_LIBS += $(MOZ_ZLIB_LIBS)
michael@0 219 # Enable zlib usage if zlib has been located. When building the browser on
michael@0 220 # Windows, MOZ_ZLIB_LIBS is empty because zlib is part of libmozglue. We thus
michael@0 221 # also enable zlib if mozglue is present.
michael@0 222 ifneq (,$(MOZ_ZLIB_LIBS)$(MOZ_GLUE_LDFLAGS))
michael@0 223 DEFINES += -DUSE_ZLIB
michael@0 224 endif
michael@0 225
michael@0 226 ifdef MOZ_SHARED_ICU
michael@0 227 EXTRA_DSO_LDOPTS += $(MOZ_ICU_LIBS)
michael@0 228 else
michael@0 229 SHARED_LIBRARY_LIBS += $(MOZ_ICU_LIBS)
michael@0 230 endif
michael@0 231
michael@0 232 # Prevent floating point errors caused by VC++ optimizations
michael@0 233 ifdef _MSC_VER
michael@0 234 # XXX We should add this to CXXFLAGS, too?
michael@0 235 CFLAGS += -fp:precise
michael@0 236 endif # _MSC_VER
michael@0 237
michael@0 238 ifeq ($(OS_ARCH),FreeBSD)
michael@0 239 EXTRA_LIBS += -pthread
michael@0 240 endif
michael@0 241 ifeq ($(OS_ARCH),Linux)
michael@0 242 EXTRA_LIBS += -ldl
michael@0 243 endif
michael@0 244 # Silence warnings on AIX/HP-UX from non-GNU compilers
michael@0 245 ifndef GNU_CC
michael@0 246 ifeq ($(OS_ARCH),AIX)
michael@0 247 # Suppress warnings from xlC
michael@0 248 # 1540-1281: offsetof() on null non-POD types
michael@0 249 # 1540-1608: anonymous unions using static data members
michael@0 250 CFLAGS += -qsuppress=1540-1281 -qsuppress=1540-1608
michael@0 251 CXXFLAGS += -qsuppress=1540-1281 -qsuppress=1540-1608
michael@0 252 endif
michael@0 253 ifeq ($(OS_ARCH),HP-UX)
michael@0 254 # Suppress warnings from aCC
michael@0 255 # 3055: anonymous unions declaring types
michael@0 256 # 4189: offsetof() on non-POD types
michael@0 257 CFLAGS += +W3055,4189
michael@0 258 CXXFLAGS += +W3055,4189
michael@0 259 endif
michael@0 260 endif
michael@0 261 ifeq ($(OS_ARCH),SunOS)
michael@0 262 ifeq ($(TARGET_CPU),sparc)
michael@0 263
michael@0 264 ifdef GNU_CC
michael@0 265 CFLAGS += -mcpu=v9
michael@0 266 CXXFLAGS += -mcpu=v9
michael@0 267 endif # GNU_CC
michael@0 268
michael@0 269 endif
michael@0 270 EXTRA_LIBS += -lposix4 -ldl -lnsl -lsocket
michael@0 271 endif
michael@0 272
michael@0 273 SCRIPTS = $(JS_CONFIG_NAME)
michael@0 274 SDK_BINARY = $(JS_CONFIG_NAME)
michael@0 275
michael@0 276 $(LIBRARY_NAME).pc: js.pc
michael@0 277 cp $^ $@
michael@0 278
michael@0 279 install:: $(LIBRARY_NAME).pc
michael@0 280 $(SYSINSTALL) $^ $(DESTDIR)$(libdir)/pkgconfig
michael@0 281
michael@0 282 ######################################################
michael@0 283 # BEGIN SpiderMonkey header installation
michael@0 284 #
michael@0 285 # Mozilla/Gecko/Firefox mostly doesn't concern itself with defining a sensible
michael@0 286 # install target, because it's shipping primarily packaged builds. And even if
michael@0 287 # it did, those builds wouldn't really have reason to include header files. So
michael@0 288 # we have to install public headers ourselves, rather than using something from
michael@0 289 # config/rules.mk or similar.
michael@0 290 #
michael@0 291 # The overall directory structure of the installed headers looks like so:
michael@0 292 #
michael@0 293 # $(includedir)/
michael@0 294 # $(LIBRARY_NAME)/
michael@0 295 # jsapi.h, jspubtd.h, etc. (all of EXPORTS)
michael@0 296 # js/
michael@0 297 # js/public/* headers (all are public)
michael@0 298 # ds/
michael@0 299 # js/src/ds/* public headers
michael@0 300 # gc/
michael@0 301 # js/src/gc/* public headers
michael@0 302 # mozilla/
michael@0 303 # mfbt headers
michael@0 304 #
michael@0 305
michael@0 306 install::
michael@0 307 $(call py_action,process_install_manifest,--no-remove $(DESTDIR)$(includedir) $(DEPTH)/_build_manifests/install/dist_include)
michael@0 308
michael@0 309 #
michael@0 310 # END SpiderMonkey header installation
michael@0 311 #############################################
michael@0 312
michael@0 313 install:: $(SCRIPTS)
michael@0 314 $(SYSINSTALL) $^ $(DESTDIR)$(bindir)
michael@0 315
michael@0 316 install:: $(REAL_LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY)
michael@0 317 ifneq (,$(REAL_LIBRARY))
michael@0 318 $(SYSINSTALL) $(REAL_LIBRARY) $(DESTDIR)$(libdir)
michael@0 319 mv -f $(DESTDIR)$(libdir)/$(REAL_LIBRARY) $(subst $(STATIC_LIBRARY_NAME),$(LIBRARY_NAME),$(DESTDIR)$(libdir)/$(REAL_LIBRARY))
michael@0 320 endif
michael@0 321 ifneq (,$(SHARED_LIBRARY))
michael@0 322 $(SYSINSTALL) $(SHARED_LIBRARY) $(DESTDIR)$(libdir)
michael@0 323 endif
michael@0 324 ifneq (,$(IMPORT_LIBRARY))
michael@0 325 $(SYSINSTALL) $(IMPORT_LIBRARY) $(DESTDIR)$(libdir)
michael@0 326 endif
michael@0 327 $(MAKE) -C shell install
michael@0 328
michael@0 329 # Use CURDIR to avoid finding a jsautokw.h in the source tree (from a
michael@0 330 # previous build?) via VPATH when we're building in a separate tree.
michael@0 331 $(CURDIR)/jsautokw.h: host_jskwgen$(HOST_BIN_SUFFIX)
michael@0 332 ./host_jskwgen$(HOST_BIN_SUFFIX) $@
michael@0 333
michael@0 334 # Force auto-header generation before compiling any source that may use them
michael@0 335 $(OBJS): $(CURDIR)/jsautokw.h
michael@0 336
michael@0 337 ifdef MOZ_ETW
michael@0 338 ETWProvider.h ETWProvider.rc ETWProvider.mof: ETWProvider.man
michael@0 339 $(MC) -um -mof $^
michael@0 340
michael@0 341 ETWProvider.res: ETWProvider.rc
michael@0 342 $(RC) -r -i '$(SDKDIR)Include' $^
michael@0 343
michael@0 344 export:: ETWProvider.res
michael@0 345
michael@0 346 install:: ETWProvider.mof ETWProvider.man
michael@0 347 $(SYSINSTALL) $^ $(DESTDIR)$(bindir)
michael@0 348
michael@0 349 endif
michael@0 350
michael@0 351 ifdef HAVE_DTRACE
michael@0 352 $(CURDIR)/javascript-trace.h: $(srcdir)/devtools/javascript-trace.d
michael@0 353 dtrace -h -s $(srcdir)/devtools/javascript-trace.d -o javascript-trace.h.in
michael@0 354 sed -e 's/if _DTRACE_VERSION/ifdef INCLUDE_MOZILLA_DTRACE/' \
michael@0 355 -e '/const/!s/char \*/const char */g' \
michael@0 356 javascript-trace.h.in > javascript-trace.h
michael@0 357
michael@0 358 # We can't automatically generate dependencies on auto-generated headers;
michael@0 359 # we have to list them explicitly.
michael@0 360 $(addsuffix .$(OBJ_SUFFIX),Probes jsinterp jsobj): $(CURDIR)/javascript-trace.h
michael@0 361 endif
michael@0 362
michael@0 363 # Prepare self-hosted JS code for embedding
michael@0 364 export:: selfhosting
michael@0 365 selfhosting:: selfhosted.out.h
michael@0 366
michael@0 367 selfhosting_srcs := \
michael@0 368 $(srcdir)/builtin/Utilities.js \
michael@0 369 $(srcdir)/builtin/ParallelUtilities.js \
michael@0 370 $(srcdir)/builtin/Array.js \
michael@0 371 $(srcdir)/builtin/Date.js \
michael@0 372 $(srcdir)/builtin/Intl.js \
michael@0 373 $(srcdir)/builtin/IntlData.js \
michael@0 374 $(srcdir)/builtin/Iterator.js \
michael@0 375 $(srcdir)/builtin/Map.js \
michael@0 376 $(srcdir)/builtin/Number.js \
michael@0 377 $(srcdir)/builtin/String.js \
michael@0 378 $(srcdir)/builtin/Set.js \
michael@0 379 $(srcdir)/builtin/TypedObject.js \
michael@0 380 $(NULL)
michael@0 381
michael@0 382 selfhosted_out_h_deps := \
michael@0 383 $(selfhosting_srcs) \
michael@0 384 $(srcdir)/js.msg \
michael@0 385 $(srcdir)/builtin/embedjs.py \
michael@0 386 $(srcdir)/builtin/TypedObjectConstants.h \
michael@0 387 $(NULL)
michael@0 388
michael@0 389 SELFHOSTED_DEFINES += $(DEFINES) $(ACDEFINES)
michael@0 390 ifdef MOZ_DEBUG
michael@0 391 SELFHOSTED_DEFINES += $(MOZ_DEBUG_ENABLE_DEFS)
michael@0 392 else
michael@0 393 SELFHOSTED_DEFINES += $(MOZ_DEBUG_DISABLE_DEFS)
michael@0 394 endif
michael@0 395
michael@0 396 selfhosted.out.h: $(selfhosted_out_h_deps)
michael@0 397 $(PYTHON) $(srcdir)/builtin/embedjs.py $(SELFHOSTED_DEFINES) \
michael@0 398 -p '$(CPP)' -m $(srcdir)/js.msg -o $@ $(selfhosting_srcs)
michael@0 399
michael@0 400 ###############################################
michael@0 401 # Generating source package tarballs
michael@0 402 # (only possible when tar is found)
michael@0 403 ifneq (,$(TAR))
michael@0 404
michael@0 405 source-package:
michael@0 406 SRCDIR=$(srcdir) \
michael@0 407 DIST=$(DIST) \
michael@0 408 MAKE=$(MAKE) \
michael@0 409 MKDIR=$(MKDIR) \
michael@0 410 TAR=$(TAR) \
michael@0 411 MOZJS_MAJOR_VERSION=$(MOZJS_MAJOR_VERSION) \
michael@0 412 MOZJS_MINOR_VERSION=$(MOZJS_MINOR_VERSION) \
michael@0 413 MOZJS_PATCH_VERSION=$(MOZJS_PATCH_VERSION) \
michael@0 414 MOZJS_ALPHA=$(MOZJS_ALPHA) \
michael@0 415 $(srcdir)/make-source-package.sh
michael@0 416
michael@0 417 clean::
michael@0 418 DIST=$(DIST) \
michael@0 419 MOZJS_MAJOR_VERSION=$(MOZJS_MAJOR_VERSION) \
michael@0 420 MOZJS_MINOR_VERSION=$(MOZJS_MINOR_VERSION) \
michael@0 421 MOZJS_PATCH_VERSION=$(MOZJS_PATCH_VERSION) \
michael@0 422 MOZJS_ALPHA=$(MOZJS_ALPHA) \
michael@0 423 $(srcdir)/make-source-package.sh clean
michael@0 424
michael@0 425 endif

mercurial