@@ -29,6 +29,9 @@ ifeq ($(shell uname -s),FreeBSD)
2929CONFIG_FREEBSD =y
3030endif
3131# Windows cross compilation from Linux
32+ # May need to have libwinpthread*.dll alongside the executable
33+ # (On Ubuntu/Debian may be installed with mingw-w64-x86-64-dev
34+ # to /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll)
3235# CONFIG_WIN32=y
3336# use link time optimization (smaller and faster executables but slower build)
3437# CONFIG_LTO=y
@@ -82,6 +85,10 @@ ifdef CONFIG_WIN32
8285 CROSS_PREFIX? =x86_64-w64-mingw32-
8386 endif
8487 EXE =.exe
88+ else ifdef MSYSTEM
89+ CONFIG_WIN32 =y
90+ CROSS_PREFIX? =
91+ EXE =.exe
8592else
8693 CROSS_PREFIX? =
8794 EXE =
@@ -189,11 +196,14 @@ endif
189196
190197ifndef CONFIG_COSMO
191198ifndef CONFIG_DARWIN
199+ ifndef CONFIG_WIN32
192200CONFIG_SHARED_LIBS =y # building shared libraries is supported
193201endif
194202endif
203+ endif
204+
205+ PROGS =qjs$(EXE ) qjsc$(EXE ) run-test262$(EXE )
195206
196- PROGS =qjs$(EXE ) qjsc$(EXE ) run-test262
197207ifneq ($(CROSS_PREFIX ) ,)
198208QJSC_CC =gcc
199209QJSC =./host-qjsc
@@ -215,8 +225,10 @@ ifndef CONFIG_UBSAN
215225PROGS+ =examples/hello examples/test_fib
216226# no -m32 option in qjsc
217227ifndef CONFIG_M32
228+ ifndef CONFIG_WIN32
218229PROGS+ =examples/hello_module
219230endif
231+ endif
220232ifdef CONFIG_SHARED_LIBS
221233PROGS+ =examples/fib.so examples/point.so
222234endif
@@ -232,9 +244,9 @@ QJS_LIB_OBJS=$(OBJDIR)/quickjs.o $(OBJDIR)/dtoa.o $(OBJDIR)/libregexp.o $(OBJDIR
232244QJS_OBJS =$(OBJDIR ) /qjs.o $(OBJDIR ) /repl.o $(QJS_LIB_OBJS )
233245
234246HOST_LIBS =-lm -ldl -lpthread
235- LIBS =-lm
247+ LIBS =-lm -lpthread
236248ifndef CONFIG_WIN32
237- LIBS+ =-ldl -lpthread
249+ LIBS+ =-ldl
238250endif
239251LIBS+ =$(EXTRA_LIBS )
240252
@@ -305,7 +317,7 @@ libunicode-table.h: unicode_gen
305317 ./unicode_gen unicode $@
306318endif
307319
308- run-test262 : $(OBJDIR ) /run-test262.o $(QJS_LIB_OBJS )
320+ run-test262$( EXE ) : $(OBJDIR ) /run-test262.o $(QJS_LIB_OBJS )
309321 $(CC ) $(LDFLAGS ) -o $@ $^ $(LIBS )
310322
311323run-test262-debug : $(patsubst % .o, % .debug.o, $(OBJDIR ) /run-test262.o $(QJS_LIB_OBJS ) )
@@ -348,8 +360,8 @@ clean:
348360 rm -f * .a * .o * .d * ~ unicode_gen regexp_test fuzz_eval fuzz_compile fuzz_regexp $(PROGS )
349361 rm -f hello.c test_fib.c
350362 rm -f examples/* .so tests/* .so
351- rm -rf $(OBJDIR ) / * .dSYM/ qjs-debug
352- rm -rf run-test262-debug
363+ rm -rf $(OBJDIR ) / * .dSYM/ qjs-debug$( EXE )
364+ rm -rf run-test262-debug$( EXE )
353365 rm -f run_octane run_sunspider_like
354366
355367install : all
@@ -427,25 +439,27 @@ ifdef CONFIG_SHARED_LIBS
427439test : tests/bjson.so examples/point.so
428440endif
429441
430- test : qjs
431- ./qjs tests/test_closure.js
432- ./qjs tests/test_language.js
433- ./qjs --std tests/test_builtin.js
434- ./qjs tests/test_loop.js
435- ./qjs tests/test_bigint.js
436- ./qjs tests/test_std.js
437- ./qjs tests/test_worker.js
438- ./qjs tests/test_cyclic_import.js
442+ test : qjs$(EXE )
443+ $(WINE ) ./qjs$(EXE ) tests/test_closure.js
444+ $(WINE ) ./qjs$(EXE ) tests/test_language.js
445+ $(WINE ) ./qjs$(EXE ) --std tests/test_builtin.js
446+ $(WINE ) ./qjs$(EXE ) tests/test_loop.js
447+ $(WINE ) ./qjs$(EXE ) tests/test_bigint.js
448+ $(WINE ) ./qjs$(EXE ) tests/test_cyclic_import.js
449+ $(WINE ) ./qjs$(EXE ) tests/test_worker.js
450+ ifndef CONFIG_WIN32
451+ $(WINE) ./qjs$(EXE) tests/test_std.js
452+ endif
439453ifdef CONFIG_SHARED_LIBS
440- ./qjs tests/test_bjson.js
441- ./qjs examples/test_point.js
454+ $(WINE) ./qjs$(EXE) tests/test_bjson.js
455+ $(WINE) ./qjs$(EXE) examples/test_point.js
442456endif
443457
444- stats : qjs
445- ./qjs -qd
458+ stats : qjs$( EXE )
459+ $( WINE ) ./qjs$( EXE ) -qd
446460
447- microbench : qjs
448- ./qjs --std tests/microbench.js
461+ microbench : qjs$( EXE )
462+ $( WINE ) ./qjs$( EXE ) --std tests/microbench.js
449463
450464ifeq ($(wildcard test262o/tests.txt) ,)
451465test2o test2o-update :
0 commit comments