ddat interop with dat js cable interop with cabal js ddat's frontend = dat-thang cable fe = cable-thang dillo support based on cel's dillo-dat bootstrap node xplatform support Signed-off-by: divo <418@cryspace.space>
73 lines
2.8 KiB
Makefile
73 lines
2.8 KiB
Makefile
CC ?= cc
|
|
AR ?= ar
|
|
RANLIB ?= ranlib
|
|
OBJCOPY ?= objcopy
|
|
INSTALL ?= install
|
|
PREFIX ?= /usr/local
|
|
DPIDIR ?= $(PREFIX)/lib/dillo/dpi
|
|
DESTDIR ?=
|
|
BUILD ?= build
|
|
CFLAGS ?= -O2 -std=c99 -Wall -Wextra -Wpedantic
|
|
CPPFLAGS ?=
|
|
LDFLAGS ?=
|
|
|
|
PKG_CONFIG ?= pkg-config
|
|
CURL_CFLAGS ?= $(shell $(PKG_CONFIG) --cflags libcurl 2>/dev/null)
|
|
CURL_LIBS ?= $(shell $(PKG_CONFIG) --libs libcurl 2>/dev/null || echo -lcurl)
|
|
SODIUM_CFLAGS ?= $(shell $(PKG_CONFIG) --cflags libsodium 2>/dev/null)
|
|
SODIUM_LIBS ?= $(shell $(PKG_CONFIG) --libs libsodium 2>/dev/null || echo -lsodium)
|
|
|
|
CPPFLAGS += -Iinc -DSLEEP_SALT -DDAT_BUILD_DIR=\"$(BUILD)\" -DDAT_NETWORK_PROTOCOL=\"$(shell tr -d '\r\n' < NETWORK_PROTOCOL)\" $(CURL_CFLAGS) $(SODIUM_CFLAGS)
|
|
LIBS = $(SODIUM_LIBS) $(CURL_LIBS) -lm -ldl
|
|
|
|
LIB_SOURCES = src/base32768.c src/cable.c src/cable_feed.c src/dat.c src/dat_browse.c src/dat_dns.c src/dat_fetch.c src/dat_walk.c src/dat_net.c src/dat_wire.c src/dat_session.c \
|
|
src/cesspool.c src/sleep.c src/sleep_tree.c src/sleep_bitfield.c \
|
|
src/sleep_proto.c src/sleep_crypto.c src/sleep_writer.c \
|
|
src/sleep_feed.c src/sleep_proof.c src/sleep_replication.c src/sleep_utp.c
|
|
LIB_OBJECTS = $(patsubst src/%.c,$(BUILD)/%.o,$(LIB_SOURCES)) $(BUILD)/sleep_verify_lib.o
|
|
DEPFILES = $(LIB_OBJECTS:.o=.d) $(BUILD)/s7.d
|
|
|
|
.PHONY: all clean install install-user
|
|
all: $(BUILD)/dat.dpi
|
|
|
|
$(BUILD):
|
|
mkdir -p $@
|
|
|
|
$(BUILD)/%.o: src/%.c | $(BUILD)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -MMD -MP -c $< -o $@
|
|
|
|
$(BUILD)/sleep_verify_lib.o: src/sleep_verify.c | $(BUILD)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -DSLEEP_VERIFY_NO_MAIN -MMD -MP -c $< -o $@
|
|
|
|
# S7 is used only as a parser for archive .scm metadata. Rename its optional
|
|
# command-line entry point so the DPI owns the process main().
|
|
$(BUILD)/s7.o: src/s7.c | $(BUILD)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -w -MMD -MP -c $< -o $@
|
|
|
|
$(BUILD)/dpi_s7.o: $(BUILD)/s7.o
|
|
$(OBJCOPY) --redefine-sym main=dat_dpi_s7_standalone_main $< $@
|
|
|
|
$(BUILD)/libdatdpi.a: $(LIB_OBJECTS)
|
|
$(AR) rcs $@ $(LIB_OBJECTS)
|
|
$(RANLIB) $@
|
|
|
|
$(BUILD)/dat.dpi: src/dat_dpi.c src/dat_dpi_icons.h $(BUILD)/libdatdpi.a $(BUILD)/dpi_s7.o
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) src/dat_dpi.c $(BUILD)/libdatdpi.a $(BUILD)/dpi_s7.o $(LIBS) -o $@
|
|
|
|
install: $(BUILD)/dat.dpi
|
|
$(INSTALL) -d "$(DESTDIR)$(DPIDIR)/dat"
|
|
$(INSTALL) -m 755 $(BUILD)/dat.dpi "$(DESTDIR)$(DPIDIR)/dat/dat.dpi"
|
|
$(INSTALL) -d "$(DESTDIR)$(PREFIX)/share/doc/dat-dpi"
|
|
$(INSTALL) -m 644 README.md "$(DESTDIR)$(PREFIX)/share/doc/dat-dpi/README.md"
|
|
|
|
install-user: $(BUILD)/dat.dpi
|
|
$(INSTALL) -d "$(HOME)/.dillo/dpi/dat"
|
|
$(INSTALL) -m 755 $(BUILD)/dat.dpi "$(HOME)/.dillo/dpi/dat/dat.dpi"
|
|
@if ! test -f "$(HOME)/.dillo/dpidrc"; then printf '%s\n' 'dpi_dir=$(DPIDIR)' > "$(HOME)/.dillo/dpidrc"; fi
|
|
@if ! grep -q '^proto\.dat=' "$(HOME)/.dillo/dpidrc"; then printf '%s\n' 'proto.dat=dat/dat.dpi' >> "$(HOME)/.dillo/dpidrc"; fi
|
|
|
|
clean:
|
|
rm -rf "$(BUILD)"
|
|
|
|
-include $(DEPFILES)
|