cosmopolitan/third_party/duktape/duktape.mk
Justine Tunney e75ffde09e Get codebase completely working with LLVM
You can now build Cosmopolitan with Clang:

    make -j8 MODE=llvm
    o/llvm/examples/hello.com

The assembler and linker code is now friendly to LLVM too.
So it's not needed to configure Clang to use binutils under
the hood. If you love LLVM then you can now use pure LLVM.
2021-02-09 02:57:32 -08:00

73 lines
2.9 KiB
Makefile

#-*-mode:makefile-gmake;indent-tabs-mode:t;tab-width:8;coding:utf-8-*-┐
#───vi: set et ft=make ts=8 tw=8 fenc=utf-8 :vi───────────────────────┘
PKGS += THIRD_PARTY_DUKTAPE
THIRD_PARTY_DUKTAPE_ARTIFACTS += THIRD_PARTY_DUKTAPE_A
THIRD_PARTY_DUKTAPE = $(THIRD_PARTY_DUKTAPE_A_DEPS) $(THIRD_PARTY_DUKTAPE_A)
THIRD_PARTY_DUKTAPE_A = o/$(MODE)/third_party/duktape/duktape.a
THIRD_PARTY_DUKTAPE_A_FILES := $(wildcard third_party/duktape/*)
THIRD_PARTY_DUKTAPE_A_HDRS = $(filter %.h,$(THIRD_PARTY_DUKTAPE_A_FILES))
THIRD_PARTY_DUKTAPE_A_INCS = $(filter %.inc,$(THIRD_PARTY_DUKTAPE_A_FILES))
THIRD_PARTY_DUKTAPE_A_SRCS_A = $(filter %.s,$(THIRD_PARTY_DUKTAPE_A_FILES))
THIRD_PARTY_DUKTAPE_A_SRCS_S = $(filter %.S,$(THIRD_PARTY_DUKTAPE_A_FILES))
THIRD_PARTY_DUKTAPE_A_SRCS_C = $(filter %.c,$(THIRD_PARTY_DUKTAPE_A_FILES))
THIRD_PARTY_DUKTAPE_A_SRCS = \
$(THIRD_PARTY_DUKTAPE_A_SRCS_A) \
$(THIRD_PARTY_DUKTAPE_A_SRCS_S) \
$(THIRD_PARTY_DUKTAPE_A_SRCS_C)
THIRD_PARTY_DUKTAPE_A_OBJS = \
$(THIRD_PARTY_DUKTAPE_A_SRCS_A:%.s=o/$(MODE)/%.o) \
$(THIRD_PARTY_DUKTAPE_A_SRCS_S:%.S=o/$(MODE)/%.o) \
$(THIRD_PARTY_DUKTAPE_A_SRCS_C:%.c=o/$(MODE)/%.o)
THIRD_PARTY_DUKTAPE_A_CHECKS = \
$(THIRD_PARTY_DUKTAPE_A).pkg
THIRD_PARTY_DUKTAPE_A_DIRECTDEPS = \
LIBC_CALLS \
LIBC_FMT \
LIBC_INTRIN \
LIBC_MEM \
LIBC_STR \
LIBC_STUBS \
LIBC_TIME \
LIBC_RUNTIME \
LIBC_TINYMATH \
LIBC_UNICODE \
LIBC_NEXGEN32E
THIRD_PARTY_DUKTAPE_A_DEPS := \
$(call uniq,$(foreach x,$(THIRD_PARTY_DUKTAPE_A_DIRECTDEPS),$($(x))))
$(THIRD_PARTY_DUKTAPE_A): \
third_party/duktape/ \
$(THIRD_PARTY_DUKTAPE_A).pkg \
$(THIRD_PARTY_DUKTAPE_A_OBJS)
$(THIRD_PARTY_DUKTAPE_A).pkg: \
$(THIRD_PARTY_DUKTAPE_A_OBJS) \
$(foreach x,$(THIRD_PARTY_DUKTAPE_A_DIRECTDEPS),$($(x)_A).pkg)
$(THIRD_PARTY_DUKTAPE_A_OBJS): \
OVERRIDE_CFLAGS += \
$(IEEE_MATH)
o/dbg/third_party/duktape/duk_js_executor.o: \
OVERRIDE_CFLAGS += \
-DSTACK_FRAME_UNLIMITED
THIRD_PARTY_DUKTAPE_LIBS = $(foreach x,$(THIRD_PARTY_DUKTAPE_ARTIFACTS),$($(x)))
THIRD_PARTY_DUKTAPE_SRCS = $(foreach x,$(THIRD_PARTY_DUKTAPE_ARTIFACTS),$($(x)_SRCS))
THIRD_PARTY_DUKTAPE_HDRS = $(foreach x,$(THIRD_PARTY_DUKTAPE_ARTIFACTS),$($(x)_HDRS))
THIRD_PARTY_DUKTAPE_INCS = $(foreach x,$(THIRD_PARTY_DUKTAPE_ARTIFACTS),$($(x)_INCS))
THIRD_PARTY_DUKTAPE_BINS = $(foreach x,$(THIRD_PARTY_DUKTAPE_ARTIFACTS),$($(x)_BINS))
THIRD_PARTY_DUKTAPE_CHECKS = $(foreach x,$(THIRD_PARTY_DUKTAPE_ARTIFACTS),$($(x)_CHECKS))
THIRD_PARTY_DUKTAPE_OBJS = $(foreach x,$(THIRD_PARTY_DUKTAPE_ARTIFACTS),$($(x)_OBJS))
THIRD_PARTY_DUKTAPE_TESTS = $(foreach x,$(THIRD_PARTY_DUKTAPE_ARTIFACTS),$($(x)_TESTS))
$(THIRD_PARTY_DUKTAPE_OBJS): third_party/duktape/duktape.mk
.PHONY: o/$(MODE)/third_party/duktape
o/$(MODE)/third_party/duktape: $(THIRD_PARTY_DUKTAPE) $(THIRD_PARTY_DUKTAPE_CHECKS)