Makefile (15822B)
1 # 2 # QuickJS Javascript Engine 3 # 4 # Copyright (c) 2017-2021 Fabrice Bellard 5 # Copyright (c) 2017-2021 Charlie Gordon 6 # 7 # Permission is hereby granted, free of charge, to any person obtaining a copy 8 # of this software and associated documentation files (the "Software"), to deal 9 # in the Software without restriction, including without limitation the rights 10 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 # copies of the Software, and to permit persons to whom the Software is 12 # furnished to do so, subject to the following conditions: 13 # 14 # The above copyright notice and this permission notice shall be included in 15 # all copies or substantial portions of the Software. 16 # 17 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20 # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 # THE SOFTWARE. 24 25 ifeq ($(shell uname -s),Darwin) 26 CONFIG_DARWIN=y 27 endif 28 ifeq ($(shell uname -s),FreeBSD) 29 CONFIG_FREEBSD=y 30 endif 31 # Windows cross compilation from Linux 32 #CONFIG_WIN32=y 33 # use link time optimization (smaller and faster executables but slower build) 34 #CONFIG_LTO=y 35 # consider warnings as errors (for development) 36 #CONFIG_WERROR=y 37 # force 32 bit build for some utilities 38 #CONFIG_M32=y 39 # cosmopolitan build (see https://github.com/jart/cosmopolitan) 40 #CONFIG_COSMO=y 41 42 # installation directory 43 PREFIX?=/usr/local 44 45 # use the gprof profiler 46 #CONFIG_PROFILE=y 47 # use address sanitizer 48 #CONFIG_ASAN=y 49 # use memory sanitizer 50 #CONFIG_MSAN=y 51 # use UB sanitizer 52 #CONFIG_UBSAN=y 53 54 # include the code for BigFloat/BigDecimal and math mode 55 CONFIG_BIGNUM=y 56 57 OBJDIR=.obj 58 59 ifdef CONFIG_ASAN 60 OBJDIR:=$(OBJDIR)/asan 61 endif 62 ifdef CONFIG_MSAN 63 OBJDIR:=$(OBJDIR)/msan 64 endif 65 ifdef CONFIG_UBSAN 66 OBJDIR:=$(OBJDIR)/ubsan 67 endif 68 69 ifdef CONFIG_DARWIN 70 # use clang instead of gcc 71 CONFIG_CLANG=y 72 CONFIG_DEFAULT_AR=y 73 endif 74 ifdef CONFIG_FREEBSD 75 # use clang instead of gcc 76 CONFIG_CLANG=y 77 CONFIG_DEFAULT_AR=y 78 CONFIG_LTO= 79 endif 80 81 ifdef CONFIG_WIN32 82 ifdef CONFIG_M32 83 CROSS_PREFIX?=i686-w64-mingw32- 84 else 85 CROSS_PREFIX?=x86_64-w64-mingw32- 86 endif 87 EXE=.exe 88 else 89 CROSS_PREFIX?= 90 EXE= 91 endif 92 93 ifdef CONFIG_CLANG 94 HOST_CC=clang 95 CC=$(CROSS_PREFIX)clang 96 CFLAGS+=-g -Wall -MMD -MF $(OBJDIR)/$(@F).d 97 CFLAGS += -Wextra 98 CFLAGS += -Wno-sign-compare 99 CFLAGS += -Wno-missing-field-initializers 100 CFLAGS += -Wundef -Wuninitialized 101 CFLAGS += -Wunused -Wno-unused-parameter 102 CFLAGS += -Wwrite-strings 103 CFLAGS += -Wchar-subscripts -funsigned-char 104 CFLAGS += -MMD -MF $(OBJDIR)/$(@F).d 105 ifdef CONFIG_DEFAULT_AR 106 AR=$(CROSS_PREFIX)ar 107 else 108 ifdef CONFIG_LTO 109 AR=$(CROSS_PREFIX)llvm-ar 110 else 111 AR=$(CROSS_PREFIX)ar 112 endif 113 endif 114 LIB_FUZZING_ENGINE ?= "-fsanitize=fuzzer" 115 else ifdef CONFIG_COSMO 116 CONFIG_LTO= 117 HOST_CC=gcc 118 CC=cosmocc 119 # cosmocc does not correct support -MF 120 CFLAGS=-g -Wall #-MMD -MF $(OBJDIR)/$(@F).d 121 CFLAGS += -Wno-array-bounds -Wno-format-truncation 122 AR=cosmoar 123 else 124 HOST_CC=gcc 125 CC=$(CROSS_PREFIX)gcc 126 CFLAGS=-ggdb -fno-omit-frame-pointer -Wall -MMD -MF $(OBJDIR)/$(@F).d 127 >>>>>>> theirs 128 CFLAGS += -Wno-array-bounds -Wno-format-truncation 129 ifdef CONFIG_LTO 130 AR=$(CROSS_PREFIX)gcc-ar 131 else 132 AR=$(CROSS_PREFIX)ar 133 endif 134 endif 135 STRIP?=$(CROSS_PREFIX)strip 136 CFLAGS+=-fwrapv # ensure that signed overflows behave as expected 137 ifdef CONFIG_WERROR 138 CFLAGS+=-Werror 139 endif 140 DEFINES:=-D_GNU_SOURCE -DCONFIG_VERSION=\"$(shell cat VERSION)\" 141 ifdef CONFIG_BIGNUM 142 DEFINES+=-DCONFIG_BIGNUM 143 endif 144 ifdef CONFIG_WIN32 145 DEFINES+=-D__USE_MINGW_ANSI_STDIO # for standard snprintf behavior 146 endif 147 ifndef CONFIG_WIN32 148 ifeq ($(shell $(CC) -o /dev/null compat/test-closefrom.c 2>/dev/null && echo 1),1) 149 DEFINES+=-DHAVE_CLOSEFROM 150 endif 151 endif 152 153 CFLAGS+=$(DEFINES) 154 CFLAGS_DEBUG=$(CFLAGS) -O0 155 CFLAGS_SMALL=$(CFLAGS) -Os 156 CFLAGS_OPT=$(CFLAGS) -O2 157 CFLAGS_NOLTO:=$(CFLAGS_OPT) 158 ifdef CONFIG_COSMO 159 LDFLAGS+=-s # better to strip by default 160 else 161 LDFLAGS+=-g 162 endif 163 ifdef CONFIG_LTO 164 CFLAGS_SMALL+=-flto 165 CFLAGS_OPT+=-flto 166 LDFLAGS+=-flto 167 endif 168 ifdef CONFIG_PROFILE 169 CFLAGS+=-p 170 LDFLAGS+=-p 171 endif 172 ifdef CONFIG_ASAN 173 CFLAGS+=-fsanitize=address -fno-omit-frame-pointer 174 LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer 175 endif 176 ifdef CONFIG_MSAN 177 CFLAGS+=-fsanitize=memory -fno-omit-frame-pointer 178 LDFLAGS+=-fsanitize=memory -fno-omit-frame-pointer 179 endif 180 ifdef CONFIG_UBSAN 181 CFLAGS+=-fsanitize=undefined -fno-omit-frame-pointer 182 LDFLAGS+=-fsanitize=undefined -fno-omit-frame-pointer 183 endif 184 ifdef CONFIG_WIN32 185 LDEXPORT= 186 else 187 LDEXPORT=-rdynamic 188 endif 189 190 ifndef CONFIG_COSMO 191 ifndef CONFIG_DARWIN 192 CONFIG_SHARED_LIBS=y # building shared libraries is supported 193 endif 194 endif 195 196 PROGS=qjs$(EXE) qjsc$(EXE) run-test262 197 ifneq ($(CROSS_PREFIX),) 198 QJSC_CC=gcc 199 QJSC=./host-qjsc 200 PROGS+=$(QJSC) 201 else 202 QJSC_CC=$(CC) 203 QJSC=./qjsc$(EXE) 204 endif 205 ifndef CONFIG_WIN32 206 PROGS+=qjscalc 207 endif 208 ifdef CONFIG_M32 209 PROGS+=qjs32 qjs32_s 210 endif 211 PROGS+=libquickjs.a 212 ifdef CONFIG_LTO 213 PROGS+=libquickjs.lto.a 214 endif 215 216 # examples 217 ifeq ($(CROSS_PREFIX),) 218 ifndef CONFIG_ASAN 219 ifndef CONFIG_MSAN 220 ifndef CONFIG_UBSAN 221 PROGS+=examples/hello examples/hello_module examples/test_fib 222 ifdef CONFIG_SHARED_LIBS 223 PROGS+=examples/fib.so examples/point.so 224 endif 225 endif 226 endif 227 endif 228 endif 229 230 all: $(OBJDIR) $(OBJDIR)/quickjs.check.o $(OBJDIR)/qjs.check.o $(PROGS) 231 232 QJS_LIB_OBJS=$(OBJDIR)/quickjs.o $(OBJDIR)/libregexp.o $(OBJDIR)/libunicode.o $(OBJDIR)/cutils.o $(OBJDIR)/quickjs-libc.o $(OBJDIR)/libbf.o 233 234 QJS_OBJS=$(OBJDIR)/qjs.o $(OBJDIR)/repl.o $(QJS_LIB_OBJS) 235 ifdef CONFIG_BIGNUM 236 QJS_OBJS+=$(OBJDIR)/qjscalc.o 237 endif 238 239 HOST_LIBS=-lm -ldl -lpthread -lcurl -lsodium -lmbedcrypto 240 LIBS=-lm -lcurl -lsodium -lmbedcrypto 241 ifndef CONFIG_WIN32 242 LIBS+=-ldl -lpthread 243 endif 244 LIBS+=$(EXTRA_LIBS) 245 246 $(OBJDIR): 247 mkdir -p $(OBJDIR) $(OBJDIR)/examples $(OBJDIR)/tests 248 249 qjs$(EXE): $(QJS_OBJS) 250 $(CC) $(LDFLAGS) $(LDEXPORT) -o $@ $^ $(LIBS) 251 252 qjs-debug$(EXE): $(patsubst %.o, %.debug.o, $(QJS_OBJS)) 253 $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) 254 255 qjsc$(EXE): $(OBJDIR)/qjsc.o $(QJS_LIB_OBJS) 256 $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) 257 258 fuzz_eval: $(OBJDIR)/fuzz_eval.o $(OBJDIR)/fuzz_common.o libquickjs.fuzz.a 259 $(CC) $(CFLAGS_OPT) $^ -o fuzz_eval $(LIB_FUZZING_ENGINE) 260 261 fuzz_compile: $(OBJDIR)/fuzz_compile.o $(OBJDIR)/fuzz_common.o libquickjs.fuzz.a 262 $(CC) $(CFLAGS_OPT) $^ -o fuzz_compile $(LIB_FUZZING_ENGINE) 263 264 fuzz_regexp: $(OBJDIR)/fuzz_regexp.o $(OBJDIR)/libregexp.fuzz.o $(OBJDIR)/cutils.fuzz.o $(OBJDIR)/libunicode.fuzz.o 265 $(CC) $(CFLAGS_OPT) $^ -o fuzz_regexp $(LIB_FUZZING_ENGINE) 266 267 libfuzzer: fuzz_eval fuzz_compile fuzz_regexp 268 269 ifneq ($(CROSS_PREFIX),) 270 271 $(QJSC): $(OBJDIR)/qjsc.host.o \ 272 $(patsubst %.o, %.host.o, $(QJS_LIB_OBJS)) 273 $(HOST_CC) $(LDFLAGS) -o $@ $^ $(HOST_LIBS) 274 275 endif #CROSS_PREFIX 276 277 QJSC_DEFINES:=-DCONFIG_CC=\"$(QJSC_CC)\" -DCONFIG_PREFIX=\"$(PREFIX)\" 278 ifdef CONFIG_LTO 279 QJSC_DEFINES+=-DCONFIG_LTO 280 endif 281 QJSC_HOST_DEFINES:=-DCONFIG_CC=\"$(HOST_CC)\" -DCONFIG_PREFIX=\"$(PREFIX)\" 282 283 $(OBJDIR)/qjsc.o: CFLAGS+=$(QJSC_DEFINES) 284 $(OBJDIR)/qjsc.host.o: CFLAGS+=$(QJSC_HOST_DEFINES) 285 286 qjs32: $(patsubst %.o, %.m32.o, $(QJS_OBJS)) 287 $(CC) -m32 $(LDFLAGS) $(LDEXPORT) -o $@ $^ $(LIBS) 288 289 qjs32_s: $(patsubst %.o, %.m32s.o, $(QJS_OBJS)) 290 $(CC) -m32 $(LDFLAGS) -o $@ $^ $(LIBS) 291 @size $@ 292 293 qjscalc: qjs 294 ln -sf $< $@ 295 296 ifdef CONFIG_LTO 297 LTOEXT=.lto 298 else 299 LTOEXT= 300 endif 301 302 libquickjs$(LTOEXT).a: $(QJS_LIB_OBJS) 303 $(AR) rcs $@ $^ 304 305 ifdef CONFIG_LTO 306 libquickjs.a: $(patsubst %.o, %.nolto.o, $(QJS_LIB_OBJS)) 307 $(AR) rcs $@ $^ 308 endif # CONFIG_LTO 309 310 libquickjs.fuzz.a: $(patsubst %.o, %.fuzz.o, $(QJS_LIB_OBJS)) 311 $(AR) rcs $@ $^ 312 313 repl.c: $(QJSC) repl.js 314 $(QJSC) -c -o $@ -m repl.js 315 316 qjscalc.c: $(QJSC) qjscalc.js 317 $(QJSC) -fbignum -c -o $@ qjscalc.js 318 319 ifneq ($(wildcard unicode/UnicodeData.txt),) 320 $(OBJDIR)/libunicode.o $(OBJDIR)/libunicode.m32.o $(OBJDIR)/libunicode.m32s.o \ 321 $(OBJDIR)/libunicode.nolto.o: libunicode-table.h 322 323 libunicode-table.h: unicode_gen 324 ./unicode_gen unicode $@ 325 endif 326 327 run-test262: $(OBJDIR)/run-test262.o $(QJS_LIB_OBJS) 328 $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) 329 330 run-test262-debug: $(patsubst %.o, %.debug.o, $(OBJDIR)/run-test262.o $(QJS_LIB_OBJS)) 331 $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) 332 333 run-test262-32: $(patsubst %.o, %.m32.o, $(OBJDIR)/run-test262.o $(QJS_LIB_OBJS)) 334 $(CC) -m32 $(LDFLAGS) -o $@ $^ $(LIBS) 335 336 # object suffix order: nolto, [m32|m32s] 337 338 $(OBJDIR)/%.o: %.c | $(OBJDIR) 339 $(CC) $(CFLAGS_OPT) -c -o $@ $< 340 341 $(OBJDIR)/fuzz_%.o: fuzz/fuzz_%.c | $(OBJDIR) 342 $(CC) $(CFLAGS_OPT) -c -I. -o $@ $< 343 344 $(OBJDIR)/%.host.o: %.c | $(OBJDIR) 345 $(HOST_CC) $(CFLAGS_OPT) -c -o $@ $< 346 347 $(OBJDIR)/%.pic.o: %.c | $(OBJDIR) 348 $(CC) $(CFLAGS_OPT) -fPIC -DJS_SHARED_LIBRARY -c -o $@ $< 349 350 $(OBJDIR)/%.nolto.o: %.c | $(OBJDIR) 351 $(CC) $(CFLAGS_NOLTO) -c -o $@ $< 352 353 $(OBJDIR)/%.m32.o: %.c | $(OBJDIR) 354 $(CC) -m32 $(CFLAGS_OPT) -c -o $@ $< 355 356 $(OBJDIR)/%.m32s.o: %.c | $(OBJDIR) 357 $(CC) -m32 $(CFLAGS_SMALL) -c -o $@ $< 358 359 $(OBJDIR)/%.debug.o: %.c | $(OBJDIR) 360 $(CC) $(CFLAGS_DEBUG) -c -o $@ $< 361 362 $(OBJDIR)/%.fuzz.o: %.c | $(OBJDIR) 363 $(CC) $(CFLAGS_OPT) -fsanitize=fuzzer-no-link -c -o $@ $< 364 365 $(OBJDIR)/%.check.o: %.c | $(OBJDIR) 366 $(CC) $(CFLAGS) -DCONFIG_CHECK_JSVALUE -c -o $@ $< 367 368 regexp_test: libregexp.c libunicode.c cutils.c 369 $(CC) $(LDFLAGS) $(CFLAGS) -DTEST -o $@ libregexp.c libunicode.c cutils.c $(LIBS) 370 371 unicode_gen: $(OBJDIR)/unicode_gen.host.o $(OBJDIR)/cutils.host.o libunicode.c unicode_gen_def.h 372 $(HOST_CC) $(LDFLAGS) $(CFLAGS) -o $@ $(OBJDIR)/unicode_gen.host.o $(OBJDIR)/cutils.host.o 373 374 clean: 375 rm -f repl.c qjscalc.c out.c 376 rm -f *.a *.o *.d *~ unicode_gen regexp_test fuzz_eval fuzz_compile fuzz_regexp $(PROGS) 377 rm -f hello.c test_fib.c 378 rm -f examples/*.so tests/*.so 379 rm -rf $(OBJDIR)/ *.dSYM/ qjs-debug 380 rm -rf run-test262-debug run-test262-32 381 rm -f run_octane run_sunspider_like 382 383 install: all 384 mkdir -p "$(DESTDIR)$(PREFIX)/bin" 385 $(STRIP) qjs$(EXE) qjsc$(EXE) 386 install -m755 qjs$(EXE) qjsc$(EXE) "$(DESTDIR)$(PREFIX)/bin" 387 ln -sf qjs$(EXE) "$(DESTDIR)$(PREFIX)/bin/qjscalc$(EXE)" 388 mkdir -p "$(DESTDIR)$(PREFIX)/lib/quickjs" 389 install -m644 libquickjs.a "$(DESTDIR)$(PREFIX)/lib/quickjs" 390 ifdef CONFIG_LTO 391 install -m644 libquickjs.lto.a "$(DESTDIR)$(PREFIX)/lib/quickjs" 392 endif 393 mkdir -p "$(DESTDIR)$(PREFIX)/include/quickjs" 394 install -m644 quickjs.h quickjs-libc.h "$(DESTDIR)$(PREFIX)/include/quickjs" 395 396 ############################################################################### 397 # examples 398 399 # example of static JS compilation 400 HELLO_SRCS=examples/hello.js 401 HELLO_OPTS=-fno-string-normalize -fno-map -fno-promise -fno-typedarray \ 402 -fno-typedarray -fno-regexp -fno-json -fno-eval -fno-proxy \ 403 -fno-date -fno-module-loader -fno-bigint 404 405 hello.c: $(QJSC) $(HELLO_SRCS) 406 $(QJSC) -e $(HELLO_OPTS) -o $@ $(HELLO_SRCS) 407 408 ifdef CONFIG_M32 409 examples/hello: $(OBJDIR)/hello.m32s.o $(patsubst %.o, %.m32s.o, $(QJS_LIB_OBJS)) 410 $(CC) -m32 $(LDFLAGS) -o $@ $^ $(LIBS) 411 else 412 examples/hello: $(OBJDIR)/hello.o $(QJS_LIB_OBJS) 413 $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) 414 endif 415 416 # example of static JS compilation with modules 417 HELLO_MODULE_SRCS=examples/hello_module.js 418 HELLO_MODULE_OPTS=-fno-string-normalize -fno-map -fno-promise -fno-typedarray \ 419 -fno-typedarray -fno-regexp -fno-json -fno-eval -fno-proxy \ 420 -fno-date -m 421 examples/hello_module: $(QJSC) libquickjs$(LTOEXT).a $(HELLO_MODULE_SRCS) 422 $(QJSC) $(HELLO_MODULE_OPTS) -o $@ $(HELLO_MODULE_SRCS) 423 424 # use of an external C module (static compilation) 425 426 test_fib.c: $(QJSC) examples/test_fib.js 427 $(QJSC) -e -M examples/fib.so,fib -m -o $@ examples/test_fib.js 428 429 examples/test_fib: $(OBJDIR)/test_fib.o $(OBJDIR)/examples/fib.o libquickjs$(LTOEXT).a 430 $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) 431 432 examples/fib.so: $(OBJDIR)/examples/fib.pic.o 433 $(CC) $(LDFLAGS) -shared -o $@ $^ 434 435 examples/point.so: $(OBJDIR)/examples/point.pic.o 436 $(CC) $(LDFLAGS) -shared -o $@ $^ 437 438 ############################################################################### 439 # documentation 440 441 DOCS=doc/quickjs.pdf doc/quickjs.html doc/jsbignum.pdf doc/jsbignum.html 442 443 build_doc: $(DOCS) 444 445 clean_doc: 446 rm -f $(DOCS) 447 448 doc/%.pdf: doc/%.texi 449 texi2pdf --clean -o $@ -q $< 450 451 doc/%.html.pre: doc/%.texi 452 makeinfo --html --no-headers --no-split --number-sections -o $@ $< 453 454 doc/%.html: doc/%.html.pre 455 sed -e 's|</style>|</style>\n<meta name="viewport" content="width=device-width, initial-scale=1.0">|' < $< > $@ 456 457 ############################################################################### 458 # tests 459 460 ifdef CONFIG_SHARED_LIBS 461 test: tests/bjson.so examples/point.so 462 endif 463 ifdef CONFIG_M32 464 test: qjs32 465 endif 466 467 test: qjs 468 ./qjs tests/test_closure.js 469 ./qjs tests/test_language.js 470 ./qjs --std tests/test_builtin.js 471 ./qjs tests/test_loop.js 472 ./qjs tests/test_bignum.js 473 ./qjs tests/test_std.js 474 ./qjs tests/test_worker.js 475 ifdef CONFIG_SHARED_LIBS 476 ifdef CONFIG_BIGNUM 477 ./qjs --bignum tests/test_bjson.js 478 else 479 ./qjs tests/test_bjson.js 480 endif 481 ./qjs examples/test_point.js 482 endif 483 ifdef CONFIG_BIGNUM 484 ./qjs --bignum tests/test_op_overloading.js 485 ./qjs --bignum tests/test_bigfloat.js 486 ./qjs --qjscalc tests/test_qjscalc.js 487 endif 488 ifdef CONFIG_M32 489 ./qjs32 tests/test_closure.js 490 ./qjs32 tests/test_language.js 491 ./qjs32 --std tests/test_builtin.js 492 ./qjs32 tests/test_loop.js 493 ./qjs32 tests/test_bignum.js 494 ./qjs32 tests/test_std.js 495 ./qjs32 tests/test_worker.js 496 ifdef CONFIG_BIGNUM 497 ./qjs32 --bignum tests/test_op_overloading.js 498 ./qjs32 --bignum tests/test_bigfloat.js 499 ./qjs32 --qjscalc tests/test_qjscalc.js 500 endif 501 endif 502 503 stats: qjs qjs32 504 ./qjs -qd 505 ./qjs32 -qd 506 507 microbench: qjs 508 ./qjs --std tests/microbench.js 509 510 microbench-32: qjs32 511 ./qjs32 --std tests/microbench.js 512 513 ifeq ($(wildcard test262o/tests.txt),) 514 test2o test2o-32 test2o-update: 515 @echo test262o tests not installed 516 else 517 # ES5 tests (obsolete) 518 test2o: run-test262 519 time ./run-test262 -t -m -c test262o.conf 520 521 test2o-32: run-test262-32 522 time ./run-test262-32 -t -m -c test262o.conf 523 524 test2o-update: run-test262 525 ./run-test262 -t -u -c test262o.conf 526 endif 527 528 ifeq ($(wildcard test262/features.txt),) 529 test2 test2-32 test2-update test2-default test2-check: 530 @echo test262 tests not installed 531 else 532 # Test262 tests 533 test2-default: run-test262 534 time ./run-test262 -t -m -c test262.conf 535 536 test2: run-test262 537 time ./run-test262 -t -m -c test262.conf -a 538 539 test2-32: run-test262-32 540 time ./run-test262-32 -t -m -c test262.conf -a 541 542 test2-update: run-test262 543 ./run-test262 -t -u -c test262.conf -a 544 545 test2-check: run-test262 546 time ./run-test262 -t -m -c test262.conf -E -a 547 endif 548 549 testall: all test microbench test2o test2 550 551 testall-32: all test-32 microbench-32 test2o-32 test2-32 552 553 testall-complete: testall testall-32 554 555 node-test: 556 node tests/test_closure.js 557 node tests/test_language.js 558 node tests/test_builtin.js 559 node tests/test_loop.js 560 node tests/test_bignum.js 561 562 node-microbench: 563 node tests/microbench.js -s microbench-node.txt 564 node --jitless tests/microbench.js -s microbench-node-jitless.txt 565 566 bench-v8: qjs 567 make -C tests/bench-v8 568 ./qjs -d tests/bench-v8/combined.js 569 570 node-bench-v8: 571 make -C tests/bench-v8 572 node --jitless tests/bench-v8/combined.js 573 574 tests/bjson.so: $(OBJDIR)/tests/bjson.pic.o 575 $(CC) $(LDFLAGS) -shared -o $@ $^ $(LIBS) 576 577 BENCHMARKDIR=../quickjs-benchmarks 578 579 run_sunspider_like: $(BENCHMARKDIR)/run_sunspider_like.c 580 $(CC) $(CFLAGS) $(LDFLAGS) -DNO_INCLUDE_DIR -I. -o $@ $< libquickjs$(LTOEXT).a $(LIBS) 581 582 run_octane: $(BENCHMARKDIR)/run_octane.c 583 $(CC) $(CFLAGS) $(LDFLAGS) -DNO_INCLUDE_DIR -I. -o $@ $< libquickjs$(LTOEXT).a $(LIBS) 584 585 benchmarks: run_sunspider_like run_octane 586 ./run_sunspider_like $(BENCHMARKDIR)/kraken-1.0/ 587 ./run_sunspider_like $(BENCHMARKDIR)/kraken-1.1/ 588 ./run_sunspider_like $(BENCHMARKDIR)/sunspider-1.0/ 589 ./run_octane $(BENCHMARKDIR)/ 590 591 -include $(wildcard $(OBJDIR)/*.d)