--- Makefile.orig 2025-07-12 12:03:32.908750000 -0400 +++ Makefile 2025-07-12 12:08:54.639258000 -0400 @@ -98,6 +98,7 @@ HOST_CC=clang CC=$(CROSS_PREFIX)clang CFLAGS+=-g -Wall -MMD -MF $(OBJDIR)/$(@F).d + CFLAGS += -fPIC CFLAGS += -Wextra CFLAGS += -Wno-sign-compare CFLAGS += -Wno-missing-field-initializers @@ -212,9 +213,9 @@ QJSC_CC=$(CC) QJSC=./qjsc$(EXE) endif -PROGS+=libquickjs.a +PROGS+=libquickjs.so ifdef CONFIG_LTO -PROGS+=libquickjs.lto.a +PROGS+=libquickjs.lto.so endif # examples @@ -296,12 +297,12 @@ LTOEXT= endif -libquickjs$(LTOEXT).a: $(QJS_LIB_OBJS) - $(AR) rcs $@ $^ +libquickjs$(LTOEXT).so: $(QJS_LIB_OBJS) + $(CC) -shared -Wl,-soname=$@.0 $(LDFLAGS) -o $@ $^ ifdef CONFIG_LTO -libquickjs.a: $(patsubst %.o, %.nolto.o, $(QJS_LIB_OBJS)) - $(AR) rcs $@ $^ +libquickjs.so: $(patsubst %.o, %.nolto.o, $(QJS_LIB_OBJS)) + $(CC) -shared -Wl,-soname=$@.0 $(LDFLAGS) -o $@ $^ endif # CONFIG_LTO libquickjs.fuzz.a: $(patsubst %.o, %.fuzz.o, $(QJS_LIB_OBJS)) @@ -368,10 +369,14 @@ mkdir -p "$(DESTDIR)$(PREFIX)/bin" $(STRIP) qjs$(EXE) qjsc$(EXE) install -m755 qjs$(EXE) qjsc$(EXE) "$(DESTDIR)$(PREFIX)/bin" - mkdir -p "$(DESTDIR)$(PREFIX)/lib/quickjs" - install -m644 libquickjs.a "$(DESTDIR)$(PREFIX)/lib/quickjs" + mkdir -p "$(DESTDIR)$(PREFIX)/lib" + install -m644 libquickjs.so "$(DESTDIR)$(PREFIX)/lib/libquickjs.so.0.0.0" + install -l rs "$(DESTDIR)$(PREFIX)/lib/libquickjs.so.0.0.0" "$(DESTDIR)$(PREFIX)/lib/libquickjs.so" + install -l rs "$(DESTDIR)$(PREFIX)/lib/libquickjs.so.0.0.0" "$(DESTDIR)$(PREFIX)/lib/libquickjs.so.0" ifdef CONFIG_LTO - install -m644 libquickjs.lto.a "$(DESTDIR)$(PREFIX)/lib/quickjs" + install -m644 libquickjs.lto.so "$(DESTDIR)$(PREFIX)/lib/libquickjs.so.0.0.0" + install -l rs "$(DESTDIR)$(PREFIX)/lib/libquickjs.lto.so.0.0.0" "$(DESTDIR)$(PREFIX)/lib/libquickjs.lto.so" + install -l rs "$(DESTDIR)$(PREFIX)/lib/libquickjs.lto.so.0.0.0" "$(DESTDIR)$(PREFIX)/lib/libquickjs.lto.so.0" endif mkdir -p "$(DESTDIR)$(PREFIX)/include/quickjs" install -m644 quickjs.h quickjs-libc.h "$(DESTDIR)$(PREFIX)/include/quickjs" @@ -396,7 +401,7 @@ HELLO_MODULE_OPTS=-fno-string-normalize -fno-map -fno-typedarray \ -fno-typedarray -fno-regexp -fno-json -fno-eval -fno-proxy \ -fno-date -m -examples/hello_module: $(QJSC) libquickjs$(LTOEXT).a $(HELLO_MODULE_SRCS) +examples/hello_module: $(QJSC) libquickjs$(LTOEXT).so $(HELLO_MODULE_SRCS) $(QJSC) $(HELLO_MODULE_OPTS) -o $@ $(HELLO_MODULE_SRCS) # use of an external C module (static compilation) @@ -404,7 +409,7 @@ test_fib.c: $(QJSC) examples/test_fib.js $(QJSC) -e -M examples/fib.so,fib -m -o $@ examples/test_fib.js -examples/test_fib: $(OBJDIR)/test_fib.o $(OBJDIR)/examples/fib.o libquickjs$(LTOEXT).a +examples/test_fib: $(OBJDIR)/test_fib.o $(OBJDIR)/examples/fib.o libquickjs$(LTOEXT).so $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) examples/fib.so: $(OBJDIR)/examples/fib.pic.o