@@ -33,12 +33,8 @@ CONFIG_LTO=y
3333# CONFIG_WERROR=y
3434# force 32 bit build for some utilities
3535# CONFIG_M32=y
36-
37- ifdef CONFIG_DARWIN
38- # use clang instead of gcc
39- CONFIG_CLANG =y
40- CONFIG_DEFAULT_AR =y
41- endif
36+ # cosmopolitan build (see https://github.com/jart/cosmopolitan)
37+ # CONFIG_COSMO=y
4238
4339# installation directory
4440prefix =/usr/local
@@ -52,6 +48,12 @@ CONFIG_BIGNUM=y
5248
5349OBJDIR =.obj
5450
51+ ifdef CONFIG_DARWIN
52+ # use clang instead of gcc
53+ CONFIG_CLANG =y
54+ CONFIG_DEFAULT_AR =y
55+ endif
56+
5557ifdef CONFIG_WIN32
5658 ifdef CONFIG_M32
5759 CROSS_PREFIX =i686-w64-mingw32-
6365 CROSS_PREFIX =
6466 EXE =
6567endif
68+
6669ifdef CONFIG_CLANG
6770 HOST_CC =clang
6871 CC =$(CROSS_PREFIX ) clang
@@ -84,6 +87,14 @@ ifdef CONFIG_CLANG
8487 AR =$(CROSS_PREFIX ) ar
8588 endif
8689 endif
90+ else ifdef CONFIG_COSMO
91+ CONFIG_LTO =
92+ HOST_CC =gcc
93+ CC =cosmocc
94+ # cosmocc does not correct support -MF
95+ CFLAGS =-g -Wall # -MMD -MF $(OBJDIR)/$(@F).d
96+ CFLAGS += -Wno-array-bounds -Wno-format-truncation
97+ AR =cosmoar
8798else
8899 HOST_CC =gcc
89100 CC =$(CROSS_PREFIX ) gcc
@@ -113,7 +124,11 @@ CFLAGS_DEBUG=$(CFLAGS) -O0
113124CFLAGS_SMALL =$(CFLAGS ) -Os
114125CFLAGS_OPT =$(CFLAGS ) -O2
115126CFLAGS_NOLTO: =$(CFLAGS_OPT )
127+ ifdef CONFIG_COSMO
128+ LDFLAGS =-s # better to strip by default
129+ else
116130LDFLAGS =-g
131+ endif
117132ifdef CONFIG_LTO
118133CFLAGS_SMALL+ =-flto
119134CFLAGS_OPT+ =-flto
@@ -133,6 +148,12 @@ else
133148LDEXPORT =-rdynamic
134149endif
135150
151+ ifndef CONFIG_COSMO
152+ ifndef CONFIG_DARWIN
153+ CONFIG_SHARED_LIBS =y # building shared libraries is supported
154+ endif
155+ endif
156+
136157PROGS =qjs$(EXE ) qjsc$(EXE ) run-test262
137158ifneq ($(CROSS_PREFIX ) ,)
138159QJSC_CC =gcc
@@ -157,10 +178,10 @@ endif
157178ifeq ($(CROSS_PREFIX ) ,)
158179PROGS+ =examples/hello
159180ifndef CONFIG_ASAN
160- PROGS+ =examples/hello_module examples/test_fib
161- ifndef CONFIG_DARWIN
162- PROGS+ =examples/fib.so examples/point.so
181+ PROGS+ =examples/hello_module
163182endif
183+ ifdef CONFIG_SHARED_LIBS
184+ PROGS+ =examples/test_fib examples/fib.so examples/point.so
164185endif
165186endif
166187
@@ -373,7 +394,7 @@ doc/%.html: doc/%.html.pre
373394# ##############################################################################
374395# tests
375396
376- ifndef CONFIG_DARWIN
397+ ifdef CONFIG_SHARED_LIBS
377398test : tests/bjson.so examples/point.so
378399endif
379400ifdef CONFIG_M32
@@ -387,7 +408,7 @@ test: qjs
387408./qjs tests/test_loop.js
388409./qjs tests/test_std.js
389410./qjs tests/test_worker.js
390- ifndef CONFIG_DARWIN
411+ ifdef CONFIG_SHARED_LIBS
391412ifdef CONFIG_BIGNUM
392413./qjs --bignum tests/test_bjson.js
393414else
0 commit comments