Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- prefix := $(WASMBUILDS)/libc/
- .DEFAULT_GOAL := all
- PATHTOMUSLSRC := ./emscripten/system/lib/libc/musl/src
- MUSLMODULES := $(shell find $(PATHTOMUSLSRC) -mindepth 1 -maxdepth 1 -type d)
- IGNOREDMODULES := ipc passwd thread signal sched ipc time linux aio exit legacy mq process search setjmp env ldso conf
- IGNOREDFILES := getaddrinfo.c getnameinfo.c inet_addr.c res_query.c gai_strerror.c proto.c gethostbyaddr.c gethostbyaddr_r.c gethostbyname.c gethostbyname2_r.c gethostbyname_r.c gethostbyname2.c usleep.c alarm.c syscall.c _exit.c
- PROCESSEDMODULES := $(filter-out $(addprefix %/, $(IGNOREDMODULES)), $(MUSLMODULES))
- CANDIDATEFILES := $(foreach module, $(PROCESSEDMODULES), $(shell find $(module) -name '*.c'))
- PATHTODLMALLOC := ./emscripten/system/lib/dlmalloc.c
- WASMLIBCFILES := $(PATHTODLMALLOC) $(filter-out $(addprefix %/, $(IGNOREDFILES)), $(CANDIDATEFILES))
- WASMLIBCNAMES := $(notdir $(basename $(WASMLIBCFILES)))
- WASMOBJS := $(addprefix obj/, $(addsuffix .o, $(WASMLIBCNAMES)))
- vpath %.c $(sort $(dir $(WASMLIBCFILES)))
- obj lib:
- mkdir $@
- $(WASMOBJS): obj/%.o: %.c | obj
- @$$CC $$CFLAGS -I ./emscripten/system/lib/libc/musl/src/internal -Os \
- -Werror=implicit-function-declaration -Wno-return-type -Wno-parentheses \
- -Wno-ignored-attributes -Wno-shift-count-overflow -Wno-shift-negative-value \
- -Wno-dangling-else -Wno-unknown-pragmas -Wno-shift-op-parentheses -D __EMSCRIPTEN__ \
- -Wno-string-plus-int -Wno-logical-op-parentheses -Wno-bitwise-op-parentheses \
- -Wno-visibility -Wno-pointer-sign -isystem ./emscripten/system/include \
- -isystem ./emscripten/system/include/libc -isystem ./emscripten/system/lib/libc/musl/arch/emscripten \
- -static -c -o $@ $<
- lib/libc.a: $(WASMOBJS) | lib
- @$$AR rcs $@ $(WASMOBJS)
- all: lib/libc.a
- clean:
- rm -rf lib
- rm -rf obj
- install: lib/libc.a
- mkdir $(prefix)/lib
- mkdir $(prefix)/include
- cp ./lib/libc.a $(prefix)/lib/
- cp ./emscripten/system/include/emscripten.h $(prefix)/include/
- cp -R ./emscripten/system/include/libc/* $(prefix)/include/
- rm $(prefix)/include/bits
- cp -R ./emscripten/system/include/compat/ $(prefix)/include/
- cp -R ./emscripten/system/include/emscripten $(prefix)/include/
- cp -R ./emscripten/system/lib/libc/musl/arch/emscripten/* $(prefix)/include/
- .PHONY: all clean install
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement