PKG_CPPFLAGS = -I"../inst/include/" -DSTRICT_R_HEADERS -D_GNU_SOURCE -DCONFIG_BIGNUM 
PKG_CPPFLAGS += -DCONFIG_VERSION=\"$(shell cat quickjs/VERSION)\"
PKG_LIBS = ../inst/lib/$(R_ARCH)/libquickjs.a

ifeq ($(shell getconf LONG_BIT), 32)
	PKG_LIBS += -latomic
endif

QUICKJS_C_FILES = cutils.c libbf.c libregexp.c libunicode.c quickjs.c quickjs-libc.c
QUICKJS_C_HEADERS = $(QUICKJS_C_FILES:.c=.h) \
					libregexp-opcode.h libunicode-table.h list.h \
					quickjs-atom.h quickjs-opcode.h

QUICKJS_SOURCES = $(QUICKJS_C_FILES:%=quickjs/%)
QUICKJS_OBJECTS = $(QUICKJS_SOURCES:.c=.o)

SOURCES = quickjsr_impl.c quickjsr.cpp init.cpp
OBJECTS = quickjsr_impl.o quickjsr.o init.o

.PHONY: all package-quickjs build-static

all: package-quickjs $(SHLIB)

$(SHLIB): build-static

package-quickjs:
	@mkdir -p ../inst/include
	@cp $(QUICKJS_C_HEADERS:%=quickjs/%) ../inst/include
	@cp quickjs/VERSION ../inst/

build-static: $(QUICKJS_OBJECTS)
	@mkdir -p ../inst/lib/$(R_ARCH)
	$(AR) -rs ../inst/lib/$(R_ARCH)/libquickjs.a $(QUICKJS_OBJECTS)

$(QUICKJS_OBJECTS): quickjs/%.o : quickjs/%.c
	$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -funsigned-char -fwrapv -std=c11 -c $< -o $@

clean:
	$(RM) $(QUICKJS_OBJECTS) ../inst/lib/$(R_ARCH)/libquickjs.a
